@syncfusion/ej2-treemap 28.2.3 → 29.1.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/ej2-treemap.min.js +2 -2
- package/dist/ej2-treemap.umd.min.js +2 -2
- package/dist/ej2-treemap.umd.min.js.map +1 -1
- package/dist/es6/ej2-treemap.es2015.js +284 -106
- package/dist/es6/ej2-treemap.es2015.js.map +1 -1
- package/dist/es6/ej2-treemap.es5.js +284 -106
- package/dist/es6/ej2-treemap.es5.js.map +1 -1
- package/dist/global/ej2-treemap.min.js +2 -2
- package/dist/global/ej2-treemap.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +12 -12
- package/src/treemap/layout/legend.js +7 -2
- package/src/treemap/layout/render-panel.js +2 -1
- package/src/treemap/treemap.d.ts +26 -1
- package/src/treemap/treemap.js +100 -0
- package/src/treemap/user-interaction/highlight-selection.d.ts +19 -3
- package/src/treemap/user-interaction/highlight-selection.js +138 -84
- package/src/treemap/user-interaction/tooltip.js +4 -2
- package/src/treemap/utils/helper.js +34 -18
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ej2-treemap.min.js","sources":["../../src/treemap/utils/helper.js","../../src/treemap/model/theme.js","../../src/treemap/model/constants.js","../../src/treemap/model/base.js","../../src/treemap/layout/render-panel.js","../../src/treemap/model/print.js","../../src/treemap/model/image-export.js","../../src/treemap/model/pdf-export.js","../../src/treemap/treemap.js","../../src/treemap/layout/legend.js","../../src/treemap/user-interaction/highlight-selection.js","../../src/treemap/user-interaction/tooltip.js","../../src/global.js"],"sourcesContent":["import { createElement, compile, merge, isNullOrUndefined, remove, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\n/**\n * Specifies the size parameters.\n */\nvar Size = /** @class */ (function () {\n function Size(width, height) {\n this.width = width;\n this.height = height;\n }\n return Size;\n}());\nexport { Size };\n/**\n *\n * @param {string} value - specifies the text.\n * @param {number} containerSize - specifies the container size value.\n * @returns {number} - Returns the number value which is converted from string.\n */\nexport function stringToNumber(value, containerSize) {\n if (value !== null && value !== undefined) {\n return value.indexOf('%') !== -1 ? (containerSize / 100) * parseInt(value, 10) : parseInt(value, 10);\n }\n return null;\n}\n/**\n * Internal use of type rect\n *\n * @private\n */\nvar Rect = /** @class */ (function () {\n function Rect(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n return Rect;\n}());\nexport { Rect };\n/**\n * Internal use of rectangle options\n *\n * @private\n */\nvar RectOption = /** @class */ (function () {\n function RectOption(id, fill, border, opacity, rect, dashArray) {\n this.y = rect.y;\n this.x = rect.x;\n this.height = rect.height;\n this.width = rect.width;\n this.id = id;\n this.fill = fill;\n this.opacity = opacity;\n this.stroke = border.color;\n this['stroke-width'] = border.width;\n this['stroke-dasharray'] = dashArray;\n }\n return RectOption;\n}());\nexport { RectOption };\nvar PathOption = /** @class */ (function () {\n function PathOption(id, fill, width, color, opacity, dashArray, d) {\n this.id = id;\n this.opacity = opacity;\n this.fill = fill;\n this.stroke = color;\n this['stroke-width'] = width;\n this['stroke-dasharray'] = dashArray;\n this.d = d;\n }\n return PathOption;\n}());\nexport { PathOption };\n/**\n * Function to measure the height and width of the text.\n *\n * @param {string} text - Specifies the text.\n * @param {FontModel} font - Specifies the font.\n * @returns {Size} - Returns the size.\n * @private\n */\nexport function measureText(text, font) {\n var measureObject = document.getElementById('treeMapMeasureText');\n if (measureObject === null) {\n measureObject = createElement('text', { id: 'treeMapMeasureText' });\n document.body.appendChild(measureObject);\n }\n measureObject.innerHTML = SanitizeHtmlHelper.sanitize(text);\n measureObject.style.position = 'absolute';\n measureObject.style.fontSize = font.size;\n measureObject.style.fontWeight = font.fontWeight;\n measureObject.style.fontStyle = font.fontStyle;\n measureObject.style.fontFamily = font.fontFamily;\n measureObject.style.visibility = 'hidden';\n measureObject.style.top = '-100';\n measureObject.style.left = '0';\n measureObject.style.whiteSpace = 'nowrap';\n // For bootstrap line height issue\n measureObject.style.lineHeight = 'normal';\n return new Size(measureObject.clientWidth, measureObject.clientHeight);\n}\n/**\n * Internal use of text options\n *\n * @private\n */\nvar TextOption = /** @class */ (function () {\n function TextOption(id, x, y, anchor, text, transform, baseLine, connectorText) {\n if (transform === void 0) { transform = ''; }\n this.transform = '';\n this.baseLine = 'auto';\n this.id = id;\n this.text = text;\n this.transform = transform;\n this.anchor = anchor;\n this.x = x;\n this.y = y;\n this.baseLine = baseLine;\n this.connectorText = connectorText;\n }\n return TextOption;\n}());\nexport { TextOption };\n/**\n * Trim the title text\n *\n * @param {number} maxWidth - Specifies the maximum width\n * @param {string} text - Specifies the text\n * @param {FontModel} font - Specifies the font\n * @returns {string} - Returns the string\n * @private\n */\nexport function textTrim(maxWidth, text, font) {\n var label = text;\n var size = measureText(text, font).width;\n if (size > maxWidth) {\n var textLength = text.length;\n for (var i = textLength - 1; i >= 0; --i) {\n label = text.substring(0, i) + '...';\n size = measureText(label, font).width;\n if (size <= maxWidth || label.length < 4) {\n if (label.length < 4) {\n label = ' ';\n }\n return label;\n }\n }\n }\n return label;\n}\n/**\n * Specifies the location parameters.\n */\nvar Location = /** @class */ (function () {\n function Location(x, y) {\n this.x = x;\n this.y = y;\n }\n return Location;\n}());\nexport { Location };\n/**\n * Method to calculate x position of title\n *\n * @param {Rect} location - Specifies the location of text.\n * @param {Alignment} alignment - Specifies the alignment of the text.\n * @param {Size} textSize - Specifies the size of the text.\n * @param {type} type - Specifies whether the provided text is title or subtitle.\n * @returns {Location} - Returns the location of text.\n * @private\n */\nexport function findPosition(location, alignment, textSize, type) {\n var x;\n switch (alignment) {\n case 'Near':\n x = location.x;\n break;\n case 'Center':\n x = (type === 'title') ? (location.width / 2 - textSize.width / 2) :\n ((location.x + (location.width / 2)) - textSize.width / 2);\n break;\n case 'Far':\n x = (type === 'title') ? (location.width - location.y - textSize.width) :\n ((location.x + location.width) - textSize.width);\n break;\n }\n var y = (type === 'title') ? location.y + (textSize.height / 2) : ((location.y + location.height / 2) + textSize.height / 2);\n return new Location(x, y);\n}\n/**\n *\n * @param {SvgRenderer} renderer - Specifies the rendering element of the SVG.\n * @param {any} renderOptions - Specifies the settings of the text.\n * @param {string} text - Specifies the text.\n * @returns {HTMLElement} - Returns the HTML element for the text.\n */\nexport function createTextStyle(renderer, renderOptions, text) {\n var htmlObject = renderer.createText(renderOptions, text);\n htmlObject.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n htmlObject.style['user-select'] = 'none';\n htmlObject.style['-moz-user-select'] = 'none';\n htmlObject.style['-webkit-touch-callout'] = 'none';\n htmlObject.style['-webkit-user-select'] = 'none';\n htmlObject.style['-khtml-user-select'] = 'none';\n htmlObject.style['-ms-user-select'] = 'none';\n htmlObject.style['-o-user-select'] = 'none';\n return htmlObject;\n}\n/**\n * Internal rendering of text\n *\n * @param {TextOption} options - Specifies the text option\n * @param {FontModel} font - Specifies the font model\n * @param {string} color - Specifies the color\n * @param {HTMLElement | Element} parent - Specifies the parent element of the text\n * @param {boolean} isMinus - Specifies the boolean value\n * @returns {Element} - Returns the element\n * @private\n */\nexport function renderTextElement(options, font, color, parent, isMinus) {\n if (isMinus === void 0) { isMinus = false; }\n var renderOptions = {\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily,\n 'font-weight': font.fontWeight,\n 'text-anchor': options.anchor,\n 'transform': options.transform,\n 'opacity': font.opacity,\n 'dominant-baseline': options.baseLine,\n 'id': options.id,\n 'x': options.x,\n 'y': options.y,\n 'fill': color\n };\n var text = typeof options.text === 'string' ? options.text : isMinus ? options.text[options.text.length - 1] : options.text[0];\n var tspanElement;\n var renderer = new SvgRenderer('');\n var height;\n var htmlObject;\n var breadCrumbText = !isNullOrUndefined(text) && !isNullOrUndefined(options.connectorText) ?\n (text.search(options.connectorText[1]) >= 0) : false;\n if (breadCrumbText) {\n var drilledLabel = text;\n var spacing = 5;\n var drillLevelText = drilledLabel.split('#');\n for (var z = 0; z < drillLevelText.length; z++) {\n var drillText = (drillLevelText[z].search(options.connectorText) !== -1 &&\n !isNullOrUndefined(options.connectorText)) ?\n options.connectorText : drillLevelText[z];\n renderOptions['id'] = options.id + '_' + z;\n htmlObject = createTextStyle(renderer, renderOptions, drillText);\n if (z % 2 === 0 && z !== 0) {\n var re = /\\s+/g;\n drillText = drillText.replace(re, ' ');\n }\n var size = measureText(drillText, font);\n renderOptions['x'] = z !== 0 ? renderOptions['x'] + size.width : renderOptions['x'] + size.width + spacing;\n parent.appendChild(htmlObject);\n }\n }\n else {\n htmlObject = createTextStyle(renderer, renderOptions, text);\n parent.appendChild(htmlObject);\n }\n if (typeof options.text !== 'string' && options.text.length > 1) {\n for (var i = 1, len = options.text.length; i < len; i++) {\n height = (measureText(options.text[i], font).height);\n tspanElement = renderer.createTSpan({\n 'x': options.x, 'id': options.id,\n 'y': (options.y) + (i * height)\n }, options.text[i]);\n htmlObject.appendChild(tspanElement);\n }\n parent.appendChild(htmlObject);\n }\n return htmlObject;\n}\n/**\n *\n * @param {string} targetId - Specifies the id of the element to which template is to be appended.\n * @param {Element} targetElement - Specifies the element to which template is to be appended.\n * @param {string} contentItemTemplate - Specifies the content to be appended as template.\n * @returns {void}\n */\nexport function setItemTemplateContent(targetId, targetElement, contentItemTemplate) {\n var itemSelect = targetId.split('_RectPath')[0];\n var itemTemplate;\n if (targetId.indexOf('_LabelTemplate') > -1) {\n itemTemplate = targetElement;\n }\n else {\n itemTemplate = document.querySelector('#' + itemSelect + '_LabelTemplate');\n }\n if (!isNullOrUndefined(itemTemplate)) {\n itemTemplate.innerHTML = contentItemTemplate;\n }\n}\n/**\n *\n * @param {string} id - Specifies the id of the element.\n * @returns {Element} - Returns the element.\n */\nexport function getElement(id) {\n return document.getElementById(id);\n}\n/**\n *\n * @param {any} a - Specifies the first order of TreeMap leaf elements.\n * @param {any} b - Specifies the second order of TreeMap leaf elements.\n * @returns {number} - Returns the order of the TreeMap leaf element.\n */\nexport function itemsToOrder(a, b) {\n return a['weight'] === b['weight'] ? 0 : a['weight'] < b['weight'] ? 1 : -1;\n}\n/**\n *\n * @param {string[]} source - Specifies the data from the data source.\n * @param {string} pathName - Specifies the path name in the data source.\n * @param {any} processData - Specifies the data source object.\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @returns {boolean} - Specifies whether data is available in the data source or not.\n */\nexport function isContainsData(source, pathName, processData, treemap) {\n var isExist = false;\n var name = '';\n var path;\n var leaf = treemap.leafItemSettings;\n for (var i = 0; i < source.length; i++) {\n path = treemap.levels[i] ? treemap.levels[i].groupPath : leaf.labelPath ? leaf.labelPath :\n treemap.weightValuePath;\n var data = processData[path] || 'undefined';\n if (source[i] === data) {\n name += data + (i === source.length - 1 ? '' : '#');\n if (name === pathName) {\n isExist = true;\n break;\n }\n }\n }\n return isExist;\n}\n/**\n *\n * @param {any} data - Specifies the data to which the children elements to be found.\n * @returns {any} - Returns the children elements of the TreeMap leaf element.\n */\nexport function findChildren(data) {\n var children;\n if (data) {\n var keys = Object.keys(data);\n children = {};\n for (var i = 0; i < keys.length; i++) {\n if (data[keys[i]] instanceof Array) {\n children['values'] = data[keys[i]];\n children['key'] = keys[i];\n break;\n }\n }\n }\n return children;\n}\n/**\n *\n * @param {any} data - Specifies the data to which highlight must be done.\n * @param {items} items - Specifies the data source items.\n * @param {string} mode - Specifies the mode of highlight.\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @returns {string[]} - Returns the highlighted items.\n */\nexport function findHightLightItems(data, items, mode, treeMap) {\n if (mode === 'Child') {\n items.push(data['levelOrderName']);\n var children = findChildren(data)['values'];\n if (children && children.length > 0) {\n for (var i = 0; i < children.length; i++) {\n if (items.indexOf(children[i]['levelOrderName']) === -1) {\n items.push(children[i]['levelOrderName']);\n }\n }\n for (var j = 0; j < children.length; j++) {\n findHightLightItems(children[j], items, mode, treeMap);\n }\n }\n }\n else if (mode === 'Parent') {\n if (typeof data['levelOrderName'] === 'string' && items.indexOf(data['levelOrderName']) === -1) {\n items.push(data['levelOrderName']);\n findHightLightItems(data['parent'], items, mode, treeMap);\n }\n }\n else if (mode === 'All') {\n var parentName = data['levelOrderName'].split('#')[0];\n var currentItem = void 0;\n for (var i = 0; i < treeMap.layout.renderItems.length; i++) {\n currentItem = treeMap.layout.renderItems[i];\n if ((currentItem['levelOrderName']).indexOf(parentName) > -1 && items.indexOf(currentItem['levelOrderName']) === -1) {\n items.push(currentItem['levelOrderName']);\n }\n }\n }\n else {\n items.push(data['levelOrderName']);\n }\n return items;\n}\n/**\n * Function to compile the template function for maps.\n *\n * @param {string} template - Specifies the template\n * @returns {Function} - Returns the template function\n * @private\n */\nexport function getTemplateFunction(template) {\n var templateFn = null;\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n templateFn = compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n templateFn = compile(template);\n }\n }\n catch (e) {\n templateFn = compile(template);\n }\n return templateFn;\n}\n/**\n * @private\n * @param {HTMLCollection} element - Specifies the element\n * @param {string} labelId - Specifies the label id\n * @param {Object} data - Specifies the data\n * @returns {HTMLElement} - Returns the element\n */\nexport function convertElement(element, labelId, data) {\n var childElement = createElement('div', {\n id: labelId\n });\n childElement.style.cssText = 'position: absolute;pointer-events: auto;';\n var elementLength = element.length;\n while (elementLength > 0) {\n childElement.appendChild(element[0]);\n elementLength--;\n }\n var templateHtml = childElement.innerHTML;\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n var regExp = RegExp;\n templateHtml = templateHtml.replace(new regExp('{{:' + keys[i] + '}}', 'g'), data[keys[i].toString()]);\n }\n childElement.innerHTML = templateHtml;\n return childElement;\n}\n/**\n *\n * @param {Rect} rect - Specifies the area.\n * @param {LabelPosition} position - Specifies the position\n * @param {Size} labelSize - Specifies the label size.\n * @param {string} type - Specifies the type.\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @returns {Location} - Returns the text location.\n */\nexport function findLabelLocation(rect, position, labelSize, type, treemap) {\n var location = new Location(0, 0);\n var padding = 5;\n var paddings = 2;\n var x = (type === 'Template') ? treemap.areaRect.x : 0;\n var y = (type === 'Template') ? treemap.areaRect.y : 0;\n location.x = (Math.abs(x - ((position.indexOf('Left') > -1) ? rect.x + padding : !(position.indexOf('Right') > -1) ?\n rect.x + ((rect.width / 2) - (labelSize.width / 2)) : (rect.x + rect.width) - labelSize.width))) - paddings;\n if (treemap.enableDrillDown && (treemap.renderDirection === 'BottomLeftTopRight'\n || treemap.renderDirection === 'BottomRightTopLeft')) {\n location.y = Math.abs((rect.y + rect.height) - labelSize.height + padding);\n }\n else {\n location.y = Math.abs(y - ((position.indexOf('Top') > -1) ? (type === 'Template' ? rect.y : rect.y + labelSize.height) :\n !(position.indexOf('Bottom') > -1) ? type === 'Template' ? (rect.y + ((rect.height / 2) - (labelSize.height / 2))) :\n (rect.y + (rect.height / 2) + labelSize.height / 4) : (rect.y + rect.height) - labelSize.height));\n }\n return location;\n}\n/**\n *\n * @param {HTMLElement} element - Specifies the element to be measured.\n * @param {HTMLElement} parentElement - Specifies the parent element of the element to be measured.\n * @returns {Size} - Returns the element size.\n */\nexport function measureElement(element, parentElement) {\n var size = new Size(0, 0);\n parentElement.appendChild(element);\n size.height = element.offsetHeight;\n size.width = element.offsetWidth;\n var measureElementId = document.getElementById(element.id);\n measureElementId.parentNode.removeChild(measureElementId);\n return size;\n}\n/**\n *\n * @param {Rect} rect - Specifies the area.\n * @returns {number} - Returns the area width.\n */\nexport function getArea(rect) {\n return (rect.width - rect.x) * (rect.height - rect.y);\n}\n/**\n *\n * @param {Rect} input - Specifies input for the calculation.\n * @returns {number} - Returns the shortest edge.\n */\nexport function getShortestEdge(input) {\n var container = convertToContainer(input);\n var width = container.width;\n var height = container.height;\n var result = Math.min(width, height);\n return result;\n}\n/**\n *\n * @param {Rect} rect - Specifies the rectangle bounds of the container.\n * @returns {Rect} - Returns the rectangle bounds.\n */\nexport function convertToContainer(rect) {\n var x = rect.x;\n var y = rect.y;\n var width = rect.width;\n var height = rect.height;\n return {\n x: x,\n y: y,\n width: width - x,\n height: height - y\n };\n}\n/**\n *\n * @param {Rect} container - Specifies the rectangle bounds of the container.\n * @returns {Rect} - Returns the rectangle bounds.\n */\nexport function convertToRect(container) {\n var xOffset = container.x;\n var yOffset = container.y;\n var width = container.width;\n var height = container.height;\n return {\n x: xOffset,\n y: yOffset,\n width: xOffset + width,\n height: yOffset + height\n };\n}\n/**\n *\n * @param {number} pageX - Specifies the horizontal position of the mouse location.\n * @param {number} pageY - Specifies the vertical position of the mouse location.\n * @param {Element} element - Specifies the element to which the click is done.\n * @returns {Location} - Returns the clicked location.\n */\nexport function getMousePosition(pageX, pageY, element) {\n var elementRect = element.getBoundingClientRect();\n var pageXOffset = element.ownerDocument.defaultView.pageXOffset;\n var pageYOffset = element.ownerDocument.defaultView.pageYOffset;\n var clientTop = element.ownerDocument.documentElement.clientTop;\n var clientLeft = element.ownerDocument.documentElement.clientLeft;\n var positionX = elementRect.left + pageXOffset - clientLeft;\n var positionY = elementRect.top + pageYOffset - clientTop;\n return new Location((pageX - positionX), (pageY - positionY));\n}\n/**\n *\n * @param {ColorMappingModel[]} colorMapping - Specifies the color mapping instance.\n * @param {string} equalValue - Specifies the equal value.\n * @param {number | string} value - Specifies the range value.\n * @returns {any} - Returns the color mapping object.\n * @private\n */\nexport function colorMap(colorMapping, equalValue, value) {\n var fill;\n var paths = [];\n var opacity;\n if (isNullOrUndefined(equalValue) && (isNullOrUndefined(value) && isNaN(value))) {\n return null;\n }\n for (var i = 0; i < colorMapping.length; i++) {\n var isEqualColor = false;\n var dataValue = value;\n var colorMappingValue = colorMapping[i].value ? colorMapping[i].value.toString() :\n colorMapping[i].value;\n if (!isNullOrUndefined(colorMapping[i].from) && !isNullOrUndefined(colorMapping[i].to)\n && !isNullOrUndefined(colorMapping[i].value)) {\n if ((value >= colorMapping[i].from && colorMapping[i].to >= value) &&\n (colorMappingValue === equalValue)) {\n isEqualColor = true;\n if (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') {\n fill = !isEqualColor ? colorCollections(colorMapping[i], dataValue) : colorMapping[i].color[0];\n }\n else {\n fill = colorMapping[i].color;\n }\n }\n }\n else if ((!isNullOrUndefined(colorMapping[i].from) && !isNullOrUndefined(colorMapping[i].to))\n || !isNullOrUndefined((colorMapping[i].value))) {\n if ((value >= colorMapping[i].from && colorMapping[i].to >= value)\n || (colorMappingValue === equalValue)) {\n if (colorMappingValue === equalValue) {\n isEqualColor = true;\n }\n if (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') {\n fill = !isEqualColor ? colorCollections(colorMapping[i], dataValue) : colorMapping[i].color[0];\n }\n else {\n fill = colorMapping[i].color;\n }\n }\n }\n if (((value >= colorMapping[i].from && value <= colorMapping[i].to)\n || (colorMappingValue === equalValue))\n && !isNullOrUndefined(colorMapping[i].minOpacity) && !isNullOrUndefined(colorMapping[i].maxOpacity)\n && fill) {\n opacity = deSaturationColor(colorMapping[i], value);\n }\n if ((fill === '' || isNullOrUndefined(fill))\n && isNullOrUndefined(colorMapping[i].from) && isNullOrUndefined(colorMapping[i].to)\n && isNullOrUndefined(colorMapping[i].minOpacity) && isNullOrUndefined(colorMapping[i].maxOpacity)\n && isNullOrUndefined(colorMapping[i].value)) {\n fill = (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') ?\n colorMapping[i].color[0] : colorMapping[i].color;\n }\n opacity = !isNullOrUndefined(opacity) ? opacity : '1';\n paths.push(fill);\n }\n for (var j = paths.length - 1; j >= 0; j--) {\n fill = paths[j];\n j = (fill) ? -1 : j;\n }\n return { fill: fill, opacity: opacity };\n}\n/**\n *\n * @param {ColorMappingModel} colorMapping - Specifies the color mapping object.\n * @param {number} rangeValue - Specifies the range value.\n * @returns {string} - Returns the opacity for the color mapping.\n * @private\n */\nexport function deSaturationColor(colorMapping, rangeValue) {\n var opacity = 1;\n if ((rangeValue >= colorMapping.from && rangeValue <= colorMapping.to)) {\n var ratio = (rangeValue - colorMapping.from) / (colorMapping.to - colorMapping.from);\n opacity = (ratio * (colorMapping.maxOpacity - colorMapping.minOpacity)) + colorMapping.minOpacity;\n }\n return opacity.toString();\n}\n/**\n *\n * @param {ColorMappingModel} colorMap - Specifies the color mapping object.\n * @param {number} value - Specifies the range value.\n * @returns {string} - Returns the fill color.\n */\nexport function colorCollections(colorMap, value) {\n var gradientFill = getColorByValue(colorMap, value);\n return gradientFill;\n}\n/**\n *\n * @param {number} r - Specifies the red color value.\n * @param {number} g - Specifies the green color value.\n * @param {number} b - Specifies the blue color value.\n * @returns {string} - Returns the fill color.\n */\nexport function rgbToHex(r, g, b) {\n return '#' + componentToHex(r) + componentToHex(g) + componentToHex(b);\n}\n/**\n *\n * @param {ColorMappingModel} colorMap - Specifies the color mapping.\n * @param {number} value - Specifies the range value.\n * @returns {string} - Returns the fill color.\n */\nexport function getColorByValue(colorMap, value) {\n var color = '';\n var rbg;\n if (Number(value) === colorMap.from) {\n color = colorMap.color[0];\n }\n else if (Number(value) === colorMap.to) {\n color = colorMap.color[colorMap.color.length - 1];\n }\n else {\n rbg = getGradientColor(Number(value), colorMap);\n color = rgbToHex(rbg.r, rbg.g, rbg.b);\n }\n return color;\n}\n/**\n *\n * @param {number} value - Specifies the range value.\n * @param {ColorMappingModel} colorMap - Specifies the color mapping.\n * @returns {ColorValue} - Returns the color value object.\n */\nexport function getGradientColor(value, colorMap) {\n var previousOffset = colorMap.from;\n var nextOffset = colorMap.to;\n var percent = 0;\n var full = nextOffset - previousOffset;\n var midColor;\n percent = (value - previousOffset) / full;\n var previousColor;\n var nextColor;\n if (colorMap.color.length <= 2) {\n previousColor = colorMap.color[0].charAt(0) === '#' ? colorMap.color[0] : colorNameToHex(colorMap.color[0]);\n nextColor = colorMap.color[colorMap.color.length - 1].charAt(0) === '#' ?\n colorMap.color[colorMap.color.length - 1] : colorNameToHex(colorMap.color[colorMap.color.length - 1]);\n }\n else {\n previousColor = colorMap.color[0].charAt(0) === '#' ? colorMap.color[0] : colorNameToHex(colorMap.color[0]);\n nextColor = colorMap.color[colorMap.color.length - 1].charAt(0) === '#' ?\n colorMap.color[colorMap.color.length - 1] : colorNameToHex(colorMap.color[colorMap.color.length - 1]);\n var a = full / (colorMap.color.length - 1);\n var b = void 0;\n var c = void 0;\n var length_1 = colorMap.color.length - 1;\n var splitColorValueOffset = [];\n var splitColor = {};\n for (var j = 1; j < length_1; j++) {\n c = j * a;\n b = previousOffset + c;\n splitColor = { b: b, color: colorMap.color[j] };\n splitColorValueOffset.push(splitColor);\n }\n for (var i = 0; i < splitColorValueOffset.length; i++) {\n if (previousOffset <= value && value <= splitColorValueOffset[i]['b'] && i === 0) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n nextColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ? 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a)\n : (value - splitColorValueOffset[i]['b']) / a;\n }\n else if (splitColorValueOffset[i]['b'] <= value && value <= nextOffset && i === (splitColorValueOffset.length - 1)) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ?\n 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a) : (value - splitColorValueOffset[i]['b']) / a;\n }\n if (i !== splitColorValueOffset.length - 1 && i < splitColorValueOffset.length) {\n if (splitColorValueOffset[i]['b'] <= value && value <= splitColorValueOffset[i + 1]['b']) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n nextColor = splitColorValueOffset[i + 1]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i + 1]['color'] : colorNameToHex(splitColorValueOffset[i + 1]['color']);\n percent = Math.abs((value - splitColorValueOffset[i + 1]['b'])) / a;\n }\n }\n }\n }\n return getPercentageColor(percent, previousColor, nextColor);\n}\n/**\n *\n * @param {number} percent - Specifies the percentage of the color.\n * @param {number} previous - Specifies the previous color.\n * @param {number} next - Specifies the next color.\n * @returns {ColorValue} - Returns the color value object.\n */\nexport function getPercentageColor(percent, previous, next) {\n var nextColor = next.split('#')[1];\n var prevColor = previous.split('#')[1];\n var r = getPercentage(percent, parseInt(prevColor.substr(0, 2), 16), parseInt(nextColor.substr(0, 2), 16));\n var g = getPercentage(percent, parseInt(prevColor.substr(2, 2), 16), parseInt(nextColor.substr(2, 2), 16));\n var b = getPercentage(percent, parseInt(prevColor.substr(4, 2), 16), parseInt(nextColor.substr(4, 2), 16));\n return new ColorValue(r, g, b);\n}\n/**\n *\n * @param {number} percent - Specifies the percentage of the color.\n * @param {number} previous - Specifies the previous color.\n * @param {number} next - Specifies the next color.\n * @returns {number} - Returns the color value.\n */\nexport function getPercentage(percent, previous, next) {\n var full = next - previous;\n return Math.round((previous + (full * percent)));\n}\n/**\n *\n * @param {number} maximumWidth - Specifies the length of the text.\n * @param {string} dataLabel - Specifies the label.\n * @param {FontModel} font - Specifies the font of the label.\n * @returns {string[]} - Returns the labels.\n */\nexport function wordWrap(maximumWidth, dataLabel, font) {\n var textCollection = dataLabel.split(' ');\n var label = '';\n var labelCollection = [];\n var text;\n for (var i = 0, len = textCollection.length; i < len; i++) {\n text = textCollection[i];\n if (measureText(label.concat(text), font).width < maximumWidth) {\n label = label.concat((label === '' ? '' : ' ') + text);\n }\n else {\n if (label !== '') {\n labelCollection.push(textTrim(maximumWidth, label, font));\n label = text;\n }\n else {\n labelCollection.push(textTrim(maximumWidth, text, font));\n text = '';\n }\n }\n if (label && i === len - 1) {\n labelCollection.push(textTrim(maximumWidth, label, font));\n }\n }\n return labelCollection;\n}\n/**\n *\n * @param {number} maxWidth - Specifies the length of the text.\n * @param {string} label - Specifies the label.\n * @param {FontModel} font - Specifies the font of the label.\n * @returns {string[]} - Returns the labels.\n */\nexport function textWrap(maxWidth, label, font) {\n var resultText = [];\n var currentLength = 0;\n var totalWidth = measureText(label, font).width;\n var totalLength = label.length;\n if (maxWidth >= totalWidth) {\n resultText.push(label);\n return resultText;\n }\n else {\n for (var i = label.length; i > currentLength; i--) {\n var sliceString = label.slice(currentLength, i);\n totalWidth = measureText(sliceString, font).width;\n if (totalWidth <= maxWidth) {\n resultText.push(sliceString);\n currentLength += sliceString.length;\n if (totalLength === currentLength) {\n return resultText;\n }\n i = totalLength + 1;\n }\n }\n }\n return resultText;\n}\n/**\n * hide function\n *\n * @param {number} maxWidth - Specifies the maximum width.\n * @param {number} maxHeight - Specifies the maximum height.\n * @param {string} text - Specifies the text.\n * @param {FontModel} font - Specifies the font.\n * @returns {string} - Returns the hidden text.\n * @private\n */\nexport function hide(maxWidth, maxHeight, text, font) {\n var hideText = text;\n var textSize = measureText(text, font);\n hideText = (textSize.width > maxWidth || textSize.height > maxHeight) ? ' ' : text;\n return hideText;\n}\n/**\n *\n * @param {number} a - Specifies the first value of the leaf.\n * @param {number} b - Specifies the second value of the leaf.\n * @returns {number} - Returns whether values are equal or not.\n */\nexport function orderByArea(a, b) {\n if (a['itemArea'] === b['itemArea']) {\n return 0;\n }\n else if (a['itemArea'] < b['itemArea']) {\n return 1;\n }\n return -1;\n}\n/**\n *\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @param {Element} element - Specifies the selected TreeMap leaf item.\n * @param {string} className -Specifies the selected class name.\n * @returns {void}\n */\nexport function maintainSelection(treemap, element, className) {\n var elementId = treemap.levelSelection;\n if (elementId) {\n for (var index = 0; index < elementId.length; index++) {\n if (element.getAttribute('id') === elementId[index] ||\n element.children[0].id === elementId[index]) {\n if (element.childElementCount > 0) {\n element.children[0].setAttribute('class', className);\n applyOptions(element.childNodes[0], {\n border: treemap.selectionSettings.border, fill: treemap.selectionSettings.fill,\n opacity: treemap.selectionSettings.opacity\n });\n }\n }\n else {\n element.setAttribute('class', '');\n }\n }\n }\n}\n/**\n *\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @param {Element} legendGroup - Specifies the selected element.\n * @returns {void}\n */\nexport function legendMaintain(treemap, legendGroup) {\n var elementId = treemap.legendId;\n if (elementId) {\n for (var i = 0; i < elementId.length; i++) {\n if (treemap.legendSettings.mode === 'Interactive') {\n for (var j = 0; j < legendGroup.childElementCount; j++) {\n if (legendGroup.childNodes[j]['id'] === elementId[i] ||\n parseFloat(legendGroup.childNodes[j]['id'].split('Index_')[1]) === parseFloat(elementId[i].split('Index_')[1])) {\n var treemapSVGRectElement = legendGroup.childNodes[j];\n treemapSVGRectElement.setAttribute('fill', treemap.selectionSettings.fill);\n treemapSVGRectElement.setAttribute('stroke', treemap.selectionSettings.border.color);\n treemapSVGRectElement.setAttribute('stroke-width', (treemap.selectionSettings.border.width).toString());\n treemapSVGRectElement.setAttribute('opacity', treemap.selectionSettings.opacity);\n }\n }\n }\n else {\n var legendItem = document.getElementById(elementId[i]);\n if (!isNullOrUndefined(legendItem)) {\n legendItem.setAttribute('fill', treemap.selectionSettings.fill);\n legendItem.setAttribute('stroke', treemap.selectionSettings.border.color);\n legendItem.setAttribute('stroke-width', (treemap.selectionSettings.border.width).toString());\n legendItem.setAttribute('opacity', treemap.selectionSettings.opacity);\n }\n }\n }\n }\n}\n/**\n *\n * @param {HTMLCollection} elements - Specifies the selected TreeMap element.\n * @param {string} type - Specifies the selection type.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {void}\n */\nexport function removeClassNames(elements, type, treemap) {\n var element;\n var options = {};\n for (var j = 0; j < elements.length; j++) {\n element = isNullOrUndefined(elements[j].childNodes[0]) ? elements[j] :\n elements[j].childNodes[0];\n options = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])]['options'];\n applyOptions(element, options);\n elements[j].classList.remove(type);\n j -= 1;\n }\n}\n/**\n *\n * @param {SVGPathElement} element - Specifies the SVG path element.\n * @param {any} options - Specifies the settings for the SVG path element.\n * @returns {void}\n */\nexport function applyOptions(element, options) {\n element.setAttribute('opacity', options['opacity']);\n if (!isNullOrUndefined(options['fill'])) {\n element.setAttribute('fill', options['fill']);\n }\n else {\n element.setAttribute('fill', 'black');\n }\n element.setAttribute('stroke', options['border']['color']);\n element.setAttribute('stroke-width', options['border']['width']);\n}\n/**\n *\n * @param {string} format - Specifies the format value.\n * @param {any} data - Specifies the data source object.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {string} - Returns the formatted text.\n */\nexport function textFormatter(format, data, treemap) {\n if (isNullOrUndefined(format)) {\n return null;\n }\n var keys = Object.keys(data);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n format = format.split('${' + key + '}').join(formatValue(data[key], treemap).toString());\n }\n return format;\n}\n/**\n *\n * @param {number} value - Specifies the text to be formatted.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {string | number} - Returns the formatted text.\n */\nexport function formatValue(value, treemap) {\n var formatValue;\n var formatFunction;\n if (treemap.format && !isNaN(Number(value))) {\n formatFunction = treemap.intl.getNumberFormat({ format: treemap.format, useGrouping: treemap.useGroupingSeparator });\n formatValue = formatFunction(Number(value));\n }\n else {\n formatValue = value;\n }\n return formatValue ? formatValue : '';\n}\n/**\n * @private\n */\nvar ColorValue = /** @class */ (function () {\n function ColorValue(r, g, b) {\n this.r = r;\n this.g = g;\n this.b = b;\n }\n return ColorValue;\n}());\nexport { ColorValue };\n/**\n * @param {ColorValue} value - Specfies the color value\n * @returns {string} - Returns the string\n * @private\n */\nexport function convertToHexCode(value) {\n return '#' + componentToHex(value.r) + componentToHex(value.g) + componentToHex(value.b);\n}\n/**\n * @param {number} value - Specifies the value\n * @returns {string} - Returns the string\n * @private */\nexport function componentToHex(value) {\n var hex = value.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n}\n/**\n * @param {string} hex - Specifies the hex value\n * @returns {ColorValue} - Returns the color value\n * @private\n */\nexport function convertHexToColor(hex) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? new ColorValue(parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)) :\n new ColorValue(255, 255, 255);\n}\n/**\n * @param {string} color - Specifies the color\n * @returns {string} - Returns the string\n * @private\n */\nexport function colorNameToHex(color) {\n color = color === 'transparent' ? 'white' : color;\n var element = document.getElementById('treeMapMeasureText');\n element.style.color = color;\n color = window.getComputedStyle(element).color;\n var isRGBValue = color.replace(/[()RGBrgba ]/g, '').split(',');\n return convertToHexCode(new ColorValue(parseInt(isRGBValue[0], 10), parseInt(isRGBValue[1], 10), parseInt(isRGBValue[2], 10)));\n}\n/**\n * @param {Location} location - Specifies the location\n * @param {string} shape - Specifies the shape\n * @param {Size} size - Specifies the size\n * @param {string} url - Specifies the url\n * @param {PathOption} options - Specifies the options\n * @returns {Element} - Returns the element\n * @private\n */\nexport function drawSymbol(location, shape, size, url, options) {\n var svgRenderer = new SvgRenderer('');\n var temp = renderLegendShape(location, size, shape, options, url);\n var htmlElement = svgRenderer['draw' + temp.functionName](temp.renderOption);\n return htmlElement;\n}\n/**\n * @param {Location} location - Specifies the location\n * @param {Size} size - Specifies the size\n * @param {string} shape - Specifies the shape\n * @param {PathOption} options - Specifies the path option\n * @param {string} url - Specifies the string\n * @returns {IShapes} - Returns the shapes\n * @private\n */\nexport function renderLegendShape(location, size, shape, options, url) {\n var renderPath;\n var functionName = 'Path';\n var shapeWidth = size.width;\n var shapeHeight = size.height;\n var shapeX = location.x;\n var shapeY = location.y;\n var x = location.x + (-shapeWidth / 2);\n var y = location.y + (-shapeHeight / 2);\n switch (shape) {\n case 'Circle':\n case 'Bubble':\n functionName = 'Ellipse';\n merge(options, { 'rx': shapeWidth / 2, 'ry': shapeHeight / 2, 'cx': shapeX, 'cy': shapeY });\n break;\n case 'VerticalLine':\n renderPath = 'M' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' + 'L' + ' ' + shapeX + ' '\n + (shapeY + (-shapeHeight / 2));\n merge(options, { 'd': renderPath });\n break;\n case 'Diamond':\n renderPath = 'M' + ' ' + x + ' ' + shapeY + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + shapeY + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + shapeY + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Rectangle':\n renderPath = 'M' + ' ' + x + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (-shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Triangle':\n renderPath = 'M' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'InvertedTriangle':\n renderPath = 'M' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX - (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Pentagon':\n // eslint-disable-next-line no-case-declarations\n var eq = 72;\n // eslint-disable-next-line no-case-declarations\n var xValue = void 0;\n // eslint-disable-next-line no-case-declarations\n var yValue = void 0;\n for (var i = 0; i <= 5; i++) {\n xValue = (shapeWidth / 2) * Math.cos((Math.PI / 180) * (i * eq));\n yValue = (shapeWidth / 2) * Math.sin((Math.PI / 180) * (i * eq));\n if (i === 0) {\n renderPath = 'M' + ' ' + (shapeX + xValue) + ' ' + (shapeY + yValue) + ' ';\n }\n else {\n renderPath = renderPath.concat('L' + ' ' + (shapeX + xValue) + ' ' + (shapeY + yValue) + ' ');\n }\n }\n renderPath = renderPath.concat('Z');\n merge(options, { 'd': renderPath });\n break;\n case 'Star':\n renderPath = 'M ' + (location.x + size.width / 3) + ' ' + (location.y - size.height / 2) + ' L ' + (location.x - size.width / 2)\n + ' ' + (location.y + size.height / 6) + ' L ' + (location.x + size.width / 2) + ' ' + (location.y + size.height / 6)\n + ' L ' + (location.x - size.width / 3) + ' ' + (location.y - size.height / 2) + ' L ' + location.x + ' ' +\n (location.y + size.height / 2) + ' L ' + (location.x + size.width / 3) + ' ' + (location.y - size.height / 2) + ' Z';\n merge(options, { 'd': renderPath });\n break;\n case 'Cross':\n renderPath = 'M' + ' ' + x + ' ' + shapeY + ' ' + 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + shapeY + ' ' +\n 'M' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' + 'L' + ' ' + shapeX + ' ' +\n (shapeY + (-shapeHeight / 2));\n merge(options, { 'd': renderPath });\n break;\n case 'Image':\n functionName = 'Image';\n merge(options, { 'href': url, 'height': shapeHeight, 'width': shapeWidth, x: x, y: y });\n break;\n }\n return { renderOption: options, functionName: functionName };\n}\n/**\n *\n * @param {any} data - Specifies the data source object.\n * @param {any} item - Specifies the leaf item.\n * @returns {boolean} - Returns whether the TreeMap item is level item or leaf item.\n */\nexport function isParentItem(data, item) {\n var isParentItem = false;\n for (var j = 0; j < data.length; j++) {\n if (item['levelOrderName'] === data[j]['levelOrderName']) {\n isParentItem = true;\n break;\n }\n }\n return isParentItem;\n}\n/**\n * Specifies the data to be received through Ajax request for treemap.\n */\nvar TreeMapAjax = /** @class */ (function () {\n function TreeMapAjax(options, type, async, contentType, sendData) {\n this.dataOptions = options;\n this.type = type || 'GET';\n this.async = async || true;\n this.contentType = contentType;\n this.sendData = sendData;\n }\n return TreeMapAjax;\n}());\nexport { TreeMapAjax };\n/**\n *\n * @param {any[]} collection - Specifies the legend collection.\n * @returns {void}\n * @private\n */\nexport function removeShape(collection) {\n if (collection.length > 0) {\n for (var i = 0; i < collection.length; i++) {\n var item = collection[i];\n setColor(item['legendEle'], item['oldFill'], item['oldOpacity'], item['oldBorderColor'], item['oldBorderWidth']);\n }\n }\n}\n/**\n *\n * @param {any[]} collection - Specifies the legend collection.\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @returns {void}\n * @private\n */\nexport function removeLegend(collection, treeMap) {\n if (collection.length > 0) {\n for (var j = 0; j < collection.length; j++) {\n var item = collection[j];\n var legendIndex = parseFloat(item['legendEle'].id.split('_Index_')[1]);\n var isText = item['legendEle'].id.indexOf('Text') > -1;\n var shapeId = isText ? item['legendEle'].id.replace('_Text', '') : item['legendEle'].id;\n var legendShape = treeMap.legendSettings.mode === 'Interactive'\n ? document.getElementById(shapeId)\n : document.getElementById(treeMap.element.id + '_Legend_Shape_Index_' + legendIndex);\n var legendText = treeMap.legendSettings.mode === 'Interactive'\n ? document.getElementById(shapeId + '_Text')\n : document.getElementById(treeMap.element.id + '_Legend_Text_Index_' + legendIndex);\n if (!isNullOrUndefined(legendShape)) {\n setColor(legendShape, item['oldFill'], item['oldOpacity'], item['oldBorderColor'], item['oldBorderWidth']);\n }\n if (!isNullOrUndefined(legendText)) {\n setColor(legendText, treeMap.legendSettings.textStyle.color, item['oldOpacity'], item['oldBorderColor'], item['oldBorderWidth']);\n }\n var dataCount = !isNullOrUndefined(item['ShapeCollection']) ? item['ShapeCollection']['Elements'].length : 0;\n for (var k = 0; k < dataCount; k++) {\n var shapeElement = document.getElementById(item['ShapeCollection']['Elements'][k].id);\n if (!isNullOrUndefined(shapeElement)) {\n setColor(shapeElement, item['shapeOldFill'], item['shapeOldOpacity'], item['shapeOldBorderColor'], item['shapeOldBorderWidth']);\n }\n }\n }\n }\n}\n/**\n *\n * @param {Element} element - Specifies the selected element.\n * @param {string} fill - Specifies the fill color.\n * @param {string} opacity - Specifies the opacity.\n * @param {string} borderColor - Specifies the border color.\n * @param {string} borderWidth - Specifies the border width.\n * @returns {void}\n */\nexport function setColor(element, fill, opacity, borderColor, borderWidth) {\n element.setAttribute('fill', fill);\n element.setAttribute('opacity', opacity);\n element.setAttribute('stroke', borderColor);\n element.setAttribute('stroke-width', borderWidth);\n}\n/**\n *\n * @param {any[]} collection - Specifies the selected item collection.\n * @param {any[]} element - Specifies the selected element collection.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {void}\n */\nexport function removeSelectionWithHighlight(collection, element, treemap) {\n removeLegend(collection, treemap);\n element = [];\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n}\n/**\n *\n * @param {number} length - Specifies the length of the legend group.\n * @param {any} item - Specifies the legend item.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {number} - Returns the legend index.\n */\nexport function getLegendIndex(length, item, treemap) {\n var index;\n var valuePath = treemap.rangeColorValuePath;\n for (var i = 0; i < length; i++) {\n var dataLength = treemap.treeMapLegendModule.legendCollections[i]['legendData'].length;\n if (dataLength > 0) {\n for (var j = 0; j < dataLength; j++) {\n if ((!isNullOrUndefined(valuePath) && valuePath !== '' && treemap.leafItemSettings.colorMapping.length > 0 ?\n (treemap.treeMapLegendModule.legendCollections[i]['legendData'][j]['data'][valuePath] === item['data'][valuePath])\n : treemap.treeMapLegendModule.legendCollections[i]['legendData'][j]['levelOrderName'] === item['levelOrderName']\n || item['levelOrderName'].indexOf(treemap.treeMapLegendModule.legendCollections[i]['legendName']) > -1)) {\n index = i;\n break;\n }\n }\n }\n else if (treemap.palette && treemap.palette.length > 0) {\n if ((treemap.treeMapLegendModule.legendCollections[i]['levelOrderName'] === item['levelOrderName'] ||\n (item['levelOrderName'].indexOf(treemap.treeMapLegendModule.legendCollections[i]['levelOrderName'])) > -1)\n && treemap.treeMapLegendModule.legendCollections[i]['legendName'] === item['name']) {\n index = i;\n break;\n }\n }\n }\n return index;\n}\n/**\n *\n * @param {any[]} collection - Specifies the legend collection.\n * @param {number} index - Specifies the index of legend.\n * @param {number} number - Specifies the leaf item index.\n * @param {Element} legendElement - Specifies the legend element.\n * @param {Element} shapeElement - Specifies the shape element.\n * @param {any[]} renderItems - Specifies the item index.\n * @param {any[]} legendCollection - Specifies the legend collection.\n * @returns {void}\n */\nexport function pushCollection(collection, index, number, legendElement, shapeElement, renderItems, legendCollection) {\n collection.push({\n legendEle: legendElement, oldFill: legendCollection[index]['legendFill'],\n oldOpacity: legendCollection[index]['opacity'], oldBorderColor: legendCollection[index]['borderColor'],\n oldBorderWidth: legendCollection[index]['borderWidth'],\n shapeElement: shapeElement, shapeOldFill: renderItems[number]['options']['fill'],\n shapeOldOpacity: renderItems[number]['options']['opacity'],\n shapeOldBorderColor: renderItems[number]['options']['border']['color'],\n shapeOldBorderWidth: renderItems[number]['options']['border']['width']\n });\n}\n/**\n * To trigger the download element\n *\n * @param {string} fileName - Specifies the file name\n * @param {ExportType} type - Specifies the type\n * @param {string} url - Specifies the url\n * @param {boolean} isDownload - Specifies the boolean value\n * @returns {void}\n * @private\n */\nexport function triggerDownload(fileName, type, url, isDownload) {\n createElement('a', {\n attrs: {\n 'download': fileName + '.' + type.toLocaleLowerCase(),\n 'href': url\n }\n }).dispatchEvent(new MouseEvent(isDownload ? 'click' : 'move', {\n view: window,\n bubbles: false,\n cancelable: true\n }));\n}\n/**\n *\n * @param {string} id - Specifies the id of the element to be removed.\n * @returns {void}\n */\nexport function removeElement(id) {\n var element = document.getElementById(id);\n return element ? remove(element) : null;\n}\n","/**\n * Maps Themes doc\n */\nimport { defaultFont } from './constants';\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Theme;\n(function (Theme) {\n /**\n * @private\n */\n Theme.mapsTitleFont = {\n size: '14px',\n fontWeight: 'Medium',\n color: '#424242',\n fontStyle: 'Medium',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n})(Theme || (Theme = {}));\n/**\n * To get the theme style based on treemap theme.\n *\n * @param {TreeMapTheme} theme Specifies the theme of the treemap control.\n * @returns {IThemeStyle} Returns the theme.\n * @private\n */\nexport function getThemeStyle(theme) {\n var style;\n var color;\n switch (theme.toLowerCase()) {\n case 'materialdark':\n color = '#303030';\n break;\n case 'fabricdark':\n color = '#201F1F';\n break;\n case 'bootstrapdark':\n color = '#1A1A1A';\n break;\n }\n switch (theme.toLowerCase()) {\n case 'bootstrapdark':\n case 'fabricdark':\n case 'materialdark':\n style = {\n backgroundColor: color,\n titleFontColor: '#FFFFFF',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n tooltipFontSize: '13px',\n legendTitleColor: '#DADADA',\n legendTextColor: '#DADADA',\n fontSize: '15px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif',\n labelFontSize: '12px',\n labelFontFamily: defaultFont,\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'highcontrast':\n style = {\n backgroundColor: '#000000',\n titleFontColor: '#FFFFFF',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n tooltipFontSize: '13px',\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontSize: '15px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n labelFontFamily: defaultFont,\n fontFamily: 'Roboto, Noto, Sans-serif',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'bootstrap4':\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#212529',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#212529',\n tooltipFillColor: '#000000',\n tooltipFontColor: '#FFFFFF',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 0.9,\n legendTitleColor: '#212529',\n legendTextColor: '#212529',\n fontFamily: 'HelveticaNeue-Medium',\n fontSize: '16px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'HelveticaNeue',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'tailwind':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#374151',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#374151',\n tooltipFillColor: '#111827',\n tooltipFontColor: '#F9FAFB',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#374151',\n legendTextColor: '#374151',\n fontFamily: 'Inter',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'tailwinddark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#D1D5DB',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#D1D5DB',\n tooltipFillColor: '#F9FAFB',\n tooltipFontColor: '#1F2937',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#D1D5DB',\n legendTextColor: '#D1D5DB',\n fontFamily: 'Inter',\n fontWeight: 'Normal',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'tailwind3':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#111827',\n titleFontWeight: '600',\n subTitleFontColor: '#111827',\n tooltipFillColor: '#111827',\n tooltipFontColor: '#F9FAFB',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#111827',\n legendTextColor: '#111827',\n fontFamily: 'Inter',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'tailwind3dark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#FFFFFF',\n titleFontWeight: '600',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#F9FAFB',\n tooltipFontColor: '#1F2937',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontFamily: 'Inter',\n fontWeight: '400',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'bootstrap5':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#212529',\n titleFontWeight: '400',\n subTitleFontColor: '#212529',\n tooltipFillColor: '#000000',\n tooltipFontColor: '#FFFFFF',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 0.9,\n legendTitleColor: '#212529',\n legendTextColor: '#212529',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '10px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '10px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'bootstrap5dark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#DEE2E6',\n titleFontWeight: '400',\n subTitleFontColor: '#DEE2E6',\n tooltipFillColor: '#FFFFFF',\n tooltipFontColor: '#212529',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 0.9,\n legendTitleColor: '#DEE2E6',\n legendTextColor: '#DEE2E6',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '10px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '10px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluent':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#201F1E',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#201F1E',\n tooltipFillColor: '#FFFFFF',\n tooltipFontColor: '#323130',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#201F1E',\n legendTextColor: '#201F1E',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluentdark':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#F3F2F1',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#F3F2F1',\n tooltipFillColor: '#252423',\n tooltipFontColor: '#F3F2F1',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#F3F2F1',\n legendTextColor: '#F3F2F1',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'material3':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#1C1B1F',\n titleFontWeight: '500',\n subTitleFontColor: '#1C1B1F',\n tooltipFillColor: '#313033',\n tooltipFontColor: '#F4EFF4',\n tooltipFontSize: '14px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#1C1B1F',\n legendTextColor: '#49454E',\n fontFamily: 'Roboto',\n fontSize: '16px',\n fontWeight: '400',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'Roboto',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'material3dark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#E6E1E5',\n titleFontWeight: '500',\n subTitleFontColor: '#E6E1E5',\n tooltipFillColor: '#E6E1E5',\n tooltipFontColor: '#313033',\n tooltipFontSize: '14px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#E6E1E5',\n legendTextColor: '#CAC4D0',\n fontFamily: 'Roboto',\n fontSize: '16px',\n fontWeight: '400',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'Roboto',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluent2':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#242424',\n titleFontWeight: '600',\n subTitleFontColor: '#242424',\n tooltipFillColor: '#FFFFFF',\n tooltipFontColor: '#242424',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#242424',\n legendTextColor: '#242424',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '10px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluent2dark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#FFFFFF',\n titleFontWeight: '600',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#292929',\n tooltipFontColor: '#FFFFFF',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '10px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluent2highcontrast':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#FFFFFF',\n titleFontWeight: '600',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#000000',\n tooltipFontColor: '#FFFFFF',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '10px',\n legendBorderColor: '#FFF',\n legendBorderWidth: 1,\n tooltipBorderColor: '#FFF',\n tooltipBorderWidth: 1\n };\n break;\n default:\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#424242',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#424242',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n tooltipFontSize: '13px',\n legendTitleColor: '#353535',\n legendTextColor: '#353535',\n fontSize: '15px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif',\n labelFontSize: '12px',\n labelFontFamily: defaultFont,\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n }\n return style;\n}\n","/**\n * TreeMap constants doc\n */\n/**\n * Triggers when the treemap is on load.\n *\n * @private\n */\nexport var load = 'load';\n/**\n * Triggers after treemap rendered.\n *\n * @private\n */\nexport var loaded = 'loaded';\n/**\n * Trigger before call the print method.\n *\n * @private\n */\nexport var beforePrint = 'beforePrint';\n/**\n * Trigger before each treemap item rendered.\n *\n * @private\n */\nexport var itemRendering = 'itemRendering';\n/**\n * Trigger after click on treemap item.\n *\n * @private\n */\nexport var drillStart = 'drillStart';\n/**\n * Trigger after drill start event completed.\n *\n * @private\n */\nexport var drillEnd = 'drillEnd';\n/**\n * Trigger after select the treemap item.\n *\n * @private\n */\nexport var itemSelected = 'itemSelected';\n/**\n * Trigger after hover on the treemap item.\n *\n * @private\n */\nexport var itemHighlight = 'itemHighlight';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport var tooltipRendering = 'tooltipRendering';\n/**\n * Trigger after click on the treemap item.\n *\n * @private\n */\nexport var itemClick = 'itemClick';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport var itemMove = 'itemMove';\n/**\n * Trigger after click on the treemap item.\n *\n * @private\n */\nexport var click = 'click';\n/**\n * Trigger after double click on the treemap item.\n *\n * @private\n */\nexport var doubleClick = 'doubleClick';\n/**\n * Trigger after right click on the treemap item.\n *\n * @private\n */\nexport var rightClick = 'rightClick';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport var mouseMove = 'mouseMove';\n/**\n * Trigger before each treemap item.\n *\n * @private\n */\nexport var legendItemRendering = 'legendItemRendering';\n/**\n * Trigger before legend items.\n *\n * @private\n */\nexport var legendRendering = 'legendRendering';\n/**\n * Trigger after resize the treemap.\n *\n * @private\n */\nexport var resize = 'resize';\n/**\n * Define the font family in treemap.\n *\n * @private\n */\nexport var defaultFont = 'Roboto, Segoe UI, Noto, Sans-serif';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * Maps base doc\n */\nimport { Property, ChildProperty, Complex, Collection } from '@syncfusion/ej2-base';\nimport { defaultFont } from './constants';\n/**\n * Sets and gets the options for customizing the color and width of the border in treemap.\n */\nvar Border = /** @class */ (function (_super) {\n __extends(Border, _super);\n function Border() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('#808080')\n ], Border.prototype, \"color\", void 0);\n __decorate([\n Property(0)\n ], Border.prototype, \"width\", void 0);\n return Border;\n}(ChildProperty));\nexport { Border };\n/**\n * Sets and gets the margin for the treemap.\n */\nvar Margin = /** @class */ (function (_super) {\n __extends(Margin, _super);\n function Margin() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(10)\n ], Margin.prototype, \"left\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"right\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"top\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"bottom\", void 0);\n return Margin;\n}(ChildProperty));\nexport { Margin };\n/**\n * Sets and gets the options to customize the style of the text contents in the treemap.\n */\nvar Font = /** @class */ (function (_super) {\n __extends(Font, _super);\n function Font() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], Font.prototype, \"size\", void 0);\n __decorate([\n Property(null)\n ], Font.prototype, \"color\", void 0);\n __decorate([\n Property(defaultFont)\n ], Font.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('')\n ], Font.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontStyle\", void 0);\n __decorate([\n Property(1)\n ], Font.prototype, \"opacity\", void 0);\n return Font;\n}(ChildProperty));\nexport { Font };\n/**\n * Sets and gets the options for customizing the title of the treemap.\n */\nvar CommonTitleSettings = /** @class */ (function (_super) {\n __extends(CommonTitleSettings, _super);\n function CommonTitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], CommonTitleSettings.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], CommonTitleSettings.prototype, \"description\", void 0);\n return CommonTitleSettings;\n}(ChildProperty));\nexport { CommonTitleSettings };\n/**\n * Sets and gets the options for customizing the subtitle of the treemap.\n */\nvar SubTitleSettings = /** @class */ (function (_super) {\n __extends(SubTitleSettings, _super);\n function SubTitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ fontFamily: null, fontWeight: null }, Font)\n ], SubTitleSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property('Center')\n ], SubTitleSettings.prototype, \"alignment\", void 0);\n return SubTitleSettings;\n}(CommonTitleSettings));\nexport { SubTitleSettings };\n/**\n * Sets and gets the options for customizing the title of the treemap.\n */\nvar TitleSettings = /** @class */ (function (_super) {\n __extends(TitleSettings, _super);\n function TitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ fontFamily: null, fontWeight: null }, Font)\n ], TitleSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property('Center')\n ], TitleSettings.prototype, \"alignment\", void 0);\n __decorate([\n Complex({}, SubTitleSettings)\n ], TitleSettings.prototype, \"subtitleSettings\", void 0);\n return TitleSettings;\n}(CommonTitleSettings));\nexport { TitleSettings };\n/**\n * Sets and gets the options to customize the color-mapping in treemap.\n */\nvar ColorMapping = /** @class */ (function (_super) {\n __extends(ColorMapping, _super);\n function ColorMapping() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"from\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"to\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"color\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"label\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"minOpacity\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"maxOpacity\", void 0);\n __decorate([\n Property(true)\n ], ColorMapping.prototype, \"showLegend\", void 0);\n return ColorMapping;\n}(ChildProperty));\nexport { ColorMapping };\n/**\n * Sets and gets the options for customizing the legend of the treemap.\n */\nvar LegendSettings = /** @class */ (function (_super) {\n __extends(LegendSettings, _super);\n function LegendSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('Default')\n ], LegendSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('transparent')\n ], LegendSettings.prototype, \"background\", void 0);\n __decorate([\n Property('Circle')\n ], LegendSettings.prototype, \"shape\", void 0);\n __decorate([\n Property('')\n ], LegendSettings.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], LegendSettings.prototype, \"height\", void 0);\n __decorate([\n Complex({ size: null, fontFamily: null, fontWeight: null }, Font)\n ], LegendSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], LegendSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(15)\n ], LegendSettings.prototype, \"shapeWidth\", void 0);\n __decorate([\n Property(15)\n ], LegendSettings.prototype, \"shapeHeight\", void 0);\n __decorate([\n Property(10)\n ], LegendSettings.prototype, \"shapePadding\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"imageUrl\", void 0);\n __decorate([\n Complex({ color: null, width: null }, Border)\n ], LegendSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ color: '#000000', width: 0 }, Border)\n ], LegendSettings.prototype, \"shapeBorder\", void 0);\n __decorate([\n Complex({}, CommonTitleSettings)\n ], LegendSettings.prototype, \"title\", void 0);\n __decorate([\n Complex({ size: null, fontFamily: null, fontWeight: null }, Font)\n ], LegendSettings.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('Bottom')\n ], LegendSettings.prototype, \"position\", void 0);\n __decorate([\n Property('None')\n ], LegendSettings.prototype, \"orientation\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"invertedPointer\", void 0);\n __decorate([\n Property('After')\n ], LegendSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('None')\n ], LegendSettings.prototype, \"labelDisplayMode\", void 0);\n __decorate([\n Property('Center')\n ], LegendSettings.prototype, \"alignment\", void 0);\n __decorate([\n Property({ x: 0, y: 0 })\n ], LegendSettings.prototype, \"location\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"showLegendPath\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"valuePath\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"removeDuplicateLegend\", void 0);\n return LegendSettings;\n}(ChildProperty));\nexport { LegendSettings };\n/**\n * Sets and gets the settings for drill down to visualize the treemap rendered in the initial state.\n */\nvar InitialDrillSettings = /** @class */ (function (_super) {\n __extends(InitialDrillSettings, _super);\n function InitialDrillSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], InitialDrillSettings.prototype, \"groupIndex\", void 0);\n __decorate([\n Property(null)\n ], InitialDrillSettings.prototype, \"groupName\", void 0);\n return InitialDrillSettings;\n}(ChildProperty));\nexport { InitialDrillSettings };\n/**\n * Sets and gets the options for customizing the leaf item of the treemap.\n */\nvar LeafItemSettings = /** @class */ (function (_super) {\n __extends(LeafItemSettings, _super);\n function LeafItemSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(false)\n ], LeafItemSettings.prototype, \"autoFill\", void 0);\n __decorate([\n Complex({}, Border)\n ], LeafItemSettings.prototype, \"border\", void 0);\n __decorate([\n Property(0)\n ], LeafItemSettings.prototype, \"gap\", void 0);\n __decorate([\n Property(10)\n ], LeafItemSettings.prototype, \"padding\", void 0);\n __decorate([\n Property(1)\n ], LeafItemSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LeafItemSettings.prototype, \"showLabels\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelPath\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelFormat\", void 0);\n __decorate([\n Property('TopLeft')\n ], LeafItemSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Complex({ color: null, size: null, fontFamily: null }, Font)\n ], LeafItemSettings.prototype, \"labelStyle\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelTemplate\", void 0);\n __decorate([\n Property('Center')\n ], LeafItemSettings.prototype, \"templatePosition\", void 0);\n __decorate([\n Property('Trim')\n ], LeafItemSettings.prototype, \"interSectAction\", void 0);\n __decorate([\n Collection([], ColorMapping)\n ], LeafItemSettings.prototype, \"colorMapping\", void 0);\n return LeafItemSettings;\n}(ChildProperty));\nexport { LeafItemSettings };\n/**\n * Sets and gets the options for customizing the tooltip of the treemap.\n */\nvar TooltipSettings = /** @class */ (function (_super) {\n __extends(TooltipSettings, _super);\n function TooltipSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('')\n ], TooltipSettings.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(0.75)\n ], TooltipSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(['Circle'])\n ], TooltipSettings.prototype, \"markerShapes\", void 0);\n __decorate([\n Complex({ width: null, color: null }, Border)\n ], TooltipSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: null, fontWeight: null, opacity: null }, Font)\n ], TooltipSettings.prototype, \"textStyle\", void 0);\n return TooltipSettings;\n}(ChildProperty));\nexport { TooltipSettings };\n/**\n * Sets and gets the options for customizing the selection of the leaf items in treemap.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], SelectionSettings.prototype, \"fill\", void 0);\n __decorate([\n Property('0.5')\n ], SelectionSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, Border)\n ], SelectionSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Item')\n ], SelectionSettings.prototype, \"mode\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Sets and gets the options for customizing the highlighting of the treemap item,\n * when the mouse hover is performed in it.\n */\nvar HighlightSettings = /** @class */ (function (_super) {\n __extends(HighlightSettings, _super);\n function HighlightSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], HighlightSettings.prototype, \"enable\", void 0);\n __decorate([\n Property('#808080')\n ], HighlightSettings.prototype, \"fill\", void 0);\n __decorate([\n Property('0.5')\n ], HighlightSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, Border)\n ], HighlightSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Item')\n ], HighlightSettings.prototype, \"mode\", void 0);\n return HighlightSettings;\n}(ChildProperty));\nexport { HighlightSettings };\n/**\n * Sets and gets the options for customizing the level leaf items of the treemap.\n */\nvar LevelSettings = /** @class */ (function (_super) {\n __extends(LevelSettings, _super);\n function LevelSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"groupPath\", void 0);\n __decorate([\n Property(0)\n ], LevelSettings.prototype, \"groupGap\", void 0);\n __decorate([\n Property(10)\n ], LevelSettings.prototype, \"groupPadding\", void 0);\n __decorate([\n Complex({}, Border)\n ], LevelSettings.prototype, \"border\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(false)\n ], LevelSettings.prototype, \"autoFill\", void 0);\n __decorate([\n Property(1)\n ], LevelSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LevelSettings.prototype, \"showHeader\", void 0);\n __decorate([\n Property(20)\n ], LevelSettings.prototype, \"headerHeight\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"headerFormat\", void 0);\n __decorate([\n Property('Near')\n ], LevelSettings.prototype, \"headerAlignment\", void 0);\n __decorate([\n Complex({ color: null, size: '13px', fontFamily: null }, Font)\n ], LevelSettings.prototype, \"headerStyle\", void 0);\n __decorate([\n Property('TopLeft')\n ], LevelSettings.prototype, \"templatePosition\", void 0);\n __decorate([\n Collection([], ColorMapping)\n ], LevelSettings.prototype, \"colorMapping\", void 0);\n return LevelSettings;\n}(ChildProperty));\nexport { LevelSettings };\n","import { Rect, itemsToOrder, TextOption, measureText, textTrim, hide, wordWrap, textWrap, getTemplateFunction, convertElement, findLabelLocation, PathOption, textFormatter, colorNameToHex, convertHexToColor, colorMap, measureElement, convertToContainer, convertToRect, getShortestEdge, getArea, orderByArea, isParentItem, maintainSelection } from '../utils/helper';\nimport { isNullOrUndefined, createElement, extend, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { findChildren, renderTextElement } from '../utils/helper';\nimport { itemRendering } from '../model/constants';\n/**\n * To calculate and render the shape layer\n */\nvar LayoutPanel = /** @class */ (function () {\n function LayoutPanel(treemap) {\n this.treemap = treemap;\n }\n LayoutPanel.prototype.processLayoutPanel = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data;\n var totalRect;\n if (this.treemap.treemapLevelData.levelsData && this.treemap.treemapLevelData.levelsData.length > 0) {\n data = (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) &&\n !isNullOrUndefined(this.treemap.initialDrillDown.groupName)) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length === 0) ?\n this.getDrilldownData(this.treemap.treemapLevelData.levelsData[0], [])[0] : this.treemap.treemapLevelData.levelsData[0];\n totalRect = extend({}, this.treemap.areaRect, totalRect, false);\n if (!isNullOrUndefined(this.treemap.treeMapLegendModule) && !isNullOrUndefined(this.treemap.totalRect)) {\n if (this.treemap.legendSettings.position !== 'Float') {\n totalRect = this.treemap.totalRect;\n }\n }\n if (!isNullOrUndefined(this.treemap.currentLevel) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? !isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length !== 0)) {\n var count = this.treemap.drilledItems.length - 1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var x = this.treemap.drilledItems[count]['data'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var y = {};\n y[this.treemap.drilledItems[count]['data']['groupName']] = [x];\n if (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) && !this.treemap.enableBreadcrumb) {\n this.treemap.currentLevel = this.treemap.drilledItems[count]['data']['groupIndex'];\n }\n this.calculateLayoutItems(y || this.treemap.treemapLevelData.levelsData[0], totalRect);\n this.renderLayoutItems();\n }\n else {\n if (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length === 0)) {\n this.treemap.currentLevel = this.treemap.initialDrillDown.groupIndex;\n }\n this.calculateLayoutItems(data || this.treemap.treemapLevelData.levelsData[0], totalRect);\n this.renderLayoutItems();\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getDrilldownData = function (data, drillData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var treemap = this.treemap;\n var newData = {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n if (child && child.length > 0 && drillData.length === 0) {\n for (var i = 0; i < child.length; i++) {\n if (child[i]['groupIndex'] === treemap.initialDrillDown.groupIndex &&\n child[i]['name'] === treemap.initialDrillDown.groupName) {\n child[i]['isDrilled'] = true;\n newData[child[i]['groupName']] = [child[i]];\n drillData.push(newData);\n }\n }\n for (var j = 0; j < child.length; j++) {\n this.getDrilldownData(child[j], drillData);\n }\n }\n return drillData;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.calculateLayoutItems = function (data, rect) {\n this.renderItems = [];\n this.parentData = [];\n if (!isNullOrUndefined(this.treemap.weightValuePath)) {\n if (this.treemap.layoutType.indexOf('SliceAndDice') > -1) {\n this.computeSliceAndDiceDimensional(data, rect);\n }\n else {\n rect.height = rect.height + rect.y;\n rect.width = rect.width + rect.x;\n this.computeSquarifyDimensional(data, rect);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeSliceAndDiceDimensional = function (data, coords) {\n var leafItem = this.treemap.leafItemSettings;\n var rect;\n var groups = this.treemap.levels;\n var groupIndex;\n var isLeafItem = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var children = findChildren(data)['values'];\n var gap;\n var headerHeight;\n if (children && children.length > 0) {\n this.sliceAndDiceProcess(children, coords);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < children.length; i++) {\n groupIndex = children[i]['groupIndex'];\n isLeafItem = (groups.length === 0 || groupIndex === groups.length);\n gap = isLeafItem ? leafItem.gap : groups[groupIndex].groupGap;\n headerHeight = groups.length === 0 ? 0 : groups[groupIndex] ? groups[groupIndex].showHeader ?\n groups[groupIndex].headerHeight : 0 : groups[groupIndex - 1].showHeader ?\n groups[groupIndex - 1].headerHeight : 0;\n rect = children[i]['rect'];\n rect = new Rect(rect.x + (gap / 2), rect.y + (headerHeight + (gap / 2)), rect.width - gap, Math.abs(rect.height - (gap + headerHeight)));\n this.computeSliceAndDiceDimensional(children[i], rect);\n }\n }\n }\n return data;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.sliceAndDiceProcess = function (processData, rect) {\n var parentArea = rect.height * rect.width;\n var levels = this.treemap.levels;\n var childValue;\n var alottedValue = 0;\n var totalWeight = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n processData.forEach(function (data) { totalWeight += data['weight']; });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n processData.forEach(function (child) {\n child['weightArea'] = parentArea * child['weight'] / totalWeight;\n });\n var isHorizontal = (this.treemap.layoutType === 'SliceAndDiceAuto') ? (rect.width > rect.height) :\n (this.treemap.layoutType === 'SliceAndDiceHorizontal');\n processData.sort(itemsToOrder);\n for (var i = 0; i < processData.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = processData[i];\n item['isLeafItem'] = (levels.length === 0) || ((this.treemap.isHierarchicalData ||\n isNullOrUndefined(this.treemap.leafItemSettings.labelPath)) ?\n item['groupIndex'] === levels.length - 1 : item['groupIndex'] === this.treemap.levels.length);\n if (isHorizontal) {\n childValue = ((parentArea / totalWeight) * processData[i]['weight']) / rect.height;\n if (alottedValue <= rect.width) {\n processData[i]['rect'] = new Rect(alottedValue + rect.x, rect.y, childValue, rect.height);\n }\n }\n else {\n childValue = ((parentArea / totalWeight) * processData[i]['weight']) / rect.width;\n if (alottedValue <= rect.height) {\n processData[i]['rect'] = new Rect(rect.x, alottedValue + rect.y, rect.width, childValue);\n }\n }\n alottedValue += childValue;\n this.renderItems.push(processData[i]);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeSquarifyDimensional = function (data, coords) {\n var leaf = this.treemap.leafItemSettings;\n var rect;\n var levels = this.treemap.levels;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n var index;\n var padding;\n var headerHeight;\n if (child && child.length > 0) {\n if (this.parentData.length === 0) {\n this.parentData = [];\n this.parentData.push(child);\n }\n this.calculateChildrenLayout(data, child, coords);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < child.length; i++) {\n item = child[i];\n index = item['groupIndex'];\n rect = item['rect'];\n padding = (item['isLeafItem'] ? leaf.padding : levels[index].groupPadding) / 2;\n headerHeight = this.treemap.isHierarchicalData ? index === 0 && item['isLeafItem'] ? 0 : levels[index] ?\n levels[index].showHeader ? levels[index].headerHeight : 0 : 0 :\n (levels.length === 0) ? 0 : levels[index] ?\n levels[index].showHeader ? levels[index].headerHeight : 0 : 0;\n rect = new Rect(rect.x + padding, rect.y + (headerHeight + padding), rect.width - padding, rect.height - padding);\n if (!item['isLeafItem'] && item['weight'] > 0) {\n this.computeSquarifyDimensional(child[i], rect);\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.calculateChildrenLayout = function (parent, children, coords) {\n this.computeTotalArea(children, getArea(coords));\n children.sort(orderByArea);\n this.performRowsLayout(children, [], coords, []);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.performRowsLayout = function (data, currentRow, rect, stack) {\n var dataLength = data.length;\n if (dataLength === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newCoordinates = this.getCoordinates(currentRow, rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newStack = stack.concat(newCoordinates);\n return newStack;\n }\n var width = getShortestEdge(rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var nextDatum = data[0];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var restData = data.slice(1, dataLength);\n if (this.aspectRatio(currentRow, nextDatum, width)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newRow = currentRow.concat(nextDatum);\n return this.performRowsLayout(restData, newRow, rect, stack);\n }\n else {\n var currentRowLength = currentRow.length;\n var valueSum = 0;\n for (var i = 0; i < currentRowLength; i += 1) {\n valueSum += currentRow[i]['itemArea'];\n }\n var newContainer = this.cutArea(rect, valueSum);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newCoordinates = this.getCoordinates(currentRow, rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newStack = stack.concat(newCoordinates);\n return this.performRowsLayout(data, [], newContainer, newStack);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.aspectRatio = function (currentRow, nextDatum, length) {\n if (currentRow.length === 0) {\n return true;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newRow = currentRow.concat(nextDatum);\n var currentMaxAspectRatio = this.findMaxAspectRatio(currentRow, length);\n var newMaxAspectRatio = this.findMaxAspectRatio(newRow, length);\n return (currentMaxAspectRatio >= newMaxAspectRatio);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.findMaxAspectRatio = function (row, length) {\n var rowLength = row.length;\n var minArea = Infinity;\n var maxArea = -Infinity;\n var sumArea = 0;\n for (var i = 0; i < rowLength; i += 1) {\n var area = row[i]['itemArea'];\n if (area < minArea) {\n minArea = area;\n }\n if (area > maxArea) {\n maxArea = area;\n }\n sumArea += area;\n }\n var result = Math.max((Math.pow(length, 2)) * maxArea / (Math.pow(sumArea, 2)), (Math.pow(sumArea, 2)) /\n ((Math.pow(length, 2)) * minArea));\n return result;\n };\n LayoutPanel.prototype.cutArea = function (rect, area) {\n var newContainer = convertToContainer(rect);\n var width = newContainer.width;\n var height = newContainer.height;\n var xOffset = newContainer.x;\n var yOffset = newContainer.y;\n if (width >= height) {\n var areaWidth = area / height;\n var newWidth = width - areaWidth;\n var container = {\n x: xOffset + areaWidth,\n y: yOffset,\n width: newWidth,\n height: height\n };\n return convertToRect(container);\n }\n else {\n var areaHeight = area / width;\n var newHeight = height - areaHeight;\n var container = {\n x: xOffset,\n y: yOffset + areaHeight,\n width: width,\n height: newHeight\n };\n return convertToRect(container);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getCoordinates = function (row, rect) {\n var container = convertToContainer(rect);\n var width = container.width;\n var height = container.height;\n var xOffset = container.x;\n var yOffset = container.y;\n var rowLength = row.length;\n var levels = this.treemap.levels;\n var leaf = this.treemap.leafItemSettings;\n var index;\n var valueSum = 0;\n for (var i = 0; i < rowLength; i += 1) {\n valueSum += row[i]['itemArea'];\n }\n var areaWidth = valueSum / height;\n var areaHeight = valueSum / width;\n var subXOffset = xOffset;\n var subYOffset = yOffset;\n var padding;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var coordinates = [];\n var isParent;\n var parentRect;\n for (var i = 0; i < rowLength; i += 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = row[i];\n index = item['groupIndex'];\n item['isLeafItem'] = (levels.length === 0) || (this.treemap.isHierarchicalData ? index === levels.length :\n isNullOrUndefined(leaf.labelPath) ? false : index === levels.length);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isParent = isParentItem(this.parentData[0], item);\n parentRect = isParent ? this.treemap.areaRect : item['parent'].rect;\n padding = item['isLeafItem'] ? leaf.padding : levels[index].groupPadding;\n if (width >= height) {\n var y1 = subYOffset + item['itemArea'] / areaWidth;\n item['rect'] = {\n x: subXOffset,\n y: subYOffset,\n width: subXOffset + areaWidth,\n height: y1\n };\n subYOffset = y1;\n }\n else {\n var x1 = subXOffset + item['itemArea'] / areaHeight;\n item['rect'] = {\n x: subXOffset,\n y: subYOffset,\n width: x1,\n height: subYOffset + areaHeight\n };\n subXOffset = x1;\n }\n if (item['weight'] > 0 && (isParent || (Math.round(rect.y + (padding / 2)) <=\n Math.round(parentRect.y + (parentRect.height - parentRect.y)) && Math.round(rect.x + (padding / 2)) <=\n Math.round(parentRect.x + (parentRect.width - parentRect.x))))) {\n this.renderItems.push(item);\n coordinates.push(item);\n }\n }\n return coordinates;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeTotalArea = function (data, area) {\n var dataLength = data.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var result = [];\n for (var i = 0; i < dataLength; i += 1) {\n var dataLength_1 = data.length;\n var dataSum = 0;\n for (var i_1 = 0; i_1 < dataLength_1; i_1 += 1) {\n dataSum += data[i_1]['weight'];\n }\n var multiplier = area / dataSum;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var datum = void 0;\n for (var j = 0; j < dataLength_1; j++) {\n datum = data[j];\n datum['itemArea'] = datum['weight'] * multiplier;\n result.push(datum);\n }\n }\n return result;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.onDemandProcess = function (childItems) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentItem = {};\n var totalRect;\n parentItem = childItems[0]['parent'];\n this.treemap.currentLevel = parentItem['isDrilled'] ? parentItem['groupIndex'] : null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentItemGroupname = {};\n if (isNullOrUndefined(parentItem['groupName'])) {\n parentItemGroupname = parentItem;\n }\n else {\n parentItemGroupname[parentItem['groupName']] = [parentItem];\n }\n totalRect = extend({}, this.treemap.areaRect, totalRect, false);\n if (!isNullOrUndefined(this.treemap.treeMapLegendModule) && !isNullOrUndefined(this.treemap.totalRect)) {\n totalRect = this.treemap.totalRect;\n }\n var count = this.treemap.levels.length;\n for (var i = 0; i < count; i++) {\n var levelCount = childItems[0]['groupIndex'];\n if (count === levelCount) {\n this.treemap.levels[count] = this.treemap.levels[i];\n }\n else {\n this.treemap.levels.splice(count - 1, 1);\n }\n }\n this.calculateLayoutItems(parentItemGroupname, totalRect);\n this.renderLayoutItems();\n };\n // eslint-disable-next-line valid-jsdoc\n /** @private */\n LayoutPanel.prototype.renderLayoutItems = function () {\n var _this = this;\n var position;\n var treeMap = this.treemap;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var txtVisible;\n var getItemColor;\n var eventArgs;\n this.renderer = treeMap.renderer;\n var pathOptions;\n var elementID = treeMap.element.id;\n var index;\n var templatePosition;\n var mode = treeMap.layoutType;\n var rect;\n var format;\n var interSectAction = this.treemap.leafItemSettings.interSectAction;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var fill;\n var item;\n var renderText;\n var opacity;\n var rectPath = '';\n var secondaryEle = document.getElementById(treeMap.element.id + '_Secondary_Element');\n var groupId;\n var templateEle;\n var gap;\n var textStyle;\n var levels = treeMap.levels;\n this.layoutGroup = this.renderer.createGroup({ id: elementID + '_TreeMap_' + mode + '_Layout' });\n var itemGroup;\n var template;\n var border;\n var templateGroup = createElement('div', {\n id: treeMap.element.id + '_Label_Template_Group',\n className: 'template'\n });\n templateGroup.style.cssText = 'overflow: hidden; position: absolute;pointer-events: none;' +\n 'top:' + treeMap.areaRect.y + 'px;' +\n 'left:' + treeMap.areaRect.x + 'px;' +\n 'height:' + treeMap.areaRect.height + 'px;' +\n 'width:' + treeMap.areaRect.width + 'px;';\n var isLeafItem = false;\n var leaf = treeMap.leafItemSettings;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childItems;\n var connectorText;\n var _loop_1 = function (i) {\n item = this_1.renderItems[i];\n index = item['groupIndex'];\n if (this_1.treemap.drillDownView && isNullOrUndefined(this_1.treemap.currentLevel)\n && index > 0 || this_1.treemap.drillDownView\n && index > (this_1.treemap.currentLevel + 1)) {\n return \"continue\";\n }\n rect = item['rect'];\n isLeafItem = item['isLeafItem'];\n groupId = elementID + '_Level_Index_' + index + '_Item_Index_' + i;\n itemGroup = this_1.renderer.createGroup({ id: groupId + '_Group' });\n gap = (isLeafItem ? leaf.gap : levels[index].groupGap) / 2;\n var treemapItemRect = this_1.treemap.totalRect ? (treeMap.legendSettings.visible ? this_1.treemap.totalRect\n : convertToContainer(this_1.treemap.totalRect)) : this_1.treemap.areaRect;\n if (treeMap.layoutType === 'Squarified') {\n rect.width = Math.abs(rect.x - rect.width) - gap;\n rect.height = Math.abs(rect.y - rect.height) - gap;\n }\n if (treeMap.renderDirection === 'TopRightBottomLeft') {\n rect.x = (treemapItemRect.x + treemapItemRect.width) - rect.width - Math.abs(treemapItemRect.x - rect.x);\n }\n else if (treeMap.renderDirection === 'BottomLeftTopRight') {\n rect.y = (treemapItemRect.y + treemapItemRect.height) - rect.height - Math.abs(treemapItemRect.y - rect.y);\n }\n else if (treeMap.renderDirection === 'BottomRightTopLeft') {\n rect.x = (treemapItemRect.x + treemapItemRect.width) - rect.width - Math.abs(treemapItemRect.x - rect.x);\n rect.y = (treemapItemRect.y + treemapItemRect.height) - rect.height - Math.abs(treemapItemRect.y - rect.y);\n }\n getItemColor = this_1.getItemColor(isLeafItem, item);\n fill = getItemColor['fill'];\n opacity = getItemColor['opacity'];\n format = isLeafItem ? leaf.labelFormat : (levels[index]).headerFormat;\n var levelName;\n txtVisible = isLeafItem ? leaf.showLabels : (levels[index]).showHeader;\n if (index === this_1.treemap.currentLevel) {\n if (this_1.treemap.enableBreadcrumb) {\n var re = /#/gi;\n connectorText = '#' + this_1.treemap.breadcrumbConnector + '#';\n levelName = item['levelOrderName'].replace(re, connectorText);\n levelName = index !== 0 ? '#' + levelName : levelName;\n }\n else {\n levelName = item['name'];\n }\n }\n else {\n if (this_1.treemap.enableBreadcrumb) {\n item['isDrilled'] = false;\n }\n levelName = item['name'];\n }\n renderText = textFormatter(format, item['data'], this_1.treemap) || levelName || 'undefined';\n childItems = findChildren(item)['values'];\n renderText = !isLeafItem && childItems && childItems.length > 0 && this_1.treemap.enableDrillDown ?\n !item['isDrilled'] ? treeMap.enableRtl ? renderText + ' [+]' : '[+] ' + renderText :\n treeMap.enableRtl ? renderText + ' [-]' : '[-] ' + renderText : renderText;\n if (treeMap.enableHtmlSanitizer) {\n renderText = SanitizeHtmlHelper.sanitize(renderText);\n }\n var fontFamily = (isLeafItem ? leaf.labelStyle.fontFamily : levels[index].headerStyle.fontFamily);\n fontFamily = fontFamily || this_1.treemap.themeStyle.labelFontFamily;\n var size = (isLeafItem ? leaf.labelStyle.size : levels[index].headerStyle.size);\n size = size || this_1.treemap.themeStyle.labelFontSize;\n var fontWeight = (isLeafItem ? leaf.labelStyle.fontWeight : levels[index].headerStyle.fontWeight);\n fontWeight = fontWeight || this_1.treemap.themeStyle.fontWeight;\n var color = (isLeafItem ? leaf.labelStyle.color : levels[index].headerStyle.color);\n var fontStyle = (isLeafItem ? leaf.labelStyle.fontStyle : levels[index].headerStyle.fontStyle);\n var textStyleOpacity = (isLeafItem ? leaf.labelStyle.opacity : levels[index].headerStyle.opacity);\n textStyle = {\n fontFamily: fontFamily, size: size, fontWeight: fontWeight, color: color, fontStyle: fontStyle, opacity: textStyleOpacity\n };\n border = isLeafItem ? leaf.border : levels[index].border;\n position = !isLeafItem ? (levels[index].headerAlignment) === 'Near' ? 'TopLeft' : (levels[index].headerAlignment) === 'Center' ?\n 'TopCenter' : 'TopRight' : leaf.labelPosition;\n templatePosition = isLeafItem ? leaf.templatePosition : levels[index].templatePosition;\n template = isLeafItem ? leaf.labelTemplate : levels[index].headerTemplate;\n item['options'] = { border: border, opacity: opacity, fill: fill };\n eventArgs = {\n cancel: false, name: itemRendering, treemap: this_1.treemap, text: renderText,\n currentItem: item, RenderItems: this_1.renderItems, options: item['options'], textColor: textStyle.color\n };\n this_1.treemap.trigger(itemRendering, eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n rectPath = ' M ' + rect.x + ' ' + rect.y + ' L ' + (rect.x + rect.width) + ' ' + rect.y +\n ' L ' + (rect.x + rect.width) + ' ' + (rect.y + rect.height) + ' L ' + rect.x + ' ' + (rect.y + rect.height) + 'z';\n pathOptions = new PathOption(groupId + '_RectPath', fill, border.width, border.color, opacity, null, rectPath);\n var path = _this.renderer.drawPath(pathOptions);\n itemGroup.appendChild(path);\n if (txtVisible) {\n if (eventArgs.text !== renderText) {\n eventArgs.text = textFormatter(eventArgs.text, item['data'], _this.treemap) || levelName;\n }\n textStyle.color = eventArgs.textColor ? eventArgs.textColor : textStyle.color;\n _this.renderItemText(eventArgs.text.toString(), itemGroup, textStyle, rect, interSectAction, groupId, fill, position, connectorText);\n }\n if (template) {\n templateEle = _this.renderTemplate(secondaryEle, groupId, rect, templatePosition, template, item, isLeafItem);\n if (!isNullOrUndefined(templateEle)) {\n templateGroup.appendChild(templateEle);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.treemap.renderReactTemplates();\n }\n }\n itemGroup.setAttribute('aria-label', item['name']);\n if ((_this.treemap.enableDrillDown && isLeafItem) || (_this.treemap.selectionSettings.enable ||\n _this.treemap.highlightSettings.enable)) {\n itemGroup.setAttribute('role', 'button');\n itemGroup.setAttribute('tabindex', _this.treemap.tabIndex.toString());\n itemGroup.style.cursor = _this.treemap.highlightSettings.enable && !_this.treemap.selectionSettings.enable && (_this.treemap.enableDrillDown && item['groupIndex'] === (_this.treemap.levels.length - 1)) ? 'default' :\n _this.treemap.highlightSettings.enable && !_this.treemap.selectionSettings.enable && !_this.treemap.enableDrillDown ? 'default' : 'pointer';\n }\n else {\n itemGroup.setAttribute('role', 'region');\n }\n maintainSelection(_this.treemap, itemGroup, 'treeMapSelection');\n _this.layoutGroup.appendChild(itemGroup);\n }\n });\n };\n var this_1 = this;\n for (var i = 0; i < this.renderItems.length; i++) {\n _loop_1(i);\n }\n if (templateGroup.childNodes.length > 0) {\n secondaryEle.appendChild(templateGroup);\n }\n this.treemap.svgObject.appendChild(this.layoutGroup);\n maintainSelection(this.treemap, this.layoutGroup, 'treeMapSelection');\n };\n LayoutPanel.prototype.renderItemText = function (text, parentElement, textStyle, rect, interSectAction, groupId, fill, position, connectorText) {\n var padding = 5;\n var textSize;\n var textCollection = [];\n var customText;\n var tspanText = [];\n var height = 0;\n var textName;\n textCollection = ((text.indexOf('<br>')) !== -1) ? text.split('<br>') : null;\n customText = this.labelInterSectAction(rect, text, textStyle, interSectAction);\n textSize = measureText(textCollection && textCollection[0] || customText[0], textStyle);\n if (this.treemap.enableRtl) {\n var labelSize = measureText(text, textStyle);\n var drillSymbolCount = text.search('[+]') || text.search('[-]');\n if (rect.width < labelSize.width && drillSymbolCount > 0) {\n var label = text.substring(drillSymbolCount - 1, text.length);\n var drillSymbol = '[+]';\n var drillSymbolSize = measureText(drillSymbol, textStyle);\n customText['0'] = textTrim(rect.width - drillSymbolSize.width - padding, customText[0], textStyle) + label;\n }\n }\n var textLocation = findLabelLocation(rect, position, textSize, 'Text', this.treemap);\n if (!isNullOrUndefined(textCollection)) {\n var collection = [];\n var texts = null;\n var maxNumber = [];\n for (var i = 0; i < textCollection.length; i++) {\n texts = textTrim((rect.width - 5), textCollection[i], textStyle);\n textSize = measureText(texts, textStyle);\n height += textSize.height;\n maxNumber.push(textSize.width);\n collection.push(texts);\n }\n customText = collection;\n textSize.width = Math.max.apply(null, maxNumber);\n textSize.height = height;\n }\n if (interSectAction === 'WrapByWord' || interSectAction === 'Wrap' || interSectAction === 'Trim') {\n for (var j = 0; j < customText.length; j++) {\n textSize = measureText(customText[j], textStyle);\n height += textSize.height;\n if ((rect.height - padding) > height) {\n tspanText.push(customText[j]);\n }\n }\n if (interSectAction === 'Wrap' && customText.length !== tspanText.length && tspanText.length) {\n var collectionLength = tspanText.length - 1;\n var stringText = tspanText[collectionLength];\n stringText = stringText.substring(0, (stringText.length - 1)) + '...';\n tspanText.splice(collectionLength);\n if (stringText !== '...') {\n tspanText.push(stringText);\n }\n }\n }\n else {\n textName = customText;\n tspanText.push(textName);\n }\n var textOptions = new TextOption(groupId + '_Text', textLocation.x, textLocation.y, 'start', tspanText, '', '', connectorText);\n renderTextElement(textOptions, textStyle, textStyle.color || this.getSaturatedColor(fill), parentElement);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getItemColor = function (isLeafItem, item) {\n var treemap = this.treemap;\n var itemFill = isLeafItem ? treemap.leafItemSettings.fill : treemap.levels[item['groupIndex']].fill;\n var itemOpacity = isLeafItem ? treemap.leafItemSettings.opacity : treemap.levels[item['groupIndex']].opacity;\n if (!isNullOrUndefined(treemap.treemapLevelData.defaultLevelsData)) {\n if (treemap.treemapLevelData.defaultLevelsData.length > 0) {\n treemap.treemapLevelData.levelsData = treemap.treemapLevelData.defaultLevelsData;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentData = findChildren(treemap.treemapLevelData.levelsData[0])['values'];\n var colorMapping = isLeafItem ? treemap.leafItemSettings.colorMapping :\n treemap.levels[item['groupIndex']].colorMapping;\n if (colorMapping.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var option = colorMap(colorMapping, item['data'][treemap.equalColorValuePath], item['data'][treemap.rangeColorValuePath]);\n if (!isNullOrUndefined(option)) {\n itemFill = !isNullOrUndefined(option['fill']) ? option['fill'] : treemap.leafItemSettings.fill;\n itemOpacity = option['opacity'];\n }\n }\n else {\n for (var i = 0; i < parentData.length; i++) {\n if (parentData[i]['levelOrderName'] === item['levelOrderName'].split('#')[0]) {\n itemFill = !isNullOrUndefined(itemFill) ? itemFill : !isNullOrUndefined(treemap.colorValuePath) ?\n parentData[i]['data'][treemap.colorValuePath] : !isNullOrUndefined(item['options']) ?\n item['options'].fill : (!isNullOrUndefined(treemap.palette) && treemap.palette.length > 0) ?\n treemap.palette[i % treemap.palette.length] : '#808080';\n }\n }\n }\n return { fill: itemFill, opacity: itemOpacity };\n };\n /**\n * To find saturated color for datalabel\n *\n * @param {string} color - Specifies the color\n * @returns {string} - Returns the color\n */\n LayoutPanel.prototype.getSaturatedColor = function (color) {\n var saturatedColor = color;\n saturatedColor = (saturatedColor === 'transparent') ? window.getComputedStyle(document.body, null).backgroundColor : saturatedColor;\n var rgbValue = convertHexToColor(colorNameToHex(saturatedColor));\n var contrast = Math.round((rgbValue.r * 299 + rgbValue.g * 587 + rgbValue.b * 114) / 1000);\n return contrast >= 128 ? 'black' : 'white';\n };\n LayoutPanel.prototype.renderTemplate = function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, max-len\n secondaryEle, groupId, rect, position, template, item, isLeafItem) {\n var templateId = isLeafItem ? groupId + '_LabelTemplate' : groupId + '_HeaderTemplate';\n var baseTemplateId = isLeafItem ? '_LabelTemplate' : '_HeaderTemplate';\n if (isNullOrUndefined(template['prototype']) && typeof template === 'string') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var keys = Object.keys(item['data']);\n for (var i = 0; i < keys.length; i++) {\n var regExp = RegExp;\n template = template.replace(new regExp('{{:' + keys[i] + '}}', 'g'), item['data'][keys[i].toString()]);\n }\n }\n if (this.treemap.enableHtmlSanitizer && typeof template === 'string') {\n template = SanitizeHtmlHelper.sanitize(template);\n }\n var labelElement;\n if (!isNullOrUndefined(document.getElementById(this.treemap.element.id + '_Secondary_Element'))) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateFn = getTemplateFunction(template);\n var templateElement = templateFn(item['data'], this.treemap, template, this.treemap.element.id + baseTemplateId, false);\n labelElement = convertElement(templateElement, templateId, item['data']);\n var templateSize = measureElement(labelElement, secondaryEle);\n var templateLocation = findLabelLocation(rect, position, templateSize, 'Template', this.treemap);\n labelElement.style.left = templateLocation.x + 'px';\n labelElement.style.top = templateLocation.y + 'px';\n }\n return labelElement;\n };\n LayoutPanel.prototype.labelInterSectAction = function (rect, text, textStyle, alignment) {\n var textValue;\n var maxWidth = rect.width - 10;\n switch (alignment) {\n case 'Hide':\n textValue = [hide(maxWidth, rect.height, text, textStyle)];\n break;\n case 'Trim':\n textValue = [textTrim((maxWidth + 3), text, textStyle)];\n break;\n case 'WrapByWord':\n textValue = wordWrap(maxWidth, text, textStyle);\n break;\n case 'Wrap':\n textValue = textWrap(maxWidth, text, textStyle);\n break;\n }\n return textValue;\n };\n /**\n *\n * @returns {void}\n * @private\n */\n LayoutPanel.prototype.destroy = function () {\n this.treemap = null;\n this.currentRect = null;\n this.layoutGroup = null;\n this.renderer = null;\n this.renderItems = [];\n this.parentData = [];\n };\n return LayoutPanel;\n}());\nexport { LayoutPanel };\n","import { print as printFunction, createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getElement } from '../utils/helper';\nimport { beforePrint } from '../model/constants';\n/**\n * Print module handles the print functionality for treemap.\n *\n * @hidden\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n function Print(control) {\n }\n /**\n * This method is used to perform the print functionality in treemap.\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param { string[] | string | Element} elements - Specifies the element.\n * @returns {void}\n * @private\n */\n Print.prototype.print = function (treeMap, elements) {\n var printWindow = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n printWindow.moveTo(0, 0);\n printWindow.resizeTo(screen.availWidth, screen.availHeight);\n var argsData = {\n cancel: false, htmlContent: this.getHTMLContent(treeMap, elements), name: beforePrint\n };\n treeMap.trigger(beforePrint, argsData, function () {\n if (!argsData.cancel) {\n printFunction(argsData.htmlContent, printWindow);\n }\n });\n };\n /**\n * To get the html string of the Maps\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param {string[] | string | Element} elements - Specifies the element\n * @returns {Element} - Returns the element\n * @private\n */\n Print.prototype.getHTMLContent = function (treeMap, elements) {\n var div = createElement('div');\n if (elements) {\n if (elements instanceof Array) {\n elements.forEach(function (value) {\n div.appendChild(getElement(value).cloneNode(true));\n });\n }\n else if (elements instanceof Element) {\n div.appendChild(elements.cloneNode(true));\n }\n else {\n div.appendChild(getElement(elements).cloneNode(true));\n }\n }\n else {\n var exportElement = treeMap.element.cloneNode(true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var backgroundElement = exportElement.getElementsByTagName('svg')[0];\n if (!isNullOrUndefined(backgroundElement)) {\n backgroundElement = backgroundElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n var backgroundColor = backgroundElement.getAttribute('fill');\n if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Tailwind3' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3' ||\n treeMap.theme === 'Fluent2')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n backgroundElement.setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Tailwind3Dark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark' ||\n treeMap.theme === 'Fluent2Dark' || treeMap.theme === 'Fluent2HighContrast')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n backgroundElement.setAttribute('fill', 'rgba(0, 0, 0, 1)');\n }\n }\n }\n div.appendChild(exportElement);\n }\n return div;\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n Print.prototype.getModuleName = function () {\n // Returns te module name\n return 'Print';\n };\n /**\n * To destroy the Print module.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n Print.prototype.destroy = function () { };\n return Print;\n}());\nexport { Print };\n","import { createElement, Browser, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { triggerDownload } from '../utils/helper';\n/**\n * ImageExport module handles the export to image functionality for treemap.\n *\n * @hidden\n */\nvar ImageExport = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n function ImageExport(control) {\n }\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param {ExportType} type - Specifies the type of the image file.\n * @param {string} fileName - Specifies the file name of the image file.\n * @param {boolean} allowDownload - Specifies whether to download the file or not.\n * @returns {Promise} - Returns the promise string.\n * @private\n */\n ImageExport.prototype.export = function (treeMap, type, fileName, allowDownload) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n var promise = new Promise(function (resolve, reject) {\n var element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'height': treeMap.availableSize.height.toString(),\n 'width': treeMap.availableSize.width.toString()\n }\n });\n var exportElement = treeMap.svgObject.cloneNode(true);\n var backgroundElement = exportElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n var backgroundColor = backgroundElement.getAttribute('fill');\n if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Tailwind3' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3' ||\n treeMap.theme === 'Fluent2')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Tailwind3Dark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark' ||\n treeMap.theme === 'Fluent2Dark' || treeMap.theme === 'Fluent2HighContrast')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(0, 0, 0, 1)');\n }\n }\n var isDownload = !(Browser.userAgent.toString().indexOf('HeadlessChrome') > -1);\n var svgData = '<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">' +\n exportElement.outerHTML +\n '</svg>';\n var url = window.URL.createObjectURL(new Blob(type === 'SVG' ? [svgData] :\n [(new XMLSerializer()).serializeToString(exportElement)], { type: 'image/svg+xml' }));\n if (type === 'SVG') {\n if (allowDownload) {\n triggerDownload(fileName, type, url, isDownload);\n }\n else {\n resolve(null);\n }\n }\n else {\n var image_1 = new Image();\n var context_1 = element.getContext('2d');\n image_1.onload = (function () {\n context_1.drawImage(image_1, 0, 0);\n window.URL.revokeObjectURL(url);\n if (allowDownload) {\n triggerDownload(fileName, type, element.toDataURL('image/png').replace('image/png', 'image/octet-stream'), isDownload);\n }\n else {\n if (type === 'JPEG') {\n resolve(element.toDataURL('image/jpeg'));\n }\n else if (type === 'PNG') {\n resolve(element.toDataURL('image/png'));\n }\n }\n });\n image_1.src = url;\n }\n });\n return promise;\n };\n ImageExport.prototype.getModuleName = function () {\n // Returns te module name\n return 'ImageExport';\n };\n /**\n * To destroy the ImageExport.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n ImageExport.prototype.destroy = function () { };\n return ImageExport;\n}());\nexport { ImageExport };\n","import { createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { PdfPageOrientation, PdfDocument, PdfBitmap } from '@syncfusion/ej2-pdf-export';\n/**\n * PdfExport module handles the export to pdf functionality for treemap.\n *\n * @hidden\n */\nvar PdfExport = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n function PdfExport(control) {\n }\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param {ExportType} type - Specifies the type of the document.\n * @param {string} fileName - Specifies the name of the document.\n * @param {PdfPageOrientation} orientation - Specifies the orientation of the PDF document to export the treemap.\n * @param {boolean} allowDownload - Specifies whether to download the document or not.\n * @returns {Promise} - Returns the string.\n * @private\n */\n PdfExport.prototype.export = function (treeMap, type, fileName, orientation, allowDownload) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n var promise = new Promise(function (resolve, reject) {\n var element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'width': treeMap.availableSize.width.toString(),\n 'height': treeMap.availableSize.height.toString()\n }\n });\n orientation = isNullOrUndefined(orientation) ? PdfPageOrientation.Landscape : orientation;\n var exportElement = treeMap.svgObject.cloneNode(true);\n var backgroundElement = exportElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n var backgroundColor = backgroundElement.getAttribute('fill');\n if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Tailwind3' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3' ||\n treeMap.theme === 'Fluent2')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Tailwind3Dark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark' ||\n treeMap.theme === 'Fluent2Dark' || treeMap.theme === 'Fluent2HighContrast')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(0, 0, 0, 1)');\n }\n }\n var url = window.URL.createObjectURL(new Blob([(new XMLSerializer()).serializeToString(exportElement)], { type: 'image/svg+xml' }));\n var image = new Image();\n var context = element.getContext('2d');\n image.onload = (function () {\n context.drawImage(image, 0, 0);\n window.URL.revokeObjectURL(url);\n var document = new PdfDocument();\n var imageString = element.toDataURL('image/jpeg').replace('image/jpeg', 'image/octet-stream');\n document.pageSettings.orientation = orientation;\n imageString = imageString.slice(imageString.indexOf(',') + 1);\n document.pages.add().graphics.drawImage(new PdfBitmap(imageString), 0, 0, (treeMap.availableSize.width - 60), treeMap.availableSize.height);\n if (allowDownload) {\n document.save(fileName + '.pdf');\n document.destroy();\n }\n else {\n resolve(null);\n }\n });\n image.src = url;\n });\n return promise;\n };\n PdfExport.prototype.getModuleName = function () {\n // Returns te module name\n return 'PdfExport';\n };\n /**\n * To destroy the PdfExport.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n PdfExport.prototype.destroy = function () { };\n return PdfExport;\n}());\nexport { PdfExport };\n","/**\n * Tree Map Components\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, NotifyPropertyChanges, Property, extend, Fetch, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Complex, Collection } from '@syncfusion/ej2-base';\nimport { Event, Internationalization } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\nimport { isNullOrUndefined, createElement, EventHandler, Browser, remove } from '@syncfusion/ej2-base';\nimport { Border, Margin, TitleSettings, LegendSettings, InitialDrillSettings } from './model/base';\nimport { SelectionSettings, TooltipSettings, LevelSettings, LeafItemSettings, HighlightSettings } from './model/base';\nimport { Size, stringToNumber, RectOption, Rect, textTrim, measureText, findChildren, removeElement, setItemTemplateContent, legendMaintain, removeLegend } from '../treemap/utils/helper';\nimport { removeClassNames, textFormatter } from '../treemap/utils/helper';\nimport { findPosition, TextOption, renderTextElement, isContainsData, TreeMapAjax } from '../treemap/utils/helper';\nimport { load, loaded, drillStart, drillEnd } from '../treemap/model/constants';\nimport { itemClick, itemMove, click, mouseMove, resize, doubleClick, rightClick } from '../treemap/model/constants';\nimport { LayoutPanel } from './layout/render-panel';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { getThemeStyle } from './model/theme';\nimport { Print } from './model/print';\nimport { ImageExport } from './model/image-export';\nimport { PdfExport } from './model/pdf-export';\n/**\n * Represents the treemap control. It is used to visualize both hierarchical and flat data.\n * ```html\n * <div id=\"container\"/>\n * <script>\n * var treemap = new TreeMap();\n * treemap.appendTo(\"#container\");\n * </script>\n * ```\n */\nvar TreeMap = /** @class */ (function (_super) {\n __extends(TreeMap, _super);\n /**\n * Constructor for TreeMap.\n *\n * @param {TreeMapModel} options - Specifies the treemap instance.\n * @param {string | HTMLElement} element - Specifies the treemap element.\n */\n function TreeMap(options, element) {\n var _this = _super.call(this, options, element) || this;\n /**\n * resize the treemap\n */\n _this.isResize = false;\n /** @private */\n _this.orientation = 'Horizontal';\n /** @private */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.drilledItems = [];\n /** @private */\n _this.isHierarchicalData = false;\n /** @private */\n _this.levelSelection = [];\n /** @private */\n _this.legendId = [];\n return _this;\n }\n TreeMap.prototype.preRender = function () {\n var _this = this;\n this.trigger(load, { treemap: this }, function () {\n _this.initPrivateVariable();\n _this.unWireEVents();\n _this.createSvg();\n _this.wireEVents();\n _this.setCulture();\n });\n };\n TreeMap.prototype.render = function () {\n this.renderElements();\n };\n TreeMap.prototype.renderElements = function () {\n this.treemapLevelData = new LevelsData();\n this.treemapLevelData.levelsData = null;\n this.treemapLevelData.defaultLevelsData = null;\n this.treemapLevelData.hierarchyData = null;\n this.createSecondaryElement();\n this.addTabIndex();\n this.themeStyle = getThemeStyle(this.theme);\n this.renderBorder();\n this.renderTitle(this.titleSettings, 'title', null, null);\n if (!isNullOrUndefined(this.treemapLevelData.levelsData)) {\n this.treemapLevelData.defaultLevelsData = this.treemapLevelData.levelsData;\n }\n this.processDataManager();\n };\n TreeMap.prototype.processDataManager = function () {\n var _this = this;\n var dataModule;\n var queryModule;\n var fetchApiModule;\n var localAjax;\n if (this.dataSource instanceof DataManager) {\n dataModule = this.dataSource;\n queryModule = this.query instanceof Query ? this.query : new Query();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataManager = dataModule.executeQuery(queryModule);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataManager.then(function (e) {\n _this.dataSource = e['result'];\n _this.renderTreeMapElements();\n });\n }\n else if (this.dataSource instanceof TreeMapAjax) {\n localAjax = this.dataSource;\n fetchApiModule = new Fetch(localAjax.dataOptions, localAjax.type, localAjax.contentType);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fetchApiModule.onSuccess = function (args) {\n if (!isNullOrUndefined(args.type) && args.type === 'application/octet-stream') {\n var reader_1 = new FileReader();\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var treemap_1 = _this;\n reader_1.onload = function () {\n args = JSON.parse(reader_1.result.toString());\n treemap_1.dataSource = args;\n treemap_1.renderTreeMapElements();\n };\n reader_1.readAsText(args);\n }\n else {\n _this.dataSource = args;\n _this.renderTreeMapElements();\n }\n };\n fetchApiModule.send(localAjax.sendData);\n }\n else {\n this.renderTreeMapElements();\n }\n };\n TreeMap.prototype.renderTreeMapElements = function () {\n this.processingData();\n if (this.treeMapLegendModule && this.legendSettings.visible) {\n this.treeMapLegendModule.renderLegend();\n }\n this.layout.processLayoutPanel();\n this.element.appendChild(this.svgObject);\n if (!isNullOrUndefined(this.treeMapLegendModule) && this.legendSettings.visible) {\n legendMaintain(this, this.treeMapLegendModule.legendGroup);\n }\n this.elementChange();\n this.trigger(loaded, { treemap: this, isResized: this.isResize });\n this.isResize = false;\n this.renderComplete();\n };\n TreeMap.prototype.createSvg = function () {\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n if (isNullOrUndefined(this.renderer)) {\n this.renderer = new SvgRenderer(this.element.id);\n }\n if (isNullOrUndefined(this.layout)) {\n this.layout = new LayoutPanel(this);\n }\n this.clearTemplate();\n var containerWidth = this.element.clientWidth;\n var containerHeight = this.element.clientHeight;\n this.availableSize = new Size(stringToNumber(this.width, containerWidth) || containerWidth || 600, stringToNumber(this.height, containerHeight) || containerHeight || 450);\n this.svgObject = this.renderer.createSvg({\n id: this.element.id + '_svg',\n width: this.availableSize.width,\n height: this.availableSize.height\n });\n };\n /**\n * To initilize the private varibales of treemap.\n *\n * @returns {void}\n */\n TreeMap.prototype.initPrivateVariable = function () {\n if (this.element.id === '') {\n var collection = document.getElementsByClassName('e-treemap').length;\n this.element.id = 'treemap_control_' + collection;\n }\n this.renderer = new SvgRenderer(this.element.id);\n this.layout = new LayoutPanel(this);\n };\n TreeMap.prototype.createSecondaryElement = function () {\n var secondaryEle = document.getElementById(this.element.id + '_Secondary_Element');\n if (secondaryEle && secondaryEle.childElementCount > 0) {\n secondaryEle.parentNode.removeChild(secondaryEle);\n }\n if (isNullOrUndefined(document.getElementById(this.element.id + '_Secondary_Element'))) {\n var secondaryElement = createElement('div', {\n id: this.element.id + '_Secondary_Element'\n });\n secondaryElement.style.cssText = 'position: absolute;z-index:1;';\n this.element.appendChild(secondaryElement);\n }\n };\n TreeMap.prototype.elementChange = function () {\n if (this.treeMapLegendModule && this.legendSettings.visible && this.treeMapLegendModule.legendGroup && this.layout.layoutGroup\n && !isNullOrUndefined(this.svgObject) && !isNullOrUndefined(document.getElementById(this.layout.layoutGroup.id))\n && !isNullOrUndefined(document.getElementById(this.treeMapLegendModule.legendGroup.id))) {\n this.svgObject.insertBefore(this.layout.layoutGroup, this.treeMapLegendModule.legendGroup);\n }\n };\n /**\n * Render the treemap border\n *\n * @private\n * @returns {void}\n */\n TreeMap.prototype.renderBorder = function () {\n var width = this.border.width;\n var borderElement = this.svgObject.querySelector('#' + this.element.id + '_TreeMap_Border');\n if ((this.border.width > 0 || (this.background || this.themeStyle.backgroundColor)) && isNullOrUndefined(borderElement)) {\n var borderRect = new RectOption(this.element.id + '_TreeMap_Border', this.background || this.themeStyle.backgroundColor, this.border, 1, new Rect(width / 2, width / 2, this.availableSize.width - width, this.availableSize.height - width));\n this.svgObject.appendChild(this.renderer.drawRectangle(borderRect));\n }\n else if (borderElement) {\n borderElement.setAttribute('fill', this.background || this.themeStyle.backgroundColor);\n }\n };\n TreeMap.prototype.renderTitle = function (title, type, bounds, groupEle) {\n var style = {\n color: title.textStyle.color, size: title.textStyle.size, fontFamily: title.textStyle.fontFamily,\n fontStyle: title.textStyle.fontStyle, fontWeight: title.textStyle.fontWeight, opacity: title.textStyle.opacity\n };\n var height;\n var titlePadding = 10;\n var width = (this.availableSize.width - this.margin.right - this.margin.left);\n style.fontFamily = style.fontFamily || this.themeStyle.fontFamily;\n style.fontWeight = style.fontWeight || this.themeStyle.titleFontWeight;\n style.size = style.size || (type === 'title' ? this.themeStyle.fontSize : this.themeStyle.subtitleFontSize);\n if (title.text) {\n if (isNullOrUndefined(groupEle)) {\n groupEle = this.renderer.createGroup({ id: this.element.id + '_Title_Group' });\n }\n var titleText = this.enableHtmlSanitizer ? (SanitizeHtmlHelper.sanitize(title.text)) : title.text;\n var trimmedTitle = textTrim(width, titleText, style);\n var elementSize = measureText(trimmedTitle, style);\n var rect = (isNullOrUndefined(bounds)) ? new Rect(this.margin.left, this.margin.top, this.availableSize.width, this.availableSize.height) : bounds;\n var location_1 = findPosition(rect, title.alignment, elementSize, type);\n var options = new TextOption(this.element.id + '_TreeMap_' + type, location_1.x, location_1.y, 'start', trimmedTitle);\n var titleBounds = new Rect(location_1.x, location_1.y, elementSize.width, elementSize.height);\n var element = renderTextElement(options, style, style.color || (type === 'title' ? this.themeStyle.titleFontColor : this.themeStyle.subTitleFontColor), groupEle);\n element.setAttribute('aria-label', title.description || titleText);\n element.setAttribute('role', 'region');\n element.setAttribute('tabindex', this.tabIndex.toString());\n if ((type === 'title' && !title.subtitleSettings.text) || (type === 'subtitle')) {\n height = (this.availableSize.height - titleBounds.y - titlePadding - this.margin.bottom);\n this.areaRect = new Rect(this.margin.left, titleBounds.y + titlePadding, width, height);\n }\n if (type !== 'subtitle' && title.subtitleSettings.text) {\n this.renderTitle(title.subtitleSettings, 'subtitle', titleBounds, groupEle);\n }\n else {\n this.svgObject.appendChild(groupEle);\n }\n }\n else {\n height = (this.availableSize.height - this.margin.top - this.margin.bottom);\n this.areaRect = new Rect(this.margin.left, this.margin.top, width, height);\n }\n };\n TreeMap.prototype.processingData = function () {\n var _this = this;\n var path;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource = this.dataSource;\n if (!isNullOrUndefined(this.dataSource) && this.dataSource.length > 0 && this.weightValuePath) {\n this.treemapLevelData.levelsData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource.map(function (data) {\n data[_this.weightValuePath] = (data[_this.weightValuePath]) ? data[_this.weightValuePath].toString() :\n data[_this.weightValuePath];\n });\n this.leafItemSettings.labelPath = this.leafItemSettings.labelPath || this.weightValuePath;\n this.checkIsHierarchicalData();\n if (this.levels.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data_1 = {};\n data_1['level'] = 0;\n path = this.leafItemSettings.labelPath;\n data_1[path] = [];\n for (var i = 0; i < this.dataSource.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(this.dataSource[i])['values'];\n if (this.isHierarchicalData && child && child.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n child.forEach(function (currentData) {\n if (currentData[path]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data_1[path].push({\n groupIndex: 0, name: currentData[path],\n levelOrderName: currentData[path].toString(),\n data: currentData, weight: currentData[_this.weightValuePath]\n });\n }\n });\n }\n else {\n if (this.dataSource[i][path]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data_1[path].push({\n groupIndex: 0, name: this.dataSource[i][path], levelOrderName: this.dataSource[i][path].toString(), data: this.dataSource[i],\n weight: this.dataSource[i][this.weightValuePath]\n });\n }\n }\n }\n this.treemapLevelData.levelsData.push(data_1);\n }\n else {\n if (this.isHierarchicalData) {\n this.treemapLevelData.hierarchyData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemapLevelData.hierarchyData = extend([], this.dataSource, this.treemapLevelData.hierarchyData, true);\n for (var i = 0; i < this.treemapLevelData.hierarchyData.length; i++) {\n this.processHierarchicalData(this.treemapLevelData.hierarchyData[i], i);\n }\n this.treemapLevelData.levelsData = this.treemapLevelData.hierarchyData;\n }\n else {\n this.processFlatJsonData();\n if (this.treemapLevelData.levelsData.length > 1) {\n this.reOrderLevelData(this.treemapLevelData.levelsData.length - 1);\n }\n }\n path = this.levels[0].groupPath;\n }\n if (!this.isHierarchicalData) {\n this.findTotalWeight(this.treemapLevelData.levelsData[0][path], 'Parent');\n }\n }\n };\n TreeMap.prototype.checkIsHierarchicalData = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child;\n this.dataSource = this.dataSource;\n for (var i = 0; i < this.dataSource.length; i++) {\n child = findChildren(this.dataSource[i])['values'];\n if (child && child.length) {\n this.isHierarchicalData = true;\n break;\n }\n else if (i === this.dataSource.length - 1) {\n this.isHierarchicalData = false;\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.processHierarchicalData = function (data, dataCount) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childData;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newData = {};\n var levelIndex;\n var path = this.leafItemSettings.labelPath ? this.leafItemSettings.labelPath : this.weightValuePath;\n var key;\n newData = findChildren(data);\n childData = newData ? newData['values'] : null;\n if (childData && childData.length > 0) {\n key = newData['key'];\n for (var i = 0; i < this.levels.length; i++) {\n if (key === this.levels[i].groupPath) {\n levelIndex = i;\n }\n }\n for (var j = 0; j < childData.length; j++) {\n childData[j]['name'] = childData[j][path];\n childData[j]['levelOrderName'] = (levelIndex === 0 ? childData[j]['name'] :\n data['levelOrderName'] + '#' + childData[j]['name']) + '';\n var childItemLevel = childData[j]['levelOrderName'];\n var childLevel = void 0;\n if (childItemLevel.search('#') > 0) {\n childLevel = childItemLevel.split('#').length - 1;\n }\n childData[j]['groupIndex'] = isNullOrUndefined(levelIndex) ? childLevel === this.levels.length\n ? this.levels.length : childLevel : levelIndex;\n if (levelIndex !== 0) {\n childData[j]['parent'] = data;\n }\n childData[j]['groupName'] = key;\n childData[j]['data'] = childData[j];\n childData[j]['isDrilled'] = false;\n childData[j]['weight'] = childData[j][this.weightValuePath];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childData.forEach(function (currentData) {\n _this.processHierarchicalData(currentData, dataCount);\n });\n }\n if (dataCount === this.treemapLevelData.hierarchyData.length - 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var mainData_1 = this.treemapLevelData.hierarchyData[0][this.levels[0].groupPath];\n if (!isNullOrUndefined(mainData_1)) {\n for (var k = 0; k < this.treemapLevelData.hierarchyData.length; k++) {\n childData = findChildren(this.treemapLevelData.hierarchyData[k])['values'];\n if (k !== 0 && childData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childData.forEach(function (currentData) { mainData_1.push(currentData); });\n this.treemapLevelData.hierarchyData.splice(k, 1);\n k -= 1;\n }\n }\n mainData_1 = this.treemapLevelData.hierarchyData[0][this.levels[0].groupPath];\n for (var l = 0; l < mainData_1.length; l++) {\n newData[this.levels[0].groupPath] = mainData_1;\n mainData_1[l]['parent'] = newData;\n }\n }\n }\n };\n /* eslint-disable valid-jsdoc */\n /**\n * This method is used to perform the print functionality in treemap.\n *\n * @param {string[] | string | Element} id - Specifies the element to print the treemap.\n * @returns {void}\n */\n TreeMap.prototype.print = function (id) {\n if (this.allowPrint && this.printModule) {\n this.printModule.print(this, id);\n }\n };\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {ExportType} type - Specifies the extension type of the exported document.\n * @param {string} fileName - Specifies file name for exporting the rendered TreeMap.\n * @param {PdfPageOrientation} orientation - Specifies the orientation of the PDF document.\n * @param {boolean} allowDownload - Specifies whether the exported file should be downloaded or not.\n * @returns {string} - Specifies the base64 string of the exported image which is returned when the allowDownload is set to false.\n */\n TreeMap.prototype.export = function (type, fileName, orientation, allowDownload) {\n var _this = this;\n if (isNullOrUndefined(allowDownload)) {\n allowDownload = true;\n }\n if (type === 'PDF' && this.allowPdfExport && this.pdfExportModule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n resolve(_this.pdfExportModule.export(_this, type, fileName, orientation, allowDownload));\n });\n }\n else if (this.allowImageExport && (type !== 'PDF') && this.imageExportModule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n resolve(_this.imageExportModule.export(_this, type, fileName, allowDownload));\n });\n }\n return null;\n };\n TreeMap.prototype.processFlatJsonData = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource = this.dataSource;\n var groupPath;\n var orderNames = [];\n for (var i = 0; i < this.levels.length + 1; i++) {\n groupPath = this.levels[i] ? this.levels[i].groupPath : this.leafItemSettings.labelPath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var level = {};\n level['level'] = i;\n level[groupPath] = [];\n this.treemapLevelData.levelsData.push(level);\n for (var j = 0; j < this.dataSource.length; j++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = {};\n var childName = '';\n if (!isNullOrUndefined(groupPath)) {\n var name_1 = this.dataSource[j][groupPath];\n if (i !== 0) {\n for (var k = 0; k <= i; k++) {\n var childGroupPath = this.levels[k] ? this.levels[k].groupPath : groupPath;\n childName += (this.dataSource[j][childGroupPath]) + ((k === i) ? '' : '#');\n }\n }\n if (!(orderNames.length > 0 ? orderNames.indexOf(childName ?\n childName : name_1) !== -1 : false)) {\n currentData['name'] = name_1;\n currentData['levelOrderName'] = ((childName) ? childName : name_1) + '';\n currentData['groupIndex'] = i;\n currentData['isDrilled'] = false;\n currentData['groupName'] = groupPath;\n currentData['data'] = this.dataSource[j];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, max-len\n this.treemapLevelData.levelsData[(this.treemapLevelData.levelsData.length - 1)][groupPath].push(currentData);\n orderNames.push((childName) ? childName : name_1);\n }\n }\n }\n }\n };\n /**\n * This method orders the treemap level data.\n *\n * @param {number} start - Specifies the start value of the treemap level.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.reOrderLevelData = function (start) {\n var currentName;\n var currentPath = this.levels[start] ? this.levels[start].groupPath : this.leafItemSettings.labelPath;\n var prevPath = this.levels[start - 1].groupPath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = this.treemapLevelData.levelsData[start][currentPath];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var previousData = this.treemapLevelData.levelsData[start - 1][prevPath];\n for (var i = 0; i < currentData.length; i++) {\n currentName = currentData[i]['levelOrderName'];\n for (var j = 0; j < previousData.length; j++) {\n previousData[j][currentPath] = isNullOrUndefined(previousData[j][currentPath]) ?\n [] : previousData[j][currentPath];\n if (this.IsChildHierarchy(currentName.split('#'), previousData[j]['levelOrderName'].split('#'))) {\n if (isNullOrUndefined(currentData[i]['parent'])) {\n currentData[i]['parent'] = previousData[j];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n previousData[j][currentPath].push(currentData[i]);\n break;\n }\n }\n }\n this.findTotalWeight(this.treemapLevelData.levelsData[this.treemapLevelData.levelsData.length - 1][currentPath], 'Child');\n this.treemapLevelData.levelsData.splice(start, 1);\n if ((start - 1) > 0) {\n this.reOrderLevelData(start - 1);\n }\n };\n TreeMap.prototype.IsChildHierarchy = function (current, previous) {\n var isChild = false;\n for (var i = 0; i < previous.length; i++) {\n if (current.length < i || previous[i] !== current[i]) {\n return false;\n }\n else {\n isChild = true;\n }\n }\n return isChild;\n };\n /**\n * This method finds the weight value of the treemap level.\n *\n * @param {any[]} processData - Specifies the treemap data.\n * @param {string} type - Specifies the type of the data.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.findTotalWeight = function (processData, type) {\n var _this = this;\n var totalWeight;\n var split;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var groupName;\n var groupObj = {};\n var _loop_1 = function (i) {\n totalWeight = 0;\n groupName = processData[i]['groupName'];\n split = processData[i]['levelOrderName'].split('#');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this_1.dataSource.forEach(function (data) {\n if (isContainsData(split, processData[i]['levelOrderName'], data, _this)) {\n totalWeight += parseFloat(data[_this.weightValuePath]);\n }\n });\n if (type === 'Parent') {\n groupObj[groupName] = processData;\n processData[i]['parent'] = groupObj;\n }\n processData[i]['weight'] = totalWeight;\n };\n var this_1 = this;\n for (var i = 0; i < processData.length; i++) {\n _loop_1(i);\n }\n };\n /**\n * To unbind event handlers for treemap.\n *\n * @returns {void}\n * @private\n */\n TreeMap.prototype.unWireEVents = function () {\n EventHandler.remove(this.element, 'click', this.clickOnTreeMap);\n EventHandler.remove(this.element, 'dblclick', this.doubleClickOnTreeMap);\n EventHandler.remove(this.element, 'contextmenu', this.rightClickOnTreeMap);\n EventHandler.remove(this.element, Browser.touchStartEvent, this.mouseDownOnTreeMap);\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.mouseMoveOnTreeMap);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.mouseEndOnTreeMap);\n EventHandler.remove(this.element, 'pointerleave mouseleave', this.mouseLeaveOnTreeMap);\n window.removeEventListener('resize', this.resizeEvent);\n };\n /**\n * To bind event handlers for treemap.\n *\n * @returns {void}\n */\n TreeMap.prototype.wireEVents = function () {\n EventHandler.add(this.element, 'click', this.clickOnTreeMap, this);\n EventHandler.add(this.element, 'dblclick', this.doubleClickOnTreeMap, this);\n EventHandler.add(this.element, 'contextmenu', this.rightClickOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchStartEvent, this.mouseDownOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchMoveEvent, this.mouseMoveOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchEndEvent, this.mouseEndOnTreeMap, this);\n EventHandler.add(this.element, 'pointerleave mouseleave', this.mouseLeaveOnTreeMap, this);\n this.resizeEvent = this.resizeOnTreeMap.bind(this);\n window.addEventListener('resize', this.resizeEvent);\n };\n /**\n * Method to set culture for maps\n *\n * @returns {void}\n */\n TreeMap.prototype.setCulture = function () {\n this.intl = new Internationalization();\n };\n /**\n * To add tab index for treemap element\n *\n * @returns {void}\n */\n TreeMap.prototype.addTabIndex = function () {\n this.element.setAttribute('aria-label', this.description || 'TreeMap Element');\n this.element.setAttribute('role', 'region');\n this.element.setAttribute('tabindex', this.tabIndex.toString());\n };\n /**\n * This method handles the window resize event on treemap.\n *\n * @param {Event} e - Specifies the pointer event.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TreeMap.prototype.resizeOnTreeMap = function (e) {\n var _this = this;\n if (!this.isDestroyed) {\n this.isResize = true;\n var args_1 = {\n name: resize,\n cancel: false,\n previousSize: this.availableSize,\n currentSize: new Size(0, 0),\n treemap: this\n };\n if (this.resizeTo) {\n clearTimeout(this.resizeTo);\n }\n if (!isNullOrUndefined(this.element) && this.element.classList.contains('e-treemap')) {\n this.resizeTo = setTimeout(function () {\n _this.unWireEVents();\n _this.createSvg();\n _this.refreshing = true;\n _this.wireEVents();\n args_1.currentSize = _this.availableSize;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _this.trigger(resize, args_1, function (observedArgs) {\n _this.render();\n _this.refreshing = false;\n });\n }, 500);\n }\n }\n };\n /**\n * This method handles the click event on the treemap.\n *\n * @param {PointerEvent} e - Specifies the mouse click event in the treemap.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.clickOnTreeMap = function (e) {\n var _this = this;\n var targetEle = e.target;\n var targetId = targetEle.id;\n var eventArgs;\n var itemIndex;\n var labelText = targetEle.innerHTML;\n var clickArgs = { cancel: false, name: click, treemap: this, mouseEvent: e };\n this.trigger(click, clickArgs);\n if (targetId.indexOf('_Item_Index') > -1) {\n e.preventDefault();\n itemIndex = parseFloat(targetId.split('_Item_Index_')[1]);\n eventArgs = {\n cancel: false, name: itemClick, treemap: this, item: this.layout.renderItems[itemIndex], mouseEvent: e,\n groupIndex: this.layout.renderItems[itemIndex]['groupIndex'], groupName: this.layout.renderItems[itemIndex]['name'],\n text: labelText, contentItemTemplate: labelText\n };\n this.trigger(itemClick, eventArgs, function (observedArgs) {\n if (observedArgs.text !== labelText || observedArgs.contentItemTemplate !== labelText) {\n if (isNullOrUndefined(_this.leafItemSettings.labelTemplate)) {\n observedArgs.text = textFormatter(observedArgs.text, observedArgs['item']['data'], observedArgs.treemap);\n targetEle.textContent = observedArgs.text;\n }\n else {\n setItemTemplateContent(targetId, targetEle, observedArgs.contentItemTemplate);\n }\n }\n });\n }\n var end = new Date().getMilliseconds();\n var doubleTapTimer1;\n if (!isNullOrUndefined(this.doubleClick)) {\n if (!isNullOrUndefined(doubleTapTimer1) && end - doubleTapTimer1 < 500) {\n this.doubleClickOnTreeMap(e);\n }\n doubleTapTimer1 = end;\n }\n };\n /**\n * This method handles the double click event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n */\n TreeMap.prototype.doubleClickOnTreeMap = function (e) {\n var doubleClickArgs = { cancel: false, name: doubleClick, treemap: this, mouseEvent: e };\n this.trigger(doubleClick, doubleClickArgs);\n //this.notify('dblclick', e);\n };\n /**\n * This method handles the right click event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.rightClickOnTreeMap = function (e) {\n var rightClickArgs = { cancel: false, name: rightClick, treemap: this, mouseEvent: e };\n this.trigger(rightClick, rightClickArgs);\n };\n /**\n * This method handles the mouse down event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.mouseDownOnTreeMap = function (e) {\n if (e.target.id.indexOf('_Item_Index') > -1) {\n this.mouseDown = true;\n }\n this.notify(Browser.touchStartEvent, e);\n };\n /**\n * This method handles the mouse move event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.mouseMoveOnTreeMap = function (e) {\n var targetEle = e.target;\n var targetId = targetEle.id;\n var eventArgs;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n var moveArgs = { cancel: false, name: mouseMove, treemap: this, mouseEvent: e };\n this.trigger(mouseMove, moveArgs);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childItems;\n if (targetId.indexOf('_Item_Index') > -1) {\n item = this.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childItems = findChildren(item)['values'];\n this.element.style.cursor = (!item['isLeafItem'] && childItems && childItems.length > 0 && this.enableDrillDown) ?\n 'pointer' : 'auto';\n eventArgs = { cancel: false, name: itemMove, treemap: this, item: item, mouseEvent: e };\n this.trigger(itemMove, eventArgs);\n }\n else {\n this.element.style.cursor = 'default';\n }\n this.notify(Browser.touchMoveEvent, e);\n };\n /**\n * This method calculates the selected treemap levels.\n *\n * @param {string} labelText - Specifies the label text.\n * @param {any} item - Specifies the treemap item.\n * @returns {any} - Returns label of the drilled level.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.calculateSelectedTextLevels = function (labelText, item) {\n //to find the levels by clicking the particular text both for drillDownView as true / false.\n var drillLevel;\n var k;\n var text;\n var levelLabels = item['levelOrderName'];\n var levelText = levelLabels.split('#');\n for (var _i = 0, _a = Object.keys(levelText); _i < _a.length; _i++) {\n k = _a[_i];\n if (levelText[k] === labelText) {\n drillLevel = parseInt(k, 10);\n text = labelText;\n }\n }\n return { drillLevel: drillLevel, currentLevelLabel: text, levelText: levelText };\n };\n /**\n * This method calculates the previous level of child items in treemap.\n *\n * @param {any} drillLevelValues - Specifies the values of drill level.\n * @param {any} item - Specifies the treemap item.\n * @param {boolean} directLevel - Specifies the current level.\n * @returns {boolean} - check whether it is previous level or not.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.calculatePreviousLevelChildItems = function (drillLevelValues, item, directLevel) {\n //By clicking any child items drilldown to the particular level.\n //At the time store all the previous drilled level items in drilledItems\n // This condition satisfies while drilldown View is set as false and the text contains '[+]'\n var text;\n var p = 0;\n var levelItems;\n var text1;\n var drillTextLevel = this.layout.renderItems[0]['levelOrderName'].split('#').length;\n for (var h = 0; h < drillTextLevel; h++) {\n text1 = h === 0 ? drillLevelValues['levelText'][h] : text1 + '#' + drillLevelValues['levelText'][h];\n }\n p = drillTextLevel > 1 ? drillTextLevel : p;\n for (var _i = 0, _a = Object['values'](this.layout.renderItems); _i < _a.length; _i++) {\n levelItems = _a[_i];\n var drillLevelText = levelItems['levelOrderName'].split('#');\n if (drillLevelText[0] === drillLevelValues['levelText'][0]) {\n text = p === 0 ? isNullOrUndefined(text1) ? text1 : drillLevelValues['levelText'][p] :\n directLevel ? text1 : text1 + '#' + drillLevelValues['levelText'][p];\n if (text === levelItems['levelOrderName']) {\n this.drilledItems.push({ name: levelItems['levelOrderName'], data: levelItems });\n p++;\n directLevel = true;\n if (p <= item['groupIndex']) {\n text = text + '#' + drillLevelValues['levelText'][p];\n text1 = text;\n }\n }\n }\n }\n return directLevel;\n };\n /**\n * This method compares the selected labels with the drill down items.\n *\n * @param {any} drillLevelValues - Specifies the values of drill level.\n * @param {any} item - Specifies the treemap item.\n * @param {number} i - Specifies the treemap item.\n * @returns {any} - return the new drill down object.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.compareSelectedLabelWithDrillDownItems = function (drillLevelValues, item, i) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var drillLevelChild;\n var newDrillItem = {};\n var b = drillLevelValues['drillLevel'] + 1;\n if (b === this.drilledItems[i]['data']['groupIndex']) {\n drillLevelChild = this.drilledItems[i]['data']['parent'];\n drillLevelChild['isDrilled'] = true;\n newDrillItem[drillLevelChild[this.drilledItems[i]['data']['groupName']]]\n = [drillLevelChild];\n // to remove all the items after matched drilled items\n this.drilledItems.splice(i, this.drilledItems.length);\n }\n else if (drillLevelValues['drillLevel'] === (this.drilledItems.length - 1)\n || drillLevelValues['drillLevel'] === item['groupIndex']) {\n newDrillItem[item['groupName']] = [item];\n }\n return newDrillItem;\n };\n /**\n * This method handles mouse end event in treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.mouseEndOnTreeMap = function (e) {\n var _this = this;\n var targetEle = e.target;\n var targetId = targetEle.id;\n var totalRect;\n var startEvent;\n var endEvent;\n var directLevel = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var index;\n var newDrillItem = {};\n var item;\n var process = true;\n var layoutID = this.element.id + '_TreeMap_' + this.layoutType + '_Layout';\n var drillLevel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateID = this.element.id + '_Label_Template_Group';\n var drillLevelValues;\n if (targetId.indexOf('_Item_Index') > -1 && this.enableDrillDown && !this.drillMouseMove) {\n if (e.cancelable) {\n e.preventDefault();\n }\n index = parseFloat(targetId.split('_Item_Index_')[1]);\n item = this.layout.renderItems[index];\n var labelText = targetEle.textContent;\n if (this.enableBreadcrumb) {\n drillLevelValues = this.calculateSelectedTextLevels(labelText, item);\n drillLevel = drillLevelValues['drillLevel'];\n if (!this.drillDownView && labelText.search('[+]') !== -1) {\n directLevel = this.calculatePreviousLevelChildItems(drillLevelValues, item, directLevel);\n }\n }\n if (this.levels.length !== 0 && !item['isLeafItem'] && findChildren(item)['values'] &&\n findChildren(item)['values'].length > 0) {\n if (this.drilledItems.length > 0) {\n item = directLevel ? this.drilledItems[this.drilledItems.length - 1]['data'] : item;\n for (var i = 0; i < this.drilledItems.length; i++) {\n if (!isNullOrUndefined(drillLevel)) { //Compare the selected text level with drilled items\n var drillLength = this.drilledItems.length;\n newDrillItem = this.compareSelectedLabelWithDrillDownItems(drillLevelValues, item, i);\n if (drillLength !== this.drilledItems.length) {\n i -= 1;\n break;\n }\n } //when clicking the levels drill back to the previous level process takes place\n if (item['levelOrderName'] === this.drilledItems[i]['name'] && !directLevel && isNullOrUndefined(drillLevel)) {\n if (item['groupIndex'] === 0 && item['parent'][item['groupName']] instanceof Array) {\n item['isDrilled'] = !(item['isDrilled']);\n if (!item['isDrilled']) {\n newDrillItem = item['parent'];\n }\n else {\n newDrillItem[item['groupName']] = [item];\n }\n }\n else {\n item['isDrilled'] = false;\n item['parent']['isDrilled'] = true;\n item = item['parent'];\n newDrillItem[item['groupName']] = [item];\n }\n this.drilledItems.splice(i, 1);\n i -= 1;\n break;\n }\n else if (i === this.drilledItems.length - 1 && isNullOrUndefined(drillLevel)) {\n item['isDrilled'] = true; // click the items move to next level.\n newDrillItem[item['groupName']] = [item];\n }\n }\n }\n else {\n item['isDrilled'] = true;\n newDrillItem[item['groupName']] = [item];\n }\n startEvent = {\n cancel: false, name: drillStart, treemap: this,\n element: targetEle, groupIndex: this.enableBreadcrumb &&\n this.drilledItems.length !== 0 && !isNullOrUndefined(drillLevel) ?\n this.drilledItems[this.drilledItems.length - 1]['data']['groupIndex'] : item['groupIndex'],\n groupName: this.enableBreadcrumb && this.drilledItems.length !== 0 && !isNullOrUndefined(drillLevel) ?\n this.drilledItems[this.drilledItems.length - 1]['data']['name'] : item['name'],\n rightClick: e.which === 3 ? true : false, childItems: null, item: newDrillItem\n };\n this.trigger(drillStart, startEvent, function (observedArgs) {\n _this.currentLevel = item['isDrilled'] && isNullOrUndefined(drillLevel) ? item['groupIndex'] :\n (!isNullOrUndefined(drillLevel) && _this.enableBreadcrumb && item['isDrilled']) ? drillLevel : null;\n if (!observedArgs.cancel) {\n if (document.getElementById(layoutID)) {\n var layerElementId = document.getElementById(layoutID);\n layerElementId.parentNode.removeChild(layerElementId);\n }\n totalRect = extend({}, _this.areaRect, totalRect, true);\n if (_this.legendSettings.visible && !isNullOrUndefined(_this.treeMapLegendModule)) {\n if (!isNullOrUndefined(newDrillItem)) {\n _this.treeMapLegendModule.legendGroup.textContent = '';\n _this.treeMapLegendModule.legendGroup = null;\n _this.treeMapLegendModule.widthIncrement = 0;\n _this.treeMapLegendModule.heightIncrement = 0;\n if (_this.enableBreadcrumb && !isNullOrUndefined(drillLevel)) {\n _this.drilledLegendItems = {\n name: _this.drilledItems[_this.drilledItems.length - 1]['data']['levelOrderName'],\n data: _this.drilledItems[_this.drilledItems.length - 1]['data']\n };\n }\n else {\n _this.drilledLegendItems = { name: item['levelOrderName'], data: item };\n }\n _this.treeMapLegendModule.renderLegend();\n }\n totalRect = !isNullOrUndefined(_this.totalRect) ? _this.totalRect : totalRect;\n }\n if (document.getElementById(templateID)) {\n var drillElementId = document.getElementById(templateID);\n drillElementId.parentNode.removeChild(drillElementId);\n }\n if (!isNullOrUndefined(observedArgs.childItems) && !observedArgs.cancel) {\n _this.layout.onDemandProcess(observedArgs.childItems);\n }\n else {\n _this.layout.calculateLayoutItems(newDrillItem, totalRect);\n _this.layout.renderLayoutItems();\n }\n }\n });\n endEvent = { cancel: false, name: drillEnd, treemap: this, renderItems: this.layout.renderItems };\n this.trigger(drillEnd, endEvent);\n if (process) {\n if (!directLevel && isNullOrUndefined(drillLevel)) {\n this.drilledItems.push({ name: item['levelOrderName'], data: item });\n }\n }\n }\n }\n this.mouseDown = false;\n this.notify(Browser.touchEndEvent, e);\n };\n /**\n * This method handles mouse leave event in treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse.\n * @return {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TreeMap.prototype.mouseLeaveOnTreeMap = function (e) {\n if (this.treeMapTooltipModule) {\n this.treeMapTooltipModule.removeTooltip();\n }\n if (this.treeMapLegendModule) {\n this.treeMapLegendModule.removeInteractivePointer();\n }\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', this);\n if (this.treeMapHighlightModule) {\n removeLegend(this.treeMapHighlightModule.shapeHighlightCollection, this);\n this.treeMapHighlightModule.highLightId = '';\n }\n };\n /**\n * This method is used to select or remove the selection of treemap item based on the provided selection settings.\n *\n * @param {string[]} levelOrder - Specifies the order of the level.\n * @param {boolean} isSelected - Specifies whether the treemap item should be selected or the selection should be removed.\n * @return {void}\n */\n TreeMap.prototype.selectItem = function (levelOrder, isSelected) {\n if (isNullOrUndefined(isSelected)) {\n isSelected = true;\n }\n var levelOrderName = '';\n for (var i = 0; i < levelOrder.length; i++) {\n if (i !== levelOrder.length - 1) {\n levelOrderName += levelOrder[i] + '#';\n }\n else {\n levelOrderName += levelOrder[i];\n }\n }\n if (this.treeMapSelectionModule && this.selectionSettings.enable) {\n this.treeMapSelectionModule.selectTreemapItem(levelOrderName, isSelected);\n }\n };\n /**\n * To provide the array of modules needed for maps rendering\n *\n * @returns {ModuleDeclaration[]} Returns the modules\n * @private\n */\n TreeMap.prototype.requiredModules = function () {\n var modules = [];\n if (this.tooltipSettings.visible) {\n modules.push({\n member: 'treeMapTooltip',\n args: [this],\n name: 'TreeMapTooltip'\n });\n }\n if (this.highlightSettings.enable) {\n modules.push({\n member: 'treeMapHighlight',\n args: [this],\n name: 'TreeMapHighlight'\n });\n }\n if (this.selectionSettings.enable) {\n modules.push({\n member: 'treeMapSelection',\n args: [this],\n name: 'TreeMapSelection'\n });\n }\n if (this.legendSettings.visible) {\n modules.push({\n member: 'treeMapLegend',\n args: [this],\n name: 'TreeMapLegend'\n });\n }\n if (this.allowPrint) {\n modules.push({\n member: 'Print',\n args: [this, Print],\n name: 'Print'\n });\n }\n if (this.allowImageExport) {\n modules.push({\n member: 'ImageExport',\n args: [this, ImageExport],\n name: 'ImageExport'\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this, PdfExport],\n name: 'PdfExport'\n });\n }\n return modules;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TreeMapModel} newProp - Specifies the new property\n * @param {TreeMapModel} oldProp - Specifies the old property\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TreeMap.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.isDestroyed) {\n var render = false;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'background':\n this.renderBorder();\n break;\n case 'height':\n case 'width':\n case 'layoutType':\n case 'levels':\n case 'drillDownView':\n case 'renderDirection':\n case 'leafItemSettings':\n case 'legendSettings':\n case 'dataSource':\n render = true;\n break;\n }\n }\n if (render) {\n this.createSvg();\n this.renderElements();\n }\n }\n };\n /**\n * Gets component name.\n *\n * @returns {string} - return the treemap instance.\n * @private\n */\n TreeMap.prototype.getModuleName = function () {\n return 'treemap';\n };\n /**\n * This method destroys the treemap. This method removes the events associated with the treemap and disposes the objects created for rendering and updating the treemap.\n */\n TreeMap.prototype.destroy = function () {\n this.unWireEVents();\n removeElement('treeMapMeasureText');\n this.drilledItems = [];\n this.levelSelection = [];\n this.legendId = [];\n this.removeSvg();\n _super.prototype.destroy.call(this);\n this.areaRect = null;\n this.themeStyle = null;\n this.totalRect = null;\n this.drilledLegendItems = null;\n this.doubleTapTimer = null;\n this.treemapLevelData = null;\n this.resizeEvent = null;\n this.availableSize = null;\n this.intl = null;\n if (!isNullOrUndefined(this.layout)) {\n this.layout.destroy();\n }\n this.layout = null;\n this.renderer = null;\n };\n TreeMap.prototype.removeSvg = function () {\n removeElement(this.element.id + '_Secondary_Element');\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Returns the string value.\n * @private\n */\n TreeMap.prototype.getPersistData = function () {\n return '';\n };\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowPrint\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowImageExport\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"height\", void 0);\n __decorate([\n Complex({}, Border)\n ], TreeMap.prototype, \"border\", void 0);\n __decorate([\n Complex({}, Margin)\n ], TreeMap.prototype, \"margin\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"background\", void 0);\n __decorate([\n Property('Material')\n ], TreeMap.prototype, \"theme\", void 0);\n __decorate([\n Complex({}, TitleSettings)\n ], TreeMap.prototype, \"titleSettings\", void 0);\n __decorate([\n Property('Squarified')\n ], TreeMap.prototype, \"layoutType\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"weightValuePath\", void 0);\n __decorate([\n Property('')\n ], TreeMap.prototype, \"rangeColorValuePath\", void 0);\n __decorate([\n Property('')\n ], TreeMap.prototype, \"equalColorValuePath\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"colorValuePath\", void 0);\n __decorate([\n Property([])\n ], TreeMap.prototype, \"palette\", void 0);\n __decorate([\n Property('TopLeftBottomRight')\n ], TreeMap.prototype, \"renderDirection\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"enableDrillDown\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"enableBreadcrumb\", void 0);\n __decorate([\n Property(' - ')\n ], TreeMap.prototype, \"breadcrumbConnector\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"drillDownView\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Complex({}, InitialDrillSettings)\n ], TreeMap.prototype, \"initialDrillDown\", void 0);\n __decorate([\n Complex({}, LeafItemSettings)\n ], TreeMap.prototype, \"leafItemSettings\", void 0);\n __decorate([\n Collection([], LevelSettings)\n ], TreeMap.prototype, \"levels\", void 0);\n __decorate([\n Complex({}, HighlightSettings)\n ], TreeMap.prototype, \"highlightSettings\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], TreeMap.prototype, \"selectionSettings\", void 0);\n __decorate([\n Complex({}, TooltipSettings)\n ], TreeMap.prototype, \"tooltipSettings\", void 0);\n __decorate([\n Complex({}, LegendSettings)\n ], TreeMap.prototype, \"legendSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"useGroupingSeparator\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"description\", void 0);\n __decorate([\n Property(0)\n ], TreeMap.prototype, \"tabIndex\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"format\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"drillStart\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"drillEnd\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemSelected\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemHighlight\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"tooltipRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemMove\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"doubleClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"rightClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"mouseMove\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"resize\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"legendItemRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"legendRendering\", void 0);\n TreeMap = __decorate([\n NotifyPropertyChanges\n ], TreeMap);\n return TreeMap;\n}(Component));\nexport { TreeMap };\n/**\n * @private\n */\nvar LevelsData = /** @class */ (function () {\n function LevelsData() {\n }\n return LevelsData;\n}());\nexport { LevelsData };\n","import { findChildren, Location, Rect, Size, measureText, TextOption, PathOption, RectOption, drawSymbol, orderByArea, legendMaintain } from '../utils/helper';\nimport { Browser, isNullOrUndefined, EventHandler, extend, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { renderTextElement, textTrim } from '../utils/helper';\nimport { legendItemRendering, legendRendering } from '../model/constants';\n/**\n * Legend module class\n */\nvar TreeMapLegend = /** @class */ (function () {\n function TreeMapLegend(treemap) {\n this.page = 0;\n /** @private */\n this.legendBorderRect = new Rect(0, 0, 0, 0);\n this.currentPage = 0;\n /** @private */\n this.heightIncrement = 0;\n /** @private */\n this.widthIncrement = 0;\n this.textMaxWidth = 0;\n this.legendInteractiveGradient = [];\n this.legendItemRect = new Rect(0, 0, 0, 0);\n this.treemap = treemap;\n this.addEventListener();\n }\n /**\n * method for legend\n *\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.renderLegend = function () {\n var _this = this;\n this.page = 0;\n this.legendRenderingCollections = [];\n this.legendCollections = [];\n this.legendNames = [];\n this.totalPages = [];\n this.gradientCount = 1;\n this.widthIncrement = 0;\n this.heightIncrement = 0;\n this.defsElement = this.treemap.renderer.createDefs();\n this.treemap.svgObject.appendChild(this.defsElement);\n var eventArgs = {\n cancel: false, name: legendRendering, treemap: this.treemap, _changePosition: this.treemap.legendSettings.position,\n position: this.treemap.legendSettings.position\n };\n this.treemap.trigger(legendRendering, eventArgs, function (observedArgs) {\n if (!observedArgs.cancel && observedArgs._changePosition !== _this.treemap.legendSettings.position) {\n _this.treemap.legendSettings.position = observedArgs._changePosition;\n }\n _this.calculateLegendBounds();\n if (_this.legendCollections.length > 0) {\n _this.drawLegend();\n }\n });\n };\n // eslint-disable-next-line valid-jsdoc\n /** @private */\n TreeMapLegend.prototype.calculateLegendBounds = function () {\n var _this = this;\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n this.findColorMappingLegendItems(treemap.treemapLevelData.levelsData[0]);\n if (((!isNullOrUndefined(this.treemap.palette) && this.treemap.palette.length > 0) || !isNullOrUndefined(treemap.colorValuePath))\n && this.legendCollections.length === 0) {\n this.findPaletteLegendItems(treemap.treemapLevelData.levelsData[0]);\n }\n if (this.legendCollections.length > 0) {\n // eslint-disable-next-line @typescript-eslint/tslint/config\n this.legendCollections.sort(function (firstItem, nextItem) { return (firstItem.levelIndex > nextItem.levelIndex) ? 1 :\n (firstItem.levelIndex < nextItem.levelIndex) ? -1 : 0; });\n // eslint-disable-next-line @typescript-eslint/tslint/config\n this.legendCollections.sort(function (firstItem, nextItem) { return (firstItem.groupIndex > nextItem.groupIndex) ? 1 :\n (firstItem.groupIndex < nextItem.groupIndex) ? -1 : 0; });\n // eslint-disable-next-line @typescript-eslint/tslint/config\n this.legendCollections.sort(function (firstItem, nextItem) { return (firstItem.leafIndex > nextItem.leafIndex) ? 1 :\n (firstItem.leafIndex < nextItem.leafIndex) ? -1 : 0; });\n var defaultSize = 25;\n var textPadding = 10;\n var position = legend.position;\n var legendTitle = treemap.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(legend.title.text) : legend.title.text;\n var titleTextStyle = legend.titleStyle;\n var legendMode = legend.mode;\n var shapeX = 0;\n var shapeY = 0;\n var textX = 0;\n var textY = 0;\n var shapeHeight = legend.shapeHeight;\n var shapeWidth = legend.shapeWidth;\n var shapeLocation = [];\n var textLocation = [];\n var orientation_1 = (legend.orientation === 'None') ? ((position === 'Top' || position === 'Bottom'\n || (position === 'Auto' && treemap.availableSize.width <= treemap.availableSize.height))\n ? 'Horizontal' : 'Vertical') : legend.orientation;\n var leftPadding = 10;\n var topPadding = 10;\n var spacing = 10;\n var legendWidth = (legend.width.length > 1) ? (legend.width.indexOf('%') > -1) ? (treemap.availableSize.width / 100)\n * parseFloat(legend.width) : parseFloat(legend.width) : null;\n var legendHeight = (legend.height.length > 1) ? (legend.height.indexOf('%') > -1) ?\n (treemap.availableSize.height / 100) * parseFloat(legend.height) : parseFloat(legend.height) : null;\n titleTextStyle.fontFamily = titleTextStyle.fontFamily || treemap.themeStyle.fontFamily;\n titleTextStyle.fontWeight = titleTextStyle.fontWeight || treemap.themeStyle.titleFontWeight;\n titleTextStyle.size = titleTextStyle.size || treemap.themeStyle.subtitleFontSize;\n var legendTitleSize = measureText(legendTitle, titleTextStyle);\n var startX_1 = 0;\n var startY_1 = 0;\n var shapePadding = legend.shapePadding;\n var itemTextStyle = legend.textStyle;\n itemTextStyle.size = itemTextStyle.size || treemap.themeStyle.legendFontSize;\n itemTextStyle.fontFamily = itemTextStyle.fontFamily || treemap.themeStyle.fontFamily;\n itemTextStyle.fontWeight = itemTextStyle.fontWeight || treemap.themeStyle.fontWeight;\n if (legendMode === 'Default') {\n legendWidth = (isNullOrUndefined(legendWidth)) ? treemap.areaRect.width : legendWidth;\n legendHeight = (isNullOrUndefined(legendHeight)) ? treemap.areaRect.height : legendHeight;\n var j = 0;\n for (var i = 0; i < this.legendCollections.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var legendItem = this.legendCollections[i];\n if (isNullOrUndefined(this.totalPages[this.page])) {\n this.totalPages[this.page] = { Page: (this.page + 1), Collection: [] };\n }\n var legendTextSize = measureText(treemap.enableHtmlSanitizer ?\n SanitizeHtmlHelper.sanitize(legendItem['legendName']) : legendItem['legendName'], itemTextStyle);\n this.textMaxWidth = Math.max(this.textMaxWidth, legendTextSize.width);\n if (i === 0) {\n startX_1 = shapeX = (leftPadding + (shapeWidth / 2));\n startY_1 = shapeY = topPadding + legendTitleSize.height + (shapeHeight > legendTextSize.height ? shapeHeight / 2\n : (legendTextSize.height / 4));\n }\n else {\n var maxSize = (legendTextSize.height > shapeHeight) ? legendTextSize.height : shapeHeight;\n if (orientation_1 === 'Horizontal') {\n var prvePositionX = (textLocation[j - 1].x + textLocation[j - 1].width) + textPadding + shapeWidth;\n if ((prvePositionX + shapePadding + legendTextSize.width) > legendWidth) {\n var nextPositionY = (textLocation[j - 1].y > (shapeLocation[j - 1].y + (shapeHeight / 2)) ?\n textLocation[j - 1].y : (shapeLocation[j - 1].y + (shapeHeight / 2))) + topPadding;\n if ((nextPositionY + maxSize) > legendHeight) {\n this.getPageChanged();\n j = 0;\n shapeLocation = [];\n textLocation = [];\n shapeX = startX_1;\n shapeY = startY_1;\n }\n else {\n shapeX = (shapeLocation[0].x);\n shapeY = (nextPositionY + (maxSize / 2));\n }\n }\n else {\n shapeX = (prvePositionX - (shapeWidth / 2));\n shapeY = (shapeLocation[j - 1]).y;\n }\n }\n else {\n var prevPositionY = textLocation[j - 1].y > shapeLocation[j - 1].y + (shapeHeight / 2) ?\n textLocation[j - 1].y : shapeLocation[j - 1].y + (shapeHeight / 2);\n if ((prevPositionY + topPadding + maxSize) > legendHeight) {\n var nextPositionX = (textLocation[j - 1].x + this.textMaxWidth + textPadding);\n if ((nextPositionX + shapePadding + legendTextSize.width) > legendWidth) {\n shapeX = startX_1;\n shapeY = startY_1;\n textLocation = [];\n shapeLocation = [];\n this.getPageChanged();\n j = 0;\n }\n else {\n shapeX = nextPositionX + (shapeWidth / 2);\n shapeY = (shapeLocation[0].y);\n }\n }\n else {\n shapeX = shapeLocation[j - 1].x;\n shapeY = prevPositionY + topPadding + (shapeHeight / 2);\n }\n }\n }\n textX = shapeX + (shapeWidth / 2) + shapePadding;\n textY = shapeY + (legendTextSize.height / 4);\n shapeLocation.push({ x: shapeX, y: shapeY });\n textLocation.push({ x: textX, y: textY, width: legendTextSize.width, height: (legendTextSize.height / 2) });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalPages[this.page]['Collection'].push({\n DisplayText: legendItem['legendName'], element: legendItem['gradientElement'],\n Shape: { x: shapeX, y: shapeY },\n Text: { x: textX, y: textY },\n Fill: legendItem['legendFill'],\n Data: legendItem['legendData'],\n Rect: {\n x: shapeLocation[j].x - (shapeWidth / 2),\n y: (shapeLocation[j].y - (shapeHeight / 2)) < (textY - legendTextSize.height) ?\n (shapeLocation[j].y - (shapeHeight / 2)) : (textY - legendTextSize.height),\n width: Math.abs((shapeLocation[j].x - (shapeWidth / 2)) - (textX + legendTextSize.width)),\n height: ((shapeHeight > legendTextSize.height) ? shapeHeight : legendTextSize.height)\n }\n });\n j++;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.totalPages[0]['Collection'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n collection.forEach(function (legendObj, index) {\n var legendRect = new Rect(legendObj['Rect']['x'], legendObj['Rect']['y'], legendObj['Rect']['width'], legendObj['Rect']['height']);\n if (index === 0) {\n startX_1 = legendRect.x;\n startY_1 = legendRect.y;\n }\n _this.widthIncrement = Math.max(_this.widthIncrement, Math.abs(startX_1 - (legendRect.x + legendRect.width)));\n _this.heightIncrement = Math.max(_this.heightIncrement, Math.abs(startY_1 - (legendRect.y + legendRect.height)));\n });\n legendWidth = ((this.widthIncrement < legendWidth) ? this.widthIncrement : legendWidth);\n legendHeight = ((this.heightIncrement < legendHeight) ? this.heightIncrement : legendHeight);\n this.legendItemRect = {\n x: collection[0]['Rect']['x'], y: collection[0]['Rect']['y'],\n width: legendWidth, height: legendHeight\n };\n }\n else {\n var legendLength = this.legendCollections.length;\n var rectWidth = (orientation_1 === 'Horizontal') ? (isNullOrUndefined(legendWidth)) ? (treemap.areaRect.width / legendLength) :\n (legendWidth / legendLength) : (isNullOrUndefined(legendWidth)) ? defaultSize : legendWidth;\n var rectHeight = (orientation_1 === 'Horizontal') ? (isNullOrUndefined(legendHeight)) ? defaultSize : legendHeight :\n (isNullOrUndefined(legendHeight)) ? (treemap.areaRect.height / legendLength) : (legendHeight / legendLength);\n startX_1 = 0;\n startY_1 = legendTitleSize.height + spacing;\n var textPadding_1 = 10;\n var placement = legend.labelPosition;\n var itemStartX = 0;\n var itemStartY = 0;\n var labelAction = legend.labelDisplayMode;\n var maxTextHeight = 0;\n var maxTextWidth = 0;\n for (var i = 0; i < this.legendCollections.length; i++) {\n startX_1 = (orientation_1 === 'Horizontal') ? (startX_1 + rectWidth) : startX_1;\n startY_1 = (orientation_1 === 'Horizontal') ? startY_1 : (startY_1 + rectHeight);\n var legendText = this.legendCollections[i]['legendName'];\n var itemTextSize = new Size(0, 0);\n if (labelAction === 'None') {\n itemTextSize = measureText(legendText, itemTextStyle);\n }\n else if (labelAction === 'Trim') {\n legendText = textTrim((orientation_1 === 'Horizontal' ? rectWidth : rectHeight), legendText, itemTextStyle);\n itemTextSize = measureText(legendText, itemTextStyle);\n }\n else {\n legendText = '';\n }\n maxTextHeight = Math.max(maxTextHeight, itemTextSize.height);\n maxTextWidth = Math.max(maxTextWidth, itemTextSize.width);\n if (itemTextSize.width > 0 && itemTextSize.height > 0) {\n if (orientation_1 === 'Horizontal') {\n textX = startX_1 + (rectWidth / 2);\n textY = (placement === 'After') ? (startY_1 + rectHeight + (itemTextSize.height / 2)) + textPadding_1 :\n (startY_1 - textPadding_1);\n }\n else {\n textX = (placement === 'After') ? startX_1 - (itemTextSize.width / 2) - textPadding_1\n : (startX_1 + rectWidth + itemTextSize.width / 2) + textPadding_1;\n textY = startY_1 + (rectHeight / 2) + (itemTextSize.height / 4);\n }\n }\n if (i === 0) {\n itemStartX = (orientation_1 === 'Horizontal') ? startX_1 : (placement === 'After') ?\n textX - (itemTextSize.width / 2) : startX_1;\n itemStartY = (orientation_1 === 'Horizontal') ? (placement === 'After') ? startY_1 :\n textY - (itemTextSize.height / 2) : startY_1;\n }\n if (i === legendLength - 1) {\n legendWidth = (orientation_1 === 'Horizontal') ? Math.abs((startX_1 + rectWidth) - itemStartX) :\n (rectWidth + maxTextWidth + textPadding_1);\n legendHeight = (orientation_1 === 'Horizontal') ? (rectHeight + (maxTextHeight / 2) + textPadding_1) :\n Math.abs((startY_1 + rectHeight) - itemStartY);\n }\n this.legendRenderingCollections.push({\n fill: this.legendCollections[i]['legendFill'], x: startX_1, y: startY_1,\n width: rectWidth, height: rectHeight, element: this.legendCollections[i]['gradientElement'],\n text: legendText, textX: textX, textY: textY,\n textWidth: itemTextSize.width, textHeight: itemTextSize.height,\n data: this.legendCollections[i]['legendData']\n });\n }\n this.legendItemRect = { x: itemStartX, y: itemStartY, width: legendWidth, height: legendHeight };\n }\n }\n };\n TreeMapLegend.prototype.getPageChanged = function () {\n this.page++;\n if (isNullOrUndefined(this.totalPages[this.page])) {\n this.totalPages[this.page] = { Page: (this.page + 1), Collection: [] };\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.findColorMappingLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n if (child && child.length > 0) {\n this.calculateLegendItems(child);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < child.length; i++) {\n this.findColorMappingLegendItems(child[i]);\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.findPaletteLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child;\n var legendFillColor;\n if (!isNullOrUndefined(this.treemap.drilledItems)) {\n if (this.treemap.drilledItems.length === 0 && !isNullOrUndefined(this.treemap.initialDrillDown.groupName)\n && isNullOrUndefined(this.treemap.drilledLegendItems)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var items = findChildren(data)['values'];\n for (var k = 0; k < items.length; k++) {\n if (items[k]['Name'] === this.treemap.initialDrillDown.groupName) {\n items[k]['isDrilled'] = !items[k]['isDrilled'];\n data = items[k];\n this.treemap.currentLevel = this.treemap.initialDrillDown.groupIndex;\n legendFillColor = this.treemap.palette.length > 0 ? this.treemap.palette[k % this.treemap.palette.length] :\n items[k]['data'][this.treemap.colorValuePath];\n break;\n }\n }\n }\n }\n if (this.treemap.enableDrillDown && !isNullOrUndefined(this.treemap.drilledLegendItems)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childElement = this.treemap.drilledLegendItems;\n if (!isNullOrUndefined(childElement['data']['options'])) {\n legendFillColor = childElement['data']['options']['fill'];\n }\n else {\n for (var k = 0; k < childElement.length; k++) {\n legendFillColor = this.treemap.palette.length > 0 ? this.treemap.palette[k % this.treemap.palette.length] :\n childElement[k]['data'][this.treemap.colorValuePath];\n break;\n }\n }\n if (childElement['data']['isDrilled']) {\n child = findChildren(childElement['data'])['values'];\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentElement = childElement['data']['parent'];\n child = findChildren(parentElement)['values'];\n }\n }\n else {\n child = findChildren(data)['values'];\n }\n var isDuplicate;\n var legendName;\n if (child && child.length > 0) {\n for (var i = 0; i < child.length; i++) {\n if (isNullOrUndefined(child[i]['data'][this.treemap.legendSettings.showLegendPath]) ||\n child[i]['data'][this.treemap.legendSettings.showLegendPath]) {\n legendName = child[i]['data'][this.treemap.legendSettings.valuePath] ?\n child[i]['data'][this.treemap.legendSettings.valuePath] : child[i]['name'];\n isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, legendName) : false;\n if (!isDuplicate) {\n this.legendCollections.push({\n legendName: legendName,\n legendFill: this.treemap.palette.length > 0 ? !isNullOrUndefined(this.treemap.currentLevel)\n ? legendFillColor : this.treemap.palette[i % this.treemap.palette.length] :\n child[i]['data'][this.treemap.colorValuePath],\n legendData: [],\n itemArea: child[i]['weight'],\n levelOrderName: child[i]['levelOrderName']\n });\n }\n }\n }\n this.legendCollections.sort(orderByArea);\n if (this.treemap.palette.length > 0) {\n for (var j = 0; j < this.legendCollections.length; j++) {\n this.legendCollections[j]['legendFill'] = !isNullOrUndefined(this.treemap.currentLevel)\n ? legendFillColor : this.treemap.palette[j % this.treemap.palette.length];\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.calculateLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isAddData;\n var fill;\n var rangeValue;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData;\n var legendText;\n var isLeafItem;\n var colorMapProcess = false;\n var colorMapping;\n var groupIndex;\n var leaf = this.treemap.leafItemSettings;\n var levels = this.treemap.levels;\n var equalValue;\n var position = this.treemap.legendSettings.position;\n var gradientElement;\n var x2;\n var y2;\n var actualValue;\n var isDuplicate;\n var isEqualColor;\n var isRange;\n var isDesaturation = false;\n var legendIndex = 0;\n var outfill;\n var labelLegend;\n var otherIndex;\n this.outOfRangeLegend = null;\n for (var i = 0; i < data.length; i++) {\n fill = '';\n isEqualColor = false;\n isRange = false;\n isDesaturation = false;\n currentData = data[i]['data'];\n groupIndex = data[i]['groupIndex'];\n isLeafItem = (this.treemap.levels.length === 0 || groupIndex === this.treemap.levels.length);\n colorMapping = isLeafItem ? leaf.colorMapping : levels[groupIndex].colorMapping;\n for (var j = 0; j < colorMapping.length; j++) {\n var colorMap = colorMapping[j];\n gradientElement = null;\n rangeValue = Number(currentData[this.treemap.rangeColorValuePath]);\n equalValue = currentData[this.treemap.equalColorValuePath];\n colorMap.value = !isNullOrUndefined(colorMap.value) ? colorMap.value.toString() : colorMap.value;\n if (!isNullOrUndefined(colorMap.from) && !isNullOrUndefined(colorMap.to) &&\n rangeValue >= colorMap.from && rangeValue <= colorMap.to && colorMap.showLegend) {\n colorMapProcess = true;\n isRange = true;\n actualValue = colorMap.from + ' - ' + colorMap.to;\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : colorMap.from + ' - ' + colorMap.to;\n fill = isNullOrUndefined(colorMap.color) ? fill : colorMap.color;\n isAddData = this.isAddNewLegendData(actualValue);\n }\n else if (!isNullOrUndefined(colorMap.value) && equalValue === colorMap.value && colorMap.showLegend) {\n colorMapProcess = true;\n isEqualColor = true;\n actualValue = colorMap.value.toString();\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : colorMap.value.toString();\n fill = isNullOrUndefined(colorMap.color) ? fill :\n Object.prototype.toString.call(colorMap.color) === '[object Array]' ? colorMap.color[0] : colorMap.color;\n isAddData = this.isAddNewLegendData(actualValue);\n }\n if (colorMapProcess && isNullOrUndefined(colorMap.value) && colorMap.maxOpacity && colorMap.minOpacity\n && this.treemap.legendSettings.mode === 'Interactive') {\n var colors = [];\n isDesaturation = true;\n if (Object.prototype.toString.call(colorMap.color) === '[object Array]') {\n for (var q = 0; q < colorMap.color.length; q++) {\n var offsetColor = 100 / (colorMap.color.length - 1);\n var offsetValue = q * offsetColor + '%';\n var stop1Color = { colorStop: offsetValue.toString(), color: colorMap.color[q] };\n colors.push(stop1Color);\n }\n }\n else {\n var stop1Color = { colorStop: '0%', color: fill };\n var stop2Color = { colorStop: '100%', color: fill };\n colors.push(stop1Color);\n colors.push(stop2Color);\n }\n x2 = position === 'Top' || position === 'Bottom' ? '100%' : '0%';\n y2 = position === 'Top' || position === 'Bottom' ? '0%' : '100%';\n var gradient = {\n id: 'groupIndex_' + groupIndex + '_colorIndex_' + this.gradientCount, x1: '0%', y1: '0%', x2: x2, y2: y2\n };\n gradientElement = this.treemap.renderer.drawGradient('linearGradient', gradient, colors).childNodes[0];\n if (Object.prototype.toString.call(colorMap.color) !== '[object Array]') {\n gradientElement.childNodes[0].setAttribute('stop-opacity', colorMap.minOpacity.toString());\n gradientElement.childNodes[1].setAttribute('stop-opacity', colorMap.maxOpacity.toString());\n }\n this.defsElement.appendChild(gradientElement);\n this.gradientCount++;\n }\n isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, legendText) : false;\n if (isAddData && isAddData['process'] && colorMapProcess && !isDuplicate) {\n colorMapProcess = false;\n fill = ((Object.prototype.toString.call(colorMap.color) === '[object Array]')) && isNullOrUndefined(gradientElement)\n && isNullOrUndefined(colorMap.value) ? this.legendGradientColor(colorMap, legendIndex) : fill;\n this.legendCollections.push({\n actualValue: actualValue, levelIndex: !isLeafItem ? j : -1, leafIndex: isLeafItem ? j : -1,\n legendName: legendText, legendFill: fill, legendData: [], groupIndex: !isLeafItem ? groupIndex : -1,\n gradientElement: !isNullOrUndefined(gradientElement) ? gradientElement : isNullOrUndefined(colorMap.value)\n ? this.legendLinearGradient : null, name: data[i]['name'],\n opacity: this.treemap.legendSettings.opacity, borderColor: this.treemap.legendSettings.border.color,\n borderWidth: this.treemap.legendSettings.border.width\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[this.legendCollections.length - 1]['legendData'].push(data[i]);\n legendIndex++;\n }\n else if (colorMapProcess) {\n colorMapProcess = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[isAddData['value']]['legendData'].push(data[i]);\n }\n if (!isRange && !isDesaturation && !isEqualColor) {\n if (isNullOrUndefined(colorMap.from) && isNullOrUndefined(colorMap.to)\n && isNullOrUndefined(colorMap.minOpacity) &&\n isNullOrUndefined(colorMap.maxOpacity) && isNullOrUndefined(colorMap.value) &&\n !isNullOrUndefined(colorMap.color)) {\n outfill = ((Object.prototype.toString.call(colorMap.color) === '[object Array]'))\n ? colorMap.color[0] : colorMap.color;\n labelLegend = !isNullOrUndefined(colorMap.label) ? colorMap.label : 'Others';\n isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, labelLegend) : false;\n if (isNullOrUndefined(this.outOfRangeLegend) && !isDuplicate) {\n this.legendCollections.push({\n actualValue: labelLegend, legendData: [],\n legendName: labelLegend, legendFill: outfill, groupIndex: (!isLeafItem || groupIndex > -1) ? groupIndex : -1\n });\n otherIndex = this.legendCollections.length;\n this.outOfRangeLegend = this.legendCollections[otherIndex - 1];\n legendIndex++;\n }\n for (var k = this.legendCollections.length - 1; k >= 0; k--) {\n if (this.legendCollections[k]['groupIndex'] === data[i]['groupIndex']) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[k]['legendData'].push(data[i]);\n break;\n }\n }\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.removeDuplicates = function (legendCollection, text) {\n var isDuplicate = false;\n for (var i = 0; i < legendCollection.length; i++) {\n if (legendCollection[i]['legendName'] === text) {\n isDuplicate = true;\n break;\n }\n else {\n continue;\n }\n }\n return isDuplicate;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.isAddNewLegendData = function (legendText) {\n var newDataProcess;\n var itemValue;\n if (this.legendCollections.length === 0) {\n newDataProcess = true;\n }\n else {\n for (var j = 0; j < this.legendCollections.length; j++) {\n if (legendText === this.legendCollections[j]['actualValue']) {\n newDataProcess = false;\n itemValue = j;\n break;\n }\n else if (j === this.legendCollections.length - 1) {\n newDataProcess = true;\n }\n }\n }\n return { process: newDataProcess, value: itemValue };\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To draw the legend\n *\n * @private\n */\n TreeMapLegend.prototype.drawLegend = function () {\n var legend = this.treemap.legendSettings;\n var render = this.treemap.renderer;\n var fill;\n var textOptions;\n var gradientElement;\n var textFont = legend.textStyle;\n this.legendGroup = render.createGroup({ id: this.treemap.element.id + '_Legend_Group' });\n this.renderLegendBorder();\n this.renderLegendTitle();\n if (legend.mode === 'Default') {\n this.drawLegendItem(this.currentPage);\n }\n else {\n for (var i = 0; i < this.legendRenderingCollections.length; i++) {\n var itemId = this.treemap.element.id + '_Legend_Index_' + i;\n var textId = this.treemap.element.id + '_Legend_Index_' + i + '_Text';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = this.legendRenderingCollections[i];\n gradientElement = item['element'];\n fill = gradientElement ? 'url(#' + gradientElement.id + ')' : item['fill'];\n var bounds = new Rect(item['x'], item['y'], item['width'], item['height']);\n var textLocation = new Location(item['textX'], item['textY']);\n var rectOptions = new RectOption(itemId, fill, legend.shapeBorder, legend.opacity, bounds);\n if (this.treemap.enableRtl) {\n if (this.treemap.legendSettings.position === 'Left' || this.treemap.legendSettings.position === 'Right'\n || (this.treemap.legendSettings.position === 'Auto'\n && this.treemap.availableSize.width >= this.treemap.availableSize.height)) {\n rectOptions.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - (this.translate.y + rectOptions.height) - Math.abs(this.legendBorderRect.y - rectOptions.y);\n textLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - (this.translate.y) + (item['textHeight'] / 2)\n - Math.abs(this.legendBorderRect.y - textLocation.y);\n }\n else {\n rectOptions.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + rectOptions.width)\n - Math.abs(this.legendBorderRect.x - rectOptions.x);\n textLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - this.translate.x - Math.abs(this.legendBorderRect.x - textLocation.x);\n }\n }\n var text = this.treemap.enableHtmlSanitizer ? (SanitizeHtmlHelper.sanitize(item['text'])) : item['text'];\n textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'middle', text, '', '');\n renderTextElement(textOptions, textFont, textFont.color || this.treemap.themeStyle.legendTextColor, this.legendGroup);\n this.legendGroup.appendChild(render.drawRectangle(rectOptions));\n }\n }\n legendMaintain(this.treemap, this.legendGroup);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.defaultLegendRtlLocation = function (collection, spacing, treemap, legend) {\n var shapeLocation = collection['Shape'];\n var textLocation = collection['Text'];\n var legendText = collection['DisplayText'];\n var textSize = measureText(legendText, legend.textStyle);\n shapeLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + spacing) - Math.abs(this.legendBorderRect.x - shapeLocation.x);\n textLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + textSize.width + spacing) - Math.abs(this.legendBorderRect.x - textLocation.x);\n if (treemap.legendSettings.position === 'Left' || treemap.legendSettings.position === 'Right'\n || (treemap.legendSettings.position === 'Auto'\n && this.treemap.availableSize.width >= this.treemap.availableSize.height)) {\n shapeLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - this.translate.y - Math.abs(Math.abs(this.legendBorderRect.y) - shapeLocation.y) - (legend.shapeHeight / 2);\n textLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - this.translate.y - Math.abs(Math.abs(this.legendBorderRect.y) - textLocation.y);\n }\n return { shapeLocation: shapeLocation, textLocation: textLocation };\n };\n TreeMapLegend.prototype.drawLegendItem = function (page) {\n var _this = this;\n var treemap = this.treemap;\n var spacing = 10;\n var legend = treemap.legendSettings;\n var shapeSize = new Size(legend.shapeWidth, legend.shapeHeight);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var textOptions;\n var legendRtlLocation;\n var render = treemap.renderer;\n var shapeBorder = legend.shapeBorder;\n var eventArgs;\n if (page >= 0 && page < this.totalPages.length) {\n if (document.getElementById(this.legendGroup.id)) {\n document.getElementById(this.legendGroup.id).remove();\n }\n var isLineShape_1 = (legend.shape === 'HorizontalLine' || legend.shape === 'VerticalLine' || legend.shape === 'Cross');\n var strokeColor_1 = isLineShape_1 ? isNullOrUndefined(legend.fill) ? '#000000' : legend.fill : shapeBorder.color;\n var strokeWidth_1 = isLineShape_1 ? (shapeBorder.width === 0) ? 1 : shapeBorder.width : shapeBorder.width;\n var _loop_1 = function (i) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this_1.totalPages[page]['Collection'][i];\n var legendText = this_1.treemap.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(collection['DisplayText']) : collection['DisplayText'];\n var legendElement = render.createGroup({ id: treemap.element.id + '_Legend_Index_' + i });\n legendElement.setAttribute('aria-label', legendText + ' Legend');\n legendElement.setAttribute('role', 'region');\n var shapeId = treemap.element.id + '_Legend_Shape_Index_' + i;\n var textId = treemap.element.id + '_Legend_Text_Index_' + i;\n var shapeLocation = collection['Shape'];\n var textLocation = collection['Text'];\n if (treemap.enableRtl) {\n legendRtlLocation = this_1.defaultLegendRtlLocation(collection, spacing, treemap, legend);\n shapeLocation = legendRtlLocation['shapeLocation'];\n textLocation = legendRtlLocation['textLocation'];\n }\n eventArgs = {\n cancel: false, name: legendItemRendering, treemap: treemap, fill: collection['Fill'],\n shape: legend.shape, imageUrl: legend.imageUrl\n };\n treemap.trigger(legendItemRendering, eventArgs, function (observedArgs) {\n var renderOptions = new PathOption(shapeId, observedArgs.fill, strokeWidth_1, isLineShape_1 ? collection['Fill'] : strokeColor_1, legend.opacity, '');\n legendElement.appendChild(drawSymbol(shapeLocation, observedArgs.shape, shapeSize, observedArgs.imageUrl, renderOptions));\n textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'start', legendText, '', '');\n renderTextElement(textOptions, legend.textStyle, legend.textStyle.color || treemap.themeStyle.legendTextColor, legendElement);\n _this.legendGroup.appendChild(legendElement);\n });\n };\n var this_1 = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (var i = 0; i < this.totalPages[page]['Collection'].length; i++) {\n _loop_1(i);\n }\n var pagingGroup = void 0;\n var width = spacing;\n var height = (spacing / 2);\n if (this.page !== 0) {\n var pagingText = (page + 1) + '/' + this.totalPages.length;\n var pagingFont = legend.textStyle;\n var pagingTextSize = measureText(pagingText, pagingFont);\n var leftPageX = (this.legendItemRect.x + this.legendItemRect.width) - pagingTextSize.width -\n (width * 2) - spacing;\n var rightPageX = (this.legendItemRect.x + this.legendItemRect.width);\n var locY = (this.legendItemRect.y + this.legendItemRect.height) + (height / 2) + spacing;\n var pageTextX = rightPageX - width - (pagingTextSize.width / 2) - (spacing / 2);\n pagingGroup = render.createGroup({ id: treemap.element.id + '_Legend_Paging_Group' });\n var leftPageElement = render.createGroup({ id: treemap.element.id + '_Legend_Left_Paging_Group' });\n var rightPageElement = render.createGroup({ id: treemap.element.id + '_Legend_Right_Paging_Group' });\n var rightPath = ' M ' + rightPageX + ' ' + locY + ' L ' + (rightPageX - width) + ' ' + (locY - height) +\n ' L ' + (rightPageX - width) + ' ' + (locY + height) + ' z ';\n var leftPath = ' M ' + leftPageX + ' ' + locY + ' L ' + (leftPageX + width) + ' ' + (locY - height) +\n ' L ' + (leftPageX + width) + ' ' + (locY + height) + ' z ';\n var leftPageOptions = new PathOption(treemap.element.id + '_Left_Page', '#a6a6a6', 0, '#a6a6a6', 1, '', leftPath);\n leftPageElement.appendChild(render.drawPath(leftPageOptions));\n var leftRectPageOptions = new RectOption(treemap.element.id + '_Left_Page_Rect', 'transparent', {}, 1, new Rect(leftPageX - (width / 2), (locY - (height * 2)), width * 2, spacing * 2), '');\n leftPageElement.appendChild(render.drawRectangle(leftRectPageOptions));\n this.wireEvents(leftPageElement);\n var rightPageOptions = new PathOption(treemap.element.id + '_Right_Page', '#a6a6a6', 0, '#a6a6a6', 1, '', rightPath);\n rightPageElement.appendChild(render.drawPath(rightPageOptions));\n var rightRectPageOptions = new RectOption(treemap.element.id + '_Right_Page_Rect', 'transparent', {}, 1, new Rect((rightPageX - width), (locY - height), width, spacing), '');\n rightPageElement.appendChild(render.drawRectangle(rightRectPageOptions));\n this.wireEvents(rightPageElement);\n pagingGroup.appendChild(leftPageElement);\n pagingGroup.appendChild(rightPageElement);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var pageTextOptions = {\n 'id': treemap.element.id + '_Paging_Text',\n 'x': pageTextX,\n 'y': locY + (pagingTextSize.height / 4),\n 'fill': '#a6a6a6',\n 'font-size': '14px',\n 'font-style': pagingFont.fontStyle,\n 'font-family': pagingFont.fontFamily,\n 'font-weight': pagingFont.fontWeight,\n 'text-anchor': 'middle',\n 'transform': '',\n 'opacity': 1,\n 'dominant-baseline': '',\n 'role': 'region',\n 'aria-label': pagingText\n };\n pagingGroup.appendChild(render.createText(pageTextOptions, pagingText));\n this.legendGroup.appendChild(pagingGroup);\n }\n }\n };\n TreeMapLegend.prototype.renderLegendBorder = function () {\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n var legendTitle = legend.title.text;\n var spacing = 10;\n var textStyle = legend.titleStyle;\n var title = textTrim((this.legendItemRect.width + (spacing * 2)), legendTitle, textStyle);\n var textSize = measureText(title, textStyle);\n this.legendBorderRect = new Rect((this.legendItemRect.x - spacing), (this.legendItemRect.y - spacing - textSize.height), (this.legendItemRect.width) + (spacing * 2), (this.legendItemRect.height) + (spacing * 2) + textSize.height +\n (legend.mode === 'Interactive' ? 0 : (this.page !== 0) ? spacing : 0));\n var borderStyle = {\n color: legend.border.color || this.treemap.themeStyle.legendBorderColor,\n width: legend.border.width || this.treemap.themeStyle.legendBorderWidth\n };\n var renderOptions = new RectOption(treemap.element.id + '_Legend_Border', legend.background, borderStyle, 1, this.legendBorderRect, '');\n var legendBorder = treemap.renderer.drawRectangle(renderOptions);\n legendBorder.style.pointerEvents = 'none';\n this.legendGroup.appendChild(legendBorder);\n this.getLegendAlignment(treemap, this.legendBorderRect.width, this.legendBorderRect.height, legend);\n this.legendGroup.setAttribute('transform', 'translate( ' + (this.translate.x + (-(this.legendBorderRect.x))) + ' ' +\n (this.translate.y + (-(this.legendBorderRect.y))) + ' )');\n treemap.svgObject.appendChild(this.legendGroup);\n };\n TreeMapLegend.prototype.renderLegendTitle = function () {\n var legend = this.treemap.legendSettings;\n var textStyle = legend.titleStyle;\n var legendTitle = this.treemap.enableHtmlSanitizer ? (SanitizeHtmlHelper.sanitize(legend.title.text)) : legend.title.text;\n var textOptions;\n var spacing = 10;\n var trimTitle = textTrim((this.legendItemRect.width + (spacing * 2)), legendTitle, textStyle);\n var textSize = measureText(trimTitle, textStyle);\n if (legendTitle) {\n textOptions = new TextOption(this.treemap.element.id + '_LegendTitle', (this.legendItemRect.x) + (this.legendItemRect.width / 2), this.legendItemRect.y - (textSize.height / 2) - (spacing / 2), 'middle', trimTitle, '');\n var textElement = renderTextElement(textOptions, textStyle, textStyle.color ||\n this.treemap.themeStyle.legendTitleColor, this.legendGroup);\n textElement.setAttribute('role', 'region');\n textElement.setAttribute('aria-label', legendTitle);\n }\n };\n /**\n * To rendered the interactive pointer\n *\n * @param {PointerEvent | TouchEvent} e - Specifies the pointer argument.\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.renderInteractivePointer = function (e) {\n var treemap = this.treemap;\n var target = e.target;\n var interactiveId = treemap.element.id + '_Interactive_Legend';\n var pointerDrawn = false;\n target = !(e.type.indexOf('touch') > -1) ? target :\n document.elementFromPoint(e.changedTouches[0].clientX, e.changedTouches[0].clientY);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetItem;\n var legend = treemap.legendSettings;\n if (target.id.indexOf('_Item_Index') > -1 && legend.visible && this.legendRenderingCollections.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = void 0;\n var legendRect = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data = void 0;\n var fill = void 0;\n var stroke = void 0;\n var strokeWidth = void 0;\n var legendElement = void 0;\n targetItem = treemap.layout.renderItems[parseFloat(target.id.split('_Item_Index_')[1])];\n var svgRect = treemap.svgObject.getBoundingClientRect();\n for (var i = 0; i < this.legendCollections.length && !pointerDrawn; i++) {\n currentData = this.legendCollections[i];\n legendElement = document.getElementById(treemap.element.id + '_Legend_Index_' + i);\n legendRect = legendElement.getBoundingClientRect();\n var rect = new Rect(Math.abs(legendRect.left - svgRect.left), Math.abs(legendRect.top - svgRect.top), legendRect.width, legendRect.height);\n fill = legendElement.getAttribute('fill');\n stroke = legend.shapeBorder.color;\n strokeWidth = legend.shapeBorder.width;\n if (!isNullOrUndefined(currentData['legendData']) && currentData['legendData'].length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data = currentData['legendData'];\n var valuePath = treemap.rangeColorValuePath;\n if (targetItem['levelOrderName'].indexOf(this.legendCollections[i]['legendName']) > -1) {\n this.drawInteractivePointer(legend, fill, stroke, interactiveId, strokeWidth, rect);\n pointerDrawn = true;\n }\n else {\n for (var j = 0; j < data.length; j++) {\n if ((treemap.rangeColorValuePath && treemap.leafItemSettings.colorMapping.length > 0)\n ? data[j]['data'][valuePath] === targetItem['data'][valuePath]\n : (data[j]['levelOrderName'] === targetItem['levelOrderName'] ||\n data[j]['levelOrderName'].indexOf(targetItem['levelOrderName']) > -1)) {\n this.drawInteractivePointer(legend, fill, stroke, interactiveId, strokeWidth, rect);\n pointerDrawn = true;\n break;\n }\n }\n }\n }\n else if (this.treemap.leafItemSettings.colorMapping.length === 0 && this.treemap.palette) {\n if (targetItem['levelOrderName'].indexOf(currentData['levelOrderName']) > -1) {\n this.drawInteractivePointer(legend, fill, stroke, interactiveId, strokeWidth, rect);\n pointerDrawn = true;\n }\n }\n }\n }\n else {\n this.removeInteractivePointer();\n }\n };\n TreeMapLegend.prototype.drawInteractivePointer = function (legend, fill, stroke, id, strokeWidth, rect) {\n var path;\n var locX;\n var locY;\n var height = 10;\n var width = 10;\n var direction = (legend.orientation === 'None') ? (legend.position === 'Top' || legend.position === 'Bottom')\n ? 'Horizontal' : 'Vertical' : legend.orientation;\n if (direction === 'Horizontal') {\n if (!legend.invertedPointer) {\n locX = rect.x + (rect.width / 2);\n locY = rect.y;\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX - width) + ' ' + (locY - height) +\n ' L ' + (locX + width) + ' ' + (locY - height) + ' Z ';\n }\n else {\n locX = rect.x + (rect.width / 2);\n locY = rect.y + (rect.height);\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX - width) + ' ' + (locY + height) +\n ' L ' + (locX + width) + ' ' + (locY + height) + ' Z ';\n }\n }\n else {\n if (!legend.invertedPointer) {\n locX = rect.x + (rect.width);\n locY = rect.y + (rect.height / 2);\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX + width) + ' ' + (locY - height) +\n ' L ' + (locX + width) + ' ' + (locY + height) + ' z ';\n }\n else {\n locX = rect.x;\n locY = rect.y + (rect.height / 2);\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX - width) + ' ' + (locY - height) +\n ' L ' + (locX - width) + ' ' + (locY + height) + ' z ';\n }\n }\n var pathOptions = new PathOption(id, fill, strokeWidth, stroke, 1, '', path);\n this.treemap.svgObject.appendChild(this.treemap.renderer.drawPath(pathOptions));\n };\n TreeMapLegend.prototype.getLegendAlignment = function (treemap, width, height, legend) {\n var x;\n var y;\n var spacing = 10;\n var totalRect;\n // eslint-disable-next-line prefer-const\n totalRect = extend({}, treemap.areaRect, totalRect, true);\n var areaX = totalRect.x;\n var areaY = totalRect.y;\n var areaHeight = totalRect.height;\n var areaWidth = totalRect.width;\n var totalWidth = treemap.availableSize.width;\n var totalHeight = treemap.availableSize.height;\n var position = legend.position === 'Auto' ? (totalWidth > totalHeight) ? 'Right' : 'Bottom' : legend.position;\n if (legend.position === 'Float') {\n this.translate = legend.location;\n }\n else {\n switch (position) {\n case 'Top':\n case 'Bottom':\n totalRect.height = (areaHeight - height);\n x = (totalWidth / 2) - (width / 2);\n y = (position === 'Top') ? areaY : (areaY + totalRect.height) + spacing;\n totalRect.y = (position === 'Top') ? areaY + height + spacing : areaY;\n break;\n case 'Left':\n case 'Right':\n totalRect.width = (areaWidth - width);\n x = (position === 'Left') ? areaX : areaX + totalRect.width;\n y = (totalHeight / 2) - (height / 2);\n totalRect.x = (position === 'Left') ? areaX + width : areaX;\n break;\n }\n switch (legend.alignment) {\n case 'Near':\n if (position === 'Top' || position === 'Bottom') {\n x = totalRect.x;\n }\n else {\n y = totalRect.y;\n }\n break;\n case 'Far':\n if (position === 'Top' || position === 'Bottom') {\n x = totalWidth - width;\n }\n else {\n y = totalHeight - height;\n }\n break;\n }\n this.treemap.totalRect = totalRect;\n this.translate = new Location(x, y);\n }\n };\n /**\n * @param {PointerEvent} e - Specifies the event.\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.mouseUpHandler = function (e) {\n this.renderInteractivePointer(e);\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeInteractivePointer.bind(this), 3000);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To remove the interactive pointer\n *\n * @private\n */\n TreeMapLegend.prototype.removeInteractivePointer = function () {\n if (document.getElementById(this.treemap.element.id + '_Interactive_Legend')) {\n var legendElementId = document.getElementById(this.treemap.element.id + '_Interactive_Legend');\n legendElementId.parentNode.removeChild(legendElementId);\n }\n };\n /**\n * To change the next page\n *\n * @param {PointerEvent} e - Specifies the pointer event argument.\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.changeNextPage = function (e) {\n this.currentPage = (e.target.id.indexOf('_Left_Page_') > -1) ? (this.currentPage - 1) :\n (this.currentPage + 1);\n if (this.currentPage >= 0 && this.currentPage < this.totalPages.length) {\n this.drawLegend();\n }\n else {\n this.currentPage = (e.target.id.indexOf('_Left_Page_') > -1) ? 0 : this.totalPages.length - 1;\n }\n };\n /**\n * Wire events for event handler\n *\n * @param {Element} element - Specifies the element.\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.wireEvents = function (element) {\n EventHandler.add(element, Browser.touchStartEvent, this.changeNextPage, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To add the event listener\n *\n * @private\n */\n TreeMapLegend.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.renderInteractivePointer, this);\n this.treemap.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To remove the event listener\n *\n * @private\n */\n TreeMapLegend.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.renderInteractivePointer);\n this.treemap.off(Browser.touchEndEvent, this.mouseUpHandler);\n };\n /**\n * Get module name.\n *\n * @returns {string} Returns the legend module name.\n */\n TreeMapLegend.prototype.getModuleName = function () {\n return 'treeMapLegend';\n };\n /**\n * To destroy the legend.\n *\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.destroy = function () {\n clearTimeout(this.clearTimeout);\n this.clearTimeout = null;\n this.legendRenderingCollections = [];\n this.legendCollections = [];\n this.outOfRangeLegend = null;\n this.totalPages = [];\n this.translate = null;\n this.legendBorderRect = null;\n this.legendGroup = null;\n this.legendNames = [];\n this.defsElement = null;\n this.legendLinearGradient = null;\n this.legendInteractiveGradient = [];\n this.legendItemRect = null;\n this.removeEventListener();\n this.treemap = null;\n };\n /**\n * Get the gradient color for interactive legend.\n *\n * @param {ColorMappingModel} colorMap - Specifies the color mapping instance.\n * @param {number} legendIndex - Specifies the index of legend.\n * @returns {string} - Returns the legend color.\n * @private\n */\n TreeMapLegend.prototype.legendGradientColor = function (colorMap, legendIndex) {\n var legendFillColor;\n var xmlns = 'http://www.w3.org/2000/svg';\n if (!isNullOrUndefined(colorMap.color) && Object.prototype.toString.call(colorMap.color) === '[object Array]') {\n var defElement = this.treemap.renderer.createDefs();\n var linerGradientEle = document.createElementNS(xmlns, 'linearGradient');\n var opacity = 1;\n var position = this.treemap.legendSettings.position;\n var x2 = position === 'Top' || position === 'Bottom' ? '100' : '0';\n var y2 = position === 'Top' || position === 'Bottom' ? '0' : '100';\n linerGradientEle.setAttribute('id', 'linear_' + legendIndex);\n linerGradientEle.setAttribute('x1', 0 + '%');\n linerGradientEle.setAttribute('y1', 0 + '%');\n linerGradientEle.setAttribute('x2', x2 + '%');\n linerGradientEle.setAttribute('y2', y2 + '%');\n for (var b = 0; b < colorMap.color.length; b++) {\n var offsetColor = 100 / (colorMap.color.length - 1);\n var stopEle = document.createElementNS(xmlns, 'stop');\n stopEle.setAttribute('offset', b * offsetColor + '%');\n stopEle.setAttribute('stop-color', colorMap.color[b]);\n stopEle.setAttribute('stop-opacity', opacity.toString());\n linerGradientEle.appendChild(stopEle);\n }\n defElement.appendChild(linerGradientEle);\n this.legendLinearGradient = linerGradientEle;\n var color = 'url(' + '#linear_' + legendIndex + ')';\n this.defsElement.appendChild(linerGradientEle);\n legendFillColor = color;\n }\n return legendFillColor;\n };\n return TreeMapLegend;\n}());\nexport { TreeMapLegend };\n","import { Browser, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { itemHighlight, itemSelected } from '../model/constants';\nimport { findHightLightItems, removeClassNames, applyOptions, removeShape, removeLegend, removeSelectionWithHighlight, setColor, getLegendIndex, pushCollection, setItemTemplateContent } from '../utils/helper';\n/**\n * Performing treemap highlight\n */\nvar TreeMapHighlight = /** @class */ (function () {\n function TreeMapHighlight(treeMap) {\n this.target = 'highlight';\n this.shapeTarget = 'highlight';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.shapeHighlightCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendHighlightCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentElement = [];\n this.treemap = treeMap;\n this.addEventListener();\n }\n /**\n * Mouse down event in highlight\n *\n * @param {PointerEvent} e - Specifies the pointer argument.\n * @returns {boolean} - return the highlight process is true or false.\n * @private\n */\n TreeMapHighlight.prototype.mouseMove = function (e) {\n var treemap = this.treemap;\n var processHighlight;\n var targetId = e.target.id;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var eventArgs;\n var items = [];\n var highlight = this.treemap.highlightSettings;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n var highLightElements = [];\n var process;\n var treeMapElement;\n var element;\n var orders;\n var selectionModule = this.treemap.treeMapSelectionModule;\n var shapeSelected = false;\n if (selectionModule && selectionModule.legendSelectionCollection.length > 0) {\n for (var i = 0; i < selectionModule.legendSelectionCollection.length; i++) {\n for (var j = 0; j < selectionModule.legendSelectionCollection[i]['ShapeCollection']['Elements'].length; j++) {\n var selectedElementIndex = parseFloat(selectionModule.legendSelectionCollection[i]['ShapeCollection']['Elements'][j].id.split('Item_Index_')[1].split('_')[0]);\n var targetElementIndex = targetId.indexOf('_Item_Index_') > -1 ? parseFloat(targetId.split('Item_Index_')[1].split('_')[0]) : null;\n if (selectionModule.legendSelectionCollection[i]['ShapeCollection']['Elements'][j].id === targetId ||\n selectedElementIndex === targetElementIndex) {\n shapeSelected = true;\n break;\n }\n }\n }\n }\n if (targetId.indexOf('_Item_Index') > -1 && !shapeSelected) {\n if (this.highLightId !== targetId) {\n treeMapElement = document.getElementById(treemap.element.id + '_TreeMap_' + treemap.layoutType + '_Layout');\n var selectionElements = document.getElementsByClassName('treeMapSelection');\n item = this.treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n var index = void 0;\n if (this.treemap.legendSettings.visible) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n var length_1 = this.treemap.treeMapLegendModule.legendCollections.length;\n index = (!treemap.legendSettings.removeDuplicateLegend && treemap.palette && treemap.palette.length > 0 &&\n treemap.leafItemSettings.colorMapping.length === 0 && treemap.levels.length === 0) ?\n parseFloat(targetId.split('_Item_Index_')[1]) : getLegendIndex(length_1, item, treemap);\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index) : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index);\n if (this.shapeElement !== null && (selectionModule ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true)) {\n var legendShapeElement = selectionModule ? selectionModule.shapeElement : null;\n if (selectionModule ? this.shapeElement !== legendShapeElement : true) {\n this.currentElement.push({ currentElement: this.shapeElement });\n removeLegend(this.shapeHighlightCollection, treemap);\n this.shapeHighlightCollection.push({ legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n var legendText = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Text_Index_' + index)\n : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index + '_Text');\n setColor(legendText, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n setColor(this.shapeElement, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n this.target = 'highlight';\n }\n else if (this.currentElement.length > 0 && this.currentElement[this.currentElement.length - 1]['currentElement'] !== this.shapeElement) {\n removeSelectionWithHighlight(this.shapeHighlightCollection, this.currentElement, treemap);\n this.highLightId = '';\n }\n }\n else if (this.currentElement.length > 0 && this.currentElement[this.currentElement.length - 1]['currentElement'] !== this.shapeElement) {\n removeSelectionWithHighlight(this.shapeHighlightCollection, this.currentElement, treemap);\n this.highLightId = '';\n if (this.treemap.legendSettings.mode === 'Interactive') {\n this.treemap.treeMapLegendModule.removeInteractivePointer();\n }\n }\n }\n orders = findHightLightItems(item, [], highlight.mode, treemap);\n if (this.treemap.legendSettings.visible ? selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true : true) {\n if (this.treemap.legendSettings.visible ? selectionModule ?\n this.shapeElement !== selectionModule.shapeElement : true : true) {\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n process = true;\n var valuePath = treemap.rangeColorValuePath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetItem = treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n item = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])];\n for (var j = 0; j < selectionElements.length; j++) {\n if (element.id === selectionElements[j].id) {\n process = false;\n break;\n }\n }\n if (orders.indexOf(item['levelOrderName']) > -1 && process &&\n (!isNullOrUndefined(valuePath) && valuePath !== '' ?\n item['data'][valuePath] === targetItem['data'][valuePath] : true)) {\n highLightElements.push(element);\n items.push(item);\n }\n }\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n for (var k = 0; k < highLightElements.length; k++) {\n element = highLightElements[k];\n applyOptions(element.childNodes[0], { border: highlight.border, fill: highlight.fill, opacity: highlight.opacity });\n element.classList.add('treeMapHighLight');\n this.highLightId = targetId;\n }\n eventArgs = { cancel: false, name: itemHighlight, treemap: treemap, items: items, elements: highLightElements };\n treemap.trigger(itemHighlight, eventArgs);\n }\n else {\n processHighlight = false;\n }\n }\n }\n }\n else if (targetId.indexOf('_Legend_Shape') > -1 || targetId.indexOf('_Legend_Index') > -1 || targetId.indexOf('_Legend_Text_Index') > -1) {\n if (!isNullOrUndefined(selectionModule)) {\n selectionModule.legendSelectId = !isNullOrUndefined(treemap.legendId[0]) ? treemap.legendId[0] : null;\n }\n var selectedLegendIndex = selectionModule && selectionModule.legendSelectId ?\n parseFloat(selectionModule.legendSelectId.split('Index_')[1]) :\n (selectionModule && selectionModule.shapeSelectId ? parseFloat(selectionModule.shapeSelectId.split('Index_')[1]) : null);\n var targetIndex = this.treemap.legendSettings.mode === 'Default' ? (targetId.indexOf('Text') === -1 ? parseFloat(targetId.split('_Legend_Shape_Index_')[1]) : parseFloat(targetId.split('_Legend_Text_Index_')[1]))\n : parseFloat(targetId.split('_Legend_Index_')[1]);\n if (this.treemap.legendSettings.visible && targetIndex !== selectedLegendIndex) {\n var itemIndex = void 0;\n var groupIndex = void 0;\n var length_2;\n var valuePath = treemap.rangeColorValuePath;\n var targetEle = document.getElementById(targetId);\n if (this.shapeTarget === 'highlight') {\n removeLegend(this.legendHighlightCollection, this.treemap);\n this.legendHighlightCollection = [];\n }\n this.shapeTarget = 'highlight';\n var dataLength = this.treemap.treeMapLegendModule.legendCollections[targetIndex]['legendData'].length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n for (var i = 0; i < dataLength; i++) {\n for (var j = 0; j < this.treemap.layout.renderItems.length; j++) {\n if ((!isNullOrUndefined(valuePath) && valuePath !== '' && treemap.leafItemSettings.colorMapping.length > 0)\n ? treemap.treeMapLegendModule.legendCollections[targetIndex]['legendData'][i]['data'][valuePath] === treemap.layout.renderItems[j]['data'][valuePath]\n : (treemap.treeMapLegendModule.legendCollections[targetIndex]['legendData'][i]['levelOrderName'] === treemap.layout.renderItems[j]['levelOrderName'])) {\n itemIndex = j;\n groupIndex = this.treemap.layout.renderItems[j]['groupIndex'];\n var nodeEle = document.getElementById(this.treemap.element.id + '_Level_Index_' + groupIndex + '_Item_Index_' + itemIndex + '_RectPath');\n if (i === 0 || this.legendHighlightCollection.length === 0) {\n this.legendHighlightCollection = [];\n pushCollection(this.legendHighlightCollection, targetIndex, j, targetEle, nodeEle, this.treemap.layout.renderItems, collection);\n length_2 = this.legendHighlightCollection.length;\n this.legendHighlightCollection[length_2 - 1]['ShapeCollection'] = { Elements: [] };\n }\n setColor(targetEle, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n var legendItem = void 0;\n if (targetEle.id.indexOf('Text') > -1) {\n legendItem = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle.id.replace('_Text', ''))\n : document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + targetIndex);\n }\n else {\n legendItem = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle.id + '_Text')\n : document.getElementById(this.treemap.element.id + '_Legend_Text_Index_' + targetIndex);\n }\n setColor(legendItem, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n setColor(nodeEle, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n length_2 = this.legendHighlightCollection.length;\n this.legendHighlightCollection[length_2 - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n if (dataLength === 0 && this.treemap.palette && this.treemap.palette.length > 0) {\n for (var j = 0; j < this.treemap.layout.renderItems.length; j++) {\n if ((this.treemap.treeMapLegendModule.legendCollections[targetIndex]['levelOrderName'] === this.treemap.layout.renderItems[j]['levelOrderName'] ||\n this.treemap.layout.renderItems[j]['levelOrderName'].indexOf(this.treemap.treeMapLegendModule.legendCollections[targetIndex]['levelOrderName']) > -1) &&\n ((!this.treemap.legendSettings.removeDuplicateLegend && treemap.palette && treemap.palette.length > 0) ?\n targetIndex === j : true)) {\n itemIndex = j;\n groupIndex = this.treemap.layout.renderItems[j]['groupIndex'];\n var nodeEle = document.getElementById(this.treemap.element.id + '_Level_Index_' + groupIndex + '_Item_Index_' + itemIndex + '_RectPath');\n pushCollection(this.legendHighlightCollection, targetIndex, j, targetEle, nodeEle, this.treemap.layout.renderItems, collection);\n length_2 = this.legendHighlightCollection.length;\n this.legendHighlightCollection[length_2 - 1]['ShapeCollection'] = { Elements: [] };\n var legendItem = void 0;\n if (targetEle.id.indexOf('Text') > -1) {\n legendItem = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle.id.replace('_Text', ''))\n : document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + targetIndex);\n }\n else {\n legendItem = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle.id + '_Text')\n : document.getElementById(this.treemap.element.id + '_Legend_Text_Index_' + targetIndex);\n }\n setColor(legendItem, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n setColor(targetEle, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n setColor(nodeEle, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n length_2 = this.legendHighlightCollection.length;\n this.legendHighlightCollection[length_2 - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n }\n }\n else {\n if (selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true) {\n if (selectionModule ? this.shapeElement !== selectionModule.shapeElement : true && this.treemap.legendSettings.visible) {\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n }\n }\n if ((this.shapeTarget === 'highlight' || this.target === 'highlight') && this.treemap.legendSettings.visible) {\n if (selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true) {\n if (selectionModule ? this.shapeElement !== selectionModule.shapeElement : true && selectionModule ?\n selectionModule.legendSelect : true) {\n removeLegend(this.shapeHighlightCollection, treemap);\n this.shapeHighlightCollection = [];\n }\n }\n }\n if (this.shapeTarget === 'highlight' && this.treemap.legendSettings.visible) {\n removeLegend(this.legendHighlightCollection, this.treemap);\n }\n this.highLightId = '';\n processHighlight = false;\n }\n return processHighlight;\n };\n /**\n * To bind events for highlight\n *\n * @returns {void}\n */\n TreeMapHighlight.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.mouseMove, this);\n };\n /**\n * To unbind events for highlight\n *\n * @returns {void}\n */\n TreeMapHighlight.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.mouseMove);\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name\n */\n TreeMapHighlight.prototype.getModuleName = function () {\n return 'treeMapHighlight';\n };\n /**\n * To destroy the hightlight.\n *\n * @returns {void}\n * @private\n */\n TreeMapHighlight.prototype.destroy = function () {\n this.shapeElement = null;\n this.shapeHighlightCollection = [];\n this.legendHighlightCollection = [];\n this.currentElement = [];\n this.removeEventListener();\n this.treemap = null;\n };\n return TreeMapHighlight;\n}());\nexport { TreeMapHighlight };\n/**\n * Performing treemap selection\n */\nvar TreeMapSelection = /** @class */ (function () {\n function TreeMapSelection(treeMap) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.shapeSelectionCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendSelectionCollection = [];\n this.shapeSelect = true;\n this.legendSelect = true;\n this.treemap = treeMap;\n this.addEventListener();\n }\n /**\n * Mouse down event in selection\n *\n * @param {PointerEvent} e - Specifies the pointer argument.\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.mouseDown = function (e) {\n var targetEle = e.target;\n var eventArgs;\n var treemap = this.treemap;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var items = [];\n var targetId = targetEle.id;\n var labelText = targetEle.innerHTML;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n var selectionElements = [];\n var treeMapElement;\n var element;\n var orders;\n var selection = treemap.selectionSettings;\n var highlightModule = this.treemap.treeMapHighlightModule;\n var layoutID = treemap.element.id + '_TreeMap_' + treemap.layoutType + '_Layout';\n item = treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n var isDrillItem = (item && !item.isLeafItem && treemap.enableDrillDown) &&\n (targetEle.nextSibling.textContent.indexOf('[+]') > -1 || targetEle.nextSibling.textContent.indexOf('[-]') > -1);\n if (targetId.indexOf('_Item_Index') > -1 && !isDrillItem) {\n e.preventDefault();\n if (this.treemap.selectionId !== targetId) {\n treemap.levelSelection = [];\n treemap.legendId = [];\n this.shapeSelectId = '';\n removeLegend(this.legendSelectionCollection, treemap);\n this.legendSelectionCollection = [];\n treeMapElement = document.getElementById(layoutID);\n var index = void 0;\n if (this.treemap.legendSettings.visible) {\n this.shapeSelect = false;\n var length_3 = this.treemap.treeMapLegendModule.legendCollections.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n this.shapeElement = undefined;\n removeLegend(this.shapeSelectionCollection, treemap);\n if (highlightModule) {\n highlightModule.shapeTarget = 'selection';\n highlightModule.shapeHighlightCollection = [];\n }\n index = (!treemap.legendSettings.removeDuplicateLegend && treemap.palette && treemap.palette.length > 0 &&\n treemap.leafItemSettings.colorMapping.length === 0\n && treemap.levels.length === 0) ?\n parseFloat(targetId.split('_Item_Index_')[1]) : getLegendIndex(length_3, item, treemap);\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index) : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index);\n if (this.shapeElement !== null) {\n this.shapeSelectId = this.shapeElement.getAttribute('id');\n this.shapeSelectionCollection.push({ legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n var legendText = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Text_Index_' + index)\n : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index + '_Text');\n setColor(legendText, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n setColor(this.shapeElement, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n treemap.legendId.push(this.shapeElement.id);\n treemap.legendId.push(legendText.id);\n }\n }\n orders = findHightLightItems(item, [], selection.mode, treemap);\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetItem = treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n item = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])];\n var valuePath = treemap.rangeColorValuePath;\n if (orders.indexOf(item['levelOrderName']) > -1 &&\n (!isNullOrUndefined(valuePath) && valuePath !== '' ?\n item['data'][valuePath] === targetItem['data'][valuePath] : true)) {\n selectionElements.push(element);\n if (targetId.indexOf('_RectPath') > -1) {\n treemap.levelSelection.push(targetId);\n }\n items.push(item);\n }\n }\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', treemap);\n this.treemap.selectionId = targetId;\n var highLightElements = document.getElementsByClassName('treeMapHighLight');\n for (var k = 0; k < selectionElements.length; k++) {\n element = selectionElements[k];\n if (highLightElements.length > 0) {\n for (var j = 0; j < highLightElements.length; j++) {\n if (highLightElements[j].id === element.id) {\n highLightElements[j].classList.remove('treeMapHighLight');\n }\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n else {\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n eventArgs = { cancel: false, name: itemSelected, treemap: treemap, items: items, elements: selectionElements,\n text: labelText, contentItemTemplate: labelText };\n treemap.trigger(itemSelected, eventArgs, function (observedArgs) {\n if (observedArgs.contentItemTemplate !== labelText) {\n setItemTemplateContent(targetId, targetEle, observedArgs.contentItemTemplate);\n }\n });\n }\n }\n else {\n removeLegend(this.shapeSelectionCollection, treemap);\n this.treemap.legendId = [];\n this.shapeSelectionCollection = [];\n this.shapeElement = undefined;\n this.shapeSelect = true;\n this.shapeSelectId = '';\n this.treemap.levelSelection = [];\n if (this.legendSelect) {\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', treemap);\n this.treemap.selectionId = '';\n }\n }\n }\n else if (targetId.indexOf('_Legend_Shape') > -1 || targetId.indexOf('_Legend_Index') > -1 || targetId.indexOf('_Legend_Text_') > -1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n var legendSelectIdIndex = !isNullOrUndefined(this.legendSelectId) ? parseFloat(this.legendSelectId.split('_Index_')[1]) : null;\n if (this.treemap.legendSettings.visible && (legendSelectIdIndex !== parseFloat(targetId.split('_Index_')[1]))) {\n var itemIndex = void 0;\n var groupIndex = void 0;\n var length_4;\n treemap.legendId = [];\n treemap.levelSelection = [];\n this.legendSelectId = targetId;\n this.legendSelect = false;\n var legendIndex = !isNaN(parseInt(targetId[targetId.length - 1], 10)) ?\n parseInt(targetId[targetId.length - 1], 10) :\n parseInt(targetId[targetId.length - 6], 10);\n var targetEle_1 = document.getElementById(targetId);\n removeLegend(this.legendSelectionCollection, treemap);\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', treemap);\n removeLegend(this.shapeSelectionCollection, treemap);\n this.legendSelectionCollection = [];\n if (highlightModule) {\n highlightModule.shapeTarget = 'selection';\n highlightModule.legendHighlightCollection = [];\n }\n var valuePath = treemap.rangeColorValuePath;\n var index = this.treemap.legendSettings.mode === 'Default' ? (targetId.indexOf('Text') === -1 ? parseFloat(targetId.split('_Legend_Shape_Index_')[1]) : parseFloat(targetId.split('_Legend_Text_Index_')[1]))\n : parseFloat(targetId.split('_Legend_Index_')[1]);\n var dataLength = this.treemap.treeMapLegendModule.legendCollections[index]['legendData'].length;\n for (var k = 0; k < dataLength; k++) {\n for (var l = 0; l < this.treemap.layout.renderItems.length; l++) {\n if ((!isNullOrUndefined(valuePath) && valuePath !== '' && treemap.leafItemSettings.colorMapping.length > 0) ?\n (treemap.treeMapLegendModule.legendCollections[index]['legendData'][k]['data'][valuePath] === treemap.layout.renderItems[l]['data'][valuePath])\n : (this.treemap.treeMapLegendModule.legendCollections[index]['legendData'][k]['levelOrderName'] === this.treemap.layout.renderItems[l]['levelOrderName'])) {\n itemIndex = l;\n groupIndex = this.treemap.layout.renderItems[l]['groupIndex'];\n var nodeEle = document.getElementById(this.treemap.element.id + '_Level_Index_' + groupIndex + '_Item_Index_' + itemIndex + '_RectPath');\n this.treemap.selectionId = nodeEle.id;\n if (k === 0 || this.legendSelectionCollection.length === 0) {\n pushCollection(this.legendSelectionCollection, legendIndex, l, targetEle_1, nodeEle, this.treemap.layout.renderItems, collection);\n length_4 = this.legendSelectionCollection.length;\n this.legendSelectionCollection[length_4 - 1]['ShapeCollection'] = { Elements: [] };\n }\n this.treemap.selectionId = nodeEle.id;\n var legendItem = void 0;\n if (targetEle_1.id.indexOf('Text') > -1) {\n legendItem = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle_1.id.replace('_Text', ''))\n : document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index);\n this.legendSelectId = legendItem.id;\n this.shapeElement = legendItem;\n }\n else {\n legendItem = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle_1.id + '_Text')\n : document.getElementById(this.treemap.element.id + '_Legend_Text_Index_' + index);\n this.shapeElement = targetEle_1;\n }\n setColor(legendItem, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n setColor(targetEle_1, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n setColor(nodeEle, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n length_4 = this.legendSelectionCollection.length;\n treemap.levelSelection.push(nodeEle.id);\n if (treemap.legendId.indexOf(targetEle_1.id) === -1) {\n treemap.legendId.push(targetEle_1.id);\n }\n if (treemap.legendId.indexOf(legendItem.id) === -1) {\n treemap.legendId.push(legendItem.id);\n }\n this.legendSelectionCollection[length_4 - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n if (dataLength === 0 && this.treemap.palette && this.treemap.palette.length > 0) {\n for (var j = 0; j < this.treemap.layout.renderItems.length; j++) {\n if ((this.treemap.treeMapLegendModule.legendCollections[index]['levelOrderName'] === this.treemap.layout.renderItems[j]['levelOrderName'] ||\n this.treemap.layout.renderItems[j]['levelOrderName'].indexOf(this.treemap.treeMapLegendModule.legendCollections[index]['levelOrderName']) > -1) &&\n ((!this.treemap.legendSettings.removeDuplicateLegend && treemap.palette && treemap.palette.length > 0) ?\n index === j : true)) {\n itemIndex = j;\n groupIndex = this.treemap.layout.renderItems[j]['groupIndex'];\n var nodeEle = document.getElementById(this.treemap.element.id + '_Level_Index_' + groupIndex + '_Item_Index_' + itemIndex + '_RectPath');\n pushCollection(this.legendSelectionCollection, index, j, targetEle_1, nodeEle, this.treemap.layout.renderItems, collection);\n this.treemap.selectionId = nodeEle.id;\n length_4 = this.legendSelectionCollection.length;\n this.legendSelectionCollection[length_4 - 1]['ShapeCollection'] = { Elements: [] };\n var legendItem = void 0;\n if (targetEle_1.id.indexOf('Text') > -1) {\n legendItem = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle_1.id.replace('_Text', ''))\n : document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index);\n this.legendSelectId = legendItem.id;\n this.shapeElement = legendItem;\n }\n else {\n legendItem = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle_1.id + '_Text')\n : document.getElementById(this.treemap.element.id + '_Legend_Text_Index_' + index);\n this.legendSelectId = targetId;\n this.shapeElement = targetEle_1;\n }\n setColor(legendItem, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n setColor(targetEle_1, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n setColor(nodeEle, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n treemap.levelSelection.push(nodeEle.id);\n if (treemap.legendId.indexOf(legendItem.id) === -1) {\n treemap.legendId.push(legendItem.id);\n }\n if (treemap.legendId.indexOf(targetEle_1.id) === -1) {\n treemap.legendId.push(targetEle_1.id);\n }\n length_4 = this.legendSelectionCollection.length;\n this.legendSelectionCollection[length_4 - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n }\n else {\n removeLegend(this.legendSelectionCollection, this.treemap);\n this.legendSelectionCollection = [];\n if (highlightModule) {\n highlightModule.shapeTarget = 'highlight';\n }\n this.legendSelect = true;\n this.legendSelectId = '';\n this.treemap.legendId = [];\n this.treemap.levelSelection = [];\n }\n }\n else if (isDrillItem) {\n removeLegend(this.legendSelectionCollection, this.treemap);\n this.legendSelectionCollection = [];\n this.legendSelect = true;\n this.legendSelectId = '';\n this.treemap.legendId = [];\n this.treemap.levelSelection = [];\n }\n };\n /**\n * @param {string} levelOrder - Specifies the level order of treemap item\n * @param {boolean} enable - Specifies the boolean value\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.selectTreemapItem = function (levelOrder, enable) {\n if (enable) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = void 0;\n for (var s = 0; s < this.treemap.layout.renderItems.length; s++) {\n if (levelOrder === this.treemap.layout.renderItems[s]['levelOrderName']) {\n item = this.treemap.layout.renderItems[s];\n break;\n }\n }\n var selection = this.treemap.selectionSettings;\n var selectionElements = [];\n var element = void 0;\n var index = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var items = [];\n this.treemap.levelSelection = [];\n var layoutID = this.treemap.element.id + '_TreeMap_' + this.treemap.layoutType + '_Layout';\n var treeMapElement = document.getElementById(layoutID);\n var orders = findHightLightItems(item, [], selection.mode, this.treemap);\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n item = this.treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])];\n if (orders.indexOf(item['levelOrderName']) > -1) {\n selectionElements.push(element);\n this.treemap.levelSelection.push(element.id);\n items.push(item);\n }\n }\n if (this.treemap.legendSettings.visible) {\n for (var m = 0; m < items.length; m++) {\n this.shapeSelect = false;\n var length_5 = this.treemap.treeMapLegendModule.legendCollections.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n this.shapeElement = undefined;\n removeShape(this.shapeSelectionCollection);\n index = getLegendIndex(length_5, items[m], this.treemap);\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index) : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index);\n if (this.shapeElement !== null) {\n this.shapeSelectId = this.shapeElement.getAttribute('id');\n this.treemap.legendId.push(this.shapeSelectId);\n this.shapeSelectionCollection.push({\n legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n setColor(this.shapeElement, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n }\n }\n }\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', this.treemap);\n var selectionElement = document.getElementById(this.treemap.levelSelection[0]);\n this.treemap.selectionId = selectionElement.childNodes[0]['id'];\n var highLightElements = document.getElementsByClassName('treeMapHighLight');\n for (var k = 0; k < selectionElements.length; k++) {\n element = selectionElements[k];\n if (highLightElements.length > 0) {\n for (var j = 0; j < highLightElements.length; j++) {\n if (highLightElements[j].id === element.id) {\n highLightElements[j].classList.remove('treeMapHighLight');\n }\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n else {\n selection.fill = selection.fill === 'null' ?\n this.treemap.layout.renderItems[parseInt(element.id.split('Item_Index_')[1], 10)]['options']['fill']\n : selection.fill;\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n }\n else {\n removeShape(this.shapeSelectionCollection);\n this.shapeElement = undefined;\n this.treemap.levelSelection = [];\n this.shapeSelect = true;\n this.shapeSelectId = '';\n this.treemap.legendId = [];\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', this.treemap);\n this.treemap.selectionId = '';\n }\n };\n /**\n * To bind events for selection\n *\n * @returns {void}\n */\n TreeMapSelection.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchStartEvent, this.mouseDown, this);\n };\n /**\n * To unbind events for selection\n *\n * @returns {void}\n */\n TreeMapSelection.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchStartEvent, this.mouseDown);\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n TreeMapSelection.prototype.getModuleName = function () {\n return 'treeMapSelection';\n };\n /**\n * To destroy the selection.\n *\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.destroy = function () {\n this.shapeElement = null;\n this.shapeSelectionCollection = [];\n this.legendSelectionCollection = [];\n this.removeEventListener();\n this.treemap = null;\n };\n return TreeMapSelection;\n}());\nexport { TreeMapSelection };\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport { Tooltip } from '@syncfusion/ej2-svg-base';\nimport { Browser, createElement, isNullOrUndefined, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getMousePosition, textFormatter, formatValue } from '../utils/helper';\nimport { tooltipRendering } from '../model/constants';\n/**\n * Render Tooltip\n */\nvar TreeMapTooltip = /** @class */ (function () {\n function TreeMapTooltip(treeMap) {\n this.treemap = treeMap;\n this.tooltipSettings = this.treemap.tooltipSettings;\n this.tooltipId = this.treemap.element.id + '_TreeMapTooltip';\n this.addEventListener();\n }\n TreeMapTooltip.prototype.renderTooltip = function (e) {\n var _this = this;\n var pageX;\n var pageY;\n var target;\n var touchArg;\n var tootipArgs;\n if (e.type.indexOf('touch') !== -1) {\n this.isTouch = true;\n touchArg = e;\n pageX = touchArg.changedTouches[0].pageX;\n pageY = touchArg.changedTouches[0].pageY;\n target = touchArg.target;\n }\n else {\n this.isTouch = e.pointerType === 'touch';\n pageX = e.pageX;\n pageY = e.pageY;\n target = e.target;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value;\n var targetId = target.id;\n var item = {};\n var tooltipEle;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var location;\n var toolTipData = {};\n var tooltipContent = [];\n var markerFill;\n if (targetId.indexOf('_Item_Index') > -1) {\n item = this.treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n if (!isNullOrUndefined(item)) {\n value = item['weight'];\n toolTipData = item['data'];\n if (!isNullOrUndefined(item['options'])) {\n markerFill = item['options']['fill'];\n }\n if (this.treemap.enableRtl) {\n tooltipContent = [(!isNullOrUndefined(this.tooltipSettings.format) ?\n textFormatter(this.tooltipSettings.format, toolTipData, this.treemap) : null)\n || formatValue(value, this.treemap) + ' : ' + this.treemap.weightValuePath.toString()];\n }\n else {\n tooltipContent = [(!isNullOrUndefined(this.tooltipSettings.format) ?\n textFormatter(this.tooltipSettings.format, toolTipData, this.treemap) : null)\n || this.treemap.weightValuePath.toString() + ' : ' + formatValue(value, this.treemap)];\n }\n if (document.getElementById(this.tooltipId)) {\n tooltipEle = document.getElementById(this.tooltipId);\n }\n else {\n tooltipEle = createElement('div', {\n id: this.treemap.element.id + '_TreeMapTooltip',\n className: 'EJ2-TreeMap-Tooltip'\n });\n tooltipEle.style.cssText = 'position: absolute;pointer-events:none;';\n document.getElementById(this.treemap.element.id + '_Secondary_Element').appendChild(tooltipEle);\n }\n location = getMousePosition(pageX, pageY, this.treemap.svgObject);\n location.y = (this.tooltipSettings.template) ? location.y + 10 : location.y;\n this.tooltipSettings.textStyle.size = this.tooltipSettings.textStyle.size || this.treemap.themeStyle.tooltipFontSize;\n this.tooltipSettings.textStyle.fontFamily = this.tooltipSettings.textStyle.fontFamily || this.treemap.themeStyle.fontFamily;\n this.tooltipSettings.textStyle.fontStyle = !isNullOrUndefined(this.tooltipSettings.textStyle.fontStyle) ? this.tooltipSettings.textStyle.fontStyle : 'Normal';\n this.tooltipSettings.textStyle.fontWeight = this.tooltipSettings.textStyle.fontWeight || this.treemap.themeStyle.fontWeight;\n this.tooltipSettings.textStyle.color = this.tooltipSettings.textStyle.color || this.treemap.themeStyle.tooltipFontColor;\n // eslint-disable-next-line max-len\n this.tooltipSettings.textStyle.opacity = this.tooltipSettings.textStyle.opacity || this.treemap.themeStyle.tooltipTextOpacity;\n var border = {\n width: this.tooltipSettings.border.width || this.treemap.themeStyle.tooltipBorderWidth || 0,\n color: this.tooltipSettings.border.color || this.treemap.themeStyle.tooltipBorderColor || 'transparent'\n };\n if (this.treemap.enableHtmlSanitizer) {\n for (var a = 0; a < tooltipContent.length; a++) {\n tooltipContent[a] = SanitizeHtmlHelper.sanitize(tooltipContent[a]);\n }\n }\n tootipArgs = {\n cancel: false, name: tooltipRendering, item: item,\n options: {\n location: location, text: tooltipContent, data: toolTipData, border: border,\n textStyle: this.tooltipSettings.textStyle, template: this.tooltipSettings.template\n },\n treemap: this.treemap,\n element: target, eventArgs: e\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.treemap.trigger(tooltipRendering, tootipArgs, function (args) {\n _this.addTooltip(tootipArgs, markerFill, tooltipEle);\n });\n }\n }\n else {\n this.removeTooltip();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.clearTemplate();\n }\n };\n TreeMapTooltip.prototype.addTooltip = function (tootipArgs, markerFill, tooltipEle, eventArgs) {\n var cancel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var args;\n if (!isNullOrUndefined(tootipArgs)) {\n var c = tootipArgs.cancel, otherArgs = __rest(tootipArgs, [\"cancel\"]);\n cancel = c;\n args = otherArgs.options;\n }\n else {\n cancel = eventArgs.cancel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args = eventArgs;\n }\n if (!cancel) {\n this.svgTooltip = new Tooltip({\n theme: this.treemap.theme,\n enable: true,\n header: '',\n data: args['data'],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n template: args['template'],\n content: args['text'],\n shapes: [],\n location: args['location'],\n palette: [markerFill],\n areaBounds: this.treemap.areaRect,\n textStyle: args['textStyle'],\n fill: this.treemap.tooltipSettings.fill ? this.treemap.tooltipSettings.fill : this.treemap.themeStyle.tooltipFillColor,\n border: args['border'],\n enableShadow: true\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.treemap.isVue || this.treemap.isVue3) {\n this.svgTooltip.controlInstance = this.treemap;\n }\n this.svgTooltip.opacity = this.treemap.themeStyle.tooltipFillOpacity || this.svgTooltip.opacity;\n this.svgTooltip.appendTo(tooltipEle);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.renderReactTemplates();\n }\n else {\n this.removeTooltip();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.clearTemplate();\n }\n };\n TreeMapTooltip.prototype.mouseUpHandler = function (e) {\n this.renderTooltip(e);\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeTooltip.bind(this), 2000);\n };\n TreeMapTooltip.prototype.removeTooltip = function () {\n if (document.getElementsByClassName('EJ2-TreeMap-Tooltip').length > 0) {\n var tooltipElementId = document.getElementsByClassName('EJ2-TreeMap-Tooltip')[0];\n tooltipElementId.parentNode.removeChild(tooltipElementId);\n }\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To bind events for tooltip module\n *\n * @private\n */\n TreeMapTooltip.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.renderTooltip, this);\n this.treemap.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To unbind events for tooltip module\n *\n * @private\n */\n TreeMapTooltip.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.renderTooltip);\n this.treemap.off(Browser.touchEndEvent, this.mouseUpHandler);\n };\n /**\n * Get module name.\n *\n * @returns {string} returns string\n */\n TreeMapTooltip.prototype.getModuleName = function () {\n return 'treeMapTooltip';\n };\n /**\n * To destroy the tooltip.\n *\n * @returns {void}\n * @private\n */\n TreeMapTooltip.prototype.destroy = function () {\n if (!isNullOrUndefined(this.svgTooltip)) {\n this.svgTooltip.destroy();\n }\n this.svgTooltip = null;\n this.tooltipSettings = null;\n this.removeEventListener();\n this.treemap = null;\n };\n return TreeMapTooltip;\n}());\nexport { TreeMapTooltip };\n","import * as index from './index';\nindex.TreeMap.Inject(index.TreeMapTooltip, index.TreeMapLegend, index.TreeMapHighlight, index.TreeMapSelection, index.Print, index.PdfExport, index.ImageExport);\nexport * from './index';\n"],"names":["stringToNumber","value","containerSize","undefined","indexOf","parseInt","measureText","text","font","measureObject","document","getElementById","createElement","id","body","appendChild","innerHTML","SanitizeHtmlHelper","sanitize","style","position","fontSize","size","fontWeight","fontStyle","fontFamily","visibility","top","left","whiteSpace","lineHeight","Size","clientWidth","clientHeight","textTrim","maxWidth","label","width","i","length","substring","findPosition","location","alignment","textSize","type","x","y","height","Location","createTextStyle","renderer","renderOptions","htmlObject","createText","setAttributeNS","renderTextElement","options","color","parent","isMinus","tspanElement","font-size","font-style","font-family","font-weight","text-anchor","anchor","transform","opacity","dominant-baseline","baseLine","fill","SvgRenderer","isNullOrUndefined","connectorText","search","drillLevelText","split","z","drillText","replace","len","createTSpan","setItemTemplateContent","targetId","targetElement","contentItemTemplate","itemTemplate","itemSelect","querySelector","getElement","itemsToOrder","a","b","isContainsData","source","pathName","processData","treemap","path","isExist","name","leaf","leafItemSettings","data","levels","groupPath","labelPath","weightValuePath","findChildren","children","keys","Object","Array","findHightLightItems","items","mode","treeMap","push","j","parentName","currentItem","layout","renderItems","getTemplateFunction","template","templateFn","querySelectorAll","compile","trim","e","convertElement","element","labelId","childElement","cssText","elementLength","templateHtml","regExp","RegExp","toString","findLabelLocation","rect","labelSize","areaRect","Math","abs","enableDrillDown","renderDirection","measureElement","parentElement","offsetHeight","offsetWidth","measureElementId","parentNode","removeChild","getArea","getShortestEdge","input","container","convertToContainer","min","convertToRect","xOffset","yOffset","getMousePosition","pageX","pageY","elementRect","getBoundingClientRect","pageXOffset","ownerDocument","defaultView","pageYOffset","clientTop","documentElement","clientLeft","positionX","positionY","colorMap","colorMapping","equalValue","paths","isNaN","isEqualColor","dataValue","colorMappingValue","from","to","prototype","call","colorCollections","minOpacity","maxOpacity","deSaturationColor","rangeValue","getColorByValue","rgbToHex","r","g","componentToHex","rbg","Number","getGradientColor","previousOffset","nextOffset","percent","full","previousColor","nextColor","charAt","colorNameToHex","length_1","splitColorValueOffset","splitColor","getPercentageColor","previous","next","prevColor","getPercentage","substr","ColorValue","round","wordWrap","maximumWidth","dataLabel","textCollection","labelCollection","concat","textWrap","resultText","currentLength","totalWidth","totalLength","sliceString","slice","hide","maxHeight","orderByArea","maintainSelection","className","elementId","levelSelection","index","getAttribute","childElementCount","setAttribute","applyOptions","childNodes","border","selectionSettings","legendMaintain","legendGroup","legendId","legendSettings","parseFloat","treemapSVGRectElement","legendItem","removeClassNames","elements","classList","remove","textFormatter","format","_i","keys_1","key","join","formatValue","intl","getNumberFormat","useGrouping","useGroupingSeparator","convertToHexCode","hex","convertHexToColor","result","exec","isRGBValue","window","getComputedStyle","drawSymbol","shape","url","svgRenderer","temp","renderLegendShape","functionName","renderOption","renderPath","shapeWidth","shapeHeight","shapeX","shapeY","merge","rx","ry","cx","cy","d","xValue","yValue","cos","PI","sin","href","isParentItem","item","removeShape","collection","setColor","removeLegend","legendIndex","shapeId","legendShape","legendText","textStyle","dataCount","k","shapeElement","borderColor","borderWidth","removeSelectionWithHighlight","getElementsByClassName","getLegendIndex","valuePath","rangeColorValuePath","dataLength","treeMapLegendModule","legendCollections","palette","pushCollection","number","legendElement","legendCollection","legendEle","oldFill","oldOpacity","oldBorderColor","oldBorderWidth","shapeOldFill","shapeOldOpacity","shapeOldBorderColor","shapeOldBorderWidth","triggerDownload","fileName","isDownload","attrs","download","toLocaleLowerCase","dispatchEvent","MouseEvent","view","bubbles","cancelable","removeElement","getThemeStyle","theme","toLowerCase","backgroundColor","titleFontColor","titleFontWeight","subTitleFontColor","tooltipFillColor","tooltipFontColor","tooltipFontSize","legendTitleColor","legendTextColor","subtitleFontSize","legendFontSize","labelFontSize","labelFontFamily","defaultFont","legendBorderColor","legendBorderWidth","tooltipFillOpacity","tooltipTextOpacity","tooltipBorderColor","tooltipBorderWidth","__extends","extendStatics","setPrototypeOf","__proto__","p","hasOwnProperty","__","this","constructor","create","__decorate","decorators","target","desc","c","arguments","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","Border","_super","apply","Property","ChildProperty","Margin","Font","CommonTitleSettings","SubTitleSettings","Complex","TitleSettings","ColorMapping","LegendSettings","InitialDrillSettings","LeafItemSettings","Collection","TooltipSettings","SelectionSettings","HighlightSettings","LevelSettings","Rect","RectOption","dashArray","stroke","PathOption","TextOption","TreeMapAjax","async","contentType","sendData","dataOptions","LayoutPanel","processLayoutPanel","totalRect","treemapLevelData","levelsData","initialDrillDown","groupIndex","groupName","drilledItems","getDrilldownData","extend","currentLevel","calculateLayoutItems","renderLayoutItems","count","enableBreadcrumb","drillData","newData","child","parentData","layoutType","computeSliceAndDiceDimensional","computeSquarifyDimensional","coords","gap","headerHeight","leafItem","groups","sliceAndDiceProcess","groupGap","showHeader","childValue","parentArea","alottedValue","totalWeight","forEach","isHorizontal","sort","isHierarchicalData","padding","calculateChildrenLayout","groupPadding","computeTotalArea","performRowsLayout","currentRow","stack","newCoordinates","getCoordinates","newStack","nextDatum","restData","aspectRatio","newRow","currentRowLength","valueSum","newContainer","cutArea","findMaxAspectRatio","row","rowLength","minArea","Infinity","maxArea","sumArea","area","max","pow","areaWidth","areaHeight","isParent","parentRect","subXOffset","subYOffset","coordinates","y1","x1","dataLength_1","dataSum","i_1","multiplier","datum","onDemandProcess","childItems","parentItem","parentItemGroupname","splice","txtVisible","getItemColor","eventArgs","_this","pathOptions","templatePosition","renderText","groupId","templateEle","elementID","interSectAction","rectPath","secondaryEle","layoutGroup","createGroup","itemGroup","templateGroup","isLeafItem","this_1","drillDownView","treemapItemRect","visible","labelFormat","headerFormat","levelName","showLabels","breadcrumbConnector","enableRtl","enableHtmlSanitizer","labelStyle","headerStyle","themeStyle","textStyleOpacity","labelPosition","labelTemplate","headerTemplate","cancel","RenderItems","textColor","trigger","observedArgs","drawPath","renderItemText","renderTemplate","renderReactTemplates","enable","highlightSettings","tabIndex","cursor","svgObject","customText","textName","tspanText","labelInterSectAction","drillSymbolCount","drillSymbolSize","textLocation","texts","maxNumber","collectionLength","stringText","getSaturatedColor","itemFill","itemOpacity","defaultLevelsData","option","equalColorValuePath","colorValuePath","saturatedColor","rgbValue","templateId","baseTemplateId","labelElement","templateLocation","textValue","destroy","currentRect","Theme","mapsTitleFont","Print","control","print","printWindow","open","outerHeight","outerWidth","moveTo","resizeTo","screen","availWidth","availHeight","argsData","htmlContent","getHTMLContent","printFunction","div","cloneNode","Element","exportElement","backgroundElement","getElementsByTagName","getModuleName","ImageExport","export","allowDownload","Promise","resolve","reject","availableSize","Browser","userAgent","svgData","outerHTML","URL","createObjectURL","Blob","XMLSerializer","serializeToString","image_1","Image","context_1","getContext","onload","drawImage","revokeObjectURL","toDataURL","src","PdfExport","orientation","PdfPageOrientation","Landscape","image","context","PdfDocument","imageString","pageSettings","pages","add","graphics","PdfBitmap","save","TreeMap","isResize","preRender","initPrivateVariable","unWireEVents","createSvg","wireEVents","setCulture","render","renderElements","LevelsData","hierarchyData","createSecondaryElement","addTabIndex","renderBorder","renderTitle","titleSettings","processDataManager","dataModule","queryModule","fetchApiModule","localAjax","dataSource","DataManager","query","Query","executeQuery","then","renderTreeMapElements","Fetch","onSuccess","args","reader_1","FileReader","treemap_1","JSON","parse","readAsText","send","processingData","renderLegend","elementChange","isResized","renderComplete","firstChild","hasChildNodes","clearTemplate","containerWidth","containerHeight","secondaryElement","insertBefore","borderElement","background","borderRect","drawRectangle","title","bounds","groupEle","margin","right","titleText","trimmedTitle","elementSize","location_1","titleBounds","description","subtitleSettings","bottom","map","checkIsHierarchicalData","data_1","currentData","levelOrderName","weight","processHierarchicalData","processFlatJsonData","reOrderLevelData","findTotalWeight","childData","levelIndex","childItemLevel","childLevel","mainData_1","l","allowPrint","printModule","allowPdfExport","pdfExportModule","allowImageExport","imageExportModule","orderNames","level","childName","name_1","childGroupPath","start","currentName","currentPath","prevPath","previousData","IsChildHierarchy","current","isChild","groupObj","EventHandler","clickOnTreeMap","doubleClickOnTreeMap","rightClickOnTreeMap","touchStartEvent","mouseDownOnTreeMap","touchMoveEvent","mouseMoveOnTreeMap","touchEndEvent","mouseEndOnTreeMap","mouseLeaveOnTreeMap","removeEventListener","resizeEvent","resizeOnTreeMap","bind","addEventListener","Internationalization","isDestroyed","args_1","previousSize","currentSize","clearTimeout","contains","setTimeout","refreshing","itemIndex","targetEle","labelText","clickArgs","mouseEvent","preventDefault","textContent","doubleTapTimer1","end","Date","getMilliseconds","doubleClick","doubleClickArgs","rightClickArgs","mouseDown","notify","moveArgs","calculateSelectedTextLevels","drillLevel","levelText","_a","currentLevelLabel","calculatePreviousLevelChildItems","drillLevelValues","directLevel","levelItems","text1","drillTextLevel","h","compareSelectedLabelWithDrillDownItems","drillLevelChild","newDrillItem","startEvent","endEvent","layoutID","templateID","drillMouseMove","drillLength","rightClick","which","layerElementId","widthIncrement","heightIncrement","drilledLegendItems","drillElementId","treeMapTooltipModule","removeTooltip","removeInteractivePointer","treeMapHighlightModule","shapeHighlightCollection","highLightId","selectItem","levelOrder","isSelected","treeMapSelectionModule","selectTreemapItem","requiredModules","modules","tooltipSettings","member","onPropertyChanged","newProp","oldProp","removeSvg","doubleTapTimer","getPersistData","Event","NotifyPropertyChanges","Component","TreeMapLegend","page","legendBorderRect","currentPage","textMaxWidth","legendInteractiveGradient","legendItemRect","legendRenderingCollections","legendNames","totalPages","gradientCount","defsElement","createDefs","_changePosition","calculateLegendBounds","drawLegend","legend","findColorMappingLegendItems","findPaletteLegendItems","firstItem","nextItem","leafIndex","legendTitle","titleTextStyle","titleStyle","legendMode","textX","textY","shapeLocation","orientation_1","legendWidth","legendHeight","legendTitleSize","startX_1","startY_1","shapePadding","itemTextStyle","Page","legendTextSize","maxSize","prvePositionX","nextPositionY","getPageChanged","prevPositionY","nextPositionX","DisplayText","Shape","Text","Fill","Data","legendObj","legendRect","legendLength","rectWidth","rectHeight","placement","itemStartX","itemStartY","labelAction","labelDisplayMode","maxTextHeight","maxTextWidth","itemTextSize","textWidth","textHeight","calculateLegendItems","legendFillColor","legendName","showLegendPath","removeDuplicateLegend","removeDuplicates","legendFill","legendData","itemArea","isAddData","gradientElement","x2","y2","actualValue","isDuplicate","isRange","outfill","labelLegend","otherIndex","colorMapProcess","isDesaturation","outOfRangeLegend","showLegend","isAddNewLegendData","colors","q","stop1Color","colorStop","stop2Color","gradient","drawGradient","legendGradientColor","legendLinearGradient","newDataProcess","itemValue","process","textFont","renderLegendBorder","renderLegendTitle","drawLegendItem","itemId","textId","rectOptions","shapeBorder","translate","defaultLegendRtlLocation","spacing","textOptions","legendRtlLocation","shapeSize","isLineShape_1","strokeColor_1","strokeWidth_1","imageUrl","pagingGroup","pagingText","pagingFont","pagingTextSize","leftPageX","rightPageX","locY","pageTextX","leftPageElement","rightPageElement","rightPath","leftPath","leftPageOptions","leftRectPageOptions","wireEvents","rightPageOptions","rightRectPageOptions","pageTextOptions","role","aria-label","borderStyle","legendBorder","pointerEvents","getLegendAlignment","trimTitle","textElement","renderInteractivePointer","interactiveId","pointerDrawn","elementFromPoint","changedTouches","clientX","clientY","targetItem","strokeWidth","svgRect","drawInteractivePointer","locX","invertedPointer","areaX","areaY","totalHeight","mouseUpHandler","legendElementId","changeNextPage","on","off","xmlns","defElement","linerGradientEle","createElementNS","offsetColor","stopEle","TreeMapHighlight","shapeTarget","legendHighlightCollection","currentElement","mouseMove","processHighlight","treeMapElement","orders","highlight","highLightElements","selectionModule","shapeSelected","legendSelectionCollection","selectedElementIndex","targetElementIndex","selectionElements","legendSelectId","legendShapeElement","selectedLegendIndex","shapeSelectId","targetIndex","length_2","nodeEle","Elements","legendSelect","TreeMapSelection","shapeSelectionCollection","shapeSelect","selection","highlightModule","isDrillItem","nextSibling","selectionId","length_3","legendSelectIdIndex","length_4","targetEle_1","s","m","length_5","selectionElement","__rest","t","getOwnPropertySymbols","TreeMapTooltip","tooltipId","renderTooltip","touchArg","tootipArgs","isTouch","pointerType","tooltipEle","markerFill","toolTipData","tooltipContent","addTooltip","svgTooltip","Tooltip","header","content","shapes","areaBounds","enableShadow","isVue","isVue3","controlInstance","appendTo","tooltipElementId","Inject","index.TreeMapTooltip","index.TreeMapLegend","index.TreeMapHighlight","index.TreeMapSelection","index.Print","index.PdfExport","index.ImageExport"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ej2-treemap.min.js","sources":["../../src/treemap/utils/helper.js","../../src/treemap/model/theme.js","../../src/treemap/model/constants.js","../../src/treemap/model/base.js","../../src/treemap/layout/render-panel.js","../../src/treemap/model/print.js","../../src/treemap/model/image-export.js","../../src/treemap/model/pdf-export.js","../../src/treemap/treemap.js","../../src/treemap/layout/legend.js","../../src/treemap/user-interaction/highlight-selection.js","../../src/treemap/user-interaction/tooltip.js","../../src/global.js"],"sourcesContent":["import { createElement, compile, merge, isNullOrUndefined, remove, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\n/**\n * Specifies the size parameters.\n */\nvar Size = /** @class */ (function () {\n function Size(width, height) {\n this.width = width;\n this.height = height;\n }\n return Size;\n}());\nexport { Size };\n/**\n *\n * @param {string} value - specifies the text.\n * @param {number} containerSize - specifies the container size value.\n * @returns {number} - Returns the number value which is converted from string.\n */\nexport function stringToNumber(value, containerSize) {\n if (value !== null && value !== undefined) {\n return value.indexOf('%') !== -1 ? (containerSize / 100) * parseInt(value, 10) : parseInt(value, 10);\n }\n return null;\n}\n/**\n * Internal use of type rect\n *\n * @private\n */\nvar Rect = /** @class */ (function () {\n function Rect(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n return Rect;\n}());\nexport { Rect };\n/**\n * Internal use of rectangle options\n *\n * @private\n */\nvar RectOption = /** @class */ (function () {\n function RectOption(id, fill, border, opacity, rect, dashArray) {\n this.y = rect.y;\n this.x = rect.x;\n this.height = rect.height;\n this.width = rect.width;\n this.id = id;\n this.fill = fill;\n this.opacity = opacity;\n this.stroke = border.color;\n this['stroke-width'] = border.width;\n this['stroke-dasharray'] = dashArray;\n }\n return RectOption;\n}());\nexport { RectOption };\nvar PathOption = /** @class */ (function () {\n function PathOption(id, fill, width, color, opacity, dashArray, d) {\n this.id = id;\n this.opacity = opacity;\n this.fill = fill;\n this.stroke = color;\n this['stroke-width'] = width;\n this['stroke-dasharray'] = dashArray;\n this.d = d;\n }\n return PathOption;\n}());\nexport { PathOption };\n/**\n * Function to measure the height and width of the text.\n *\n * @param {string} text - Specifies the text.\n * @param {FontModel} font - Specifies the font.\n * @returns {Size} - Returns the size.\n * @private\n */\nexport function measureText(text, font) {\n var measureObject = document.getElementById('treeMapMeasureText');\n if (measureObject === null) {\n measureObject = createElement('text', { id: 'treeMapMeasureText' });\n document.body.appendChild(measureObject);\n }\n measureObject.innerHTML = SanitizeHtmlHelper.sanitize(text);\n measureObject.style.position = 'absolute';\n measureObject.style.fontSize = font.size;\n measureObject.style.fontWeight = font.fontWeight;\n measureObject.style.fontStyle = font.fontStyle;\n measureObject.style.fontFamily = font.fontFamily;\n measureObject.style.visibility = 'hidden';\n measureObject.style.top = '-100';\n measureObject.style.left = '0';\n measureObject.style.whiteSpace = 'nowrap';\n // For bootstrap line height issue\n measureObject.style.lineHeight = 'normal';\n return new Size(measureObject.clientWidth, measureObject.clientHeight);\n}\n/**\n * Internal use of text options\n *\n * @private\n */\nvar TextOption = /** @class */ (function () {\n function TextOption(id, x, y, anchor, text, transform, baseLine, connectorText) {\n if (transform === void 0) { transform = ''; }\n this.transform = '';\n this.baseLine = 'auto';\n this.id = id;\n this.text = text;\n this.transform = transform;\n this.anchor = anchor;\n this.x = x;\n this.y = y;\n this.baseLine = baseLine;\n this.connectorText = connectorText;\n }\n return TextOption;\n}());\nexport { TextOption };\n/**\n * Trim the title text\n *\n * @param {number} maxWidth - Specifies the maximum width\n * @param {string} text - Specifies the text\n * @param {FontModel} font - Specifies the font\n * @returns {string} - Returns the string\n * @private\n */\nexport function textTrim(maxWidth, text, font) {\n var label = text;\n var size = measureText(text, font).width;\n if (size > maxWidth) {\n var textLength = text.length;\n for (var i = textLength - 1; i >= 0; --i) {\n label = text.substring(0, i) + '...';\n size = measureText(label, font).width;\n if (size <= maxWidth || label.length < 4) {\n if (label.length < 4) {\n label = ' ';\n }\n return label;\n }\n }\n }\n return label;\n}\n/**\n * Specifies the location parameters.\n */\nvar Location = /** @class */ (function () {\n function Location(x, y) {\n this.x = x;\n this.y = y;\n }\n return Location;\n}());\nexport { Location };\n/**\n * Method to calculate x position of title\n *\n * @param {Rect} location - Specifies the location of text.\n * @param {Alignment} alignment - Specifies the alignment of the text.\n * @param {Size} textSize - Specifies the size of the text.\n * @param {type} type - Specifies whether the provided text is title or subtitle.\n * @returns {Location} - Returns the location of text.\n * @private\n */\nexport function findPosition(location, alignment, textSize, type) {\n var x;\n switch (alignment) {\n case 'Near':\n x = location.x;\n break;\n case 'Center':\n x = (type === 'title') ? (location.width / 2 - textSize.width / 2) :\n ((location.x + (location.width / 2)) - textSize.width / 2);\n break;\n case 'Far':\n x = (type === 'title') ? (location.width - location.y - textSize.width) :\n ((location.x + location.width) - textSize.width);\n break;\n }\n var y = (type === 'title') ? location.y + (textSize.height / 2) : ((location.y + location.height / 2) + textSize.height / 2);\n return new Location(x, y);\n}\n/**\n *\n * @param {SvgRenderer} renderer - Specifies the rendering element of the SVG.\n * @param {any} renderOptions - Specifies the settings of the text.\n * @param {string} text - Specifies the text.\n * @returns {HTMLElement} - Returns the HTML element for the text.\n */\nexport function createTextStyle(renderer, renderOptions, text) {\n var htmlObject = renderer.createText(renderOptions, text);\n htmlObject.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n htmlObject.style['user-select'] = 'none';\n htmlObject.style['-moz-user-select'] = 'none';\n htmlObject.style['-webkit-touch-callout'] = 'none';\n htmlObject.style['-webkit-user-select'] = 'none';\n htmlObject.style['-khtml-user-select'] = 'none';\n htmlObject.style['-ms-user-select'] = 'none';\n htmlObject.style['-o-user-select'] = 'none';\n return htmlObject;\n}\n/**\n * Internal rendering of text\n *\n * @param {TextOption} options - Specifies the text option\n * @param {FontModel} font - Specifies the font model\n * @param {string} color - Specifies the color\n * @param {HTMLElement | Element} parent - Specifies the parent element of the text\n * @param {boolean} isMinus - Specifies the boolean value\n * @returns {Element} - Returns the element\n * @private\n */\nexport function renderTextElement(options, font, color, parent, isMinus) {\n if (isMinus === void 0) { isMinus = false; }\n var renderOptions = {\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily,\n 'font-weight': font.fontWeight,\n 'text-anchor': options.anchor,\n 'transform': options.transform,\n 'opacity': font.opacity,\n 'dominant-baseline': options.baseLine,\n 'id': options.id,\n 'x': options.x,\n 'y': options.y,\n 'fill': color\n };\n var text = typeof options.text === 'string' ? options.text : isMinus ? options.text[options.text.length - 1] : options.text[0];\n var tspanElement;\n var renderer = new SvgRenderer('');\n var height;\n var htmlObject;\n var breadCrumbText = !isNullOrUndefined(text) && !isNullOrUndefined(options.connectorText) ?\n (text.search(options.connectorText[1]) >= 0) : false;\n if (breadCrumbText) {\n var drilledLabel = text;\n var spacing = 5;\n var drillLevelText = drilledLabel.split('#');\n for (var z = 0; z < drillLevelText.length; z++) {\n var drillText = (drillLevelText[z].search(options.connectorText) !== -1 &&\n !isNullOrUndefined(options.connectorText)) ?\n options.connectorText : drillLevelText[z];\n renderOptions['id'] = options.id + '_' + z;\n htmlObject = createTextStyle(renderer, renderOptions, drillText);\n if (z % 2 === 0 && z !== 0) {\n var re = /\\s+/g;\n drillText = drillText.replace(re, ' ');\n }\n var size = measureText(drillText, font);\n renderOptions['x'] = z !== 0 ? renderOptions['x'] + size.width : renderOptions['x'] + size.width + spacing;\n parent.appendChild(htmlObject);\n }\n }\n else {\n htmlObject = createTextStyle(renderer, renderOptions, text);\n parent.appendChild(htmlObject);\n }\n if (typeof options.text !== 'string' && options.text.length > 1) {\n for (var i = 1, len = options.text.length; i < len; i++) {\n height = (measureText(options.text[i], font).height);\n tspanElement = renderer.createTSpan({\n 'x': options.x, 'id': options.id,\n 'y': (options.y) + (i * height)\n }, options.text[i]);\n htmlObject.appendChild(tspanElement);\n }\n parent.appendChild(htmlObject);\n }\n return htmlObject;\n}\n/**\n *\n * @param {string} targetId - Specifies the id of the element to which template is to be appended.\n * @param {Element} targetElement - Specifies the element to which template is to be appended.\n * @param {string} contentItemTemplate - Specifies the content to be appended as template.\n * @returns {void}\n */\nexport function setItemTemplateContent(targetId, targetElement, contentItemTemplate) {\n var itemSelect = targetId.split('_RectPath')[0];\n var itemTemplate;\n if (targetId.indexOf('_LabelTemplate') > -1) {\n itemTemplate = targetElement;\n }\n else {\n itemTemplate = document.querySelector('#' + itemSelect + '_LabelTemplate');\n }\n if (!isNullOrUndefined(itemTemplate)) {\n itemTemplate.innerHTML = contentItemTemplate;\n }\n}\n/**\n *\n * @param {string} id - Specifies the id of the element.\n * @returns {Element} - Returns the element.\n */\nexport function getElement(id) {\n return document.getElementById(id);\n}\n/**\n *\n * @param {any} a - Specifies the first order of TreeMap leaf elements.\n * @param {any} b - Specifies the second order of TreeMap leaf elements.\n * @returns {number} - Returns the order of the TreeMap leaf element.\n */\nexport function itemsToOrder(a, b) {\n return a['weight'] === b['weight'] ? 0 : a['weight'] < b['weight'] ? 1 : -1;\n}\n/**\n *\n * @param {string[]} source - Specifies the data from the data source.\n * @param {string} pathName - Specifies the path name in the data source.\n * @param {any} processData - Specifies the data source object.\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @returns {boolean} - Specifies whether data is available in the data source or not.\n */\nexport function isContainsData(source, pathName, processData, treemap) {\n var isExist = false;\n var name = '';\n var path;\n var leaf = treemap.leafItemSettings;\n for (var i = 0; i < source.length; i++) {\n path = treemap.levels[i] ? treemap.levels[i].groupPath : leaf.labelPath ? leaf.labelPath :\n treemap.weightValuePath;\n var data = processData[path] || 'undefined';\n if (source[i] === data) {\n name += data + (i === source.length - 1 ? '' : '#');\n if (name === pathName) {\n isExist = true;\n break;\n }\n }\n }\n return isExist;\n}\n/**\n *\n * @param {any} data - Specifies the data to which the children elements to be found.\n * @returns {any} - Returns the children elements of the TreeMap leaf element.\n */\nexport function findChildren(data) {\n var children;\n if (data) {\n var keys = Object.keys(data);\n children = {};\n for (var i = 0; i < keys.length; i++) {\n if (data[keys[i]] instanceof Array) {\n children['values'] = data[keys[i]];\n children['key'] = keys[i];\n break;\n }\n }\n }\n return children;\n}\n/**\n *\n * @param {any} data - Specifies the data to which highlight must be done.\n * @param {items} items - Specifies the data source items.\n * @param {string} mode - Specifies the mode of highlight.\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @returns {string[]} - Returns the highlighted items.\n */\nexport function findHightLightItems(data, items, mode, treeMap) {\n if (mode === 'Child') {\n items.push(data['levelOrderName']);\n var children = findChildren(data)['values'];\n if (children && children.length > 0) {\n for (var i = 0; i < children.length; i++) {\n if (items.indexOf(children[i]['levelOrderName']) === -1) {\n items.push(children[i]['levelOrderName']);\n }\n }\n for (var j = 0; j < children.length; j++) {\n findHightLightItems(children[j], items, mode, treeMap);\n }\n }\n }\n else if (mode === 'Parent') {\n if (typeof data['levelOrderName'] === 'string' && items.indexOf(data['levelOrderName']) === -1) {\n items.push(data['levelOrderName']);\n findHightLightItems(data['parent'], items, mode, treeMap);\n }\n }\n else if (mode === 'All') {\n var parentName = data['levelOrderName'].split('#')[0];\n var currentItem = void 0;\n for (var i = 0; i < treeMap.layout.renderItems.length; i++) {\n currentItem = treeMap.layout.renderItems[i];\n if ((currentItem['levelOrderName']).indexOf(parentName) > -1 && items.indexOf(currentItem['levelOrderName']) === -1) {\n items.push(currentItem['levelOrderName']);\n }\n }\n }\n else {\n items.push(data['levelOrderName']);\n }\n return items;\n}\n/**\n * Function to compile the template function for maps.\n *\n * @param {string} template - Specifies the template\n * @returns {Function} - Returns the template function\n * @private\n */\nexport function getTemplateFunction(template) {\n var templateFn = null;\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n templateFn = compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n templateFn = compile(template);\n }\n }\n catch (e) {\n templateFn = compile(template);\n }\n return templateFn;\n}\n/**\n * @private\n * @param {HTMLCollection} element - Specifies the element\n * @param {string} labelId - Specifies the label id\n * @param {Object} data - Specifies the data\n * @returns {HTMLElement} - Returns the element\n */\nexport function convertElement(element, labelId, data) {\n var childElement = createElement('div', {\n id: labelId\n });\n childElement.style.cssText = 'position: absolute;pointer-events: auto;';\n var elementLength = element.length;\n while (elementLength > 0) {\n childElement.appendChild(element[0]);\n elementLength--;\n }\n var templateHtml = childElement.innerHTML;\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n var regExp = RegExp;\n templateHtml = templateHtml.replace(new regExp('{{:' + keys[i] + '}}', 'g'), data[keys[i].toString()]);\n }\n childElement.innerHTML = templateHtml;\n return childElement;\n}\n/**\n *\n * @param {Rect} rect - Specifies the area.\n * @param {LabelPosition} position - Specifies the position\n * @param {Size} labelSize - Specifies the label size.\n * @param {string} type - Specifies the type.\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @returns {Location} - Returns the text location.\n */\nexport function findLabelLocation(rect, position, labelSize, type, treemap) {\n var location = new Location(0, 0);\n var padding = 5;\n var paddings = 2;\n var x = (type === 'Template') ? treemap.areaRect.x : 0;\n var y = (type === 'Template') ? treemap.areaRect.y : 0;\n location.x = (Math.abs(x - ((position.indexOf('Left') > -1) ? rect.x + padding : !(position.indexOf('Right') > -1) ?\n rect.x + ((rect.width / 2) - (labelSize.width / 2)) : (rect.x + rect.width) - labelSize.width))) - paddings;\n if (treemap.enableDrillDown && (treemap.renderDirection === 'BottomLeftTopRight'\n || treemap.renderDirection === 'BottomRightTopLeft')) {\n location.y = Math.abs((rect.y + rect.height) - labelSize.height + padding);\n }\n else {\n location.y = Math.abs(y - ((position.indexOf('Top') > -1) ? (type === 'Template' ? rect.y : rect.y + labelSize.height) :\n !(position.indexOf('Bottom') > -1) ? type === 'Template' ? (rect.y + ((rect.height / 2) - (labelSize.height / 2))) :\n (rect.y + (rect.height / 2) + labelSize.height / 4) : (rect.y + rect.height) - labelSize.height));\n }\n return location;\n}\n/**\n *\n * @param {HTMLElement} element - Specifies the element to be measured.\n * @param {HTMLElement} parentElement - Specifies the parent element of the element to be measured.\n * @returns {Size} - Returns the element size.\n */\nexport function measureElement(element, parentElement) {\n var size = new Size(0, 0);\n parentElement.appendChild(element);\n size.height = element.offsetHeight;\n size.width = element.offsetWidth;\n var measureElementId = document.getElementById(element.id);\n measureElementId.parentNode.removeChild(measureElementId);\n return size;\n}\n/**\n *\n * @param {Rect} rect - Specifies the area.\n * @returns {number} - Returns the area width.\n */\nexport function getArea(rect) {\n return (rect.width - rect.x) * (rect.height - rect.y);\n}\n/**\n *\n * @param {Rect} input - Specifies input for the calculation.\n * @returns {number} - Returns the shortest edge.\n */\nexport function getShortestEdge(input) {\n var container = convertToContainer(input);\n var width = container.width;\n var height = container.height;\n var result = Math.min(width, height);\n return result;\n}\n/**\n *\n * @param {Rect} rect - Specifies the rectangle bounds of the container.\n * @returns {Rect} - Returns the rectangle bounds.\n */\nexport function convertToContainer(rect) {\n var x = rect.x;\n var y = rect.y;\n var width = rect.width;\n var height = rect.height;\n return {\n x: x,\n y: y,\n width: width - x,\n height: height - y\n };\n}\n/**\n *\n * @param {Rect} container - Specifies the rectangle bounds of the container.\n * @returns {Rect} - Returns the rectangle bounds.\n */\nexport function convertToRect(container) {\n var xOffset = container.x;\n var yOffset = container.y;\n var width = container.width;\n var height = container.height;\n return {\n x: xOffset,\n y: yOffset,\n width: xOffset + width,\n height: yOffset + height\n };\n}\n/**\n *\n * @param {number} pageX - Specifies the horizontal position of the mouse location.\n * @param {number} pageY - Specifies the vertical position of the mouse location.\n * @param {Element} element - Specifies the element to which the click is done.\n * @returns {Location} - Returns the clicked location.\n */\nexport function getMousePosition(pageX, pageY, element) {\n var elementRect = element.getBoundingClientRect();\n var pageXOffset = element.ownerDocument.defaultView.pageXOffset;\n var pageYOffset = element.ownerDocument.defaultView.pageYOffset;\n var clientTop = element.ownerDocument.documentElement.clientTop;\n var clientLeft = element.ownerDocument.documentElement.clientLeft;\n var positionX = elementRect.left + pageXOffset - clientLeft;\n var positionY = elementRect.top + pageYOffset - clientTop;\n return new Location((pageX - positionX), (pageY - positionY));\n}\n/**\n *\n * @param {ColorMappingModel[]} colorMapping - Specifies the color mapping instance.\n * @param {string} equalValue - Specifies the equal value.\n * @param {number | string} value - Specifies the range value.\n * @returns {any} - Returns the color mapping object.\n * @private\n */\nexport function colorMap(colorMapping, equalValue, value) {\n var fill;\n var paths = [];\n var opacity;\n if (isNullOrUndefined(equalValue) && (isNullOrUndefined(value) && isNaN(value))) {\n return null;\n }\n for (var i = 0; i < colorMapping.length; i++) {\n var isEqualColor = false;\n var dataValue = value;\n if (!isNullOrUndefined(colorMapping[i].from) && !isNullOrUndefined(colorMapping[i].to)\n && !isNullOrUndefined(colorMapping[i].value)) {\n if ((value >= colorMapping[i].from && colorMapping[i].to >= value) &&\n (colorMapping[i].value === equalValue)) {\n isEqualColor = true;\n if (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') {\n fill = !isEqualColor ? colorCollections(colorMapping[i], dataValue) : colorMapping[i].color[0];\n }\n else {\n fill = colorMapping[i].color;\n }\n }\n }\n else if ((!isNullOrUndefined(colorMapping[i].from) && !isNullOrUndefined(colorMapping[i].to))\n || !isNullOrUndefined((colorMapping[i].value))) {\n if ((value >= colorMapping[i].from && colorMapping[i].to >= value)\n || (colorMapping[i].value === equalValue)) {\n if (colorMapping[i].value === equalValue) {\n isEqualColor = true;\n }\n if (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') {\n fill = !isEqualColor ? colorCollections(colorMapping[i], dataValue) : colorMapping[i].color[0];\n }\n else {\n fill = colorMapping[i].color;\n }\n }\n }\n if (((value >= colorMapping[i].from && value <= colorMapping[i].to)\n || (colorMapping[i].value === equalValue))\n && !isNullOrUndefined(colorMapping[i].minOpacity) && !isNullOrUndefined(colorMapping[i].maxOpacity)\n && fill) {\n opacity = deSaturationColor(colorMapping[i], value);\n }\n if ((fill === '' || isNullOrUndefined(fill))\n && isNullOrUndefined(colorMapping[i].from) && isNullOrUndefined(colorMapping[i].to)\n && isNullOrUndefined(colorMapping[i].minOpacity) && isNullOrUndefined(colorMapping[i].maxOpacity)\n && isNullOrUndefined(colorMapping[i].value)) {\n fill = (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') ?\n colorMapping[i].color[0] : colorMapping[i].color;\n }\n opacity = !isNullOrUndefined(opacity) ? opacity : '1';\n paths.push(fill);\n }\n for (var j = paths.length - 1; j >= 0; j--) {\n fill = paths[j];\n j = (fill) ? -1 : j;\n }\n return { fill: fill, opacity: opacity };\n}\n/**\n *\n * @param {ColorMappingModel} colorMapping - Specifies the color mapping object.\n * @param {number} rangeValue - Specifies the range value.\n * @returns {string} - Returns the opacity for the color mapping.\n * @private\n */\nexport function deSaturationColor(colorMapping, rangeValue) {\n var opacity = 1;\n if ((rangeValue >= colorMapping.from && rangeValue <= colorMapping.to)) {\n var ratio = (rangeValue - colorMapping.from) / (colorMapping.to - colorMapping.from);\n opacity = (ratio * (colorMapping.maxOpacity - colorMapping.minOpacity)) + colorMapping.minOpacity;\n }\n return opacity.toString();\n}\n/**\n *\n * @param {ColorMappingModel} colorMap - Specifies the color mapping object.\n * @param {number} value - Specifies the range value.\n * @returns {string} - Returns the fill color.\n */\nexport function colorCollections(colorMap, value) {\n var gradientFill = getColorByValue(colorMap, value);\n return gradientFill;\n}\n/**\n *\n * @param {number} r - Specifies the red color value.\n * @param {number} g - Specifies the green color value.\n * @param {number} b - Specifies the blue color value.\n * @returns {string} - Returns the fill color.\n */\nexport function rgbToHex(r, g, b) {\n return '#' + componentToHex(r) + componentToHex(g) + componentToHex(b);\n}\n/**\n *\n * @param {ColorMappingModel} colorMap - Specifies the color mapping.\n * @param {number} value - Specifies the range value.\n * @returns {string} - Returns the fill color.\n */\nexport function getColorByValue(colorMap, value) {\n var color = '';\n var rbg;\n if (Number(value) === colorMap.from) {\n color = colorMap.color[0];\n }\n else if (Number(value) === colorMap.to) {\n color = colorMap.color[colorMap.color.length - 1];\n }\n else {\n rbg = getGradientColor(Number(value), colorMap);\n color = rgbToHex(rbg.r, rbg.g, rbg.b);\n }\n return color;\n}\n/**\n *\n * @param {number} value - Specifies the range value.\n * @param {ColorMappingModel} colorMap - Specifies the color mapping.\n * @returns {ColorValue} - Returns the color value object.\n */\nexport function getGradientColor(value, colorMap) {\n var previousOffset = colorMap.from;\n var nextOffset = colorMap.to;\n var percent = 0;\n var full = nextOffset - previousOffset;\n var midColor;\n percent = (value - previousOffset) / full;\n var previousColor;\n var nextColor;\n if (colorMap.color.length <= 2) {\n previousColor = colorMap.color[0].charAt(0) === '#' ? colorMap.color[0] : colorNameToHex(colorMap.color[0]);\n nextColor = colorMap.color[colorMap.color.length - 1].charAt(0) === '#' ?\n colorMap.color[colorMap.color.length - 1] : colorNameToHex(colorMap.color[colorMap.color.length - 1]);\n }\n else {\n previousColor = colorMap.color[0].charAt(0) === '#' ? colorMap.color[0] : colorNameToHex(colorMap.color[0]);\n nextColor = colorMap.color[colorMap.color.length - 1].charAt(0) === '#' ?\n colorMap.color[colorMap.color.length - 1] : colorNameToHex(colorMap.color[colorMap.color.length - 1]);\n var a = full / (colorMap.color.length - 1);\n var b = void 0;\n var c = void 0;\n var length_1 = colorMap.color.length - 1;\n var splitColorValueOffset = [];\n var splitColor = {};\n for (var j = 1; j < length_1; j++) {\n c = j * a;\n b = previousOffset + c;\n splitColor = { b: b, color: colorMap.color[j] };\n splitColorValueOffset.push(splitColor);\n }\n for (var i = 0; i < splitColorValueOffset.length; i++) {\n if (previousOffset <= value && value <= splitColorValueOffset[i]['b'] && i === 0) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n nextColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ? 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a)\n : (value - splitColorValueOffset[i]['b']) / a;\n }\n else if (splitColorValueOffset[i]['b'] <= value && value <= nextOffset && i === (splitColorValueOffset.length - 1)) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ?\n 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a) : (value - splitColorValueOffset[i]['b']) / a;\n }\n if (i !== splitColorValueOffset.length - 1 && i < splitColorValueOffset.length) {\n if (splitColorValueOffset[i]['b'] <= value && value <= splitColorValueOffset[i + 1]['b']) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n nextColor = splitColorValueOffset[i + 1]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i + 1]['color'] : colorNameToHex(splitColorValueOffset[i + 1]['color']);\n percent = Math.abs((value - splitColorValueOffset[i + 1]['b'])) / a;\n }\n }\n }\n }\n return getPercentageColor(percent, previousColor, nextColor);\n}\n/**\n *\n * @param {number} percent - Specifies the percentage of the color.\n * @param {number} previous - Specifies the previous color.\n * @param {number} next - Specifies the next color.\n * @returns {ColorValue} - Returns the color value object.\n */\nexport function getPercentageColor(percent, previous, next) {\n var nextColor = next.split('#')[1];\n var prevColor = previous.split('#')[1];\n var r = getPercentage(percent, parseInt(prevColor.substr(0, 2), 16), parseInt(nextColor.substr(0, 2), 16));\n var g = getPercentage(percent, parseInt(prevColor.substr(2, 2), 16), parseInt(nextColor.substr(2, 2), 16));\n var b = getPercentage(percent, parseInt(prevColor.substr(4, 2), 16), parseInt(nextColor.substr(4, 2), 16));\n return new ColorValue(r, g, b);\n}\n/**\n *\n * @param {number} percent - Specifies the percentage of the color.\n * @param {number} previous - Specifies the previous color.\n * @param {number} next - Specifies the next color.\n * @returns {number} - Returns the color value.\n */\nexport function getPercentage(percent, previous, next) {\n var full = next - previous;\n return Math.round((previous + (full * percent)));\n}\n/**\n *\n * @param {number} maximumWidth - Specifies the length of the text.\n * @param {string} dataLabel - Specifies the label.\n * @param {FontModel} font - Specifies the font of the label.\n * @returns {string[]} - Returns the labels.\n */\nexport function wordWrap(maximumWidth, dataLabel, font) {\n var textCollection = dataLabel.split(' ');\n var label = '';\n var labelCollection = [];\n var text;\n for (var i = 0, len = textCollection.length; i < len; i++) {\n text = textCollection[i];\n if (measureText(label.concat(text), font).width < maximumWidth) {\n label = label.concat((label === '' ? '' : ' ') + text);\n }\n else {\n if (label !== '') {\n labelCollection.push(textTrim(maximumWidth, label, font));\n label = text;\n }\n else {\n labelCollection.push(textTrim(maximumWidth, text, font));\n text = '';\n }\n }\n if (label && i === len - 1) {\n labelCollection.push(textTrim(maximumWidth, label, font));\n }\n }\n return labelCollection;\n}\n/**\n *\n * @param {number} maxWidth - Specifies the length of the text.\n * @param {string} label - Specifies the label.\n * @param {FontModel} font - Specifies the font of the label.\n * @returns {string[]} - Returns the labels.\n */\nexport function textWrap(maxWidth, label, font) {\n var resultText = [];\n var currentLength = 0;\n var totalWidth = measureText(label, font).width;\n var totalLength = label.length;\n if (maxWidth >= totalWidth) {\n resultText.push(label);\n return resultText;\n }\n else {\n for (var i = label.length; i > currentLength; i--) {\n var sliceString = label.slice(currentLength, i);\n totalWidth = measureText(sliceString, font).width;\n if (totalWidth <= maxWidth) {\n resultText.push(sliceString);\n currentLength += sliceString.length;\n if (totalLength === currentLength) {\n return resultText;\n }\n i = totalLength + 1;\n }\n }\n }\n return resultText;\n}\n/**\n * hide function\n *\n * @param {number} maxWidth - Specifies the maximum width.\n * @param {number} maxHeight - Specifies the maximum height.\n * @param {string} text - Specifies the text.\n * @param {FontModel} font - Specifies the font.\n * @returns {string} - Returns the hidden text.\n * @private\n */\nexport function hide(maxWidth, maxHeight, text, font) {\n var hideText = text;\n var textSize = measureText(text, font);\n hideText = (textSize.width > maxWidth || textSize.height > maxHeight) ? ' ' : text;\n return hideText;\n}\n/**\n *\n * @param {number} a - Specifies the first value of the leaf.\n * @param {number} b - Specifies the second value of the leaf.\n * @returns {number} - Returns whether values are equal or not.\n */\nexport function orderByArea(a, b) {\n if (a['itemArea'] === b['itemArea']) {\n return 0;\n }\n else if (a['itemArea'] < b['itemArea']) {\n return 1;\n }\n return -1;\n}\n/**\n *\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @param {Element} element - Specifies the selected TreeMap leaf item.\n * @param {string} className -Specifies the selected class name.\n * @returns {void}\n */\nexport function maintainSelection(treemap, element, className) {\n var elementId = treemap.levelSelection;\n if (elementId) {\n for (var index = 0; index < elementId.length; index++) {\n if (element.getAttribute('id') === elementId[index] ||\n element.children[0].id === elementId[index]) {\n if (element.childElementCount > 0 && element.children[0].id.indexOf('_Group') === -1) {\n element.children[0].setAttribute('class', className);\n applyOptions(element.childNodes[0], {\n border: treemap.selectionSettings.border, fill: treemap.selectionSettings.fill,\n opacity: treemap.selectionSettings.opacity\n });\n }\n }\n else {\n element.setAttribute('class', '');\n }\n }\n }\n}\n/**\n *\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @param {Element} legendGroup - Specifies the selected element.\n * @returns {void}\n */\nexport function legendMaintain(treemap, legendGroup) {\n var elementId = treemap.legendId;\n if (elementId) {\n for (var i = 0; i < elementId.length; i++) {\n if (treemap.legendSettings.mode === 'Interactive') {\n for (var j = 0; j < legendGroup.childElementCount; j++) {\n if (legendGroup.childNodes[j]['id'] === elementId[i] ||\n parseFloat(legendGroup.childNodes[j]['id'].split('Index_')[1]) === parseFloat(elementId[i].split('Index_')[1])) {\n var treemapSVGRectElement = legendGroup.childNodes[j];\n treemapSVGRectElement.setAttribute('fill', treemap.selectionSettings.fill);\n treemapSVGRectElement.setAttribute('opacity', treemap.selectionSettings.opacity);\n if (treemapSVGRectElement.id.indexOf('Text') === -1) {\n treemapSVGRectElement.setAttribute('stroke-width', (treemap.selectionSettings.border.width).toString());\n treemapSVGRectElement.setAttribute('stroke', treemap.selectionSettings.border.color);\n }\n else {\n treemapSVGRectElement.setAttribute('stroke', null);\n treemapSVGRectElement.setAttribute('stroke-width', null);\n }\n }\n }\n }\n else {\n var legendItem = document.getElementById(elementId[i]);\n if (!isNullOrUndefined(legendItem)) {\n legendItem.setAttribute('fill', treemap.selectionSettings.fill);\n legendItem.setAttribute('opacity', treemap.selectionSettings.opacity);\n if (legendItem.id.indexOf('Text') === -1) {\n legendItem.setAttribute('stroke', treemap.selectionSettings.border.color);\n legendItem.setAttribute('stroke-width', (treemap.selectionSettings.border.width).toString());\n }\n else {\n legendItem.setAttribute('stroke', null);\n legendItem.setAttribute('stroke-width', null);\n }\n }\n }\n }\n }\n}\n/**\n *\n * @param {HTMLCollection} elements - Specifies the selected TreeMap element.\n * @param {string} type - Specifies the selection type.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {void}\n */\nexport function removeClassNames(elements, type, treemap) {\n var element;\n var options = {};\n for (var j = 0; j < elements.length; j++) {\n element = isNullOrUndefined(elements[j].childNodes[0]) ? elements[j] :\n elements[j].childNodes[0];\n options = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])]['options'];\n applyOptions(element, options);\n elements[j].classList.remove(type);\n j -= 1;\n }\n}\n/**\n *\n * @param {SVGPathElement} element - Specifies the SVG path element.\n * @param {any} options - Specifies the settings for the SVG path element.\n * @returns {void}\n */\nexport function applyOptions(element, options) {\n element.setAttribute('opacity', options['opacity']);\n if (!isNullOrUndefined(options['fill'])) {\n element.setAttribute('fill', options['fill']);\n }\n else {\n element.setAttribute('fill', 'black');\n }\n element.setAttribute('stroke', options['border']['color']);\n element.setAttribute('stroke-width', options['border']['width']);\n}\n/**\n *\n * @param {string} format - Specifies the format value.\n * @param {any} data - Specifies the data source object.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {string} - Returns the formatted text.\n */\nexport function textFormatter(format, data, treemap) {\n if (isNullOrUndefined(format)) {\n return null;\n }\n var keys = Object.keys(data);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n format = format.split('${' + key + '}').join(formatValue(data[key], treemap).toString());\n }\n return format;\n}\n/**\n *\n * @param {number} value - Specifies the text to be formatted.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {string | number} - Returns the formatted text.\n */\nexport function formatValue(value, treemap) {\n var formatValue;\n var formatFunction;\n if (treemap.format && !isNaN(Number(value))) {\n formatFunction = treemap.intl.getNumberFormat({ format: treemap.format, useGrouping: treemap.useGroupingSeparator });\n formatValue = formatFunction(Number(value));\n }\n else {\n formatValue = value;\n }\n return formatValue ? formatValue : '';\n}\n/**\n * @private\n */\nvar ColorValue = /** @class */ (function () {\n function ColorValue(r, g, b) {\n this.r = r;\n this.g = g;\n this.b = b;\n }\n return ColorValue;\n}());\nexport { ColorValue };\n/**\n * @param {ColorValue} value - Specfies the color value\n * @returns {string} - Returns the string\n * @private\n */\nexport function convertToHexCode(value) {\n return '#' + componentToHex(value.r) + componentToHex(value.g) + componentToHex(value.b);\n}\n/**\n * @param {number} value - Specifies the value\n * @returns {string} - Returns the string\n * @private */\nexport function componentToHex(value) {\n var hex = value.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n}\n/**\n * @param {string} hex - Specifies the hex value\n * @returns {ColorValue} - Returns the color value\n * @private\n */\nexport function convertHexToColor(hex) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? new ColorValue(parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)) :\n new ColorValue(255, 255, 255);\n}\n/**\n * @param {string} color - Specifies the color\n * @returns {string} - Returns the string\n * @private\n */\nexport function colorNameToHex(color) {\n color = color === 'transparent' ? 'white' : color;\n var element = document.getElementById('treeMapMeasureText');\n element.style.color = color;\n color = window.getComputedStyle(element).color;\n var isRGBValue = color.replace(/[()RGBrgba ]/g, '').split(',');\n return convertToHexCode(new ColorValue(parseInt(isRGBValue[0], 10), parseInt(isRGBValue[1], 10), parseInt(isRGBValue[2], 10)));\n}\n/**\n * @param {Location} location - Specifies the location\n * @param {string} shape - Specifies the shape\n * @param {Size} size - Specifies the size\n * @param {string} url - Specifies the url\n * @param {PathOption} options - Specifies the options\n * @returns {Element} - Returns the element\n * @private\n */\nexport function drawSymbol(location, shape, size, url, options) {\n var svgRenderer = new SvgRenderer('');\n var temp = renderLegendShape(location, size, shape, options, url);\n var htmlElement = svgRenderer['draw' + temp.functionName](temp.renderOption);\n return htmlElement;\n}\n/**\n * @param {Location} location - Specifies the location\n * @param {Size} size - Specifies the size\n * @param {string} shape - Specifies the shape\n * @param {PathOption} options - Specifies the path option\n * @param {string} url - Specifies the string\n * @returns {IShapes} - Returns the shapes\n * @private\n */\nexport function renderLegendShape(location, size, shape, options, url) {\n var renderPath;\n var functionName = 'Path';\n var shapeWidth = size.width;\n var shapeHeight = size.height;\n var shapeX = location.x;\n var shapeY = location.y;\n var x = location.x + (-shapeWidth / 2);\n var y = location.y + (-shapeHeight / 2);\n switch (shape) {\n case 'Circle':\n case 'Bubble':\n functionName = 'Ellipse';\n merge(options, { 'rx': shapeWidth / 2, 'ry': shapeHeight / 2, 'cx': shapeX, 'cy': shapeY });\n break;\n case 'VerticalLine':\n renderPath = 'M' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' + 'L' + ' ' + shapeX + ' '\n + (shapeY + (-shapeHeight / 2));\n merge(options, { 'd': renderPath });\n break;\n case 'Diamond':\n renderPath = 'M' + ' ' + x + ' ' + shapeY + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + shapeY + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + shapeY + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Rectangle':\n renderPath = 'M' + ' ' + x + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (-shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Triangle':\n renderPath = 'M' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'InvertedTriangle':\n renderPath = 'M' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX - (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Pentagon':\n // eslint-disable-next-line no-case-declarations\n var eq = 72;\n // eslint-disable-next-line no-case-declarations\n var xValue = void 0;\n // eslint-disable-next-line no-case-declarations\n var yValue = void 0;\n for (var i = 0; i <= 5; i++) {\n xValue = (shapeWidth / 2) * Math.cos((Math.PI / 180) * (i * eq));\n yValue = (shapeWidth / 2) * Math.sin((Math.PI / 180) * (i * eq));\n if (i === 0) {\n renderPath = 'M' + ' ' + (shapeX + xValue) + ' ' + (shapeY + yValue) + ' ';\n }\n else {\n renderPath = renderPath.concat('L' + ' ' + (shapeX + xValue) + ' ' + (shapeY + yValue) + ' ');\n }\n }\n renderPath = renderPath.concat('Z');\n merge(options, { 'd': renderPath });\n break;\n case 'Star':\n renderPath = 'M ' + (location.x + size.width / 3) + ' ' + (location.y - size.height / 2) + ' L ' + (location.x - size.width / 2)\n + ' ' + (location.y + size.height / 6) + ' L ' + (location.x + size.width / 2) + ' ' + (location.y + size.height / 6)\n + ' L ' + (location.x - size.width / 3) + ' ' + (location.y - size.height / 2) + ' L ' + location.x + ' ' +\n (location.y + size.height / 2) + ' L ' + (location.x + size.width / 3) + ' ' + (location.y - size.height / 2) + ' Z';\n merge(options, { 'd': renderPath });\n break;\n case 'Cross':\n renderPath = 'M' + ' ' + x + ' ' + shapeY + ' ' + 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + shapeY + ' ' +\n 'M' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' + 'L' + ' ' + shapeX + ' ' +\n (shapeY + (-shapeHeight / 2));\n merge(options, { 'd': renderPath });\n break;\n case 'Image':\n functionName = 'Image';\n merge(options, { 'href': url, 'height': shapeHeight, 'width': shapeWidth, x: x, y: y });\n break;\n }\n return { renderOption: options, functionName: functionName };\n}\n/**\n *\n * @param {any} data - Specifies the data source object.\n * @param {any} item - Specifies the leaf item.\n * @returns {boolean} - Returns whether the TreeMap item is level item or leaf item.\n */\nexport function isParentItem(data, item) {\n var isParentItem = false;\n for (var j = 0; j < data.length; j++) {\n if (item['levelOrderName'] === data[j]['levelOrderName']) {\n isParentItem = true;\n break;\n }\n }\n return isParentItem;\n}\n/**\n * Specifies the data to be received through Ajax request for treemap.\n */\nvar TreeMapAjax = /** @class */ (function () {\n function TreeMapAjax(options, type, async, contentType, sendData) {\n this.dataOptions = options;\n this.type = type || 'GET';\n this.async = async || true;\n this.contentType = contentType;\n this.sendData = sendData;\n }\n return TreeMapAjax;\n}());\nexport { TreeMapAjax };\n/**\n *\n * @param {any[]} collection - Specifies the legend collection.\n * @returns {void}\n * @private\n */\nexport function removeShape(collection) {\n if (collection.length > 0) {\n for (var i = 0; i < collection.length; i++) {\n var item = collection[i];\n setColor(item['legendEle'], item['oldFill'], item['oldOpacity'], item['oldBorderColor'], item['oldBorderWidth']);\n }\n }\n}\n/**\n *\n * @param {any[]} collection - Specifies the legend collection.\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @returns {void}\n * @private\n */\nexport function removeLegend(collection, treeMap) {\n if (collection.length > 0) {\n for (var j = 0; j < collection.length; j++) {\n var item = collection[j];\n var legendIndex = parseFloat(item['legendEle'].id.split('_Index_')[1]);\n var isText = item['legendEle'].id.indexOf('Text') > -1;\n var shapeId = isText ? item['legendEle'].id.replace('_Text', '') : item['legendEle'].id;\n var legendShape = treeMap.legendSettings.mode === 'Interactive'\n ? document.getElementById(shapeId)\n : document.getElementById(treeMap.element.id + '_Legend_Shape_Index_' + legendIndex);\n var legendText = treeMap.legendSettings.mode === 'Interactive'\n ? document.getElementById(shapeId + '_Text')\n : document.getElementById(treeMap.element.id + '_Legend_Text_Index_' + legendIndex);\n if (!isNullOrUndefined(legendShape)) {\n setColor(legendShape, item['oldFill'], item['oldOpacity'], 'none', '0px');\n }\n if (!isNullOrUndefined(legendText)) {\n setColor(legendText, treeMap.legendSettings.textStyle.color || treeMap.themeStyle.legendTextColor, item['oldOpacity'], null, null);\n }\n var dataCount = !isNullOrUndefined(item['ShapeCollection']) ? item['ShapeCollection']['Elements'].length : 0;\n for (var k = 0; k < dataCount; k++) {\n var shapeElement = document.getElementById(item['ShapeCollection']['Elements'][k].id);\n if (!isNullOrUndefined(shapeElement)) {\n setColor(shapeElement, item['shapeOldFill'], item['shapeOldOpacity'], item['shapeOldBorderColor'], item['shapeOldBorderWidth']);\n }\n }\n }\n }\n}\n/**\n *\n * @param {Element} element - Specifies the selected element.\n * @param {string} fill - Specifies the fill color.\n * @param {string} opacity - Specifies the opacity.\n * @param {string} borderColor - Specifies the border color.\n * @param {string} borderWidth - Specifies the border width.\n * @returns {void}\n */\nexport function setColor(element, fill, opacity, borderColor, borderWidth) {\n element.setAttribute('fill', fill);\n element.setAttribute('opacity', opacity);\n if (!isNullOrUndefined(borderColor)) {\n element.setAttribute('stroke', borderColor);\n }\n if (!isNullOrUndefined(borderWidth)) {\n element.setAttribute('stroke-width', borderWidth);\n }\n}\n/**\n *\n * @param {any[]} collection - Specifies the selected item collection.\n * @param {any[]} element - Specifies the selected element collection.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {void}\n */\nexport function removeSelectionWithHighlight(collection, element, treemap) {\n removeLegend(collection, treemap);\n element = [];\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n}\n/**\n *\n * @param {number} length - Specifies the length of the legend group.\n * @param {any} item - Specifies the legend item.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {number} - Returns the legend index.\n */\nexport function getLegendIndex(length, item, treemap) {\n var index;\n var valuePath = (treemap.rangeColorValuePath !== '') ? treemap.rangeColorValuePath : null;\n var indexFound = false;\n for (var i = 0; i < length && !indexFound; i++) {\n var dataLength = treemap.treeMapLegendModule.legendCollections[i]['legendData'].length;\n if (dataLength > 0) {\n for (var j = 0; j < dataLength; j++) {\n if ((!isNullOrUndefined(valuePath) && treemap.leafItemSettings.colorMapping.length > 0 ?\n (treemap.treeMapLegendModule.legendCollections[i]['legendData'][j]['data'][valuePath] === item['data'][valuePath])\n : treemap.treeMapLegendModule.legendCollections[i]['legendData'][j]['levelOrderName'] === item['levelOrderName']\n || item['levelOrderName'].indexOf(treemap.treeMapLegendModule.legendCollections[i]['legendName']) > -1)) {\n index = i;\n indexFound = true;\n break;\n }\n }\n }\n else if (treemap.palette && treemap.palette.length > 0) {\n if ((treemap.treeMapLegendModule.legendCollections[i]['levelOrderName'] === item['levelOrderName'] ||\n (item['levelOrderName'].indexOf(treemap.treeMapLegendModule.legendCollections[i]['levelOrderName'])) > -1)\n && treemap.treeMapLegendModule.legendCollections[i]['legendName'] === item['name']) {\n index = i;\n break;\n }\n }\n }\n return index;\n}\n/**\n *\n * @param {any[]} collection - Specifies the legend collection.\n * @param {number} index - Specifies the index of legend.\n * @param {number} number - Specifies the leaf item index.\n * @param {Element} legendElement - Specifies the legend element.\n * @param {Element} shapeElement - Specifies the shape element.\n * @param {any[]} renderItems - Specifies the item index.\n * @param {any[]} legendCollection - Specifies the legend collection.\n * @returns {void}\n */\nexport function pushCollection(collection, index, number, legendElement, shapeElement, renderItems, legendCollection) {\n collection.push({\n legendEle: legendElement, oldFill: legendCollection[index]['legendFill'],\n oldOpacity: legendCollection[index]['opacity'], oldBorderColor: legendCollection[index]['borderColor'],\n oldBorderWidth: legendCollection[index]['borderWidth'],\n shapeElement: shapeElement, shapeOldFill: renderItems[number]['options']['fill'],\n shapeOldOpacity: renderItems[number]['options']['opacity'],\n shapeOldBorderColor: renderItems[number]['options']['border']['color'],\n shapeOldBorderWidth: renderItems[number]['options']['border']['width']\n });\n}\n/**\n * To trigger the download element\n *\n * @param {string} fileName - Specifies the file name\n * @param {ExportType} type - Specifies the type\n * @param {string} url - Specifies the url\n * @param {boolean} isDownload - Specifies the boolean value\n * @returns {void}\n * @private\n */\nexport function triggerDownload(fileName, type, url, isDownload) {\n createElement('a', {\n attrs: {\n 'download': fileName + '.' + type.toLocaleLowerCase(),\n 'href': url\n }\n }).dispatchEvent(new MouseEvent(isDownload ? 'click' : 'move', {\n view: window,\n bubbles: false,\n cancelable: true\n }));\n}\n/**\n *\n * @param {string} id - Specifies the id of the element to be removed.\n * @returns {void}\n */\nexport function removeElement(id) {\n var element = document.getElementById(id);\n return element ? remove(element) : null;\n}\n","/**\n * Maps Themes doc\n */\nimport { defaultFont } from './constants';\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Theme;\n(function (Theme) {\n /**\n * @private\n */\n Theme.mapsTitleFont = {\n size: '14px',\n fontWeight: 'Medium',\n color: '#424242',\n fontStyle: 'Medium',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n})(Theme || (Theme = {}));\n/**\n * To get the theme style based on treemap theme.\n *\n * @param {TreeMapTheme} theme Specifies the theme of the treemap control.\n * @returns {IThemeStyle} Returns the theme.\n * @private\n */\nexport function getThemeStyle(theme) {\n var style;\n var color;\n switch (theme.toLowerCase()) {\n case 'materialdark':\n color = '#303030';\n break;\n case 'fabricdark':\n color = '#201F1F';\n break;\n case 'bootstrapdark':\n color = '#1A1A1A';\n break;\n }\n switch (theme.toLowerCase()) {\n case 'bootstrapdark':\n case 'fabricdark':\n case 'materialdark':\n style = {\n backgroundColor: color,\n titleFontColor: '#FFFFFF',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n tooltipFontSize: '13px',\n legendTitleColor: '#DADADA',\n legendTextColor: '#DADADA',\n fontSize: '15px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif',\n labelFontSize: '12px',\n labelFontFamily: defaultFont,\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'highcontrast':\n style = {\n backgroundColor: '#000000',\n titleFontColor: '#FFFFFF',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n tooltipFontSize: '13px',\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontSize: '15px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n labelFontFamily: defaultFont,\n fontFamily: 'Roboto, Noto, Sans-serif',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'bootstrap4':\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#212529',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#212529',\n tooltipFillColor: '#000000',\n tooltipFontColor: '#FFFFFF',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 0.9,\n legendTitleColor: '#212529',\n legendTextColor: '#212529',\n fontFamily: 'HelveticaNeue-Medium',\n fontSize: '16px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'HelveticaNeue',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'tailwind':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#374151',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#374151',\n tooltipFillColor: '#111827',\n tooltipFontColor: '#F9FAFB',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#374151',\n legendTextColor: '#374151',\n fontFamily: 'Inter',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'tailwinddark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#D1D5DB',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#D1D5DB',\n tooltipFillColor: '#F9FAFB',\n tooltipFontColor: '#1F2937',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#D1D5DB',\n legendTextColor: '#D1D5DB',\n fontFamily: 'Inter',\n fontWeight: 'Normal',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'tailwind3':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#111827',\n titleFontWeight: '600',\n subTitleFontColor: '#111827',\n tooltipFillColor: '#111827',\n tooltipFontColor: '#F9FAFB',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#111827',\n legendTextColor: '#111827',\n fontFamily: 'Inter',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'tailwind3dark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#FFFFFF',\n titleFontWeight: '600',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#F9FAFB',\n tooltipFontColor: '#1F2937',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontFamily: 'Inter',\n fontWeight: '400',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'bootstrap5':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#212529',\n titleFontWeight: '400',\n subTitleFontColor: '#212529',\n tooltipFillColor: '#000000',\n tooltipFontColor: '#FFFFFF',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 0.9,\n legendTitleColor: '#212529',\n legendTextColor: '#212529',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '10px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '10px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'bootstrap5dark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#DEE2E6',\n titleFontWeight: '400',\n subTitleFontColor: '#DEE2E6',\n tooltipFillColor: '#FFFFFF',\n tooltipFontColor: '#212529',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 0.9,\n legendTitleColor: '#DEE2E6',\n legendTextColor: '#DEE2E6',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '10px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '10px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluent':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#201F1E',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#201F1E',\n tooltipFillColor: '#FFFFFF',\n tooltipFontColor: '#323130',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#201F1E',\n legendTextColor: '#201F1E',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluentdark':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#F3F2F1',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#F3F2F1',\n tooltipFillColor: '#252423',\n tooltipFontColor: '#F3F2F1',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#F3F2F1',\n legendTextColor: '#F3F2F1',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'material3':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#1C1B1F',\n titleFontWeight: '500',\n subTitleFontColor: '#1C1B1F',\n tooltipFillColor: '#313033',\n tooltipFontColor: '#F4EFF4',\n tooltipFontSize: '14px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#1C1B1F',\n legendTextColor: '#49454E',\n fontFamily: 'Roboto',\n fontSize: '16px',\n fontWeight: '400',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'Roboto',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'material3dark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#E6E1E5',\n titleFontWeight: '500',\n subTitleFontColor: '#E6E1E5',\n tooltipFillColor: '#E6E1E5',\n tooltipFontColor: '#313033',\n tooltipFontSize: '14px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#E6E1E5',\n legendTextColor: '#CAC4D0',\n fontFamily: 'Roboto',\n fontSize: '16px',\n fontWeight: '400',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'Roboto',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluent2':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#242424',\n titleFontWeight: '600',\n subTitleFontColor: '#242424',\n tooltipFillColor: '#FFFFFF',\n tooltipFontColor: '#242424',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#242424',\n legendTextColor: '#242424',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '10px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluent2dark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#FFFFFF',\n titleFontWeight: '600',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#292929',\n tooltipFontColor: '#FFFFFF',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '10px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluent2highcontrast':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#FFFFFF',\n titleFontWeight: '600',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#000000',\n tooltipFontColor: '#FFFFFF',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '10px',\n legendBorderColor: '#FFF',\n legendBorderWidth: 1,\n tooltipBorderColor: '#FFF',\n tooltipBorderWidth: 1\n };\n break;\n default:\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#424242',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#424242',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n tooltipFontSize: '13px',\n legendTitleColor: '#353535',\n legendTextColor: '#353535',\n fontSize: '15px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif',\n labelFontSize: '12px',\n labelFontFamily: defaultFont,\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n }\n return style;\n}\n","/**\n * TreeMap constants doc\n */\n/**\n * Triggers when the treemap is on load.\n *\n * @private\n */\nexport var load = 'load';\n/**\n * Triggers after treemap rendered.\n *\n * @private\n */\nexport var loaded = 'loaded';\n/**\n * Trigger before call the print method.\n *\n * @private\n */\nexport var beforePrint = 'beforePrint';\n/**\n * Trigger before each treemap item rendered.\n *\n * @private\n */\nexport var itemRendering = 'itemRendering';\n/**\n * Trigger after click on treemap item.\n *\n * @private\n */\nexport var drillStart = 'drillStart';\n/**\n * Trigger after drill start event completed.\n *\n * @private\n */\nexport var drillEnd = 'drillEnd';\n/**\n * Trigger after select the treemap item.\n *\n * @private\n */\nexport var itemSelected = 'itemSelected';\n/**\n * Trigger after hover on the treemap item.\n *\n * @private\n */\nexport var itemHighlight = 'itemHighlight';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport var tooltipRendering = 'tooltipRendering';\n/**\n * Trigger after click on the treemap item.\n *\n * @private\n */\nexport var itemClick = 'itemClick';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport var itemMove = 'itemMove';\n/**\n * Trigger after click on the treemap item.\n *\n * @private\n */\nexport var click = 'click';\n/**\n * Trigger after double click on the treemap item.\n *\n * @private\n */\nexport var doubleClick = 'doubleClick';\n/**\n * Trigger after right click on the treemap item.\n *\n * @private\n */\nexport var rightClick = 'rightClick';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport var mouseMove = 'mouseMove';\n/**\n * Trigger before each treemap item.\n *\n * @private\n */\nexport var legendItemRendering = 'legendItemRendering';\n/**\n * Trigger before legend items.\n *\n * @private\n */\nexport var legendRendering = 'legendRendering';\n/**\n * Trigger after resize the treemap.\n *\n * @private\n */\nexport var resize = 'resize';\n/**\n * Define the font family in treemap.\n *\n * @private\n */\nexport var defaultFont = 'Roboto, Segoe UI, Noto, Sans-serif';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * Maps base doc\n */\nimport { Property, ChildProperty, Complex, Collection } from '@syncfusion/ej2-base';\nimport { defaultFont } from './constants';\n/**\n * Sets and gets the options for customizing the color and width of the border in treemap.\n */\nvar Border = /** @class */ (function (_super) {\n __extends(Border, _super);\n function Border() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('#808080')\n ], Border.prototype, \"color\", void 0);\n __decorate([\n Property(0)\n ], Border.prototype, \"width\", void 0);\n return Border;\n}(ChildProperty));\nexport { Border };\n/**\n * Sets and gets the margin for the treemap.\n */\nvar Margin = /** @class */ (function (_super) {\n __extends(Margin, _super);\n function Margin() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(10)\n ], Margin.prototype, \"left\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"right\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"top\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"bottom\", void 0);\n return Margin;\n}(ChildProperty));\nexport { Margin };\n/**\n * Sets and gets the options to customize the style of the text contents in the treemap.\n */\nvar Font = /** @class */ (function (_super) {\n __extends(Font, _super);\n function Font() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], Font.prototype, \"size\", void 0);\n __decorate([\n Property(null)\n ], Font.prototype, \"color\", void 0);\n __decorate([\n Property(defaultFont)\n ], Font.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('')\n ], Font.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontStyle\", void 0);\n __decorate([\n Property(1)\n ], Font.prototype, \"opacity\", void 0);\n return Font;\n}(ChildProperty));\nexport { Font };\n/**\n * Sets and gets the options for customizing the title of the treemap.\n */\nvar CommonTitleSettings = /** @class */ (function (_super) {\n __extends(CommonTitleSettings, _super);\n function CommonTitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], CommonTitleSettings.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], CommonTitleSettings.prototype, \"description\", void 0);\n return CommonTitleSettings;\n}(ChildProperty));\nexport { CommonTitleSettings };\n/**\n * Sets and gets the options for customizing the subtitle of the treemap.\n */\nvar SubTitleSettings = /** @class */ (function (_super) {\n __extends(SubTitleSettings, _super);\n function SubTitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ fontFamily: null, fontWeight: null }, Font)\n ], SubTitleSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property('Center')\n ], SubTitleSettings.prototype, \"alignment\", void 0);\n return SubTitleSettings;\n}(CommonTitleSettings));\nexport { SubTitleSettings };\n/**\n * Sets and gets the options for customizing the title of the treemap.\n */\nvar TitleSettings = /** @class */ (function (_super) {\n __extends(TitleSettings, _super);\n function TitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ fontFamily: null, fontWeight: null }, Font)\n ], TitleSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property('Center')\n ], TitleSettings.prototype, \"alignment\", void 0);\n __decorate([\n Complex({}, SubTitleSettings)\n ], TitleSettings.prototype, \"subtitleSettings\", void 0);\n return TitleSettings;\n}(CommonTitleSettings));\nexport { TitleSettings };\n/**\n * Sets and gets the options to customize the color-mapping in treemap.\n */\nvar ColorMapping = /** @class */ (function (_super) {\n __extends(ColorMapping, _super);\n function ColorMapping() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"from\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"to\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"color\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"label\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"minOpacity\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"maxOpacity\", void 0);\n __decorate([\n Property(true)\n ], ColorMapping.prototype, \"showLegend\", void 0);\n return ColorMapping;\n}(ChildProperty));\nexport { ColorMapping };\n/**\n * Sets and gets the options for customizing the legend of the treemap.\n */\nvar LegendSettings = /** @class */ (function (_super) {\n __extends(LegendSettings, _super);\n function LegendSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('Default')\n ], LegendSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('transparent')\n ], LegendSettings.prototype, \"background\", void 0);\n __decorate([\n Property('Circle')\n ], LegendSettings.prototype, \"shape\", void 0);\n __decorate([\n Property('')\n ], LegendSettings.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], LegendSettings.prototype, \"height\", void 0);\n __decorate([\n Complex({ size: null, fontFamily: null, fontWeight: null }, Font)\n ], LegendSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], LegendSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(15)\n ], LegendSettings.prototype, \"shapeWidth\", void 0);\n __decorate([\n Property(15)\n ], LegendSettings.prototype, \"shapeHeight\", void 0);\n __decorate([\n Property(10)\n ], LegendSettings.prototype, \"shapePadding\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"imageUrl\", void 0);\n __decorate([\n Complex({ color: null, width: null }, Border)\n ], LegendSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ color: '#000000', width: 0 }, Border)\n ], LegendSettings.prototype, \"shapeBorder\", void 0);\n __decorate([\n Complex({}, CommonTitleSettings)\n ], LegendSettings.prototype, \"title\", void 0);\n __decorate([\n Complex({ size: null, fontFamily: null, fontWeight: null }, Font)\n ], LegendSettings.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('Bottom')\n ], LegendSettings.prototype, \"position\", void 0);\n __decorate([\n Property('None')\n ], LegendSettings.prototype, \"orientation\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"invertedPointer\", void 0);\n __decorate([\n Property('After')\n ], LegendSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('None')\n ], LegendSettings.prototype, \"labelDisplayMode\", void 0);\n __decorate([\n Property('Center')\n ], LegendSettings.prototype, \"alignment\", void 0);\n __decorate([\n Property({ x: 0, y: 0 })\n ], LegendSettings.prototype, \"location\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"showLegendPath\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"valuePath\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"removeDuplicateLegend\", void 0);\n return LegendSettings;\n}(ChildProperty));\nexport { LegendSettings };\n/**\n * Sets and gets the settings for drill down to visualize the treemap rendered in the initial state.\n */\nvar InitialDrillSettings = /** @class */ (function (_super) {\n __extends(InitialDrillSettings, _super);\n function InitialDrillSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], InitialDrillSettings.prototype, \"groupIndex\", void 0);\n __decorate([\n Property(null)\n ], InitialDrillSettings.prototype, \"groupName\", void 0);\n return InitialDrillSettings;\n}(ChildProperty));\nexport { InitialDrillSettings };\n/**\n * Sets and gets the options for customizing the leaf item of the treemap.\n */\nvar LeafItemSettings = /** @class */ (function (_super) {\n __extends(LeafItemSettings, _super);\n function LeafItemSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(false)\n ], LeafItemSettings.prototype, \"autoFill\", void 0);\n __decorate([\n Complex({}, Border)\n ], LeafItemSettings.prototype, \"border\", void 0);\n __decorate([\n Property(0)\n ], LeafItemSettings.prototype, \"gap\", void 0);\n __decorate([\n Property(10)\n ], LeafItemSettings.prototype, \"padding\", void 0);\n __decorate([\n Property(1)\n ], LeafItemSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LeafItemSettings.prototype, \"showLabels\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelPath\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelFormat\", void 0);\n __decorate([\n Property('TopLeft')\n ], LeafItemSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Complex({ color: null, size: null, fontFamily: null }, Font)\n ], LeafItemSettings.prototype, \"labelStyle\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelTemplate\", void 0);\n __decorate([\n Property('Center')\n ], LeafItemSettings.prototype, \"templatePosition\", void 0);\n __decorate([\n Property('Trim')\n ], LeafItemSettings.prototype, \"interSectAction\", void 0);\n __decorate([\n Collection([], ColorMapping)\n ], LeafItemSettings.prototype, \"colorMapping\", void 0);\n return LeafItemSettings;\n}(ChildProperty));\nexport { LeafItemSettings };\n/**\n * Sets and gets the options for customizing the tooltip of the treemap.\n */\nvar TooltipSettings = /** @class */ (function (_super) {\n __extends(TooltipSettings, _super);\n function TooltipSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('')\n ], TooltipSettings.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(0.75)\n ], TooltipSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(['Circle'])\n ], TooltipSettings.prototype, \"markerShapes\", void 0);\n __decorate([\n Complex({ width: null, color: null }, Border)\n ], TooltipSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: null, fontWeight: null, opacity: null }, Font)\n ], TooltipSettings.prototype, \"textStyle\", void 0);\n return TooltipSettings;\n}(ChildProperty));\nexport { TooltipSettings };\n/**\n * Sets and gets the options for customizing the selection of the leaf items in treemap.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], SelectionSettings.prototype, \"fill\", void 0);\n __decorate([\n Property('0.5')\n ], SelectionSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, Border)\n ], SelectionSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Item')\n ], SelectionSettings.prototype, \"mode\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Sets and gets the options for customizing the highlighting of the treemap item,\n * when the mouse hover is performed in it.\n */\nvar HighlightSettings = /** @class */ (function (_super) {\n __extends(HighlightSettings, _super);\n function HighlightSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], HighlightSettings.prototype, \"enable\", void 0);\n __decorate([\n Property('#808080')\n ], HighlightSettings.prototype, \"fill\", void 0);\n __decorate([\n Property('0.5')\n ], HighlightSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, Border)\n ], HighlightSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Item')\n ], HighlightSettings.prototype, \"mode\", void 0);\n return HighlightSettings;\n}(ChildProperty));\nexport { HighlightSettings };\n/**\n * Sets and gets the options for customizing the level leaf items of the treemap.\n */\nvar LevelSettings = /** @class */ (function (_super) {\n __extends(LevelSettings, _super);\n function LevelSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"groupPath\", void 0);\n __decorate([\n Property(0)\n ], LevelSettings.prototype, \"groupGap\", void 0);\n __decorate([\n Property(10)\n ], LevelSettings.prototype, \"groupPadding\", void 0);\n __decorate([\n Complex({}, Border)\n ], LevelSettings.prototype, \"border\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(false)\n ], LevelSettings.prototype, \"autoFill\", void 0);\n __decorate([\n Property(1)\n ], LevelSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LevelSettings.prototype, \"showHeader\", void 0);\n __decorate([\n Property(20)\n ], LevelSettings.prototype, \"headerHeight\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"headerFormat\", void 0);\n __decorate([\n Property('Near')\n ], LevelSettings.prototype, \"headerAlignment\", void 0);\n __decorate([\n Complex({ color: null, size: '13px', fontFamily: null }, Font)\n ], LevelSettings.prototype, \"headerStyle\", void 0);\n __decorate([\n Property('TopLeft')\n ], LevelSettings.prototype, \"templatePosition\", void 0);\n __decorate([\n Collection([], ColorMapping)\n ], LevelSettings.prototype, \"colorMapping\", void 0);\n return LevelSettings;\n}(ChildProperty));\nexport { LevelSettings };\n","import { Rect, itemsToOrder, TextOption, measureText, textTrim, hide, wordWrap, textWrap, getTemplateFunction, convertElement, findLabelLocation, PathOption, textFormatter, colorNameToHex, convertHexToColor, colorMap, measureElement, convertToContainer, convertToRect, getShortestEdge, getArea, orderByArea, isParentItem, maintainSelection } from '../utils/helper';\nimport { isNullOrUndefined, createElement, extend, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { findChildren, renderTextElement } from '../utils/helper';\nimport { itemRendering } from '../model/constants';\n/**\n * To calculate and render the shape layer\n */\nvar LayoutPanel = /** @class */ (function () {\n function LayoutPanel(treemap) {\n this.treemap = treemap;\n }\n LayoutPanel.prototype.processLayoutPanel = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data;\n var totalRect;\n if (this.treemap.treemapLevelData.levelsData && this.treemap.treemapLevelData.levelsData.length > 0) {\n data = (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) &&\n !isNullOrUndefined(this.treemap.initialDrillDown.groupName)) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length === 0) ?\n this.getDrilldownData(this.treemap.treemapLevelData.levelsData[0], [])[0] : this.treemap.treemapLevelData.levelsData[0];\n totalRect = extend({}, this.treemap.areaRect, totalRect, false);\n if (!isNullOrUndefined(this.treemap.treeMapLegendModule) && !isNullOrUndefined(this.treemap.totalRect)) {\n if (this.treemap.legendSettings.position !== 'Float') {\n totalRect = this.treemap.totalRect;\n }\n }\n if (!isNullOrUndefined(this.treemap.currentLevel) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? !isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length !== 0)) {\n var count = this.treemap.drilledItems.length - 1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var x = this.treemap.drilledItems[count]['data'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var y = {};\n y[this.treemap.drilledItems[count]['data']['groupName']] = [x];\n if (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) && !this.treemap.enableBreadcrumb) {\n this.treemap.currentLevel = this.treemap.drilledItems[count]['data']['groupIndex'];\n }\n this.calculateLayoutItems(y || this.treemap.treemapLevelData.levelsData[0], totalRect);\n this.renderLayoutItems();\n }\n else {\n if (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length === 0)) {\n this.treemap.currentLevel = this.treemap.initialDrillDown.groupIndex;\n }\n this.calculateLayoutItems(data || this.treemap.treemapLevelData.levelsData[0], totalRect);\n this.renderLayoutItems();\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getDrilldownData = function (data, drillData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var treemap = this.treemap;\n var newData = {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n if (child && child.length > 0 && drillData.length === 0) {\n for (var i = 0; i < child.length; i++) {\n if (child[i]['groupIndex'] === treemap.initialDrillDown.groupIndex &&\n child[i]['name'] === treemap.initialDrillDown.groupName) {\n child[i]['isDrilled'] = true;\n newData[child[i]['groupName']] = [child[i]];\n drillData.push(newData);\n }\n }\n for (var j = 0; j < child.length; j++) {\n this.getDrilldownData(child[j], drillData);\n }\n }\n return drillData;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.calculateLayoutItems = function (data, rect) {\n this.renderItems = [];\n this.parentData = [];\n if (!isNullOrUndefined(this.treemap.weightValuePath)) {\n if (this.treemap.layoutType.indexOf('SliceAndDice') > -1) {\n this.computeSliceAndDiceDimensional(data, rect);\n }\n else {\n rect.height = rect.height + rect.y;\n rect.width = rect.width + rect.x;\n this.computeSquarifyDimensional(data, rect);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeSliceAndDiceDimensional = function (data, coords) {\n var leafItem = this.treemap.leafItemSettings;\n var rect;\n var groups = this.treemap.levels;\n var groupIndex;\n var isLeafItem = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var children = findChildren(data)['values'];\n var gap;\n var headerHeight;\n if (children && children.length > 0) {\n this.sliceAndDiceProcess(children, coords);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < children.length; i++) {\n groupIndex = children[i]['groupIndex'];\n isLeafItem = (groups.length === 0 || groupIndex === groups.length);\n gap = isLeafItem ? leafItem.gap : groups[groupIndex].groupGap;\n headerHeight = groups.length === 0 ? 0 : groups[groupIndex] ? groups[groupIndex].showHeader ?\n groups[groupIndex].headerHeight : 0 : groups[groupIndex - 1].showHeader ?\n groups[groupIndex - 1].headerHeight : 0;\n rect = children[i]['rect'];\n rect = new Rect(rect.x + (gap / 2), rect.y + (headerHeight + (gap / 2)), rect.width - gap, Math.abs(rect.height - (gap + headerHeight)));\n this.computeSliceAndDiceDimensional(children[i], rect);\n }\n }\n }\n return data;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.sliceAndDiceProcess = function (processData, rect) {\n var parentArea = rect.height * rect.width;\n var levels = this.treemap.levels;\n var childValue;\n var alottedValue = 0;\n var totalWeight = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n processData.forEach(function (data) { totalWeight += data['weight']; });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n processData.forEach(function (child) {\n child['weightArea'] = parentArea * child['weight'] / totalWeight;\n });\n var isHorizontal = (this.treemap.layoutType === 'SliceAndDiceAuto') ? (rect.width > rect.height) :\n (this.treemap.layoutType === 'SliceAndDiceHorizontal');\n processData.sort(itemsToOrder);\n for (var i = 0; i < processData.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = processData[i];\n item['isLeafItem'] = (levels.length === 0) || ((this.treemap.isHierarchicalData ||\n isNullOrUndefined(this.treemap.leafItemSettings.labelPath)) ?\n item['groupIndex'] === levels.length - 1 : item['groupIndex'] === this.treemap.levels.length);\n if (isHorizontal) {\n childValue = ((parentArea / totalWeight) * processData[i]['weight']) / rect.height;\n if (alottedValue <= rect.width) {\n processData[i]['rect'] = new Rect(alottedValue + rect.x, rect.y, childValue, rect.height);\n }\n }\n else {\n childValue = ((parentArea / totalWeight) * processData[i]['weight']) / rect.width;\n if (alottedValue <= rect.height) {\n processData[i]['rect'] = new Rect(rect.x, alottedValue + rect.y, rect.width, childValue);\n }\n }\n alottedValue += childValue;\n this.renderItems.push(processData[i]);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeSquarifyDimensional = function (data, coords) {\n var leaf = this.treemap.leafItemSettings;\n var rect;\n var levels = this.treemap.levels;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n var index;\n var padding;\n var headerHeight;\n if (child && child.length > 0) {\n if (this.parentData.length === 0) {\n this.parentData = [];\n this.parentData.push(child);\n }\n this.calculateChildrenLayout(data, child, coords);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < child.length; i++) {\n item = child[i];\n index = item['groupIndex'];\n rect = item['rect'];\n padding = (item['isLeafItem'] ? leaf.padding : levels[index].groupPadding) / 2;\n headerHeight = this.treemap.isHierarchicalData ? index === 0 && item['isLeafItem'] ? 0 : levels[index] ?\n levels[index].showHeader ? levels[index].headerHeight : 0 : 0 :\n (levels.length === 0) ? 0 : levels[index] ?\n levels[index].showHeader ? levels[index].headerHeight : 0 : 0;\n rect = new Rect(rect.x + padding, rect.y + (headerHeight + padding), rect.width - padding, rect.height - padding);\n if (!item['isLeafItem'] && item['weight'] > 0) {\n this.computeSquarifyDimensional(child[i], rect);\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.calculateChildrenLayout = function (parent, children, coords) {\n this.computeTotalArea(children, getArea(coords));\n children.sort(orderByArea);\n this.performRowsLayout(children, [], coords, []);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.performRowsLayout = function (data, currentRow, rect, stack) {\n var dataLength = data.length;\n if (dataLength === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newCoordinates = this.getCoordinates(currentRow, rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newStack = stack.concat(newCoordinates);\n return newStack;\n }\n var width = getShortestEdge(rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var nextDatum = data[0];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var restData = data.slice(1, dataLength);\n if (this.aspectRatio(currentRow, nextDatum, width)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newRow = currentRow.concat(nextDatum);\n return this.performRowsLayout(restData, newRow, rect, stack);\n }\n else {\n var currentRowLength = currentRow.length;\n var valueSum = 0;\n for (var i = 0; i < currentRowLength; i += 1) {\n valueSum += currentRow[i]['itemArea'];\n }\n var newContainer = this.cutArea(rect, valueSum);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newCoordinates = this.getCoordinates(currentRow, rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newStack = stack.concat(newCoordinates);\n return this.performRowsLayout(data, [], newContainer, newStack);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.aspectRatio = function (currentRow, nextDatum, length) {\n if (currentRow.length === 0) {\n return true;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newRow = currentRow.concat(nextDatum);\n var currentMaxAspectRatio = this.findMaxAspectRatio(currentRow, length);\n var newMaxAspectRatio = this.findMaxAspectRatio(newRow, length);\n return (currentMaxAspectRatio >= newMaxAspectRatio);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.findMaxAspectRatio = function (row, length) {\n var rowLength = row.length;\n var minArea = Infinity;\n var maxArea = -Infinity;\n var sumArea = 0;\n for (var i = 0; i < rowLength; i += 1) {\n var area = row[i]['itemArea'];\n if (area < minArea) {\n minArea = area;\n }\n if (area > maxArea) {\n maxArea = area;\n }\n sumArea += area;\n }\n var result = Math.max((Math.pow(length, 2)) * maxArea / (Math.pow(sumArea, 2)), (Math.pow(sumArea, 2)) /\n ((Math.pow(length, 2)) * minArea));\n return result;\n };\n LayoutPanel.prototype.cutArea = function (rect, area) {\n var newContainer = convertToContainer(rect);\n var width = newContainer.width;\n var height = newContainer.height;\n var xOffset = newContainer.x;\n var yOffset = newContainer.y;\n if (width >= height) {\n var areaWidth = area / height;\n var newWidth = width - areaWidth;\n var container = {\n x: xOffset + areaWidth,\n y: yOffset,\n width: newWidth,\n height: height\n };\n return convertToRect(container);\n }\n else {\n var areaHeight = area / width;\n var newHeight = height - areaHeight;\n var container = {\n x: xOffset,\n y: yOffset + areaHeight,\n width: width,\n height: newHeight\n };\n return convertToRect(container);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getCoordinates = function (row, rect) {\n var container = convertToContainer(rect);\n var width = container.width;\n var height = container.height;\n var xOffset = container.x;\n var yOffset = container.y;\n var rowLength = row.length;\n var levels = this.treemap.levels;\n var leaf = this.treemap.leafItemSettings;\n var index;\n var valueSum = 0;\n for (var i = 0; i < rowLength; i += 1) {\n valueSum += row[i]['itemArea'];\n }\n var areaWidth = valueSum / height;\n var areaHeight = valueSum / width;\n var subXOffset = xOffset;\n var subYOffset = yOffset;\n var padding;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var coordinates = [];\n var isParent;\n var parentRect;\n for (var i = 0; i < rowLength; i += 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = row[i];\n index = item['groupIndex'];\n item['isLeafItem'] = (levels.length === 0) || (this.treemap.isHierarchicalData ? index === levels.length :\n isNullOrUndefined(leaf.labelPath) ? false : index === levels.length);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isParent = isParentItem(this.parentData[0], item);\n parentRect = isParent ? this.treemap.areaRect : item['parent'].rect;\n padding = item['isLeafItem'] ? leaf.padding : levels[index].groupPadding;\n if (width >= height) {\n var y1 = subYOffset + item['itemArea'] / areaWidth;\n item['rect'] = {\n x: subXOffset,\n y: subYOffset,\n width: subXOffset + areaWidth,\n height: y1\n };\n subYOffset = y1;\n }\n else {\n var x1 = subXOffset + item['itemArea'] / areaHeight;\n item['rect'] = {\n x: subXOffset,\n y: subYOffset,\n width: x1,\n height: subYOffset + areaHeight\n };\n subXOffset = x1;\n }\n if (item['weight'] > 0 && (isParent || (Math.round(rect.y + (padding / 2)) <=\n Math.round(parentRect.y + (parentRect.height - parentRect.y)) && Math.round(rect.x + (padding / 2)) <=\n Math.round(parentRect.x + (parentRect.width - parentRect.x))))) {\n this.renderItems.push(item);\n coordinates.push(item);\n }\n }\n return coordinates;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeTotalArea = function (data, area) {\n var dataLength = data.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var result = [];\n for (var i = 0; i < dataLength; i += 1) {\n var dataLength_1 = data.length;\n var dataSum = 0;\n for (var i_1 = 0; i_1 < dataLength_1; i_1 += 1) {\n dataSum += data[i_1]['weight'];\n }\n var multiplier = area / dataSum;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var datum = void 0;\n for (var j = 0; j < dataLength_1; j++) {\n datum = data[j];\n datum['itemArea'] = datum['weight'] * multiplier;\n result.push(datum);\n }\n }\n return result;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.onDemandProcess = function (childItems) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentItem = {};\n var totalRect;\n parentItem = childItems[0]['parent'];\n this.treemap.currentLevel = parentItem['isDrilled'] ? parentItem['groupIndex'] : null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentItemGroupname = {};\n if (isNullOrUndefined(parentItem['groupName'])) {\n parentItemGroupname = parentItem;\n }\n else {\n parentItemGroupname[parentItem['groupName']] = [parentItem];\n }\n totalRect = extend({}, this.treemap.areaRect, totalRect, false);\n if (!isNullOrUndefined(this.treemap.treeMapLegendModule) && !isNullOrUndefined(this.treemap.totalRect)) {\n totalRect = this.treemap.totalRect;\n }\n var count = this.treemap.levels.length;\n for (var i = 0; i < count; i++) {\n var levelCount = childItems[0]['groupIndex'];\n if (count === levelCount) {\n this.treemap.levels[count] = this.treemap.levels[i];\n }\n else {\n this.treemap.levels.splice(count - 1, 1);\n }\n }\n this.calculateLayoutItems(parentItemGroupname, totalRect);\n this.renderLayoutItems();\n };\n // eslint-disable-next-line valid-jsdoc\n /** @private */\n LayoutPanel.prototype.renderLayoutItems = function () {\n var _this = this;\n var position;\n var treeMap = this.treemap;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var txtVisible;\n var getItemColor;\n var eventArgs;\n this.renderer = treeMap.renderer;\n var pathOptions;\n var elementID = treeMap.element.id;\n var index;\n var templatePosition;\n var mode = treeMap.layoutType;\n var rect;\n var format;\n var interSectAction = this.treemap.leafItemSettings.interSectAction;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var fill;\n var item;\n var renderText;\n var opacity;\n var rectPath = '';\n var secondaryEle = document.getElementById(treeMap.element.id + '_Secondary_Element');\n var groupId;\n var templateEle;\n var gap;\n var textStyle;\n var levels = treeMap.levels;\n this.layoutGroup = this.renderer.createGroup({ id: elementID + '_TreeMap_' + mode + '_Layout' });\n var itemGroup;\n var template;\n var border;\n var templateGroup = createElement('div', {\n id: treeMap.element.id + '_Label_Template_Group',\n className: 'template'\n });\n templateGroup.style.cssText = 'overflow: hidden; position: absolute;pointer-events: none;' +\n 'top:' + treeMap.areaRect.y + 'px;' +\n 'left:' + treeMap.areaRect.x + 'px;' +\n 'height:' + treeMap.areaRect.height + 'px;' +\n 'width:' + treeMap.areaRect.width + 'px;';\n var isLeafItem = false;\n var leaf = treeMap.leafItemSettings;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childItems;\n var connectorText;\n var _loop_1 = function (i) {\n item = this_1.renderItems[i];\n index = item['groupIndex'];\n if (this_1.treemap.drillDownView && isNullOrUndefined(this_1.treemap.currentLevel)\n && index > 0 || this_1.treemap.drillDownView\n && index > (this_1.treemap.currentLevel + 1)) {\n return \"continue\";\n }\n rect = item['rect'];\n isLeafItem = item['isLeafItem'];\n groupId = elementID + '_Level_Index_' + index + '_Item_Index_' + i;\n itemGroup = this_1.renderer.createGroup({ id: groupId + '_Group' });\n gap = (isLeafItem ? leaf.gap : levels[index].groupGap) / 2;\n var treemapItemRect = this_1.treemap.totalRect ? (treeMap.legendSettings.visible ? this_1.treemap.totalRect\n : convertToContainer(this_1.treemap.totalRect)) : this_1.treemap.areaRect;\n if (treeMap.layoutType === 'Squarified') {\n rect.width = Math.abs(rect.x - rect.width) - gap;\n rect.height = Math.abs(rect.y - rect.height) - gap;\n }\n if (treeMap.renderDirection === 'TopRightBottomLeft') {\n rect.x = (treemapItemRect.x + treemapItemRect.width) - rect.width - Math.abs(treemapItemRect.x - rect.x);\n }\n else if (treeMap.renderDirection === 'BottomLeftTopRight') {\n rect.y = (treemapItemRect.y + treemapItemRect.height) - rect.height - Math.abs(treemapItemRect.y - rect.y);\n }\n else if (treeMap.renderDirection === 'BottomRightTopLeft') {\n rect.x = (treemapItemRect.x + treemapItemRect.width) - rect.width - Math.abs(treemapItemRect.x - rect.x);\n rect.y = (treemapItemRect.y + treemapItemRect.height) - rect.height - Math.abs(treemapItemRect.y - rect.y);\n }\n getItemColor = this_1.getItemColor(isLeafItem, item);\n fill = getItemColor['fill'];\n opacity = getItemColor['opacity'];\n format = isLeafItem ? leaf.labelFormat : (levels[index]).headerFormat;\n var levelName;\n txtVisible = isLeafItem ? leaf.showLabels : (levels[index]).showHeader;\n if (index === this_1.treemap.currentLevel) {\n if (this_1.treemap.enableBreadcrumb) {\n var re = /#/gi;\n connectorText = '#' + this_1.treemap.breadcrumbConnector + '#';\n levelName = item['levelOrderName'].replace(re, connectorText);\n levelName = index !== 0 ? '#' + levelName : levelName;\n }\n else {\n levelName = item['name'];\n }\n }\n else {\n if (this_1.treemap.enableBreadcrumb) {\n item['isDrilled'] = false;\n }\n levelName = item['name'];\n }\n renderText = textFormatter(format, item['data'], this_1.treemap) || levelName || 'undefined';\n childItems = findChildren(item)['values'];\n renderText = !isLeafItem && childItems && childItems.length > 0 && this_1.treemap.enableDrillDown ?\n !item['isDrilled'] ? treeMap.enableRtl ? renderText + ' [+]' : '[+] ' + renderText :\n treeMap.enableRtl ? renderText + ' [-]' : '[-] ' + renderText : renderText;\n if (treeMap.enableHtmlSanitizer) {\n renderText = SanitizeHtmlHelper.sanitize(renderText);\n }\n var fontFamily = (isLeafItem ? leaf.labelStyle.fontFamily : levels[index].headerStyle.fontFamily);\n fontFamily = fontFamily || this_1.treemap.themeStyle.labelFontFamily;\n var size = (isLeafItem ? leaf.labelStyle.size : levels[index].headerStyle.size);\n size = size || this_1.treemap.themeStyle.labelFontSize;\n var fontWeight = (isLeafItem ? leaf.labelStyle.fontWeight : levels[index].headerStyle.fontWeight);\n fontWeight = fontWeight || this_1.treemap.themeStyle.fontWeight;\n var color = (isLeafItem ? leaf.labelStyle.color : levels[index].headerStyle.color);\n var fontStyle = (isLeafItem ? leaf.labelStyle.fontStyle : levels[index].headerStyle.fontStyle);\n var textStyleOpacity = (isLeafItem ? leaf.labelStyle.opacity : levels[index].headerStyle.opacity);\n textStyle = {\n fontFamily: fontFamily, size: size, fontWeight: fontWeight, color: color, fontStyle: fontStyle, opacity: textStyleOpacity\n };\n border = isLeafItem ? leaf.border : levels[index].border;\n position = !isLeafItem ? (levels[index].headerAlignment) === 'Near' ? 'TopLeft' : (levels[index].headerAlignment) === 'Center' ?\n 'TopCenter' : 'TopRight' : leaf.labelPosition;\n templatePosition = isLeafItem ? leaf.templatePosition : levels[index].templatePosition;\n template = isLeafItem ? leaf.labelTemplate : levels[index].headerTemplate;\n item['options'] = { border: border, opacity: opacity, fill: fill };\n eventArgs = {\n cancel: false, name: itemRendering, treemap: this_1.treemap, text: renderText,\n currentItem: item, RenderItems: this_1.renderItems, options: item['options'], textColor: textStyle.color\n };\n this_1.treemap.trigger(itemRendering, eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n rectPath = ' M ' + rect.x + ' ' + rect.y + ' L ' + (rect.x + rect.width) + ' ' + rect.y +\n ' L ' + (rect.x + rect.width) + ' ' + (rect.y + rect.height) + ' L ' + rect.x + ' ' + (rect.y + rect.height) + 'z';\n pathOptions = new PathOption(groupId + '_RectPath', fill, border.width, border.color, opacity, null, rectPath);\n var path = _this.renderer.drawPath(pathOptions);\n itemGroup.appendChild(path);\n if (txtVisible) {\n if (eventArgs.text !== renderText) {\n eventArgs.text = textFormatter(eventArgs.text, item['data'], _this.treemap) || levelName;\n }\n textStyle.color = eventArgs.textColor ? eventArgs.textColor : textStyle.color;\n _this.renderItemText(eventArgs.text.toString(), itemGroup, textStyle, rect, interSectAction, groupId, fill, position, connectorText);\n }\n if (template) {\n templateEle = _this.renderTemplate(secondaryEle, groupId, rect, templatePosition, template, item, isLeafItem);\n if (!isNullOrUndefined(templateEle)) {\n templateGroup.appendChild(templateEle);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.treemap.renderReactTemplates();\n }\n }\n itemGroup.setAttribute('aria-label', item['name']);\n if ((_this.treemap.enableDrillDown && !isLeafItem) || (_this.treemap.selectionSettings.enable ||\n _this.treemap.highlightSettings.enable)) {\n itemGroup.setAttribute('role', 'button');\n itemGroup.setAttribute('tabindex', _this.treemap.tabIndex.toString());\n itemGroup.style.outline = 'none';\n itemGroup.style.cursor = _this.treemap.highlightSettings.enable && !_this.treemap.selectionSettings.enable && (_this.treemap.enableDrillDown && item['groupIndex'] === (_this.treemap.levels.length - 1)) ? 'default' :\n _this.treemap.highlightSettings.enable && !_this.treemap.selectionSettings.enable && !_this.treemap.enableDrillDown ? 'default' : 'pointer';\n }\n else {\n itemGroup.setAttribute('role', 'region');\n }\n maintainSelection(_this.treemap, itemGroup, 'treeMapSelection');\n _this.layoutGroup.appendChild(itemGroup);\n }\n });\n };\n var this_1 = this;\n for (var i = 0; i < this.renderItems.length; i++) {\n _loop_1(i);\n }\n if (templateGroup.childNodes.length > 0) {\n secondaryEle.appendChild(templateGroup);\n }\n this.treemap.svgObject.appendChild(this.layoutGroup);\n maintainSelection(this.treemap, this.layoutGroup, 'treeMapSelection');\n };\n LayoutPanel.prototype.renderItemText = function (text, parentElement, textStyle, rect, interSectAction, groupId, fill, position, connectorText) {\n var padding = 5;\n var textSize;\n var textCollection = [];\n var customText;\n var tspanText = [];\n var height = 0;\n var textName;\n textCollection = ((text.indexOf('<br>')) !== -1) ? text.split('<br>') : null;\n customText = this.labelInterSectAction(rect, text, textStyle, interSectAction);\n textSize = measureText(textCollection && textCollection[0] || customText[0], textStyle);\n if (this.treemap.enableRtl) {\n var labelSize = measureText(text, textStyle);\n var drillSymbolCount = text.search('[+]') || text.search('[-]');\n if (rect.width < labelSize.width && drillSymbolCount > 0) {\n var label = text.substring(drillSymbolCount - 1, text.length);\n var drillSymbol = '[+]';\n var drillSymbolSize = measureText(drillSymbol, textStyle);\n customText['0'] = textTrim(rect.width - drillSymbolSize.width - padding, customText[0], textStyle) + label;\n }\n }\n var textLocation = findLabelLocation(rect, position, textSize, 'Text', this.treemap);\n if (!isNullOrUndefined(textCollection)) {\n var collection = [];\n var texts = null;\n var maxNumber = [];\n for (var i = 0; i < textCollection.length; i++) {\n texts = textTrim((rect.width - 5), textCollection[i], textStyle);\n textSize = measureText(texts, textStyle);\n height += textSize.height;\n maxNumber.push(textSize.width);\n collection.push(texts);\n }\n customText = collection;\n textSize.width = Math.max.apply(null, maxNumber);\n textSize.height = height;\n }\n if (interSectAction === 'WrapByWord' || interSectAction === 'Wrap' || interSectAction === 'Trim') {\n for (var j = 0; j < customText.length; j++) {\n textSize = measureText(customText[j], textStyle);\n height += textSize.height;\n if ((rect.height - padding) > height) {\n tspanText.push(customText[j]);\n }\n }\n if (interSectAction === 'Wrap' && customText.length !== tspanText.length && tspanText.length) {\n var collectionLength = tspanText.length - 1;\n var stringText = tspanText[collectionLength];\n stringText = stringText.substring(0, (stringText.length - 1)) + '...';\n tspanText.splice(collectionLength);\n if (stringText !== '...') {\n tspanText.push(stringText);\n }\n }\n }\n else {\n textName = customText;\n tspanText.push(textName);\n }\n var textOptions = new TextOption(groupId + '_Text', textLocation.x, textLocation.y, 'start', tspanText, '', '', connectorText);\n renderTextElement(textOptions, textStyle, textStyle.color || this.getSaturatedColor(fill), parentElement);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getItemColor = function (isLeafItem, item) {\n var treemap = this.treemap;\n var itemFill = isLeafItem ? treemap.leafItemSettings.fill : treemap.levels[item['groupIndex']].fill;\n var itemOpacity = isLeafItem ? treemap.leafItemSettings.opacity : treemap.levels[item['groupIndex']].opacity;\n if (!isNullOrUndefined(treemap.treemapLevelData.defaultLevelsData)) {\n if (treemap.treemapLevelData.defaultLevelsData.length > 0) {\n treemap.treemapLevelData.levelsData = treemap.treemapLevelData.defaultLevelsData;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentData = findChildren(treemap.treemapLevelData.levelsData[0])['values'];\n var colorMapping = isLeafItem ? treemap.leafItemSettings.colorMapping :\n treemap.levels[item['groupIndex']].colorMapping;\n if (colorMapping.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var option = colorMap(colorMapping, item['data'][treemap.equalColorValuePath], item['data'][treemap.rangeColorValuePath]);\n if (!isNullOrUndefined(option)) {\n itemFill = !isNullOrUndefined(option['fill']) ? option['fill'] : treemap.leafItemSettings.fill;\n itemOpacity = option['opacity'];\n }\n }\n else {\n for (var i = 0; i < parentData.length; i++) {\n if (parentData[i]['levelOrderName'] === item['levelOrderName'].split('#')[0]) {\n itemFill = !isNullOrUndefined(itemFill) ? itemFill : !isNullOrUndefined(treemap.colorValuePath) ?\n parentData[i]['data'][treemap.colorValuePath] : !isNullOrUndefined(item['options']) ?\n item['options'].fill : (!isNullOrUndefined(treemap.palette) && treemap.palette.length > 0) ?\n treemap.palette[i % treemap.palette.length] : '#808080';\n }\n }\n }\n return { fill: itemFill, opacity: itemOpacity };\n };\n /**\n * To find saturated color for datalabel\n *\n * @param {string} color - Specifies the color\n * @returns {string} - Returns the color\n */\n LayoutPanel.prototype.getSaturatedColor = function (color) {\n var saturatedColor = color;\n saturatedColor = (saturatedColor === 'transparent') ? window.getComputedStyle(document.body, null).backgroundColor : saturatedColor;\n var rgbValue = convertHexToColor(colorNameToHex(saturatedColor));\n var contrast = Math.round((rgbValue.r * 299 + rgbValue.g * 587 + rgbValue.b * 114) / 1000);\n return contrast >= 128 ? 'black' : 'white';\n };\n LayoutPanel.prototype.renderTemplate = function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, max-len\n secondaryEle, groupId, rect, position, template, item, isLeafItem) {\n var templateId = isLeafItem ? groupId + '_LabelTemplate' : groupId + '_HeaderTemplate';\n var baseTemplateId = isLeafItem ? '_LabelTemplate' : '_HeaderTemplate';\n if (isNullOrUndefined(template['prototype']) && typeof template === 'string') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var keys = Object.keys(item['data']);\n for (var i = 0; i < keys.length; i++) {\n var regExp = RegExp;\n template = template.replace(new regExp('{{:' + keys[i] + '}}', 'g'), item['data'][keys[i].toString()]);\n }\n }\n if (this.treemap.enableHtmlSanitizer && typeof template === 'string') {\n template = SanitizeHtmlHelper.sanitize(template);\n }\n var labelElement;\n if (!isNullOrUndefined(document.getElementById(this.treemap.element.id + '_Secondary_Element'))) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateFn = getTemplateFunction(template);\n var templateElement = templateFn(item['data'], this.treemap, template, this.treemap.element.id + baseTemplateId, false);\n labelElement = convertElement(templateElement, templateId, item['data']);\n var templateSize = measureElement(labelElement, secondaryEle);\n var templateLocation = findLabelLocation(rect, position, templateSize, 'Template', this.treemap);\n labelElement.style.left = templateLocation.x + 'px';\n labelElement.style.top = templateLocation.y + 'px';\n }\n return labelElement;\n };\n LayoutPanel.prototype.labelInterSectAction = function (rect, text, textStyle, alignment) {\n var textValue;\n var maxWidth = rect.width - 10;\n switch (alignment) {\n case 'Hide':\n textValue = [hide(maxWidth, rect.height, text, textStyle)];\n break;\n case 'Trim':\n textValue = [textTrim((maxWidth + 3), text, textStyle)];\n break;\n case 'WrapByWord':\n textValue = wordWrap(maxWidth, text, textStyle);\n break;\n case 'Wrap':\n textValue = textWrap(maxWidth, text, textStyle);\n break;\n }\n return textValue;\n };\n /**\n *\n * @returns {void}\n * @private\n */\n LayoutPanel.prototype.destroy = function () {\n this.treemap = null;\n this.currentRect = null;\n this.layoutGroup = null;\n this.renderer = null;\n this.renderItems = [];\n this.parentData = [];\n };\n return LayoutPanel;\n}());\nexport { LayoutPanel };\n","import { print as printFunction, createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getElement } from '../utils/helper';\nimport { beforePrint } from '../model/constants';\n/**\n * Print module handles the print functionality for treemap.\n *\n * @hidden\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n function Print(control) {\n }\n /**\n * This method is used to perform the print functionality in treemap.\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param { string[] | string | Element} elements - Specifies the element.\n * @returns {void}\n * @private\n */\n Print.prototype.print = function (treeMap, elements) {\n var printWindow = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n printWindow.moveTo(0, 0);\n printWindow.resizeTo(screen.availWidth, screen.availHeight);\n var argsData = {\n cancel: false, htmlContent: this.getHTMLContent(treeMap, elements), name: beforePrint\n };\n treeMap.trigger(beforePrint, argsData, function () {\n if (!argsData.cancel) {\n printFunction(argsData.htmlContent, printWindow);\n }\n });\n };\n /**\n * To get the html string of the Maps\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param {string[] | string | Element} elements - Specifies the element\n * @returns {Element} - Returns the element\n * @private\n */\n Print.prototype.getHTMLContent = function (treeMap, elements) {\n var div = createElement('div');\n if (elements) {\n if (elements instanceof Array) {\n elements.forEach(function (value) {\n div.appendChild(getElement(value).cloneNode(true));\n });\n }\n else if (elements instanceof Element) {\n div.appendChild(elements.cloneNode(true));\n }\n else {\n div.appendChild(getElement(elements).cloneNode(true));\n }\n }\n else {\n var exportElement = treeMap.element.cloneNode(true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var backgroundElement = exportElement.getElementsByTagName('svg')[0];\n if (!isNullOrUndefined(backgroundElement)) {\n backgroundElement = backgroundElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n var backgroundColor = backgroundElement.getAttribute('fill');\n if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Tailwind3' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3' ||\n treeMap.theme === 'Fluent2')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n backgroundElement.setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Tailwind3Dark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark' ||\n treeMap.theme === 'Fluent2Dark' || treeMap.theme === 'Fluent2HighContrast')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n backgroundElement.setAttribute('fill', 'rgba(0, 0, 0, 1)');\n }\n }\n }\n div.appendChild(exportElement);\n }\n return div;\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n Print.prototype.getModuleName = function () {\n // Returns te module name\n return 'Print';\n };\n /**\n * To destroy the Print module.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n Print.prototype.destroy = function () { };\n return Print;\n}());\nexport { Print };\n","import { createElement, Browser, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { triggerDownload } from '../utils/helper';\n/**\n * ImageExport module handles the export to image functionality for treemap.\n *\n * @hidden\n */\nvar ImageExport = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n function ImageExport(control) {\n }\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param {ExportType} type - Specifies the type of the image file.\n * @param {string} fileName - Specifies the file name of the image file.\n * @param {boolean} allowDownload - Specifies whether to download the file or not.\n * @returns {Promise} - Returns the promise string.\n * @private\n */\n ImageExport.prototype.export = function (treeMap, type, fileName, allowDownload) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n var promise = new Promise(function (resolve, reject) {\n var element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'height': treeMap.availableSize.height.toString(),\n 'width': treeMap.availableSize.width.toString()\n }\n });\n var exportElement = treeMap.svgObject.cloneNode(true);\n var backgroundElement = exportElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n var backgroundColor = backgroundElement.getAttribute('fill');\n if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Tailwind3' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3' ||\n treeMap.theme === 'Fluent2')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Tailwind3Dark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark' ||\n treeMap.theme === 'Fluent2Dark' || treeMap.theme === 'Fluent2HighContrast')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(0, 0, 0, 1)');\n }\n }\n var isDownload = !(Browser.userAgent.toString().indexOf('HeadlessChrome') > -1);\n var svgData = '<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">' +\n exportElement.outerHTML +\n '</svg>';\n var url = window.URL.createObjectURL(new Blob(type === 'SVG' ? [svgData] :\n [(new XMLSerializer()).serializeToString(exportElement)], { type: 'image/svg+xml' }));\n if (type === 'SVG') {\n if (allowDownload) {\n triggerDownload(fileName, type, url, isDownload);\n }\n else {\n resolve(null);\n }\n }\n else {\n var image_1 = new Image();\n var context_1 = element.getContext('2d');\n image_1.onload = (function () {\n context_1.drawImage(image_1, 0, 0);\n window.URL.revokeObjectURL(url);\n if (allowDownload) {\n triggerDownload(fileName, type, element.toDataURL('image/png').replace('image/png', 'image/octet-stream'), isDownload);\n }\n else {\n if (type === 'JPEG') {\n resolve(element.toDataURL('image/jpeg'));\n }\n else if (type === 'PNG') {\n resolve(element.toDataURL('image/png'));\n }\n }\n });\n image_1.src = url;\n }\n });\n return promise;\n };\n ImageExport.prototype.getModuleName = function () {\n // Returns te module name\n return 'ImageExport';\n };\n /**\n * To destroy the ImageExport.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n ImageExport.prototype.destroy = function () { };\n return ImageExport;\n}());\nexport { ImageExport };\n","import { createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { PdfPageOrientation, PdfDocument, PdfBitmap } from '@syncfusion/ej2-pdf-export';\n/**\n * PdfExport module handles the export to pdf functionality for treemap.\n *\n * @hidden\n */\nvar PdfExport = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n function PdfExport(control) {\n }\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param {ExportType} type - Specifies the type of the document.\n * @param {string} fileName - Specifies the name of the document.\n * @param {PdfPageOrientation} orientation - Specifies the orientation of the PDF document to export the treemap.\n * @param {boolean} allowDownload - Specifies whether to download the document or not.\n * @returns {Promise} - Returns the string.\n * @private\n */\n PdfExport.prototype.export = function (treeMap, type, fileName, orientation, allowDownload) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n var promise = new Promise(function (resolve, reject) {\n var element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'width': treeMap.availableSize.width.toString(),\n 'height': treeMap.availableSize.height.toString()\n }\n });\n orientation = isNullOrUndefined(orientation) ? PdfPageOrientation.Landscape : orientation;\n var exportElement = treeMap.svgObject.cloneNode(true);\n var backgroundElement = exportElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n var backgroundColor = backgroundElement.getAttribute('fill');\n if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Tailwind3' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3' ||\n treeMap.theme === 'Fluent2')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Tailwind3Dark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark' ||\n treeMap.theme === 'Fluent2Dark' || treeMap.theme === 'Fluent2HighContrast')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(0, 0, 0, 1)');\n }\n }\n var url = window.URL.createObjectURL(new Blob([(new XMLSerializer()).serializeToString(exportElement)], { type: 'image/svg+xml' }));\n var image = new Image();\n var context = element.getContext('2d');\n image.onload = (function () {\n context.drawImage(image, 0, 0);\n window.URL.revokeObjectURL(url);\n var document = new PdfDocument();\n var imageString = element.toDataURL('image/jpeg').replace('image/jpeg', 'image/octet-stream');\n document.pageSettings.orientation = orientation;\n imageString = imageString.slice(imageString.indexOf(',') + 1);\n document.pages.add().graphics.drawImage(new PdfBitmap(imageString), 0, 0, (treeMap.availableSize.width - 60), treeMap.availableSize.height);\n if (allowDownload) {\n document.save(fileName + '.pdf');\n document.destroy();\n }\n else {\n resolve(null);\n }\n });\n image.src = url;\n });\n return promise;\n };\n PdfExport.prototype.getModuleName = function () {\n // Returns te module name\n return 'PdfExport';\n };\n /**\n * To destroy the PdfExport.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n PdfExport.prototype.destroy = function () { };\n return PdfExport;\n}());\nexport { PdfExport };\n","/**\n * Tree Map Components\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, NotifyPropertyChanges, Property, extend, Fetch, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Complex, Collection } from '@syncfusion/ej2-base';\nimport { Event, Internationalization } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\nimport { isNullOrUndefined, createElement, EventHandler, Browser, remove } from '@syncfusion/ej2-base';\nimport { Border, Margin, TitleSettings, LegendSettings, InitialDrillSettings } from './model/base';\nimport { SelectionSettings, TooltipSettings, LevelSettings, LeafItemSettings, HighlightSettings } from './model/base';\nimport { Size, stringToNumber, RectOption, Rect, textTrim, measureText, findChildren, removeElement, setItemTemplateContent, legendMaintain, removeLegend } from '../treemap/utils/helper';\nimport { removeClassNames, textFormatter } from '../treemap/utils/helper';\nimport { findPosition, TextOption, renderTextElement, isContainsData, TreeMapAjax } from '../treemap/utils/helper';\nimport { load, loaded, drillStart, drillEnd } from '../treemap/model/constants';\nimport { itemClick, itemMove, click, mouseMove, resize, doubleClick, rightClick } from '../treemap/model/constants';\nimport { LayoutPanel } from './layout/render-panel';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { getThemeStyle } from './model/theme';\nimport { Print } from './model/print';\nimport { ImageExport } from './model/image-export';\nimport { PdfExport } from './model/pdf-export';\n/**\n * Represents the treemap control. It is used to visualize both hierarchical and flat data.\n * ```html\n * <div id=\"container\"/>\n * <script>\n * var treemap = new TreeMap();\n * treemap.appendTo(\"#container\");\n * </script>\n * ```\n */\nvar TreeMap = /** @class */ (function (_super) {\n __extends(TreeMap, _super);\n /**\n * Constructor for TreeMap.\n *\n * @param {TreeMapModel} options - Specifies the treemap instance.\n * @param {string | HTMLElement} element - Specifies the treemap element.\n */\n function TreeMap(options, element) {\n var _this = _super.call(this, options, element) || this;\n /**\n * resize the treemap\n */\n _this.isResize = false;\n /** @private */\n _this.orientation = 'Horizontal';\n /** @private */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.drilledItems = [];\n /** @private */\n _this.isHierarchicalData = false;\n /** @private */\n _this.levelSelection = [];\n /** @private */\n _this.legendId = [];\n return _this;\n }\n TreeMap.prototype.preRender = function () {\n var _this = this;\n this.trigger(load, { treemap: this }, function () {\n _this.initPrivateVariable();\n _this.unWireEVents();\n _this.createSvg();\n _this.wireEVents();\n _this.setCulture();\n });\n };\n TreeMap.prototype.render = function () {\n this.renderElements();\n };\n TreeMap.prototype.renderElements = function () {\n this.treemapLevelData = new LevelsData();\n this.treemapLevelData.levelsData = null;\n this.treemapLevelData.defaultLevelsData = null;\n this.treemapLevelData.hierarchyData = null;\n this.createSecondaryElement();\n this.addTabIndex();\n this.themeStyle = getThemeStyle(this.theme);\n this.renderBorder();\n this.renderTitle(this.titleSettings, 'title', null, null);\n if (!isNullOrUndefined(this.treemapLevelData.levelsData)) {\n this.treemapLevelData.defaultLevelsData = this.treemapLevelData.levelsData;\n }\n this.processDataManager();\n };\n TreeMap.prototype.processDataManager = function () {\n var _this = this;\n var dataModule;\n var queryModule;\n var fetchApiModule;\n var localAjax;\n if (this.dataSource instanceof DataManager) {\n dataModule = this.dataSource;\n queryModule = this.query instanceof Query ? this.query : new Query();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataManager = dataModule.executeQuery(queryModule);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataManager.then(function (e) {\n _this.dataSource = e['result'];\n _this.renderTreeMapElements();\n });\n }\n else if (this.dataSource instanceof TreeMapAjax) {\n localAjax = this.dataSource;\n fetchApiModule = new Fetch(localAjax.dataOptions, localAjax.type, localAjax.contentType);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fetchApiModule.onSuccess = function (args) {\n if (!isNullOrUndefined(args.type) && args.type === 'application/octet-stream') {\n var reader_1 = new FileReader();\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var treemap_1 = _this;\n reader_1.onload = function () {\n args = JSON.parse(reader_1.result.toString());\n treemap_1.dataSource = args;\n treemap_1.renderTreeMapElements();\n };\n reader_1.readAsText(args);\n }\n else {\n _this.dataSource = args;\n _this.renderTreeMapElements();\n }\n };\n fetchApiModule.send(localAjax.sendData);\n }\n else {\n this.renderTreeMapElements();\n }\n };\n TreeMap.prototype.renderTreeMapElements = function () {\n this.processingData();\n if (this.treeMapLegendModule && this.legendSettings.visible) {\n this.treeMapLegendModule.renderLegend();\n }\n this.layout.processLayoutPanel();\n this.element.appendChild(this.svgObject);\n if (!isNullOrUndefined(this.treeMapLegendModule) && this.legendSettings.visible) {\n legendMaintain(this, this.treeMapLegendModule.legendGroup);\n }\n this.elementChange();\n this.trigger(loaded, { treemap: this, isResized: this.isResize });\n this.isResize = false;\n this.renderComplete();\n };\n TreeMap.prototype.createSvg = function () {\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n if (isNullOrUndefined(this.renderer)) {\n this.renderer = new SvgRenderer(this.element.id);\n }\n if (isNullOrUndefined(this.layout)) {\n this.layout = new LayoutPanel(this);\n }\n this.clearTemplate();\n var containerWidth = this.element.clientWidth;\n var containerHeight = this.element.clientHeight;\n this.availableSize = new Size(stringToNumber(this.width, containerWidth) || containerWidth || 600, stringToNumber(this.height, containerHeight) || containerHeight || 450);\n this.svgObject = this.renderer.createSvg({\n id: this.element.id + '_svg',\n width: this.availableSize.width,\n height: this.availableSize.height\n });\n };\n /**\n * To initilize the private varibales of treemap.\n *\n * @returns {void}\n */\n TreeMap.prototype.initPrivateVariable = function () {\n if (this.element.id === '') {\n var collection = document.getElementsByClassName('e-treemap').length;\n this.element.id = 'treemap_control_' + collection;\n }\n this.renderer = new SvgRenderer(this.element.id);\n this.layout = new LayoutPanel(this);\n };\n TreeMap.prototype.createSecondaryElement = function () {\n var secondaryEle = document.getElementById(this.element.id + '_Secondary_Element');\n if (secondaryEle && secondaryEle.childElementCount > 0) {\n secondaryEle.parentNode.removeChild(secondaryEle);\n }\n if (isNullOrUndefined(document.getElementById(this.element.id + '_Secondary_Element'))) {\n var secondaryElement = createElement('div', {\n id: this.element.id + '_Secondary_Element'\n });\n secondaryElement.style.cssText = 'position: absolute;z-index:1;';\n this.element.appendChild(secondaryElement);\n }\n };\n TreeMap.prototype.elementChange = function () {\n if (this.treeMapLegendModule && this.legendSettings.visible && this.treeMapLegendModule.legendGroup && this.layout.layoutGroup\n && !isNullOrUndefined(this.svgObject) && !isNullOrUndefined(document.getElementById(this.layout.layoutGroup.id))\n && !isNullOrUndefined(document.getElementById(this.treeMapLegendModule.legendGroup.id))) {\n this.svgObject.insertBefore(this.layout.layoutGroup, this.treeMapLegendModule.legendGroup);\n }\n };\n /**\n * Render the treemap border\n *\n * @private\n * @returns {void}\n */\n TreeMap.prototype.renderBorder = function () {\n var width = this.border.width;\n var borderElement = this.svgObject.querySelector('#' + this.element.id + '_TreeMap_Border');\n if ((this.border.width > 0 || (this.background || this.themeStyle.backgroundColor)) && isNullOrUndefined(borderElement)) {\n var borderRect = new RectOption(this.element.id + '_TreeMap_Border', this.background || this.themeStyle.backgroundColor, this.border, 1, new Rect(width / 2, width / 2, this.availableSize.width - width, this.availableSize.height - width));\n this.svgObject.appendChild(this.renderer.drawRectangle(borderRect));\n }\n else if (borderElement) {\n borderElement.setAttribute('fill', this.background || this.themeStyle.backgroundColor);\n }\n };\n TreeMap.prototype.renderTitle = function (title, type, bounds, groupEle) {\n var style = {\n color: title.textStyle.color, size: title.textStyle.size, fontFamily: title.textStyle.fontFamily,\n fontStyle: title.textStyle.fontStyle, fontWeight: title.textStyle.fontWeight, opacity: title.textStyle.opacity\n };\n var height;\n var titlePadding = 10;\n var width = (this.availableSize.width - this.margin.right - this.margin.left);\n style.fontFamily = style.fontFamily || this.themeStyle.fontFamily;\n style.fontWeight = style.fontWeight || this.themeStyle.titleFontWeight;\n style.size = style.size || (type === 'title' ? this.themeStyle.fontSize : this.themeStyle.subtitleFontSize);\n if (title.text) {\n if (isNullOrUndefined(groupEle)) {\n groupEle = this.renderer.createGroup({ id: this.element.id + '_Title_Group' });\n }\n var titleText = this.enableHtmlSanitizer ? (SanitizeHtmlHelper.sanitize(title.text)) : title.text;\n var trimmedTitle = textTrim(width, titleText, style);\n var elementSize = measureText(trimmedTitle, style);\n var rect = (isNullOrUndefined(bounds)) ? new Rect(this.margin.left, this.margin.top, this.availableSize.width, this.availableSize.height) : bounds;\n var location_1 = findPosition(rect, title.alignment, elementSize, type);\n var options = new TextOption(this.element.id + '_TreeMap_' + type, location_1.x, location_1.y, 'start', trimmedTitle);\n var titleBounds = new Rect(location_1.x, location_1.y, elementSize.width, elementSize.height);\n var element = renderTextElement(options, style, style.color || (type === 'title' ? this.themeStyle.titleFontColor : this.themeStyle.subTitleFontColor), groupEle);\n element.setAttribute('aria-label', title.description || titleText);\n element.setAttribute('role', 'region');\n element.setAttribute('tabindex', this.tabIndex.toString());\n if ((type === 'title' && !title.subtitleSettings.text) || (type === 'subtitle')) {\n height = (this.availableSize.height - titleBounds.y - titlePadding - this.margin.bottom);\n this.areaRect = new Rect(this.margin.left, titleBounds.y + titlePadding, width, height);\n }\n if (type !== 'subtitle' && title.subtitleSettings.text) {\n this.renderTitle(title.subtitleSettings, 'subtitle', titleBounds, groupEle);\n }\n else {\n this.svgObject.appendChild(groupEle);\n }\n }\n else {\n height = (this.availableSize.height - this.margin.top - this.margin.bottom);\n this.areaRect = new Rect(this.margin.left, this.margin.top, width, height);\n }\n };\n TreeMap.prototype.processingData = function () {\n var _this = this;\n var path;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource = this.dataSource;\n if (!isNullOrUndefined(this.dataSource) && this.dataSource.length > 0 && this.weightValuePath) {\n this.treemapLevelData.levelsData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource.map(function (data) {\n data[_this.weightValuePath] = (data[_this.weightValuePath]) ? data[_this.weightValuePath].toString() :\n data[_this.weightValuePath];\n });\n this.leafItemSettings.labelPath = this.leafItemSettings.labelPath || this.weightValuePath;\n this.checkIsHierarchicalData();\n if (this.levels.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data_1 = {};\n data_1['level'] = 0;\n path = this.leafItemSettings.labelPath;\n data_1[path] = [];\n for (var i = 0; i < this.dataSource.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(this.dataSource[i])['values'];\n if (this.isHierarchicalData && child && child.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n child.forEach(function (currentData) {\n if (currentData[path]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data_1[path].push({\n groupIndex: 0, name: currentData[path],\n levelOrderName: currentData[path].toString(),\n data: currentData, weight: currentData[_this.weightValuePath]\n });\n }\n });\n }\n else {\n if (this.dataSource[i][path]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data_1[path].push({\n groupIndex: 0, name: this.dataSource[i][path], levelOrderName: this.dataSource[i][path].toString(), data: this.dataSource[i],\n weight: this.dataSource[i][this.weightValuePath]\n });\n }\n }\n }\n this.treemapLevelData.levelsData.push(data_1);\n }\n else {\n if (this.isHierarchicalData) {\n this.treemapLevelData.hierarchyData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemapLevelData.hierarchyData = extend([], this.dataSource, this.treemapLevelData.hierarchyData, true);\n for (var i = 0; i < this.treemapLevelData.hierarchyData.length; i++) {\n this.processHierarchicalData(this.treemapLevelData.hierarchyData[i], i);\n }\n this.treemapLevelData.levelsData = this.treemapLevelData.hierarchyData;\n }\n else {\n this.processFlatJsonData();\n if (this.treemapLevelData.levelsData.length > 1) {\n this.reOrderLevelData(this.treemapLevelData.levelsData.length - 1);\n }\n }\n path = this.levels[0].groupPath;\n }\n if (!this.isHierarchicalData) {\n this.findTotalWeight(this.treemapLevelData.levelsData[0][path], 'Parent');\n }\n }\n };\n TreeMap.prototype.checkIsHierarchicalData = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child;\n this.dataSource = this.dataSource;\n for (var i = 0; i < this.dataSource.length; i++) {\n child = findChildren(this.dataSource[i])['values'];\n if (child && child.length) {\n this.isHierarchicalData = true;\n break;\n }\n else if (i === this.dataSource.length - 1) {\n this.isHierarchicalData = false;\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.processHierarchicalData = function (data, dataCount) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childData;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newData = {};\n var levelIndex;\n var path = this.leafItemSettings.labelPath ? this.leafItemSettings.labelPath : this.weightValuePath;\n var key;\n newData = findChildren(data);\n childData = newData ? newData['values'] : null;\n if (childData && childData.length > 0) {\n key = newData['key'];\n for (var i = 0; i < this.levels.length; i++) {\n if (key === this.levels[i].groupPath) {\n levelIndex = i;\n }\n }\n for (var j = 0; j < childData.length; j++) {\n childData[j]['name'] = childData[j][path];\n childData[j]['levelOrderName'] = (levelIndex === 0 ? childData[j]['name'] :\n data['levelOrderName'] + '#' + childData[j]['name']) + '';\n var childItemLevel = childData[j]['levelOrderName'];\n var childLevel = void 0;\n if (childItemLevel.search('#') > 0) {\n childLevel = childItemLevel.split('#').length - 1;\n }\n childData[j]['groupIndex'] = isNullOrUndefined(levelIndex) ? childLevel === this.levels.length\n ? this.levels.length : childLevel : levelIndex;\n if (levelIndex !== 0) {\n childData[j]['parent'] = data;\n }\n childData[j]['groupName'] = key;\n childData[j]['data'] = childData[j];\n childData[j]['isDrilled'] = false;\n childData[j]['weight'] = childData[j][this.weightValuePath];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childData.forEach(function (currentData) {\n _this.processHierarchicalData(currentData, dataCount);\n });\n }\n if (dataCount === this.treemapLevelData.hierarchyData.length - 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var mainData_1 = this.treemapLevelData.hierarchyData[0][this.levels[0].groupPath];\n if (!isNullOrUndefined(mainData_1)) {\n for (var k = 0; k < this.treemapLevelData.hierarchyData.length; k++) {\n childData = findChildren(this.treemapLevelData.hierarchyData[k])['values'];\n if (k !== 0 && childData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childData.forEach(function (currentData) { mainData_1.push(currentData); });\n this.treemapLevelData.hierarchyData.splice(k, 1);\n k -= 1;\n }\n }\n mainData_1 = this.treemapLevelData.hierarchyData[0][this.levels[0].groupPath];\n for (var l = 0; l < mainData_1.length; l++) {\n newData[this.levels[0].groupPath] = mainData_1;\n mainData_1[l]['parent'] = newData;\n }\n }\n }\n };\n /* eslint-disable valid-jsdoc */\n /**\n * This method is used to perform the print functionality in treemap.\n *\n * @param {string[] | string | Element} id - Specifies the element to print the treemap.\n * @returns {void}\n */\n TreeMap.prototype.print = function (id) {\n if (this.allowPrint && this.printModule) {\n this.printModule.print(this, id);\n }\n };\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {ExportType} type - Specifies the extension type of the exported document.\n * @param {string} fileName - Specifies file name for exporting the rendered TreeMap.\n * @param {PdfPageOrientation} orientation - Specifies the orientation of the PDF document.\n * @param {boolean} allowDownload - Specifies whether the exported file should be downloaded or not.\n * @returns {string} - Specifies the base64 string of the exported image which is returned when the allowDownload is set to false.\n */\n TreeMap.prototype.export = function (type, fileName, orientation, allowDownload) {\n var _this = this;\n if (isNullOrUndefined(allowDownload)) {\n allowDownload = true;\n }\n if (type === 'PDF' && this.allowPdfExport && this.pdfExportModule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n resolve(_this.pdfExportModule.export(_this, type, fileName, orientation, allowDownload));\n });\n }\n else if (this.allowImageExport && (type !== 'PDF') && this.imageExportModule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n resolve(_this.imageExportModule.export(_this, type, fileName, allowDownload));\n });\n }\n return null;\n };\n TreeMap.prototype.processFlatJsonData = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource = this.dataSource;\n var groupPath;\n var orderNames = [];\n for (var i = 0; i < this.levels.length + 1; i++) {\n groupPath = this.levels[i] ? this.levels[i].groupPath : this.leafItemSettings.labelPath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var level = {};\n level['level'] = i;\n level[groupPath] = [];\n this.treemapLevelData.levelsData.push(level);\n for (var j = 0; j < this.dataSource.length; j++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = {};\n var childName = '';\n if (!isNullOrUndefined(groupPath)) {\n var name_1 = this.dataSource[j][groupPath];\n if (i !== 0) {\n for (var k = 0; k <= i; k++) {\n var childGroupPath = this.levels[k] ? this.levels[k].groupPath : groupPath;\n childName += (this.dataSource[j][childGroupPath]) + ((k === i) ? '' : '#');\n }\n }\n if (!(orderNames.length > 0 ? orderNames.indexOf(childName ?\n childName : name_1) !== -1 : false)) {\n currentData['name'] = name_1;\n currentData['levelOrderName'] = ((childName) ? childName : name_1) + '';\n currentData['groupIndex'] = i;\n currentData['isDrilled'] = false;\n currentData['groupName'] = groupPath;\n currentData['data'] = this.dataSource[j];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, max-len\n this.treemapLevelData.levelsData[(this.treemapLevelData.levelsData.length - 1)][groupPath].push(currentData);\n orderNames.push((childName) ? childName : name_1);\n }\n }\n }\n }\n };\n /**\n * This method orders the treemap level data.\n *\n * @param {number} start - Specifies the start value of the treemap level.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.reOrderLevelData = function (start) {\n var currentName;\n var currentPath = this.levels[start] ? this.levels[start].groupPath : this.leafItemSettings.labelPath;\n var prevPath = this.levels[start - 1].groupPath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = this.treemapLevelData.levelsData[start][currentPath];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var previousData = this.treemapLevelData.levelsData[start - 1][prevPath];\n for (var i = 0; i < currentData.length; i++) {\n currentName = currentData[i]['levelOrderName'];\n for (var j = 0; j < previousData.length; j++) {\n previousData[j][currentPath] = isNullOrUndefined(previousData[j][currentPath]) ?\n [] : previousData[j][currentPath];\n if (this.IsChildHierarchy(currentName.split('#'), previousData[j]['levelOrderName'].split('#'))) {\n if (isNullOrUndefined(currentData[i]['parent'])) {\n currentData[i]['parent'] = previousData[j];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n previousData[j][currentPath].push(currentData[i]);\n break;\n }\n }\n }\n this.findTotalWeight(this.treemapLevelData.levelsData[this.treemapLevelData.levelsData.length - 1][currentPath], 'Child');\n this.treemapLevelData.levelsData.splice(start, 1);\n if ((start - 1) > 0) {\n this.reOrderLevelData(start - 1);\n }\n };\n TreeMap.prototype.IsChildHierarchy = function (current, previous) {\n var isChild = false;\n for (var i = 0; i < previous.length; i++) {\n if (current.length < i || previous[i] !== current[i]) {\n return false;\n }\n else {\n isChild = true;\n }\n }\n return isChild;\n };\n /**\n * This method finds the weight value of the treemap level.\n *\n * @param {any[]} processData - Specifies the treemap data.\n * @param {string} type - Specifies the type of the data.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.findTotalWeight = function (processData, type) {\n var _this = this;\n var totalWeight;\n var split;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var groupName;\n var groupObj = {};\n var _loop_1 = function (i) {\n totalWeight = 0;\n groupName = processData[i]['groupName'];\n split = processData[i]['levelOrderName'].split('#');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this_1.dataSource.forEach(function (data) {\n if (isContainsData(split, processData[i]['levelOrderName'], data, _this)) {\n totalWeight += parseFloat(data[_this.weightValuePath]);\n }\n });\n if (type === 'Parent') {\n groupObj[groupName] = processData;\n processData[i]['parent'] = groupObj;\n }\n processData[i]['weight'] = totalWeight;\n };\n var this_1 = this;\n for (var i = 0; i < processData.length; i++) {\n _loop_1(i);\n }\n };\n /**\n * To unbind event handlers for treemap.\n *\n * @returns {void}\n * @private\n */\n TreeMap.prototype.unWireEVents = function () {\n EventHandler.remove(this.element, 'click', this.clickOnTreeMap);\n EventHandler.remove(this.element, 'dblclick', this.doubleClickOnTreeMap);\n EventHandler.remove(this.element, 'contextmenu', this.rightClickOnTreeMap);\n EventHandler.remove(this.element, Browser.touchStartEvent, this.mouseDownOnTreeMap);\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.mouseMoveOnTreeMap);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.mouseEndOnTreeMap);\n EventHandler.remove(this.element, 'pointerleave mouseleave', this.mouseLeaveOnTreeMap);\n EventHandler.remove(this.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'focusout', this.focusHandler);\n window.removeEventListener('resize', this.resizeEvent);\n };\n /**\n * To bind event handlers for treemap.\n *\n * @returns {void}\n */\n TreeMap.prototype.wireEVents = function () {\n EventHandler.add(this.element, 'click', this.clickOnTreeMap, this);\n EventHandler.add(this.element, 'dblclick', this.doubleClickOnTreeMap, this);\n EventHandler.add(this.element, 'contextmenu', this.rightClickOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchStartEvent, this.mouseDownOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchMoveEvent, this.mouseMoveOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchEndEvent, this.mouseEndOnTreeMap, this);\n EventHandler.add(this.element, 'pointerleave mouseleave', this.mouseLeaveOnTreeMap, this);\n EventHandler.add(this.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusHandler, this);\n this.resizeEvent = this.resizeOnTreeMap.bind(this);\n window.addEventListener('resize', this.resizeEvent);\n };\n /**\n * Method to set culture for maps\n *\n * @returns {void}\n */\n TreeMap.prototype.setCulture = function () {\n this.intl = new Internationalization();\n };\n /**\n * To add tab index for treemap element\n *\n * @returns {void}\n */\n TreeMap.prototype.addTabIndex = function () {\n this.element.setAttribute('aria-label', this.description || 'TreeMap Element');\n this.element.setAttribute('role', 'region');\n this.element.setAttribute('tabindex', this.tabIndex.toString());\n };\n /**\n * This method handles the window resize event on treemap.\n *\n * @param {Event} e - Specifies the pointer event.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TreeMap.prototype.resizeOnTreeMap = function (e) {\n var _this = this;\n if (!this.isDestroyed) {\n this.isResize = true;\n var args_1 = {\n name: resize,\n cancel: false,\n previousSize: this.availableSize,\n currentSize: new Size(0, 0),\n treemap: this\n };\n if (this.resizeTo) {\n clearTimeout(this.resizeTo);\n }\n if (!isNullOrUndefined(this.element) && this.element.classList.contains('e-treemap')) {\n this.resizeTo = setTimeout(function () {\n _this.unWireEVents();\n _this.createSvg();\n _this.refreshing = true;\n _this.wireEVents();\n args_1.currentSize = _this.availableSize;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _this.trigger(resize, args_1, function (observedArgs) {\n _this.render();\n _this.refreshing = false;\n });\n }, 500);\n }\n }\n };\n /**\n * This method handles the click event on the treemap.\n *\n * @param {PointerEvent} e - Specifies the mouse click event in the treemap.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.clickOnTreeMap = function (e) {\n var _this = this;\n var targetEle = e.target;\n var targetId = targetEle.id;\n var eventArgs;\n var itemIndex;\n var labelText = targetEle.innerHTML;\n var clickArgs = { cancel: false, name: click, treemap: this, mouseEvent: e };\n this.trigger(click, clickArgs);\n if (targetId.indexOf('_Item_Index') > -1) {\n e.preventDefault();\n itemIndex = parseFloat(targetId.split('_Item_Index_')[1]);\n eventArgs = {\n cancel: false, name: itemClick, treemap: this, item: this.layout.renderItems[itemIndex], mouseEvent: e,\n groupIndex: this.layout.renderItems[itemIndex]['groupIndex'], groupName: this.layout.renderItems[itemIndex]['name'],\n text: labelText, contentItemTemplate: labelText\n };\n this.trigger(itemClick, eventArgs, function (observedArgs) {\n if (observedArgs.text !== labelText || observedArgs.contentItemTemplate !== labelText) {\n if (isNullOrUndefined(_this.leafItemSettings.labelTemplate)) {\n observedArgs.text = textFormatter(observedArgs.text, observedArgs['item']['data'], observedArgs.treemap);\n targetEle.textContent = observedArgs.text;\n }\n else {\n setItemTemplateContent(targetId, targetEle, observedArgs.contentItemTemplate);\n }\n }\n });\n }\n var end = new Date().getMilliseconds();\n var doubleTapTimer1;\n if (!isNullOrUndefined(this.doubleClick)) {\n if (!isNullOrUndefined(doubleTapTimer1) && end - doubleTapTimer1 < 500) {\n this.doubleClickOnTreeMap(e);\n }\n doubleTapTimer1 = end;\n }\n };\n /**\n * This method handles the double click event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n */\n TreeMap.prototype.doubleClickOnTreeMap = function (e) {\n var doubleClickArgs = { cancel: false, name: doubleClick, treemap: this, mouseEvent: e };\n this.trigger(doubleClick, doubleClickArgs);\n //this.notify('dblclick', e);\n };\n /**\n * This method handles the right click event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.rightClickOnTreeMap = function (e) {\n var rightClickArgs = { cancel: false, name: rightClick, treemap: this, mouseEvent: e };\n this.trigger(rightClick, rightClickArgs);\n };\n /**\n * This method handles the mouse down event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.mouseDownOnTreeMap = function (e) {\n if (e.target.id.indexOf('_Item_Index') > -1) {\n this.mouseDown = true;\n }\n if (e.type === 'touchstart' || e.type === 'mousedown') {\n this.removeFocus('none');\n e.preventDefault();\n }\n this.notify(Browser.touchStartEvent, e);\n };\n /**\n * This method handles the mouse move event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.mouseMoveOnTreeMap = function (e) {\n var targetEle = e.target;\n var targetId = targetEle.id;\n var eventArgs;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n var moveArgs = { cancel: false, name: mouseMove, treemap: this, mouseEvent: e };\n this.trigger(mouseMove, moveArgs);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childItems;\n this.removeFocus('none');\n if (targetId.indexOf('_Item_Index') > -1) {\n item = this.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childItems = findChildren(item)['values'];\n this.element.style.cursor = (!item['isLeafItem'] && childItems && childItems.length > 0 && this.enableDrillDown) ?\n 'pointer' : 'auto';\n eventArgs = { cancel: false, name: itemMove, treemap: this, item: item, mouseEvent: e };\n this.trigger(itemMove, eventArgs);\n }\n else {\n this.element.style.cursor = 'default';\n }\n this.notify(Browser.touchMoveEvent, e);\n };\n /**\n * This method calculates the selected treemap levels.\n *\n * @param {string} labelText - Specifies the label text.\n * @param {any} item - Specifies the treemap item.\n * @returns {any} - Returns label of the drilled level.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.calculateSelectedTextLevels = function (labelText, item) {\n //to find the levels by clicking the particular text both for drillDownView as true / false.\n var drillLevel;\n var k;\n var text;\n var levelLabels = item['levelOrderName'];\n var levelText = levelLabels.split('#');\n for (var _i = 0, _a = Object.keys(levelText); _i < _a.length; _i++) {\n k = _a[_i];\n if (levelText[k] === labelText) {\n drillLevel = parseInt(k, 10);\n text = labelText;\n }\n }\n return { drillLevel: drillLevel, currentLevelLabel: text, levelText: levelText };\n };\n /**\n * This method calculates the previous level of child items in treemap.\n *\n * @param {any} drillLevelValues - Specifies the values of drill level.\n * @param {any} item - Specifies the treemap item.\n * @param {boolean} directLevel - Specifies the current level.\n * @returns {boolean} - check whether it is previous level or not.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.calculatePreviousLevelChildItems = function (drillLevelValues, item, directLevel) {\n //By clicking any child items drilldown to the particular level.\n //At the time store all the previous drilled level items in drilledItems\n // This condition satisfies while drilldown View is set as false and the text contains '[+]'\n var text;\n var p = 0;\n var levelItems;\n var text1;\n var drillTextLevel = this.layout.renderItems[0]['levelOrderName'].split('#').length;\n for (var h = 0; h < drillTextLevel; h++) {\n text1 = h === 0 ? drillLevelValues['levelText'][h] : text1 + '#' + drillLevelValues['levelText'][h];\n }\n p = drillTextLevel > 1 ? drillTextLevel : p;\n for (var _i = 0, _a = Object['values'](this.layout.renderItems); _i < _a.length; _i++) {\n levelItems = _a[_i];\n var drillLevelText = levelItems['levelOrderName'].split('#');\n if (drillLevelText[0] === drillLevelValues['levelText'][0]) {\n text = p === 0 ? isNullOrUndefined(text1) ? text1 : drillLevelValues['levelText'][p] :\n directLevel ? text1 : text1 + '#' + drillLevelValues['levelText'][p];\n if (text === levelItems['levelOrderName']) {\n this.drilledItems.push({ name: levelItems['levelOrderName'], data: levelItems });\n p++;\n directLevel = true;\n if (p <= item['groupIndex']) {\n text = text + '#' + drillLevelValues['levelText'][p];\n text1 = text;\n }\n }\n }\n }\n return directLevel;\n };\n /**\n * This method compares the selected labels with the drill down items.\n *\n * @param {any} drillLevelValues - Specifies the values of drill level.\n * @param {any} item - Specifies the treemap item.\n * @param {number} i - Specifies the treemap item.\n * @returns {any} - return the new drill down object.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.compareSelectedLabelWithDrillDownItems = function (drillLevelValues, item, i) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var drillLevelChild;\n var newDrillItem = {};\n var b = drillLevelValues['drillLevel'] + 1;\n if (b === this.drilledItems[i]['data']['groupIndex']) {\n drillLevelChild = this.drilledItems[i]['data']['parent'];\n drillLevelChild['isDrilled'] = true;\n newDrillItem[drillLevelChild[this.drilledItems[i]['data']['groupName']]]\n = [drillLevelChild];\n // to remove all the items after matched drilled items\n this.drilledItems.splice(i, this.drilledItems.length);\n }\n else if (drillLevelValues['drillLevel'] === (this.drilledItems.length - 1)\n || drillLevelValues['drillLevel'] === item['groupIndex']) {\n newDrillItem[item['groupName']] = [item];\n }\n return newDrillItem;\n };\n /**\n * This method handles mouse end event in treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.mouseEndOnTreeMap = function (e) {\n var _this = this;\n var targetEle = e.target;\n var targetId = targetEle.id;\n var totalRect;\n var startEvent;\n var endEvent;\n var directLevel = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var index;\n var newDrillItem = {};\n var item;\n var process = true;\n var layoutID = this.element.id + '_TreeMap_' + this.layoutType + '_Layout';\n var drillLevel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateID = this.element.id + '_Label_Template_Group';\n var drillLevelValues;\n if (targetId.indexOf('_Item_Index') > -1 && this.enableDrillDown && !this.drillMouseMove) {\n if (e.cancelable) {\n e.preventDefault();\n }\n index = parseFloat(targetId.split('_Item_Index_')[1]);\n item = this.layout.renderItems[index];\n var labelText = targetEle.textContent;\n if (this.enableBreadcrumb) {\n drillLevelValues = this.calculateSelectedTextLevels(labelText, item);\n drillLevel = drillLevelValues['drillLevel'];\n if (!this.drillDownView && labelText.search('[+]') !== -1) {\n directLevel = this.calculatePreviousLevelChildItems(drillLevelValues, item, directLevel);\n }\n }\n if (this.levels.length !== 0 && !item['isLeafItem'] && findChildren(item)['values'] &&\n findChildren(item)['values'].length > 0) {\n if (this.drilledItems.length > 0) {\n item = directLevel ? this.drilledItems[this.drilledItems.length - 1]['data'] : item;\n for (var i = 0; i < this.drilledItems.length; i++) {\n if (!isNullOrUndefined(drillLevel)) { //Compare the selected text level with drilled items\n var drillLength = this.drilledItems.length;\n newDrillItem = this.compareSelectedLabelWithDrillDownItems(drillLevelValues, item, i);\n if (drillLength !== this.drilledItems.length) {\n i -= 1;\n break;\n }\n } //when clicking the levels drill back to the previous level process takes place\n if (item['levelOrderName'] === this.drilledItems[i]['name'] && !directLevel && isNullOrUndefined(drillLevel)) {\n if (item['groupIndex'] === 0 && item['parent'][item['groupName']] instanceof Array) {\n item['isDrilled'] = !(item['isDrilled']);\n if (!item['isDrilled']) {\n newDrillItem = item['parent'];\n }\n else {\n newDrillItem[item['groupName']] = [item];\n }\n }\n else {\n item['isDrilled'] = false;\n item['parent']['isDrilled'] = true;\n item = item['parent'];\n newDrillItem[item['groupName']] = [item];\n }\n this.drilledItems.splice(i, 1);\n i -= 1;\n break;\n }\n else if (i === this.drilledItems.length - 1 && isNullOrUndefined(drillLevel)) {\n item['isDrilled'] = true; // click the items move to next level.\n newDrillItem[item['groupName']] = [item];\n }\n }\n }\n else {\n item['isDrilled'] = true;\n newDrillItem[item['groupName']] = [item];\n }\n startEvent = {\n cancel: false, name: drillStart, treemap: this,\n element: targetEle, groupIndex: this.enableBreadcrumb &&\n this.drilledItems.length !== 0 && !isNullOrUndefined(drillLevel) ?\n this.drilledItems[this.drilledItems.length - 1]['data']['groupIndex'] : item['groupIndex'],\n groupName: this.enableBreadcrumb && this.drilledItems.length !== 0 && !isNullOrUndefined(drillLevel) ?\n this.drilledItems[this.drilledItems.length - 1]['data']['name'] : item['name'],\n rightClick: e.which === 3 ? true : false, childItems: null, item: newDrillItem\n };\n this.trigger(drillStart, startEvent, function (observedArgs) {\n _this.currentLevel = item['isDrilled'] && isNullOrUndefined(drillLevel) ? item['groupIndex'] :\n (!isNullOrUndefined(drillLevel) && _this.enableBreadcrumb && item['isDrilled']) ? drillLevel : null;\n if (!observedArgs.cancel) {\n if (document.getElementById(layoutID)) {\n var layerElementId = document.getElementById(layoutID);\n layerElementId.parentNode.removeChild(layerElementId);\n }\n totalRect = extend({}, _this.areaRect, totalRect, true);\n if (_this.legendSettings.visible && !isNullOrUndefined(_this.treeMapLegendModule)) {\n if (!isNullOrUndefined(newDrillItem)) {\n _this.treeMapLegendModule.legendGroup.textContent = '';\n _this.treeMapLegendModule.legendGroup = null;\n _this.treeMapLegendModule.widthIncrement = 0;\n _this.treeMapLegendModule.heightIncrement = 0;\n if (_this.enableBreadcrumb && !isNullOrUndefined(drillLevel)) {\n _this.drilledLegendItems = {\n name: _this.drilledItems[_this.drilledItems.length - 1]['data']['levelOrderName'],\n data: _this.drilledItems[_this.drilledItems.length - 1]['data']\n };\n }\n else {\n _this.drilledLegendItems = { name: item['levelOrderName'], data: item };\n }\n _this.treeMapLegendModule.renderLegend();\n }\n totalRect = !isNullOrUndefined(_this.totalRect) ? _this.totalRect : totalRect;\n }\n if (document.getElementById(templateID)) {\n var drillElementId = document.getElementById(templateID);\n drillElementId.parentNode.removeChild(drillElementId);\n }\n if (!isNullOrUndefined(observedArgs.childItems) && !observedArgs.cancel) {\n _this.layout.onDemandProcess(observedArgs.childItems);\n }\n else {\n _this.layout.calculateLayoutItems(newDrillItem, totalRect);\n _this.layout.renderLayoutItems();\n }\n }\n });\n endEvent = { cancel: false, name: drillEnd, treemap: this, renderItems: this.layout.renderItems };\n this.trigger(drillEnd, endEvent);\n if (process) {\n if (!directLevel && isNullOrUndefined(drillLevel)) {\n this.drilledItems.push({ name: item['levelOrderName'], data: item });\n }\n }\n }\n }\n this.mouseDown = false;\n this.notify(Browser.touchEndEvent, e);\n };\n /**\n * This method handles mouse leave event in treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse.\n * @return {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TreeMap.prototype.mouseLeaveOnTreeMap = function (e) {\n if (this.treeMapTooltipModule) {\n this.treeMapTooltipModule.removeTooltip();\n }\n if (this.treeMapLegendModule) {\n this.treeMapLegendModule.removeInteractivePointer();\n }\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', this);\n if (this.treeMapHighlightModule) {\n removeLegend(this.treeMapHighlightModule.shapeHighlightCollection, this);\n this.treeMapHighlightModule.highLightId = '';\n }\n this.removeFocus('');\n };\n /**\n * This method is used to perform operations when keyboard up on TreeMap.\n *\n * @param {KeyboardEvent} event - Specifies the keyboard event on TreeMap.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.keyUpHandler = function (event) {\n if (event.code !== 'Tab') {\n return;\n }\n var id = event.target['id'];\n var targetEle = document.getElementById(id);\n if ((id.indexOf('Item_Index') > -1 || id.indexOf('Legend') > -1)) {\n if (this.treeMapTooltipModule) {\n this.treeMapTooltipModule.removeTooltip();\n }\n if (this.treeMapHighlightModule && this.highlightSettings.enable) {\n targetEle.style.setProperty('outline', 'none');\n targetEle.classList.add('keyboard-focused');\n var highlightElement = id.indexOf('_Legend_') > -1 && this.legendSettings.mode === 'Default' ?\n targetEle.children[0] : targetEle;\n this.treeMapHighlightModule.highlightOnMouseMove(highlightElement);\n }\n else {\n this.removeFocus('');\n targetEle.style.outline = '2px solid black';\n targetEle.classList.add('keyboard-focused');\n }\n }\n else {\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', this);\n if (this.treeMapHighlightModule) {\n removeLegend(this.treeMapHighlightModule.shapeHighlightCollection, this);\n }\n this.removeFocus('none');\n }\n };\n /**\n * This method is used to perform operations when keyboard down on treemap.\n *\n * @param {KeyboardEvent} event - Specifies the keyboard event on treemap.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.keyDownHandler = function (event) {\n var id = event.target['id'];\n var targetEle = document.getElementById(id);\n if (event.code === 'Enter') {\n if (this.selectionSettings.enable && (id.indexOf('Item_Index') > -1 || id.indexOf('Legend') > -1)) {\n var selectionElement = id.indexOf('_Legend_') > -1 && this.legendSettings.mode === 'Default' ?\n targetEle.children[0] : targetEle;\n this.treeMapSelectionModule.selectionOnMouseDown(selectionElement);\n }\n if (this.enableDrillDown && targetEle.childElementCount > 0) {\n this.mouseEndOnTreeMap(event);\n }\n }\n };\n /**\n * This method is used to perform operations when focus out on treemap.\n *\n * @param {KeyboardEvent} event - Specifies the keyboard event on treemap.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.focusHandler = function (event) {\n var id = event.target['id'];\n if (!this.element.contains(event.relatedTarget) ||\n (id.indexOf('Item_Index') > -1 && event.relatedTarget.id.indexOf('Legend') > -1) ||\n (id.indexOf('Legend') > -1 && event.relatedTarget.id.indexOf('Item_Index') > -1)) {\n if (this.treeMapHighlightModule && this.highlightSettings.enable) {\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', this);\n removeLegend(this.treeMapHighlightModule.legendHighlightCollection, this);\n this.treeMapHighlightModule.highLightId = '';\n }\n else {\n this.removeFocus('none');\n }\n }\n };\n TreeMap.prototype.removeFocus = function (outline) {\n var highlightedElement = document.querySelector('.keyboard-focused');\n if (highlightedElement) {\n highlightedElement.style.outline = outline;\n highlightedElement.classList.remove('keyboard-focused');\n }\n };\n /**\n * This method is used to select or remove the selection of treemap item based on the provided selection settings.\n *\n * @param {string[]} levelOrder - Specifies the order of the level.\n * @param {boolean} isSelected - Specifies whether the treemap item should be selected or the selection should be removed.\n * @return {void}\n */\n TreeMap.prototype.selectItem = function (levelOrder, isSelected) {\n if (isNullOrUndefined(isSelected)) {\n isSelected = true;\n }\n var levelOrderName = '';\n for (var i = 0; i < levelOrder.length; i++) {\n if (i !== levelOrder.length - 1) {\n levelOrderName += levelOrder[i] + '#';\n }\n else {\n levelOrderName += levelOrder[i];\n }\n }\n if (this.treeMapSelectionModule && this.selectionSettings.enable) {\n this.treeMapSelectionModule.selectTreemapItem(levelOrderName, isSelected);\n }\n };\n /**\n * To provide the array of modules needed for maps rendering\n *\n * @returns {ModuleDeclaration[]} Returns the modules\n * @private\n */\n TreeMap.prototype.requiredModules = function () {\n var modules = [];\n if (this.tooltipSettings.visible) {\n modules.push({\n member: 'treeMapTooltip',\n args: [this],\n name: 'TreeMapTooltip'\n });\n }\n if (this.highlightSettings.enable) {\n modules.push({\n member: 'treeMapHighlight',\n args: [this],\n name: 'TreeMapHighlight'\n });\n }\n if (this.selectionSettings.enable) {\n modules.push({\n member: 'treeMapSelection',\n args: [this],\n name: 'TreeMapSelection'\n });\n }\n if (this.legendSettings.visible) {\n modules.push({\n member: 'treeMapLegend',\n args: [this],\n name: 'TreeMapLegend'\n });\n }\n if (this.allowPrint) {\n modules.push({\n member: 'Print',\n args: [this, Print],\n name: 'Print'\n });\n }\n if (this.allowImageExport) {\n modules.push({\n member: 'ImageExport',\n args: [this, ImageExport],\n name: 'ImageExport'\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this, PdfExport],\n name: 'PdfExport'\n });\n }\n return modules;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TreeMapModel} newProp - Specifies the new property\n * @param {TreeMapModel} oldProp - Specifies the old property\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TreeMap.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.isDestroyed) {\n var render = false;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'background':\n this.renderBorder();\n break;\n case 'height':\n case 'width':\n case 'layoutType':\n case 'levels':\n case 'drillDownView':\n case 'renderDirection':\n case 'leafItemSettings':\n case 'legendSettings':\n case 'dataSource':\n render = true;\n break;\n }\n }\n if (render) {\n this.createSvg();\n this.renderElements();\n }\n }\n };\n /**\n * Gets component name.\n *\n * @returns {string} - return the treemap instance.\n * @private\n */\n TreeMap.prototype.getModuleName = function () {\n return 'treemap';\n };\n /**\n * This method destroys the treemap. This method removes the events associated with the treemap and disposes the objects created for rendering and updating the treemap.\n */\n TreeMap.prototype.destroy = function () {\n this.unWireEVents();\n removeElement('treeMapMeasureText');\n this.drilledItems = [];\n this.levelSelection = [];\n this.legendId = [];\n this.removeSvg();\n _super.prototype.destroy.call(this);\n this.areaRect = null;\n this.themeStyle = null;\n this.totalRect = null;\n this.drilledLegendItems = null;\n this.doubleTapTimer = null;\n this.treemapLevelData = null;\n this.resizeEvent = null;\n this.availableSize = null;\n this.intl = null;\n if (!isNullOrUndefined(this.layout)) {\n this.layout.destroy();\n }\n this.layout = null;\n this.renderer = null;\n };\n TreeMap.prototype.removeSvg = function () {\n removeElement(this.element.id + '_Secondary_Element');\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Returns the string value.\n * @private\n */\n TreeMap.prototype.getPersistData = function () {\n return '';\n };\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowPrint\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowImageExport\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"height\", void 0);\n __decorate([\n Complex({}, Border)\n ], TreeMap.prototype, \"border\", void 0);\n __decorate([\n Complex({}, Margin)\n ], TreeMap.prototype, \"margin\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"background\", void 0);\n __decorate([\n Property('Material')\n ], TreeMap.prototype, \"theme\", void 0);\n __decorate([\n Complex({}, TitleSettings)\n ], TreeMap.prototype, \"titleSettings\", void 0);\n __decorate([\n Property('Squarified')\n ], TreeMap.prototype, \"layoutType\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"weightValuePath\", void 0);\n __decorate([\n Property('')\n ], TreeMap.prototype, \"rangeColorValuePath\", void 0);\n __decorate([\n Property('')\n ], TreeMap.prototype, \"equalColorValuePath\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"colorValuePath\", void 0);\n __decorate([\n Property([])\n ], TreeMap.prototype, \"palette\", void 0);\n __decorate([\n Property('TopLeftBottomRight')\n ], TreeMap.prototype, \"renderDirection\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"enableDrillDown\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"enableBreadcrumb\", void 0);\n __decorate([\n Property(' - ')\n ], TreeMap.prototype, \"breadcrumbConnector\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"drillDownView\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Complex({}, InitialDrillSettings)\n ], TreeMap.prototype, \"initialDrillDown\", void 0);\n __decorate([\n Complex({}, LeafItemSettings)\n ], TreeMap.prototype, \"leafItemSettings\", void 0);\n __decorate([\n Collection([], LevelSettings)\n ], TreeMap.prototype, \"levels\", void 0);\n __decorate([\n Complex({}, HighlightSettings)\n ], TreeMap.prototype, \"highlightSettings\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], TreeMap.prototype, \"selectionSettings\", void 0);\n __decorate([\n Complex({}, TooltipSettings)\n ], TreeMap.prototype, \"tooltipSettings\", void 0);\n __decorate([\n Complex({}, LegendSettings)\n ], TreeMap.prototype, \"legendSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"useGroupingSeparator\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"description\", void 0);\n __decorate([\n Property(0)\n ], TreeMap.prototype, \"tabIndex\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"format\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"drillStart\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"drillEnd\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemSelected\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemHighlight\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"tooltipRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemMove\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"doubleClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"rightClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"mouseMove\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"resize\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"legendItemRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"legendRendering\", void 0);\n TreeMap = __decorate([\n NotifyPropertyChanges\n ], TreeMap);\n return TreeMap;\n}(Component));\nexport { TreeMap };\n/**\n * @private\n */\nvar LevelsData = /** @class */ (function () {\n function LevelsData() {\n }\n return LevelsData;\n}());\nexport { LevelsData };\n","import { findChildren, Location, Rect, Size, measureText, TextOption, PathOption, RectOption, drawSymbol, orderByArea, legendMaintain } from '../utils/helper';\nimport { Browser, isNullOrUndefined, EventHandler, extend, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { renderTextElement, textTrim } from '../utils/helper';\nimport { legendItemRendering, legendRendering } from '../model/constants';\n/**\n * Legend module class\n */\nvar TreeMapLegend = /** @class */ (function () {\n function TreeMapLegend(treemap) {\n this.page = 0;\n /** @private */\n this.legendBorderRect = new Rect(0, 0, 0, 0);\n this.currentPage = 0;\n /** @private */\n this.heightIncrement = 0;\n /** @private */\n this.widthIncrement = 0;\n this.textMaxWidth = 0;\n this.legendInteractiveGradient = [];\n this.legendItemRect = new Rect(0, 0, 0, 0);\n this.treemap = treemap;\n this.addEventListener();\n }\n /**\n * method for legend\n *\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.renderLegend = function () {\n var _this = this;\n this.page = 0;\n this.legendRenderingCollections = [];\n this.legendCollections = [];\n this.legendNames = [];\n this.totalPages = [];\n this.gradientCount = 1;\n this.widthIncrement = 0;\n this.heightIncrement = 0;\n this.defsElement = this.treemap.renderer.createDefs();\n this.treemap.svgObject.appendChild(this.defsElement);\n var eventArgs = {\n cancel: false, name: legendRendering, treemap: this.treemap, _changePosition: this.treemap.legendSettings.position,\n position: this.treemap.legendSettings.position\n };\n this.treemap.trigger(legendRendering, eventArgs, function (observedArgs) {\n if (!observedArgs.cancel && observedArgs._changePosition !== _this.treemap.legendSettings.position) {\n _this.treemap.legendSettings.position = observedArgs._changePosition;\n }\n _this.calculateLegendBounds();\n if (_this.legendCollections.length > 0) {\n _this.drawLegend();\n }\n });\n };\n // eslint-disable-next-line valid-jsdoc\n /** @private */\n TreeMapLegend.prototype.calculateLegendBounds = function () {\n var _this = this;\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n this.findColorMappingLegendItems(treemap.treemapLevelData.levelsData[0]);\n if (((!isNullOrUndefined(this.treemap.palette) && this.treemap.palette.length > 0) || !isNullOrUndefined(treemap.colorValuePath))\n && this.legendCollections.length === 0) {\n this.findPaletteLegendItems(treemap.treemapLevelData.levelsData[0]);\n }\n if (this.legendCollections.length > 0) {\n // eslint-disable-next-line @typescript-eslint/tslint/config\n this.legendCollections.sort(function (firstItem, nextItem) { return (firstItem.levelIndex > nextItem.levelIndex) ? 1 :\n (firstItem.levelIndex < nextItem.levelIndex) ? -1 : 0; });\n // eslint-disable-next-line @typescript-eslint/tslint/config\n this.legendCollections.sort(function (firstItem, nextItem) { return (firstItem.groupIndex > nextItem.groupIndex) ? 1 :\n (firstItem.groupIndex < nextItem.groupIndex) ? -1 : 0; });\n // eslint-disable-next-line @typescript-eslint/tslint/config\n this.legendCollections.sort(function (firstItem, nextItem) { return (firstItem.leafIndex > nextItem.leafIndex) ? 1 :\n (firstItem.leafIndex < nextItem.leafIndex) ? -1 : 0; });\n var defaultSize = 25;\n var textPadding = 10;\n var position = legend.position;\n var legendTitle = treemap.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(legend.title.text) : legend.title.text;\n var titleTextStyle = legend.titleStyle;\n var legendMode = legend.mode;\n var shapeX = 0;\n var shapeY = 0;\n var textX = 0;\n var textY = 0;\n var shapeHeight = legend.shapeHeight;\n var shapeWidth = legend.shapeWidth;\n var shapeLocation = [];\n var textLocation = [];\n var orientation_1 = (legend.orientation === 'None') ? ((position === 'Top' || position === 'Bottom'\n || (position === 'Auto' && treemap.availableSize.width <= treemap.availableSize.height))\n ? 'Horizontal' : 'Vertical') : legend.orientation;\n var leftPadding = 10;\n var topPadding = 10;\n var spacing = 10;\n var legendWidth = (legend.width.length > 1) ? (legend.width.indexOf('%') > -1) ? (treemap.availableSize.width / 100)\n * parseFloat(legend.width) : parseFloat(legend.width) : null;\n var legendHeight = (legend.height.length > 1) ? (legend.height.indexOf('%') > -1) ?\n (treemap.availableSize.height / 100) * parseFloat(legend.height) : parseFloat(legend.height) : null;\n titleTextStyle.fontFamily = titleTextStyle.fontFamily || treemap.themeStyle.fontFamily;\n titleTextStyle.fontWeight = titleTextStyle.fontWeight || treemap.themeStyle.titleFontWeight;\n titleTextStyle.size = titleTextStyle.size || treemap.themeStyle.subtitleFontSize;\n var legendTitleSize = measureText(legendTitle, titleTextStyle);\n var startX_1 = 0;\n var startY_1 = 0;\n var shapePadding = legend.shapePadding;\n var itemTextStyle = legend.textStyle;\n itemTextStyle.size = itemTextStyle.size || treemap.themeStyle.legendFontSize;\n itemTextStyle.fontFamily = itemTextStyle.fontFamily || treemap.themeStyle.fontFamily;\n itemTextStyle.fontWeight = itemTextStyle.fontWeight || treemap.themeStyle.fontWeight;\n if (legendMode === 'Default') {\n legendWidth = (isNullOrUndefined(legendWidth)) ? treemap.areaRect.width : legendWidth;\n legendHeight = (isNullOrUndefined(legendHeight)) ? treemap.areaRect.height : legendHeight;\n var j = 0;\n for (var i = 0; i < this.legendCollections.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var legendItem = this.legendCollections[i];\n if (isNullOrUndefined(this.totalPages[this.page])) {\n this.totalPages[this.page] = { Page: (this.page + 1), Collection: [] };\n }\n var legendTextSize = measureText(treemap.enableHtmlSanitizer ?\n SanitizeHtmlHelper.sanitize(legendItem['legendName']) : legendItem['legendName'], itemTextStyle);\n this.textMaxWidth = Math.max(this.textMaxWidth, legendTextSize.width);\n if (i === 0) {\n startX_1 = shapeX = (leftPadding + (shapeWidth / 2));\n startY_1 = shapeY = topPadding + legendTitleSize.height + (shapeHeight > legendTextSize.height ? shapeHeight / 2\n : (legendTextSize.height / 4));\n }\n else {\n var maxSize = (legendTextSize.height > shapeHeight) ? legendTextSize.height : shapeHeight;\n if (orientation_1 === 'Horizontal') {\n var prvePositionX = (textLocation[j - 1].x + textLocation[j - 1].width) + textPadding + shapeWidth;\n if ((prvePositionX + shapePadding + legendTextSize.width) > legendWidth) {\n var nextPositionY = (textLocation[j - 1].y > (shapeLocation[j - 1].y + (shapeHeight / 2)) ?\n textLocation[j - 1].y : (shapeLocation[j - 1].y + (shapeHeight / 2))) + topPadding;\n if ((nextPositionY + maxSize) > legendHeight) {\n this.getPageChanged();\n j = 0;\n shapeLocation = [];\n textLocation = [];\n shapeX = startX_1;\n shapeY = startY_1;\n }\n else {\n shapeX = (shapeLocation[0].x);\n shapeY = (nextPositionY + (maxSize / 2));\n }\n }\n else {\n shapeX = (prvePositionX - (shapeWidth / 2));\n shapeY = (shapeLocation[j - 1]).y;\n }\n }\n else {\n var prevPositionY = textLocation[j - 1].y > shapeLocation[j - 1].y + (shapeHeight / 2) ?\n textLocation[j - 1].y : shapeLocation[j - 1].y + (shapeHeight / 2);\n if ((prevPositionY + topPadding + maxSize) > legendHeight) {\n var nextPositionX = (textLocation[j - 1].x + this.textMaxWidth + textPadding);\n if ((nextPositionX + shapePadding + legendTextSize.width) > legendWidth) {\n shapeX = startX_1;\n shapeY = startY_1;\n textLocation = [];\n shapeLocation = [];\n this.getPageChanged();\n j = 0;\n }\n else {\n shapeX = nextPositionX + (shapeWidth / 2);\n shapeY = (shapeLocation[0].y);\n }\n }\n else {\n shapeX = shapeLocation[j - 1].x;\n shapeY = prevPositionY + topPadding + (shapeHeight / 2);\n }\n }\n }\n textX = shapeX + (shapeWidth / 2) + shapePadding;\n textY = shapeY + (legendTextSize.height / 4);\n shapeLocation.push({ x: shapeX, y: shapeY });\n textLocation.push({ x: textX, y: textY, width: legendTextSize.width, height: (legendTextSize.height / 2) });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalPages[this.page]['Collection'].push({\n DisplayText: legendItem['legendName'], element: legendItem['gradientElement'],\n Shape: { x: shapeX, y: shapeY },\n Text: { x: textX, y: textY },\n Fill: legendItem['legendFill'],\n Data: legendItem['legendData'],\n Rect: {\n x: shapeLocation[j].x - (shapeWidth / 2),\n y: (shapeLocation[j].y - (shapeHeight / 2)) < (textY - legendTextSize.height) ?\n (shapeLocation[j].y - (shapeHeight / 2)) : (textY - legendTextSize.height),\n width: Math.abs((shapeLocation[j].x - (shapeWidth / 2)) - (textX + legendTextSize.width)),\n height: ((shapeHeight > legendTextSize.height) ? shapeHeight : legendTextSize.height)\n }\n });\n j++;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.totalPages[0]['Collection'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n collection.forEach(function (legendObj, index) {\n var legendRect = new Rect(legendObj['Rect']['x'], legendObj['Rect']['y'], legendObj['Rect']['width'], legendObj['Rect']['height']);\n if (index === 0) {\n startX_1 = legendRect.x;\n startY_1 = legendRect.y;\n }\n _this.widthIncrement = Math.max(_this.widthIncrement, Math.abs(startX_1 - (legendRect.x + legendRect.width)));\n _this.heightIncrement = Math.max(_this.heightIncrement, Math.abs(startY_1 - (legendRect.y + legendRect.height)));\n });\n legendWidth = ((this.widthIncrement < legendWidth) ? this.widthIncrement : legendWidth);\n legendHeight = ((this.heightIncrement < legendHeight) ? this.heightIncrement : legendHeight);\n this.legendItemRect = {\n x: collection[0]['Rect']['x'], y: collection[0]['Rect']['y'],\n width: legendWidth, height: legendHeight\n };\n }\n else {\n var legendLength = this.legendCollections.length;\n var rectWidth = (orientation_1 === 'Horizontal') ? (isNullOrUndefined(legendWidth)) ? (treemap.areaRect.width / legendLength) :\n (legendWidth / legendLength) : (isNullOrUndefined(legendWidth)) ? defaultSize : legendWidth;\n var rectHeight = (orientation_1 === 'Horizontal') ? (isNullOrUndefined(legendHeight)) ? defaultSize : legendHeight :\n (isNullOrUndefined(legendHeight)) ? (treemap.areaRect.height / legendLength) : (legendHeight / legendLength);\n startX_1 = 0;\n startY_1 = legendTitleSize.height + spacing;\n var textPadding_1 = 10;\n var placement = legend.labelPosition;\n var itemStartX = 0;\n var itemStartY = 0;\n var labelAction = legend.labelDisplayMode;\n var maxTextHeight = 0;\n var maxTextWidth = 0;\n for (var i = 0; i < this.legendCollections.length; i++) {\n startX_1 = (orientation_1 === 'Horizontal') ? (startX_1 + rectWidth) : startX_1;\n startY_1 = (orientation_1 === 'Horizontal') ? startY_1 : (startY_1 + rectHeight);\n var legendText = this.legendCollections[i]['legendName'];\n var itemTextSize = new Size(0, 0);\n if (labelAction === 'None') {\n itemTextSize = measureText(legendText, itemTextStyle);\n }\n else if (labelAction === 'Trim') {\n legendText = textTrim((orientation_1 === 'Horizontal' ? rectWidth : rectHeight), legendText, itemTextStyle);\n itemTextSize = measureText(legendText, itemTextStyle);\n }\n else {\n legendText = '';\n }\n maxTextHeight = Math.max(maxTextHeight, itemTextSize.height);\n maxTextWidth = Math.max(maxTextWidth, itemTextSize.width);\n if (itemTextSize.width > 0 && itemTextSize.height > 0) {\n if (orientation_1 === 'Horizontal') {\n textX = startX_1 + (rectWidth / 2);\n textY = (placement === 'After') ? (startY_1 + rectHeight + (itemTextSize.height / 2)) + textPadding_1 :\n (startY_1 - textPadding_1);\n }\n else {\n textX = (placement === 'After') ? startX_1 - (itemTextSize.width / 2) - textPadding_1\n : (startX_1 + rectWidth + itemTextSize.width / 2) + textPadding_1;\n textY = startY_1 + (rectHeight / 2) + (itemTextSize.height / 4);\n }\n }\n if (i === 0) {\n itemStartX = (orientation_1 === 'Horizontal') ? startX_1 : (placement === 'After') ?\n textX - (itemTextSize.width / 2) : startX_1;\n itemStartY = (orientation_1 === 'Horizontal') ? (placement === 'After') ? startY_1 :\n textY - (itemTextSize.height / 2) : startY_1;\n }\n if (i === legendLength - 1) {\n legendWidth = (orientation_1 === 'Horizontal') ? Math.abs((startX_1 + rectWidth) - itemStartX) :\n (rectWidth + maxTextWidth + textPadding_1);\n legendHeight = (orientation_1 === 'Horizontal') ? (rectHeight + (maxTextHeight / 2) + textPadding_1) :\n Math.abs((startY_1 + rectHeight) - itemStartY);\n }\n this.legendRenderingCollections.push({\n fill: this.legendCollections[i]['legendFill'], x: startX_1, y: startY_1,\n width: rectWidth, height: rectHeight, element: this.legendCollections[i]['gradientElement'],\n text: legendText, textX: textX, textY: textY,\n textWidth: itemTextSize.width, textHeight: itemTextSize.height,\n data: this.legendCollections[i]['legendData']\n });\n }\n this.legendItemRect = { x: itemStartX, y: itemStartY, width: legendWidth, height: legendHeight };\n }\n }\n };\n TreeMapLegend.prototype.getPageChanged = function () {\n this.page++;\n if (isNullOrUndefined(this.totalPages[this.page])) {\n this.totalPages[this.page] = { Page: (this.page + 1), Collection: [] };\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.findColorMappingLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n if (child && child.length > 0) {\n this.calculateLegendItems(child);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < child.length; i++) {\n this.findColorMappingLegendItems(child[i]);\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.findPaletteLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child;\n var legendFillColor;\n if (!isNullOrUndefined(this.treemap.drilledItems)) {\n if (this.treemap.drilledItems.length === 0 && !isNullOrUndefined(this.treemap.initialDrillDown.groupName)\n && isNullOrUndefined(this.treemap.drilledLegendItems)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var items = findChildren(data)['values'];\n for (var k = 0; k < items.length; k++) {\n if (items[k]['Name'] === this.treemap.initialDrillDown.groupName) {\n items[k]['isDrilled'] = !items[k]['isDrilled'];\n data = items[k];\n this.treemap.currentLevel = this.treemap.initialDrillDown.groupIndex;\n legendFillColor = this.treemap.palette.length > 0 ? this.treemap.palette[k % this.treemap.palette.length] :\n items[k]['data'][this.treemap.colorValuePath];\n break;\n }\n }\n }\n }\n if (this.treemap.enableDrillDown && !isNullOrUndefined(this.treemap.drilledLegendItems)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childElement = this.treemap.drilledLegendItems;\n if (!isNullOrUndefined(childElement['data']['options'])) {\n legendFillColor = childElement['data']['options']['fill'];\n }\n else {\n for (var k = 0; k < childElement.length; k++) {\n legendFillColor = this.treemap.palette.length > 0 ? this.treemap.palette[k % this.treemap.palette.length] :\n childElement[k]['data'][this.treemap.colorValuePath];\n break;\n }\n }\n if (childElement['data']['isDrilled']) {\n child = findChildren(childElement['data'])['values'];\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentElement = childElement['data']['parent'];\n child = findChildren(parentElement)['values'];\n }\n }\n else {\n child = findChildren(data)['values'];\n }\n var isDuplicate;\n var legendName;\n if (child && child.length > 0) {\n for (var i = 0; i < child.length; i++) {\n if (isNullOrUndefined(child[i]['data'][this.treemap.legendSettings.showLegendPath]) ||\n child[i]['data'][this.treemap.legendSettings.showLegendPath]) {\n legendName = child[i]['data'][this.treemap.legendSettings.valuePath] ?\n child[i]['data'][this.treemap.legendSettings.valuePath] : child[i]['name'];\n isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, legendName) : false;\n if (!isDuplicate) {\n this.legendCollections.push({\n legendName: legendName,\n legendFill: this.treemap.palette.length > 0 ? !isNullOrUndefined(this.treemap.currentLevel)\n ? legendFillColor : this.treemap.palette[i % this.treemap.palette.length] :\n child[i]['data'][this.treemap.colorValuePath],\n legendData: [],\n itemArea: child[i]['weight'],\n levelOrderName: child[i]['levelOrderName']\n });\n }\n }\n }\n this.legendCollections.sort(orderByArea);\n if (this.treemap.palette.length > 0) {\n for (var j = 0; j < this.legendCollections.length; j++) {\n this.legendCollections[j]['legendFill'] = !isNullOrUndefined(this.treemap.currentLevel)\n ? legendFillColor : this.treemap.palette[j % this.treemap.palette.length];\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.calculateLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isAddData;\n var fill;\n var rangeValue;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData;\n var legendText;\n var isLeafItem;\n var colorMapProcess = false;\n var colorMapping;\n var groupIndex;\n var leaf = this.treemap.leafItemSettings;\n var levels = this.treemap.levels;\n var equalValue;\n var position = this.treemap.legendSettings.position;\n var gradientElement;\n var x2;\n var y2;\n var actualValue;\n var isDuplicate;\n var isEqualColor;\n var isRange;\n var isDesaturation = false;\n var legendIndex = 0;\n var outfill;\n var labelLegend;\n var otherIndex;\n this.outOfRangeLegend = null;\n for (var i = 0; i < data.length; i++) {\n fill = '';\n isEqualColor = false;\n isRange = false;\n isDesaturation = false;\n currentData = data[i]['data'];\n groupIndex = data[i]['groupIndex'];\n isLeafItem = (this.treemap.levels.length === 0 || groupIndex === this.treemap.levels.length);\n colorMapping = isLeafItem ? leaf.colorMapping : levels[groupIndex].colorMapping;\n for (var j = 0; j < colorMapping.length; j++) {\n var colorMap = colorMapping[j];\n gradientElement = null;\n rangeValue = Number(currentData[this.treemap.rangeColorValuePath]);\n equalValue = currentData[this.treemap.equalColorValuePath];\n colorMap.value = !isNullOrUndefined(colorMap.value) ? colorMap.value.toString() : colorMap.value;\n if (!isNullOrUndefined(colorMap.from) && !isNullOrUndefined(colorMap.to) &&\n rangeValue >= colorMap.from && rangeValue <= colorMap.to && colorMap.showLegend) {\n colorMapProcess = true;\n isRange = true;\n actualValue = colorMap.from + ' - ' + colorMap.to;\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : colorMap.from + ' - ' + colorMap.to;\n fill = isNullOrUndefined(colorMap.color) ? fill : colorMap.color;\n isAddData = this.isAddNewLegendData(actualValue);\n }\n else if (!isNullOrUndefined(colorMap.value) && equalValue === colorMap.value && colorMap.showLegend) {\n colorMapProcess = true;\n isEqualColor = true;\n actualValue = colorMap.value.toString();\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : colorMap.value.toString();\n fill = isNullOrUndefined(colorMap.color) ? fill :\n Object.prototype.toString.call(colorMap.color) === '[object Array]' ? colorMap.color[0] : colorMap.color;\n isAddData = this.isAddNewLegendData(actualValue);\n }\n if (colorMapProcess && isNullOrUndefined(colorMap.value) && colorMap.maxOpacity && colorMap.minOpacity\n && this.treemap.legendSettings.mode === 'Interactive') {\n var colors = [];\n isDesaturation = true;\n if (Object.prototype.toString.call(colorMap.color) === '[object Array]') {\n for (var q = 0; q < colorMap.color.length; q++) {\n var offsetColor = 100 / (colorMap.color.length - 1);\n var offsetValue = q * offsetColor + '%';\n var stop1Color = { colorStop: offsetValue.toString(), color: colorMap.color[q] };\n colors.push(stop1Color);\n }\n }\n else {\n var stop1Color = { colorStop: '0%', color: fill };\n var stop2Color = { colorStop: '100%', color: fill };\n colors.push(stop1Color);\n colors.push(stop2Color);\n }\n x2 = position === 'Top' || position === 'Bottom' ? '100%' : '0%';\n y2 = position === 'Top' || position === 'Bottom' ? '0%' : '100%';\n var gradient = {\n id: 'groupIndex_' + groupIndex + '_colorIndex_' + this.gradientCount, x1: '0%', y1: '0%', x2: x2, y2: y2\n };\n gradientElement = this.treemap.renderer.drawGradient('linearGradient', gradient, colors).childNodes[0];\n if (Object.prototype.toString.call(colorMap.color) !== '[object Array]') {\n gradientElement.childNodes[0].setAttribute('stop-opacity', colorMap.minOpacity.toString());\n gradientElement.childNodes[1].setAttribute('stop-opacity', colorMap.maxOpacity.toString());\n }\n this.defsElement.appendChild(gradientElement);\n this.gradientCount++;\n }\n isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, legendText) : false;\n if (isAddData && isAddData['process'] && colorMapProcess && !isDuplicate) {\n colorMapProcess = false;\n fill = ((Object.prototype.toString.call(colorMap.color) === '[object Array]')) && isNullOrUndefined(gradientElement)\n && isNullOrUndefined(colorMap.value) ? this.legendGradientColor(colorMap, legendIndex) : fill;\n this.legendCollections.push({\n actualValue: actualValue, levelIndex: !isLeafItem ? j : -1, leafIndex: isLeafItem ? j : -1,\n legendName: legendText, legendFill: fill, legendData: [], groupIndex: !isLeafItem ? groupIndex : -1,\n gradientElement: !isNullOrUndefined(gradientElement) ? gradientElement : isNullOrUndefined(colorMap.value)\n ? this.legendLinearGradient : null, name: data[i]['name'],\n opacity: this.treemap.legendSettings.opacity, borderColor: this.treemap.legendSettings.border.color,\n borderWidth: this.treemap.legendSettings.border.width\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[this.legendCollections.length - 1]['legendData'].push(data[i]);\n legendIndex++;\n }\n else if (colorMapProcess) {\n colorMapProcess = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[isAddData['value']]['legendData'].push(data[i]);\n }\n if (!isRange && !isDesaturation && !isEqualColor) {\n if (isNullOrUndefined(colorMap.from) && isNullOrUndefined(colorMap.to)\n && isNullOrUndefined(colorMap.minOpacity) &&\n isNullOrUndefined(colorMap.maxOpacity) && isNullOrUndefined(colorMap.value) &&\n !isNullOrUndefined(colorMap.color)) {\n outfill = ((Object.prototype.toString.call(colorMap.color) === '[object Array]'))\n ? colorMap.color[0] : colorMap.color;\n labelLegend = !isNullOrUndefined(colorMap.label) ? colorMap.label : 'Others';\n isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, labelLegend) : false;\n if (isNullOrUndefined(this.outOfRangeLegend) && !isDuplicate) {\n this.legendCollections.push({\n actualValue: labelLegend, legendData: [],\n legendName: labelLegend, legendFill: outfill, groupIndex: (!isLeafItem || groupIndex > -1) ? groupIndex : -1\n });\n otherIndex = this.legendCollections.length;\n this.outOfRangeLegend = this.legendCollections[otherIndex - 1];\n legendIndex++;\n }\n for (var k = this.legendCollections.length - 1; k >= 0; k--) {\n if (this.legendCollections[k]['actualValue'] === (colorMap.label || 'Others')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[k]['legendData'].push(data[i]);\n break;\n }\n }\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.removeDuplicates = function (legendCollection, text) {\n var isDuplicate = false;\n for (var i = 0; i < legendCollection.length; i++) {\n if (legendCollection[i]['legendName'] === text) {\n isDuplicate = true;\n break;\n }\n else {\n continue;\n }\n }\n return isDuplicate;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.isAddNewLegendData = function (legendText) {\n var newDataProcess;\n var itemValue;\n if (this.legendCollections.length === 0) {\n newDataProcess = true;\n }\n else {\n for (var j = 0; j < this.legendCollections.length; j++) {\n if (legendText === this.legendCollections[j]['actualValue']) {\n newDataProcess = false;\n itemValue = j;\n break;\n }\n else if (j === this.legendCollections.length - 1) {\n newDataProcess = true;\n }\n }\n }\n return { process: newDataProcess, value: itemValue };\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To draw the legend\n *\n * @private\n */\n TreeMapLegend.prototype.drawLegend = function () {\n var legend = this.treemap.legendSettings;\n var render = this.treemap.renderer;\n var fill;\n var textOptions;\n var gradientElement;\n var textFont = legend.textStyle;\n this.legendGroup = render.createGroup({ id: this.treemap.element.id + '_Legend_Group' });\n this.renderLegendBorder();\n this.renderLegendTitle();\n if (legend.mode === 'Default') {\n this.drawLegendItem(this.currentPage);\n }\n else {\n for (var i = 0; i < this.legendRenderingCollections.length; i++) {\n var itemId = this.treemap.element.id + '_Legend_Index_' + i;\n var textId = this.treemap.element.id + '_Legend_Index_' + i + '_Text';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = this.legendRenderingCollections[i];\n gradientElement = item['element'];\n fill = gradientElement ? 'url(#' + gradientElement.id + ')' : item['fill'];\n var bounds = new Rect(item['x'], item['y'], item['width'], item['height']);\n var textLocation = new Location(item['textX'], item['textY']);\n var rectOptions = new RectOption(itemId, fill, legend.shapeBorder, legend.opacity, bounds);\n if (this.treemap.enableRtl) {\n if (this.treemap.legendSettings.position === 'Left' || this.treemap.legendSettings.position === 'Right'\n || (this.treemap.legendSettings.position === 'Auto'\n && this.treemap.availableSize.width >= this.treemap.availableSize.height)) {\n rectOptions.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - (this.translate.y + rectOptions.height) - Math.abs(this.legendBorderRect.y - rectOptions.y);\n textLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - (this.translate.y) + (item['textHeight'] / 2)\n - Math.abs(this.legendBorderRect.y - textLocation.y);\n }\n else {\n rectOptions.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + rectOptions.width)\n - Math.abs(this.legendBorderRect.x - rectOptions.x);\n textLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - this.translate.x - Math.abs(this.legendBorderRect.x - textLocation.x);\n }\n }\n var text = this.treemap.enableHtmlSanitizer ? (SanitizeHtmlHelper.sanitize(item['text'])) : item['text'];\n textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'middle', text, '', '');\n renderTextElement(textOptions, textFont, textFont.color || this.treemap.themeStyle.legendTextColor, this.legendGroup);\n var legendElement = render.drawRectangle(rectOptions);\n legendElement.setAttribute('tabindex', this.treemap.tabIndex.toString());\n legendElement.style.outline = '';\n this.legendGroup.appendChild(legendElement);\n }\n }\n legendMaintain(this.treemap, this.legendGroup);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.defaultLegendRtlLocation = function (collection, spacing, treemap, legend) {\n var shapeLocation = collection['Shape'];\n var textLocation = collection['Text'];\n var legendText = collection['DisplayText'];\n var textSize = measureText(legendText, legend.textStyle);\n shapeLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + spacing) - Math.abs(this.legendBorderRect.x - shapeLocation.x);\n textLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + textSize.width + spacing) - Math.abs(this.legendBorderRect.x - textLocation.x);\n if (treemap.legendSettings.position === 'Left' || treemap.legendSettings.position === 'Right'\n || (treemap.legendSettings.position === 'Auto'\n && this.treemap.availableSize.width >= this.treemap.availableSize.height)) {\n shapeLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - this.translate.y - Math.abs(Math.abs(this.legendBorderRect.y) - shapeLocation.y) - (legend.shapeHeight / 2);\n textLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - this.translate.y - Math.abs(Math.abs(this.legendBorderRect.y) - textLocation.y);\n }\n return { shapeLocation: shapeLocation, textLocation: textLocation };\n };\n TreeMapLegend.prototype.drawLegendItem = function (page) {\n var _this = this;\n var treemap = this.treemap;\n var spacing = 10;\n var legend = treemap.legendSettings;\n var shapeSize = new Size(legend.shapeWidth, legend.shapeHeight);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var textOptions;\n var legendRtlLocation;\n var render = treemap.renderer;\n var shapeBorder = legend.shapeBorder;\n var eventArgs;\n if (page >= 0 && page < this.totalPages.length) {\n if (document.getElementById(this.legendGroup.id)) {\n document.getElementById(this.legendGroup.id).remove();\n }\n var isLineShape_1 = (legend.shape === 'HorizontalLine' || legend.shape === 'VerticalLine' || legend.shape === 'Cross');\n var strokeColor_1 = isLineShape_1 ? isNullOrUndefined(legend.fill) ? '#000000' : legend.fill : shapeBorder.color;\n var strokeWidth_1 = isLineShape_1 ? (shapeBorder.width === 0) ? 1 : shapeBorder.width : shapeBorder.width;\n var _loop_1 = function (i) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this_1.totalPages[page]['Collection'][i];\n var legendText = this_1.treemap.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(collection['DisplayText']) : collection['DisplayText'];\n var legendElement = render.createGroup({ id: treemap.element.id + '_Legend_Index_' + i });\n legendElement.setAttribute('aria-label', legendText + ' Legend');\n legendElement.setAttribute('role', 'region');\n legendElement.setAttribute('tabindex', this_1.treemap.tabIndex.toString());\n legendElement.style.outline = 'none';\n var shapeId = treemap.element.id + '_Legend_Shape_Index_' + i;\n var textId = treemap.element.id + '_Legend_Text_Index_' + i;\n var shapeLocation = collection['Shape'];\n var textLocation = collection['Text'];\n if (treemap.enableRtl) {\n legendRtlLocation = this_1.defaultLegendRtlLocation(collection, spacing, treemap, legend);\n shapeLocation = legendRtlLocation['shapeLocation'];\n textLocation = legendRtlLocation['textLocation'];\n }\n eventArgs = {\n cancel: false, name: legendItemRendering, treemap: treemap, fill: collection['Fill'],\n shape: legend.shape, imageUrl: legend.imageUrl\n };\n treemap.trigger(legendItemRendering, eventArgs, function (observedArgs) {\n var renderOptions = new PathOption(shapeId, observedArgs.fill, strokeWidth_1, isLineShape_1 ? collection['Fill'] : strokeColor_1, legend.opacity, '');\n legendElement.appendChild(drawSymbol(shapeLocation, observedArgs.shape, shapeSize, observedArgs.imageUrl, renderOptions));\n textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'start', legendText, '', '');\n renderTextElement(textOptions, legend.textStyle, legend.textStyle.color || treemap.themeStyle.legendTextColor, legendElement);\n _this.legendGroup.appendChild(legendElement);\n });\n };\n var this_1 = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (var i = 0; i < this.totalPages[page]['Collection'].length; i++) {\n _loop_1(i);\n }\n var pagingGroup = void 0;\n var width = spacing;\n var height = (spacing / 2);\n if (this.page !== 0) {\n var pagingText = (page + 1) + '/' + this.totalPages.length;\n var pagingFont = legend.textStyle;\n var pagingTextSize = measureText(pagingText, pagingFont);\n var leftPageX = (this.legendItemRect.x + this.legendItemRect.width) - pagingTextSize.width -\n (width * 2) - spacing;\n var rightPageX = (this.legendItemRect.x + this.legendItemRect.width);\n var locY = (this.legendItemRect.y + this.legendItemRect.height) + (height / 2) + spacing;\n var pageTextX = rightPageX - width - (pagingTextSize.width / 2) - (spacing / 2);\n pagingGroup = render.createGroup({ id: treemap.element.id + '_Legend_Paging_Group' });\n var leftPageElement = render.createGroup({ id: treemap.element.id + '_Legend_Left_Paging_Group' });\n var rightPageElement = render.createGroup({ id: treemap.element.id + '_Legend_Right_Paging_Group' });\n var rightPath = ' M ' + rightPageX + ' ' + locY + ' L ' + (rightPageX - width) + ' ' + (locY - height) +\n ' L ' + (rightPageX - width) + ' ' + (locY + height) + ' z ';\n var leftPath = ' M ' + leftPageX + ' ' + locY + ' L ' + (leftPageX + width) + ' ' + (locY - height) +\n ' L ' + (leftPageX + width) + ' ' + (locY + height) + ' z ';\n var leftPageOptions = new PathOption(treemap.element.id + '_Left_Page', '#a6a6a6', 0, '#a6a6a6', 1, '', leftPath);\n leftPageElement.appendChild(render.drawPath(leftPageOptions));\n var leftRectPageOptions = new RectOption(treemap.element.id + '_Left_Page_Rect', 'transparent', {}, 1, new Rect(leftPageX - (width / 2), (locY - (height * 2)), width * 2, spacing * 2), '');\n leftPageElement.appendChild(render.drawRectangle(leftRectPageOptions));\n this.wireEvents(leftPageElement);\n var rightPageOptions = new PathOption(treemap.element.id + '_Right_Page', '#a6a6a6', 0, '#a6a6a6', 1, '', rightPath);\n rightPageElement.appendChild(render.drawPath(rightPageOptions));\n var rightRectPageOptions = new RectOption(treemap.element.id + '_Right_Page_Rect', 'transparent', {}, 1, new Rect((rightPageX - width), (locY - height), width, spacing), '');\n rightPageElement.appendChild(render.drawRectangle(rightRectPageOptions));\n this.wireEvents(rightPageElement);\n pagingGroup.appendChild(leftPageElement);\n pagingGroup.appendChild(rightPageElement);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var pageTextOptions = {\n 'id': treemap.element.id + '_Paging_Text',\n 'x': pageTextX,\n 'y': locY + (pagingTextSize.height / 4),\n 'fill': '#a6a6a6',\n 'font-size': '14px',\n 'font-style': pagingFont.fontStyle,\n 'font-family': pagingFont.fontFamily,\n 'font-weight': pagingFont.fontWeight,\n 'text-anchor': 'middle',\n 'transform': '',\n 'opacity': 1,\n 'dominant-baseline': '',\n 'role': 'region',\n 'aria-label': pagingText\n };\n pagingGroup.appendChild(render.createText(pageTextOptions, pagingText));\n this.legendGroup.appendChild(pagingGroup);\n }\n }\n };\n TreeMapLegend.prototype.renderLegendBorder = function () {\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n var legendTitle = legend.title.text;\n var spacing = 10;\n var textStyle = legend.titleStyle;\n var title = textTrim((this.legendItemRect.width + (spacing * 2)), legendTitle, textStyle);\n var textSize = measureText(title, textStyle);\n this.legendBorderRect = new Rect((this.legendItemRect.x - spacing), (this.legendItemRect.y - spacing - textSize.height), (this.legendItemRect.width) + (spacing * 2), (this.legendItemRect.height) + (spacing * 2) + textSize.height +\n (legend.mode === 'Interactive' ? 0 : (this.page !== 0) ? spacing : 0));\n var borderStyle = {\n color: legend.border.color || this.treemap.themeStyle.legendBorderColor,\n width: legend.border.width || this.treemap.themeStyle.legendBorderWidth\n };\n var renderOptions = new RectOption(treemap.element.id + '_Legend_Border', legend.background, borderStyle, 1, this.legendBorderRect, '');\n var legendBorder = treemap.renderer.drawRectangle(renderOptions);\n legendBorder.style.pointerEvents = 'none';\n this.legendGroup.appendChild(legendBorder);\n this.getLegendAlignment(treemap, this.legendBorderRect.width, this.legendBorderRect.height, legend);\n this.legendGroup.setAttribute('transform', 'translate( ' + (this.translate.x + (-(this.legendBorderRect.x))) + ' ' +\n (this.translate.y + (-(this.legendBorderRect.y))) + ' )');\n treemap.svgObject.appendChild(this.legendGroup);\n };\n TreeMapLegend.prototype.renderLegendTitle = function () {\n var legend = this.treemap.legendSettings;\n var textStyle = legend.titleStyle;\n var legendTitle = this.treemap.enableHtmlSanitizer ? (SanitizeHtmlHelper.sanitize(legend.title.text)) : legend.title.text;\n var textOptions;\n var spacing = 10;\n var trimTitle = textTrim((this.legendItemRect.width + (spacing * 2)), legendTitle, textStyle);\n var textSize = measureText(trimTitle, textStyle);\n if (legendTitle) {\n textOptions = new TextOption(this.treemap.element.id + '_LegendTitle', (this.legendItemRect.x) + (this.legendItemRect.width / 2), this.legendItemRect.y - (textSize.height / 2) - (spacing / 2), 'middle', trimTitle, '');\n var textElement = renderTextElement(textOptions, textStyle, textStyle.color ||\n this.treemap.themeStyle.legendTitleColor, this.legendGroup);\n textElement.setAttribute('role', 'region');\n textElement.setAttribute('aria-label', legendTitle);\n }\n };\n /**\n * To rendered the interactive pointer\n *\n * @param {PointerEvent | TouchEvent} e - Specifies the pointer argument.\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.renderInteractivePointer = function (e) {\n var treemap = this.treemap;\n var target = e.target;\n var interactiveId = treemap.element.id + '_Interactive_Legend';\n var pointerDrawn = false;\n target = !(e.type.indexOf('touch') > -1) ? target :\n document.elementFromPoint(e.changedTouches[0].clientX, e.changedTouches[0].clientY);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetItem;\n var legend = treemap.legendSettings;\n if (target.id.indexOf('_Item_Index') > -1 && legend.visible && this.legendRenderingCollections.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = void 0;\n var legendRect = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data = void 0;\n var fill = void 0;\n var stroke = void 0;\n var strokeWidth = void 0;\n var legendElement = void 0;\n targetItem = treemap.layout.renderItems[parseFloat(target.id.split('_Item_Index_')[1])];\n var svgRect = treemap.svgObject.getBoundingClientRect();\n for (var i = 0; i < this.legendCollections.length && !pointerDrawn; i++) {\n currentData = this.legendCollections[i];\n legendElement = document.getElementById(treemap.element.id + '_Legend_Index_' + i);\n legendRect = legendElement.getBoundingClientRect();\n var rect = new Rect(Math.abs(legendRect.left - svgRect.left), Math.abs(legendRect.top - svgRect.top), legendRect.width, legendRect.height);\n fill = legendElement.getAttribute('fill');\n stroke = legend.shapeBorder.color;\n strokeWidth = legend.shapeBorder.width;\n if (!isNullOrUndefined(currentData['legendData']) && currentData['legendData'].length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data = currentData['legendData'];\n var valuePath = treemap.rangeColorValuePath;\n if (targetItem['levelOrderName'].indexOf(this.legendCollections[i]['legendName']) > -1) {\n this.drawInteractivePointer(legend, fill, stroke, interactiveId, strokeWidth, rect);\n pointerDrawn = true;\n }\n else {\n for (var j = 0; j < data.length; j++) {\n if ((treemap.rangeColorValuePath && treemap.leafItemSettings.colorMapping.length > 0)\n ? data[j]['data'][valuePath] === targetItem['data'][valuePath]\n : (data[j]['levelOrderName'] === targetItem['levelOrderName'] ||\n data[j]['levelOrderName'].indexOf(targetItem['levelOrderName']) > -1)) {\n this.drawInteractivePointer(legend, fill, stroke, interactiveId, strokeWidth, rect);\n pointerDrawn = true;\n break;\n }\n }\n }\n }\n else if (this.treemap.leafItemSettings.colorMapping.length === 0 && this.treemap.palette) {\n if (targetItem['levelOrderName'].indexOf(currentData['levelOrderName']) > -1) {\n this.drawInteractivePointer(legend, fill, stroke, interactiveId, strokeWidth, rect);\n pointerDrawn = true;\n }\n }\n }\n }\n else {\n this.removeInteractivePointer();\n }\n };\n TreeMapLegend.prototype.drawInteractivePointer = function (legend, fill, stroke, id, strokeWidth, rect) {\n var path;\n var locX;\n var locY;\n var height = 10;\n var width = 10;\n var direction = (legend.orientation === 'None') ? (legend.position === 'Top' || legend.position === 'Bottom')\n ? 'Horizontal' : 'Vertical' : legend.orientation;\n if (direction === 'Horizontal') {\n if (!legend.invertedPointer) {\n locX = rect.x + (rect.width / 2);\n locY = rect.y;\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX - width) + ' ' + (locY - height) +\n ' L ' + (locX + width) + ' ' + (locY - height) + ' Z ';\n }\n else {\n locX = rect.x + (rect.width / 2);\n locY = rect.y + (rect.height);\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX - width) + ' ' + (locY + height) +\n ' L ' + (locX + width) + ' ' + (locY + height) + ' Z ';\n }\n }\n else {\n if (!legend.invertedPointer) {\n locX = rect.x + (rect.width);\n locY = rect.y + (rect.height / 2);\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX + width) + ' ' + (locY - height) +\n ' L ' + (locX + width) + ' ' + (locY + height) + ' z ';\n }\n else {\n locX = rect.x;\n locY = rect.y + (rect.height / 2);\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX - width) + ' ' + (locY - height) +\n ' L ' + (locX - width) + ' ' + (locY + height) + ' z ';\n }\n }\n var pathOptions = new PathOption(id, fill, strokeWidth, stroke, 1, '', path);\n this.treemap.svgObject.appendChild(this.treemap.renderer.drawPath(pathOptions));\n };\n TreeMapLegend.prototype.getLegendAlignment = function (treemap, width, height, legend) {\n var x;\n var y;\n var spacing = 10;\n var totalRect;\n // eslint-disable-next-line prefer-const\n totalRect = extend({}, treemap.areaRect, totalRect, true);\n var areaX = totalRect.x;\n var areaY = totalRect.y;\n var areaHeight = totalRect.height;\n var areaWidth = totalRect.width;\n var totalWidth = treemap.availableSize.width;\n var totalHeight = treemap.availableSize.height;\n var position = legend.position === 'Auto' ? (totalWidth > totalHeight) ? 'Right' : 'Bottom' : legend.position;\n if (legend.position === 'Float') {\n this.translate = legend.location;\n }\n else {\n switch (position) {\n case 'Top':\n case 'Bottom':\n totalRect.height = (areaHeight - height);\n x = (totalWidth / 2) - (width / 2);\n y = (position === 'Top') ? areaY : (areaY + totalRect.height) + spacing;\n totalRect.y = (position === 'Top') ? areaY + height + spacing : areaY;\n break;\n case 'Left':\n case 'Right':\n totalRect.width = (areaWidth - width);\n x = (position === 'Left') ? areaX : areaX + totalRect.width;\n y = (totalHeight / 2) - (height / 2);\n totalRect.x = (position === 'Left') ? areaX + width : areaX;\n break;\n }\n switch (legend.alignment) {\n case 'Near':\n if (position === 'Top' || position === 'Bottom') {\n x = totalRect.x;\n }\n else {\n y = totalRect.y;\n }\n break;\n case 'Far':\n if (position === 'Top' || position === 'Bottom') {\n x = totalWidth - width;\n }\n else {\n y = totalHeight - height;\n }\n break;\n }\n this.treemap.totalRect = totalRect;\n this.translate = new Location(x, y);\n }\n };\n /**\n * @param {PointerEvent} e - Specifies the event.\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.mouseUpHandler = function (e) {\n this.renderInteractivePointer(e);\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeInteractivePointer.bind(this), 3000);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To remove the interactive pointer\n *\n * @private\n */\n TreeMapLegend.prototype.removeInteractivePointer = function () {\n if (document.getElementById(this.treemap.element.id + '_Interactive_Legend')) {\n var legendElementId = document.getElementById(this.treemap.element.id + '_Interactive_Legend');\n legendElementId.parentNode.removeChild(legendElementId);\n }\n };\n /**\n * To change the next page\n *\n * @param {PointerEvent} e - Specifies the pointer event argument.\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.changeNextPage = function (e) {\n this.currentPage = (e.target.id.indexOf('_Left_Page_') > -1) ? (this.currentPage - 1) :\n (this.currentPage + 1);\n if (this.currentPage >= 0 && this.currentPage < this.totalPages.length) {\n this.drawLegend();\n }\n else {\n this.currentPage = (e.target.id.indexOf('_Left_Page_') > -1) ? 0 : this.totalPages.length - 1;\n }\n };\n /**\n * Wire events for event handler\n *\n * @param {Element} element - Specifies the element.\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.wireEvents = function (element) {\n EventHandler.add(element, Browser.touchStartEvent, this.changeNextPage, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To add the event listener\n *\n * @private\n */\n TreeMapLegend.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.renderInteractivePointer, this);\n this.treemap.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To remove the event listener\n *\n * @private\n */\n TreeMapLegend.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.renderInteractivePointer);\n this.treemap.off(Browser.touchEndEvent, this.mouseUpHandler);\n };\n /**\n * Get module name.\n *\n * @returns {string} Returns the legend module name.\n */\n TreeMapLegend.prototype.getModuleName = function () {\n return 'treeMapLegend';\n };\n /**\n * To destroy the legend.\n *\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.destroy = function () {\n clearTimeout(this.clearTimeout);\n this.clearTimeout = null;\n this.legendRenderingCollections = [];\n this.legendCollections = [];\n this.outOfRangeLegend = null;\n this.totalPages = [];\n this.translate = null;\n this.legendBorderRect = null;\n this.legendGroup = null;\n this.legendNames = [];\n this.defsElement = null;\n this.legendLinearGradient = null;\n this.legendInteractiveGradient = [];\n this.legendItemRect = null;\n this.removeEventListener();\n this.treemap = null;\n };\n /**\n * Get the gradient color for interactive legend.\n *\n * @param {ColorMappingModel} colorMap - Specifies the color mapping instance.\n * @param {number} legendIndex - Specifies the index of legend.\n * @returns {string} - Returns the legend color.\n * @private\n */\n TreeMapLegend.prototype.legendGradientColor = function (colorMap, legendIndex) {\n var legendFillColor;\n var xmlns = 'http://www.w3.org/2000/svg';\n if (!isNullOrUndefined(colorMap.color) && Object.prototype.toString.call(colorMap.color) === '[object Array]') {\n var defElement = this.treemap.renderer.createDefs();\n var linerGradientEle = document.createElementNS(xmlns, 'linearGradient');\n var opacity = 1;\n var position = this.treemap.legendSettings.position;\n var x2 = position === 'Top' || position === 'Bottom' ? '100' : '0';\n var y2 = position === 'Top' || position === 'Bottom' ? '0' : '100';\n linerGradientEle.setAttribute('id', 'linear_' + legendIndex);\n linerGradientEle.setAttribute('x1', 0 + '%');\n linerGradientEle.setAttribute('y1', 0 + '%');\n linerGradientEle.setAttribute('x2', x2 + '%');\n linerGradientEle.setAttribute('y2', y2 + '%');\n for (var b = 0; b < colorMap.color.length; b++) {\n var offsetColor = 100 / (colorMap.color.length - 1);\n var stopEle = document.createElementNS(xmlns, 'stop');\n stopEle.setAttribute('offset', b * offsetColor + '%');\n stopEle.setAttribute('stop-color', colorMap.color[b]);\n stopEle.setAttribute('stop-opacity', opacity.toString());\n linerGradientEle.appendChild(stopEle);\n }\n defElement.appendChild(linerGradientEle);\n this.legendLinearGradient = linerGradientEle;\n var color = 'url(' + '#linear_' + legendIndex + ')';\n this.defsElement.appendChild(linerGradientEle);\n legendFillColor = color;\n }\n return legendFillColor;\n };\n return TreeMapLegend;\n}());\nexport { TreeMapLegend };\n","import { Browser, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { itemHighlight, itemSelected } from '../model/constants';\nimport { findHightLightItems, removeClassNames, applyOptions, removeShape, removeLegend, removeSelectionWithHighlight, setColor, getLegendIndex, pushCollection, setItemTemplateContent } from '../utils/helper';\n/**\n * Performing treemap highlight\n */\nvar TreeMapHighlight = /** @class */ (function () {\n function TreeMapHighlight(treeMap) {\n this.target = 'highlight';\n this.shapeTarget = 'highlight';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.shapeHighlightCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendHighlightCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentElement = [];\n this.treemap = treeMap;\n this.addEventListener();\n }\n /**\n * Mouse Move event in highlight\n *\n * @param {PointerEvent} e - Specifies the pointer argument.\n * @returns {boolean} - return the highlight process is true or false.\n * @private\n */\n TreeMapHighlight.prototype.mouseMove = function (e) {\n var targetEle = e.target;\n return this.highlightOnMouseMove(targetEle);\n };\n /**\n * This method highlights the target element for mouse move event.\n *\n * @param {Element} targetElement - Specifies the target element to highlight.\n * @returns {boolean} - return the highlight process is true or false.\n * @private\n */\n TreeMapHighlight.prototype.highlightOnMouseMove = function (targetElement) {\n var treemap = this.treemap;\n var processHighlight;\n var targetId = targetElement.id;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var eventArgs;\n var items = [];\n var highlight = this.treemap.highlightSettings;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n var highLightElements = [];\n var process;\n var treeMapElement;\n var element;\n var orders;\n var selectionModule = this.treemap.treeMapSelectionModule;\n var shapeSelected = false;\n if (selectionModule && selectionModule.legendSelectionCollection.length > 0) {\n for (var i = 0; i < selectionModule.legendSelectionCollection.length; i++) {\n for (var j = 0; j < selectionModule.legendSelectionCollection[i]['ShapeCollection']['Elements'].length; j++) {\n var selectedElementIndex = parseFloat(selectionModule.legendSelectionCollection[i]['ShapeCollection']['Elements'][j].id.split('Item_Index_')[1].split('_')[0]);\n var targetElementIndex = targetId.indexOf('_Item_Index_') > -1 ? parseFloat(targetId.split('Item_Index_')[1].split('_')[0]) : null;\n if (selectionModule.legendSelectionCollection[i]['ShapeCollection']['Elements'][j].id === targetId ||\n selectedElementIndex === targetElementIndex) {\n shapeSelected = true;\n break;\n }\n }\n }\n }\n if (targetId.indexOf('_Item_Index') > -1 && !shapeSelected) {\n if (this.highLightId !== targetId ||\n (this.legendHighlightCollection[0] ? this.legendHighlightCollection[0]['ShapeCollection']['Elements'].length > 1 : false)) {\n treeMapElement = document.getElementById(treemap.element.id + '_TreeMap_' + treemap.layoutType + '_Layout');\n var selectionElements = document.getElementsByClassName('treeMapSelection');\n item = this.treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n var index = void 0;\n if (this.treemap.legendSettings.visible) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n var length_1 = this.treemap.treeMapLegendModule.legendCollections.length;\n index = (!treemap.legendSettings.removeDuplicateLegend && treemap.palette && treemap.palette.length > 0 &&\n treemap.leafItemSettings.colorMapping.length === 0 && treemap.levels.length === 0) ?\n parseFloat(targetId.split('_Item_Index_')[1]) : getLegendIndex(length_1, item, treemap);\n if (isNullOrUndefined(index)) {\n removeLegend(this.legendHighlightCollection, treemap);\n removeLegend(this.shapeHighlightCollection, treemap);\n this.legendHighlightCollection = [];\n treemap.treeMapLegendModule.removeInteractivePointer();\n }\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index) : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index);\n if (this.shapeElement !== null) {\n if (selectionModule ? this.shapeElement.id !== ((selectionModule && selectionModule.shapeElement)\n ? selectionModule.shapeElement.id : null) : true) {\n this.currentElement.push({ currentElement: this.shapeElement });\n removeLegend(this.shapeHighlightCollection, treemap);\n this.shapeHighlightCollection.push({ legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n var legendText = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Text_Index_' + index)\n : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index + '_Text');\n setColor(legendText, highlight.fill, highlight.opacity, null, null);\n setColor(this.shapeElement, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n this.target = 'highlight';\n }\n else if (this.currentElement.length > 0 && this.currentElement[this.currentElement.length - 1]['currentElement'] !== this.shapeElement) {\n removeSelectionWithHighlight(this.shapeHighlightCollection, this.currentElement, treemap);\n this.highLightId = '';\n }\n }\n }\n orders = findHightLightItems(item, [], highlight.mode, treemap);\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n process = true;\n var valuePath = (treemap.rangeColorValuePath !== '') ? treemap.rangeColorValuePath : null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetItem = treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n item = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])];\n for (var j = 0; j < selectionElements.length; j++) {\n if (element.id === selectionElements[j].id ||\n element.id === selectionElements[j].parentElement.id) {\n process = false;\n break;\n }\n }\n if (orders.indexOf(item['levelOrderName']) > -1 && process &&\n (!isNullOrUndefined(valuePath) ?\n (item['data'][valuePath] === targetItem['data'][valuePath] ||\n (highlight.mode !== 'Item' && treemap.levels.length > 0)) : true)) {\n highLightElements.push(element);\n items.push(item);\n }\n }\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n for (var k = 0; k < highLightElements.length; k++) {\n element = highLightElements[k];\n applyOptions(element.childNodes[0], { border: highlight.border, fill: highlight.fill, opacity: highlight.opacity });\n element.classList.add('treeMapHighLight');\n this.highLightId = targetId;\n }\n eventArgs = { cancel: false, name: itemHighlight, treemap: treemap, items: items, elements: highLightElements };\n treemap.trigger(itemHighlight, eventArgs);\n }\n }\n else if (targetId.indexOf('_Legend_Shape') > -1 || targetId.indexOf('_Legend_Index') > -1 || targetId.indexOf('_Legend_Text_Index') > -1) {\n if (!isNullOrUndefined(selectionModule)) {\n selectionModule.legendSelectId = !isNullOrUndefined(treemap.legendId[0]) ? treemap.legendId[0] : null;\n }\n var selectedLegendIndex = selectionModule && selectionModule.legendSelectId ?\n parseFloat(selectionModule.legendSelectId.split('Index_')[1]) :\n (selectionModule && selectionModule.shapeSelectId ? parseFloat(selectionModule.shapeSelectId.split('Index_')[1]) : null);\n var targetIndex = this.treemap.legendSettings.mode === 'Default' ? (targetId.indexOf('Text') === -1 ? parseFloat(targetId.split('_Legend_Shape_Index_')[1]) : parseFloat(targetId.split('_Legend_Text_Index_')[1]))\n : parseFloat(targetId.split('_Legend_Index_')[1]);\n if (this.treemap.legendSettings.visible && targetIndex !== selectedLegendIndex) {\n var itemIndex = void 0;\n var groupIndex = void 0;\n var length_2;\n var valuePath = (treemap.rangeColorValuePath !== '') ? treemap.rangeColorValuePath : null;\n var targetEle = document.getElementById(targetId);\n if (this.shapeTarget === 'highlight') {\n removeLegend(this.legendHighlightCollection, this.treemap);\n this.legendHighlightCollection = [];\n }\n this.shapeTarget = 'highlight';\n var dataLength = this.treemap.treeMapLegendModule.legendCollections[targetIndex]['legendData'].length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n for (var i = 0; i < dataLength; i++) {\n for (var j = 0; j < this.treemap.layout.renderItems.length; j++) {\n if ((!isNullOrUndefined(valuePath) && treemap.leafItemSettings.colorMapping.length > 0 &&\n treemap.levels.length === 0)\n ? treemap.treeMapLegendModule.legendCollections[targetIndex]['legendData'][i]['data'][valuePath] === treemap.layout.renderItems[j]['data'][valuePath]\n : (treemap.treeMapLegendModule.legendCollections[targetIndex]['legendData'][i]['levelOrderName'] === treemap.layout.renderItems[j]['levelOrderName'])) {\n itemIndex = j;\n groupIndex = this.treemap.layout.renderItems[j]['groupIndex'];\n var nodeEle = document.getElementById(this.treemap.element.id + '_Level_Index_' + groupIndex + '_Item_Index_' + itemIndex + '_RectPath');\n if (i === 0 || this.legendHighlightCollection.length === 0) {\n this.legendHighlightCollection = [];\n pushCollection(this.legendHighlightCollection, targetIndex, j, targetEle, nodeEle, this.treemap.layout.renderItems, collection);\n length_2 = this.legendHighlightCollection.length;\n this.legendHighlightCollection[length_2 - 1]['ShapeCollection'] = { Elements: [] };\n }\n var legendShape = void 0;\n var legendText = void 0;\n if (targetEle.id.indexOf('Text') > -1) {\n legendShape = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle.id.replace('_Text', ''))\n : document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + targetIndex);\n setColor(targetEle, highlight.fill, highlight.opacity, null, null);\n setColor(legendShape, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n }\n else {\n legendText = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle.id + '_Text')\n : document.getElementById(this.treemap.element.id + '_Legend_Text_Index_' + targetIndex);\n setColor(legendText, highlight.fill, highlight.opacity, null, null);\n setColor(targetEle, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n }\n setColor(nodeEle, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n length_2 = this.legendHighlightCollection.length;\n this.legendHighlightCollection[length_2 - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n if (dataLength === 0 && this.treemap.palette && this.treemap.palette.length > 0) {\n for (var j = 0; j < this.treemap.layout.renderItems.length; j++) {\n if ((this.treemap.treeMapLegendModule.legendCollections[targetIndex]['levelOrderName'] === this.treemap.layout.renderItems[j]['levelOrderName'] ||\n this.treemap.layout.renderItems[j]['levelOrderName'].indexOf(this.treemap.treeMapLegendModule.legendCollections[targetIndex]['levelOrderName']) > -1) &&\n ((!this.treemap.legendSettings.removeDuplicateLegend && treemap.palette && treemap.palette.length > 0 &&\n !this.treemap.layout.renderItems[j].parent.isDrilled) ?\n targetIndex === j : true)) {\n itemIndex = j;\n groupIndex = this.treemap.layout.renderItems[j]['groupIndex'];\n var nodeEle = document.getElementById(this.treemap.element.id + '_Level_Index_' + groupIndex + '_Item_Index_' + itemIndex + '_RectPath');\n pushCollection(this.legendHighlightCollection, targetIndex, j, targetEle, nodeEle, this.treemap.layout.renderItems, collection);\n length_2 = this.legendHighlightCollection.length;\n this.legendHighlightCollection[length_2 - 1]['ShapeCollection'] = { Elements: [] };\n var legendItem = void 0;\n if (targetEle.id.indexOf('Text') > -1) {\n legendItem = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle.id.replace('_Text', ''))\n : document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + targetIndex);\n setColor(targetEle, highlight.fill, highlight.opacity, null, null);\n setColor(legendItem, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n }\n else {\n legendItem = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle.id + '_Text')\n : document.getElementById(this.treemap.element.id + '_Legend_Text_Index_' + targetIndex);\n setColor(legendItem, highlight.fill, highlight.opacity, null, null);\n setColor(targetEle, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n }\n setColor(nodeEle, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n length_2 = this.legendHighlightCollection.length;\n this.legendHighlightCollection[length_2 - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n }\n else {\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n removeLegend(this.legendHighlightCollection, treemap);\n this.legendHighlightCollection = [];\n }\n }\n else {\n if (selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true) {\n if (selectionModule ? this.shapeElement !== selectionModule.shapeElement : true && this.treemap.legendSettings.visible) {\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n }\n }\n if ((this.shapeTarget === 'highlight' || this.target === 'highlight') && this.treemap.legendSettings.visible) {\n if (selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true) {\n if (selectionModule ? this.shapeElement !== selectionModule.shapeElement : true && selectionModule ?\n selectionModule.legendSelect : true) {\n removeLegend(this.shapeHighlightCollection, treemap);\n this.shapeHighlightCollection = [];\n }\n }\n }\n if (this.shapeTarget === 'highlight' && this.treemap.legendSettings.visible) {\n removeLegend(this.legendHighlightCollection, this.treemap);\n }\n this.highLightId = '';\n processHighlight = false;\n }\n return processHighlight;\n };\n /**\n * To bind events for highlight\n *\n * @returns {void}\n */\n TreeMapHighlight.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.mouseMove, this);\n };\n /**\n * To unbind events for highlight\n *\n * @returns {void}\n */\n TreeMapHighlight.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.mouseMove);\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name\n */\n TreeMapHighlight.prototype.getModuleName = function () {\n return 'treeMapHighlight';\n };\n /**\n * To destroy the hightlight.\n *\n * @returns {void}\n * @private\n */\n TreeMapHighlight.prototype.destroy = function () {\n this.shapeElement = null;\n this.shapeHighlightCollection = [];\n this.legendHighlightCollection = [];\n this.currentElement = [];\n this.removeEventListener();\n this.treemap = null;\n };\n return TreeMapHighlight;\n}());\nexport { TreeMapHighlight };\n/**\n * Performing treemap selection\n */\nvar TreeMapSelection = /** @class */ (function () {\n function TreeMapSelection(treeMap) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.shapeSelectionCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendSelectionCollection = [];\n this.shapeSelect = true;\n this.legendSelect = true;\n this.treemap = treeMap;\n this.addEventListener();\n }\n /**\n * Mouse down event in selection\n *\n * @param {PointerEvent} e - Specifies the pointer argument.\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.mouseDown = function (e) {\n var targetEle = e.target;\n e.preventDefault();\n this.selectionOnMouseDown(targetEle);\n };\n /**\n * This method selects the target element for mouse down event.\n *\n * @param {Element} targetEle - Specifies the target element that was clicked.\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.selectionOnMouseDown = function (targetEle) {\n var eventArgs;\n var treemap = this.treemap;\n targetEle.setAttribute('tabindex', '-1');\n targetEle.style.outline = 'none';\n if (!targetEle.id.includes('Legend_Shape_Index')) {\n targetEle.focus();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var items = [];\n var targetId = targetEle.id;\n var labelText = targetEle.innerHTML;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n var selectionElements = [];\n var treeMapElement;\n var element;\n var orders;\n var selection = treemap.selectionSettings;\n var highlightModule = this.treemap.treeMapHighlightModule;\n var layoutID = treemap.element.id + '_TreeMap_' + treemap.layoutType + '_Layout';\n item = treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n var isDrillItem = (item && !item.isLeafItem && treemap.enableDrillDown) &&\n (targetEle.textContent.indexOf('[+]') > -1 || targetEle.textContent.indexOf('[-]') > -1 ||\n (!isNullOrUndefined(targetEle.nextElementSibling) &&\n (targetEle.nextSibling.textContent.indexOf('[+]') > -1 || targetEle.nextSibling.textContent.indexOf('[-]') > -1)));\n if (targetId.indexOf('_Item_Index') > -1 && !isDrillItem) {\n if ((this.treemap.selectionId !== targetId &&\n (treemap.selectionId ? parseFloat(treemap.selectionId.split('_Item_Index_')[1]) !== parseFloat(targetId.split('_Item_Index_')[1]) : true)) ||\n (this.legendSelectionCollection[0] ? this.legendSelectionCollection[0]['ShapeCollection']['Elements'].length > 1 : false)) {\n treemap.levelSelection = [];\n treemap.legendId = [];\n this.shapeSelectId = '';\n removeLegend(this.legendSelectionCollection, treemap);\n this.legendSelectionCollection = [];\n treeMapElement = document.getElementById(layoutID);\n var index = void 0;\n if (this.treemap.legendSettings.visible) {\n this.shapeSelect = false;\n var length_3 = this.treemap.treeMapLegendModule.legendCollections.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n this.shapeElement = undefined;\n removeLegend(this.shapeSelectionCollection, treemap);\n if (highlightModule) {\n highlightModule.shapeTarget = 'selection';\n highlightModule.shapeHighlightCollection = [];\n }\n index = (!treemap.legendSettings.removeDuplicateLegend && treemap.palette && treemap.palette.length > 0 &&\n treemap.leafItemSettings.colorMapping.length === 0\n && treemap.levels.length === 0) ?\n parseFloat(targetId.split('_Item_Index_')[1]) : getLegendIndex(length_3, item, treemap);\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index) : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index);\n if (this.shapeElement !== null) {\n this.shapeSelectId = this.shapeElement.getAttribute('id');\n this.shapeSelectionCollection.push({ legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n var legendText = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Text_Index_' + index)\n : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index + '_Text');\n setColor(legendText, selection.fill, selection.opacity, null, null);\n setColor(this.shapeElement, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n treemap.legendId.push(this.shapeElement.id);\n treemap.legendId.push(legendText.id);\n }\n }\n orders = findHightLightItems(item, [], selection.mode, treemap);\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetItem = treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n item = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])];\n var valuePath = (treemap.rangeColorValuePath !== '') ? treemap.rangeColorValuePath : null;\n if (orders.indexOf(item['levelOrderName']) > -1 &&\n (!isNullOrUndefined(valuePath) ?\n (item['data'][valuePath] === targetItem['data'][valuePath] ||\n (selection.mode !== 'Item' && treemap.levels.length > 0)) : true)) {\n selectionElements.push(element);\n if (targetId.indexOf('_RectPath') > -1) {\n treemap.levelSelection.push(element.id);\n }\n items.push(item);\n }\n }\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', treemap);\n this.treemap.selectionId = targetId;\n var highLightElements = document.getElementsByClassName('treeMapHighLight');\n for (var k = 0; k < selectionElements.length; k++) {\n element = selectionElements[k];\n if (highLightElements.length > 0) {\n for (var j = 0; j < highLightElements.length; j++) {\n if (highLightElements[j].id === element.id) {\n highLightElements[j].classList.remove('treeMapHighLight');\n }\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n else {\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n eventArgs = { cancel: false, name: itemSelected, treemap: treemap, items: items, elements: selectionElements,\n text: labelText, contentItemTemplate: labelText };\n treemap.trigger(itemSelected, eventArgs, function (observedArgs) {\n if (observedArgs.contentItemTemplate !== labelText) {\n setItemTemplateContent(targetId, targetEle, observedArgs.contentItemTemplate);\n }\n });\n }\n }\n else {\n removeLegend(this.legendSelectionCollection, treemap);\n removeLegend(this.shapeSelectionCollection, treemap);\n this.treemap.legendId = [];\n this.shapeSelectionCollection = [];\n this.legendSelectionCollection = [];\n this.shapeElement = undefined;\n this.shapeSelect = true;\n this.shapeSelectId = '';\n this.treemap.levelSelection = [];\n this.legendSelectId = '';\n if (this.legendSelect || this.shapeSelect) {\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', treemap);\n this.treemap.selectionId = '';\n }\n }\n }\n else if (targetId.indexOf('_Legend_Shape') > -1 || targetId.indexOf('_Legend_Index') > -1 || targetId.indexOf('_Legend_Text_') > -1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n var legendSelectIdIndex = !isNullOrUndefined(this.legendSelectId) ? parseFloat(this.legendSelectId.split('_Index_')[1]) : null;\n if (this.treemap.legendSettings.visible && (legendSelectIdIndex !== parseFloat(targetId.split('_Index_')[1]))) {\n var itemIndex = void 0;\n var groupIndex = void 0;\n var length_4;\n treemap.legendId = [];\n treemap.levelSelection = [];\n this.legendSelectId = targetId;\n this.legendSelect = false;\n var legendIndex = !isNaN(parseInt(targetId[targetId.length - 1], 10)) ?\n parseInt(targetId[targetId.length - 1], 10) :\n parseInt(targetId[targetId.length - 6], 10);\n var targetEle_1 = document.getElementById(targetId);\n removeLegend(this.legendSelectionCollection, treemap);\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', treemap);\n removeLegend(this.shapeSelectionCollection, treemap);\n this.legendSelectionCollection = [];\n if (highlightModule) {\n highlightModule.shapeTarget = 'selection';\n highlightModule.legendHighlightCollection = [];\n }\n var valuePath = (treemap.rangeColorValuePath !== '') ? treemap.rangeColorValuePath : null;\n var index = this.treemap.legendSettings.mode === 'Default' ? (targetId.indexOf('Text') === -1 ? parseFloat(targetId.split('_Legend_Shape_Index_')[1]) : parseFloat(targetId.split('_Legend_Text_Index_')[1]))\n : parseFloat(targetId.split('_Legend_Index_')[1]);\n var dataLength = this.treemap.treeMapLegendModule.legendCollections[index]['legendData'].length;\n for (var k = 0; k < dataLength; k++) {\n for (var l = 0; l < this.treemap.layout.renderItems.length; l++) {\n if ((!isNullOrUndefined(valuePath) && treemap.leafItemSettings.colorMapping.length > 0 &&\n treemap.levels.length === 0) ?\n (treemap.treeMapLegendModule.legendCollections[index]['legendData'][k]['data'][valuePath] === treemap.layout.renderItems[l]['data'][valuePath])\n : (this.treemap.treeMapLegendModule.legendCollections[index]['legendData'][k]['levelOrderName'] === this.treemap.layout.renderItems[l]['levelOrderName'])) {\n itemIndex = l;\n groupIndex = this.treemap.layout.renderItems[l]['groupIndex'];\n var nodeEle = document.getElementById(this.treemap.element.id + '_Level_Index_' + groupIndex + '_Item_Index_' + itemIndex + '_RectPath');\n this.treemap.selectionId = nodeEle.id;\n if (k === 0 || this.legendSelectionCollection.length === 0) {\n pushCollection(this.legendSelectionCollection, legendIndex, l, targetEle_1, nodeEle, this.treemap.layout.renderItems, collection);\n length_4 = this.legendSelectionCollection.length;\n this.legendSelectionCollection[length_4 - 1]['ShapeCollection'] = { Elements: [] };\n }\n this.treemap.selectionId = nodeEle.id;\n var legendShape = void 0;\n var legendText = void 0;\n if (targetEle_1.id.indexOf('Text') > -1) {\n legendShape = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle_1.id.replace('_Text', ''))\n : document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index);\n setColor(legendShape, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n setColor(targetEle_1, selection.fill, selection.opacity, null, null);\n this.legendSelectId = legendShape.id;\n this.shapeElement = legendShape;\n treemap.legendId.push(targetEle_1.id);\n treemap.legendId.push(legendShape.id);\n }\n else {\n legendText = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle_1.id + '_Text')\n : document.getElementById(this.treemap.element.id + '_Legend_Text_Index_' + index);\n setColor(legendText, selection.fill, selection.opacity, null, null);\n setColor(targetEle_1, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n this.shapeElement = targetEle_1;\n treemap.legendId.push(targetEle_1.id);\n treemap.legendId.push(legendText.id);\n }\n setColor(nodeEle, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n length_4 = this.legendSelectionCollection.length;\n treemap.levelSelection.push(nodeEle.id);\n this.legendSelectionCollection[length_4 - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n if (dataLength === 0 && this.treemap.palette && this.treemap.palette.length > 0) {\n for (var j = 0; j < this.treemap.layout.renderItems.length; j++) {\n if ((this.treemap.treeMapLegendModule.legendCollections[index]['levelOrderName'] === this.treemap.layout.renderItems[j]['levelOrderName'] ||\n this.treemap.layout.renderItems[j]['levelOrderName'].indexOf(this.treemap.treeMapLegendModule.legendCollections[index]['levelOrderName']) > -1) &&\n ((!this.treemap.legendSettings.removeDuplicateLegend && treemap.palette && treemap.palette.length > 0 &&\n !this.treemap.layout.renderItems[j].parent.isDrilled) ?\n index === j : true)) {\n itemIndex = j;\n groupIndex = this.treemap.layout.renderItems[j]['groupIndex'];\n var nodeEle = document.getElementById(this.treemap.element.id + '_Level_Index_' + groupIndex + '_Item_Index_' + itemIndex + '_RectPath');\n pushCollection(this.legendSelectionCollection, index, j, targetEle_1, nodeEle, this.treemap.layout.renderItems, collection);\n this.treemap.selectionId = nodeEle.id;\n length_4 = this.legendSelectionCollection.length;\n this.legendSelectionCollection[length_4 - 1]['ShapeCollection'] = { Elements: [] };\n var legendItem = void 0;\n if (targetEle_1.id.indexOf('Text') > -1) {\n legendItem = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle_1.id.replace('_Text', ''))\n : document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index);\n setColor(targetEle_1, selection.fill, selection.opacity, null, null);\n setColor(legendItem, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n this.legendSelectId = legendItem.id;\n this.shapeElement = legendItem;\n }\n else {\n legendItem = this.treemap.legendSettings.mode === 'Interactive' ? document.getElementById(targetEle_1.id + '_Text')\n : document.getElementById(this.treemap.element.id + '_Legend_Text_Index_' + index);\n setColor(legendItem, selection.fill, selection.opacity, null, null);\n setColor(targetEle_1, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n this.legendSelectId = targetId;\n this.shapeElement = targetEle_1;\n }\n setColor(nodeEle, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n treemap.levelSelection.push(nodeEle.id);\n if (treemap.legendId.indexOf(legendItem.id) === -1) {\n treemap.legendId.push(legendItem.id);\n }\n if (treemap.legendId.indexOf(targetEle_1.id) === -1) {\n treemap.legendId.push(targetEle_1.id);\n }\n length_4 = this.legendSelectionCollection.length;\n this.legendSelectionCollection[length_4 - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n }\n else {\n removeLegend(this.legendSelectionCollection, this.treemap);\n removeLegend(this.shapeSelectionCollection, this.treemap);\n this.legendSelectionCollection = [];\n if (highlightModule) {\n highlightModule.shapeTarget = 'highlight';\n }\n this.legendSelect = true;\n this.legendSelectId = '';\n this.treemap.legendId = [];\n this.treemap.levelSelection = [];\n this.shapeElement = null;\n this.shapeSelectId = '';\n if (this.legendSelect || this.shapeSelect) {\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', treemap);\n this.treemap.selectionId = '';\n }\n }\n }\n else if (isDrillItem) {\n removeLegend(this.legendSelectionCollection, this.treemap);\n this.legendSelectionCollection = [];\n this.legendSelect = true;\n this.legendSelectId = '';\n this.treemap.legendId = [];\n this.treemap.levelSelection = [];\n this.treemap.selectionId = '';\n this.shapeElement = null;\n }\n };\n /**\n * @param {string} levelOrder - Specifies the level order of treemap item\n * @param {boolean} enable - Specifies the boolean value\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.selectTreemapItem = function (levelOrder, enable) {\n if (enable) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = void 0;\n for (var s = 0; s < this.treemap.layout.renderItems.length; s++) {\n if (levelOrder === this.treemap.layout.renderItems[s]['levelOrderName']) {\n item = this.treemap.layout.renderItems[s];\n break;\n }\n }\n var selection = this.treemap.selectionSettings;\n var selectionElements = [];\n var element = void 0;\n var index = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var items = [];\n this.treemap.levelSelection = [];\n var layoutID = this.treemap.element.id + '_TreeMap_' + this.treemap.layoutType + '_Layout';\n var treeMapElement = document.getElementById(layoutID);\n var orders = findHightLightItems(item, [], selection.mode, this.treemap);\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n item = this.treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])];\n if (orders.indexOf(item['levelOrderName']) > -1) {\n selectionElements.push(element);\n this.treemap.levelSelection.push(element.id);\n items.push(item);\n }\n }\n if (this.treemap.legendSettings.visible) {\n for (var m = 0; m < items.length; m++) {\n this.shapeSelect = false;\n var length_5 = this.treemap.treeMapLegendModule.legendCollections.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n this.shapeElement = undefined;\n removeShape(this.shapeSelectionCollection);\n index = getLegendIndex(length_5, items[m], this.treemap);\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index) : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index);\n if (this.shapeElement !== null) {\n this.shapeSelectId = this.shapeElement.getAttribute('id');\n this.treemap.legendId.push(this.shapeSelectId);\n this.shapeSelectionCollection.push({\n legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n setColor(this.shapeElement, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n }\n }\n }\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', this.treemap);\n var selectionElement = document.getElementById(this.treemap.levelSelection[0]);\n this.treemap.selectionId = selectionElement.childNodes[0]['id'];\n var highLightElements = document.getElementsByClassName('treeMapHighLight');\n for (var k = 0; k < selectionElements.length; k++) {\n element = selectionElements[k];\n if (highLightElements.length > 0) {\n for (var j = 0; j < highLightElements.length; j++) {\n if (highLightElements[j].id === element.id) {\n highLightElements[j].classList.remove('treeMapHighLight');\n }\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n else {\n selection.fill = selection.fill === 'null' ?\n this.treemap.layout.renderItems[parseInt(element.id.split('Item_Index_')[1], 10)]['options']['fill']\n : selection.fill;\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n }\n else {\n removeShape(this.shapeSelectionCollection);\n this.shapeElement = undefined;\n this.treemap.levelSelection = [];\n this.shapeSelect = true;\n this.shapeSelectId = '';\n this.treemap.legendId = [];\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', this.treemap);\n this.treemap.selectionId = '';\n }\n };\n /**\n * To bind events for selection\n *\n * @returns {void}\n */\n TreeMapSelection.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchStartEvent, this.mouseDown, this);\n };\n /**\n * To unbind events for selection\n *\n * @returns {void}\n */\n TreeMapSelection.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchStartEvent, this.mouseDown);\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n TreeMapSelection.prototype.getModuleName = function () {\n return 'treeMapSelection';\n };\n /**\n * To destroy the selection.\n *\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.destroy = function () {\n this.shapeElement = null;\n this.shapeSelectionCollection = [];\n this.legendSelectionCollection = [];\n this.removeEventListener();\n this.treemap = null;\n };\n return TreeMapSelection;\n}());\nexport { TreeMapSelection };\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport { Tooltip } from '@syncfusion/ej2-svg-base';\nimport { Browser, createElement, isNullOrUndefined, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getMousePosition, textFormatter, formatValue, removeElement } from '../utils/helper';\nimport { tooltipRendering } from '../model/constants';\n/**\n * Render Tooltip\n */\nvar TreeMapTooltip = /** @class */ (function () {\n function TreeMapTooltip(treeMap) {\n this.treemap = treeMap;\n this.tooltipSettings = this.treemap.tooltipSettings;\n this.tooltipId = this.treemap.element.id + '_TreeMapTooltip';\n this.addEventListener();\n }\n TreeMapTooltip.prototype.renderTooltip = function (e) {\n var _this = this;\n var pageX;\n var pageY;\n var target;\n var touchArg;\n var tootipArgs;\n if (e.type.indexOf('touch') !== -1) {\n this.isTouch = true;\n touchArg = e;\n pageX = touchArg.changedTouches[0].pageX;\n pageY = touchArg.changedTouches[0].pageY;\n target = touchArg.target;\n }\n else {\n this.isTouch = e.pointerType === 'touch';\n pageX = e.pageX;\n pageY = e.pageY;\n target = e.target;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value;\n var targetId = target.id;\n var item = {};\n var tooltipEle;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var location;\n var toolTipData = {};\n var tooltipContent = [];\n var markerFill;\n if (targetId.indexOf('_Item_Index') > -1 && e.type.indexOf('key') === -1) {\n item = this.treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n if (!isNullOrUndefined(item)) {\n value = item['weight'];\n toolTipData = item['data'];\n if (!isNullOrUndefined(item['options'])) {\n markerFill = item['options']['fill'];\n }\n if (this.treemap.enableRtl) {\n tooltipContent = [(!isNullOrUndefined(this.tooltipSettings.format) ?\n textFormatter(this.tooltipSettings.format, toolTipData, this.treemap) : null)\n || formatValue(value, this.treemap) + ' : ' + this.treemap.weightValuePath.toString()];\n }\n else {\n tooltipContent = [(!isNullOrUndefined(this.tooltipSettings.format) ?\n textFormatter(this.tooltipSettings.format, toolTipData, this.treemap) : null)\n || this.treemap.weightValuePath.toString() + ' : ' + formatValue(value, this.treemap)];\n }\n if (document.getElementById(this.tooltipId)) {\n tooltipEle = document.getElementById(this.tooltipId);\n }\n else {\n tooltipEle = createElement('div', {\n id: this.treemap.element.id + '_TreeMapTooltip',\n className: 'EJ2-TreeMap-Tooltip'\n });\n tooltipEle.style.cssText = 'position: absolute;pointer-events:none;';\n document.getElementById(this.treemap.element.id + '_Secondary_Element').appendChild(tooltipEle);\n }\n location = getMousePosition(pageX, pageY, this.treemap.svgObject);\n location.y = (this.tooltipSettings.template) ? location.y + 10 : location.y;\n this.tooltipSettings.textStyle.size = this.tooltipSettings.textStyle.size || this.treemap.themeStyle.tooltipFontSize;\n this.tooltipSettings.textStyle.fontFamily = this.tooltipSettings.textStyle.fontFamily || this.treemap.themeStyle.fontFamily;\n this.tooltipSettings.textStyle.fontStyle = !isNullOrUndefined(this.tooltipSettings.textStyle.fontStyle) ? this.tooltipSettings.textStyle.fontStyle : 'Normal';\n this.tooltipSettings.textStyle.fontWeight = this.tooltipSettings.textStyle.fontWeight || this.treemap.themeStyle.fontWeight;\n this.tooltipSettings.textStyle.color = this.tooltipSettings.textStyle.color || this.treemap.themeStyle.tooltipFontColor;\n // eslint-disable-next-line max-len\n this.tooltipSettings.textStyle.opacity = this.tooltipSettings.textStyle.opacity || this.treemap.themeStyle.tooltipTextOpacity;\n var border = {\n width: this.tooltipSettings.border.width || this.treemap.themeStyle.tooltipBorderWidth || 0,\n color: this.tooltipSettings.border.color || this.treemap.themeStyle.tooltipBorderColor || 'transparent'\n };\n if (this.treemap.enableHtmlSanitizer) {\n for (var a = 0; a < tooltipContent.length; a++) {\n tooltipContent[a] = SanitizeHtmlHelper.sanitize(tooltipContent[a]);\n }\n }\n tootipArgs = {\n cancel: false, name: tooltipRendering, item: item,\n options: {\n location: location, text: tooltipContent, data: toolTipData, border: border,\n textStyle: this.tooltipSettings.textStyle, template: this.tooltipSettings.template\n },\n treemap: this.treemap,\n element: target, eventArgs: e\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.treemap.trigger(tooltipRendering, tootipArgs, function (args) {\n _this.addTooltip(tootipArgs, markerFill, tooltipEle);\n });\n }\n }\n else {\n this.removeTooltip();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.clearTemplate();\n }\n };\n TreeMapTooltip.prototype.addTooltip = function (tootipArgs, markerFill, tooltipEle, eventArgs) {\n var cancel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var args;\n if (!isNullOrUndefined(tootipArgs)) {\n var c = tootipArgs.cancel, otherArgs = __rest(tootipArgs, [\"cancel\"]);\n cancel = c;\n args = otherArgs.options;\n }\n else {\n cancel = eventArgs.cancel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args = eventArgs;\n }\n if (!cancel) {\n this.svgTooltip = new Tooltip({\n theme: this.treemap.theme,\n enable: true,\n header: '',\n data: args['data'],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n template: args['template'],\n content: args['text'],\n shapes: [],\n location: args['location'],\n palette: [markerFill],\n areaBounds: this.treemap.areaRect,\n textStyle: args['textStyle'],\n fill: this.treemap.tooltipSettings.fill ? this.treemap.tooltipSettings.fill : this.treemap.themeStyle.tooltipFillColor,\n border: args['border'],\n enableShadow: true\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.treemap.isVue || this.treemap.isVue3) {\n this.svgTooltip.controlInstance = this.treemap;\n }\n this.svgTooltip.opacity = this.treemap.themeStyle.tooltipFillOpacity || this.svgTooltip.opacity;\n this.svgTooltip.appendTo(tooltipEle);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.renderReactTemplates();\n }\n else {\n this.removeTooltip();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.clearTemplate();\n }\n };\n TreeMapTooltip.prototype.mouseUpHandler = function (e) {\n this.renderTooltip(e);\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeTooltip.bind(this), 2000);\n };\n TreeMapTooltip.prototype.removeTooltip = function () {\n if (document.getElementsByClassName('EJ2-TreeMap-Tooltip').length > 0) {\n var tooltipElementId = document.getElementsByClassName('EJ2-TreeMap-Tooltip')[0];\n tooltipElementId.parentNode.removeChild(tooltipElementId);\n }\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To bind events for tooltip module\n *\n * @private\n */\n TreeMapTooltip.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.renderTooltip, this);\n this.treemap.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To unbind events for tooltip module\n *\n * @private\n */\n TreeMapTooltip.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.renderTooltip);\n this.treemap.off(Browser.touchEndEvent, this.mouseUpHandler);\n };\n /**\n * Get module name.\n *\n * @returns {string} returns string\n */\n TreeMapTooltip.prototype.getModuleName = function () {\n return 'treeMapTooltip';\n };\n /**\n * To destroy the tooltip.\n *\n * @returns {void}\n * @private\n */\n TreeMapTooltip.prototype.destroy = function () {\n if (!isNullOrUndefined(this.svgTooltip)) {\n this.svgTooltip.destroy();\n this.svgTooltip.controlInstance = null;\n removeElement(this.treemap.element.id + '_TreeMapTooltip');\n }\n this.svgTooltip = null;\n this.tooltipSettings = null;\n this.removeEventListener();\n this.treemap = null;\n };\n return TreeMapTooltip;\n}());\nexport { TreeMapTooltip };\n","import * as index from './index';\nindex.TreeMap.Inject(index.TreeMapTooltip, index.TreeMapLegend, index.TreeMapHighlight, index.TreeMapSelection, index.Print, index.PdfExport, index.ImageExport);\nexport * from './index';\n"],"names":["stringToNumber","value","containerSize","undefined","indexOf","parseInt","measureText","text","font","measureObject","document","getElementById","createElement","id","body","appendChild","innerHTML","SanitizeHtmlHelper","sanitize","style","position","fontSize","size","fontWeight","fontStyle","fontFamily","visibility","top","left","whiteSpace","lineHeight","Size","clientWidth","clientHeight","textTrim","maxWidth","label","width","i","length","substring","findPosition","location","alignment","textSize","type","x","y","height","Location","createTextStyle","renderer","renderOptions","htmlObject","createText","setAttributeNS","renderTextElement","options","color","parent","isMinus","tspanElement","font-size","font-style","font-family","font-weight","text-anchor","anchor","transform","opacity","dominant-baseline","baseLine","fill","SvgRenderer","isNullOrUndefined","connectorText","search","drillLevelText","split","z","drillText","replace","len","createTSpan","setItemTemplateContent","targetId","targetElement","contentItemTemplate","itemTemplate","itemSelect","querySelector","getElement","itemsToOrder","a","b","isContainsData","source","pathName","processData","treemap","path","isExist","name","leaf","leafItemSettings","data","levels","groupPath","labelPath","weightValuePath","findChildren","children","keys","Object","Array","findHightLightItems","items","mode","treeMap","push","j","parentName","currentItem","layout","renderItems","getTemplateFunction","template","templateFn","querySelectorAll","compile","trim","e","convertElement","element","labelId","childElement","cssText","elementLength","templateHtml","regExp","RegExp","toString","findLabelLocation","rect","labelSize","areaRect","Math","abs","enableDrillDown","renderDirection","measureElement","parentElement","offsetHeight","offsetWidth","measureElementId","parentNode","removeChild","getArea","getShortestEdge","input","container","convertToContainer","min","convertToRect","xOffset","yOffset","getMousePosition","pageX","pageY","elementRect","getBoundingClientRect","pageXOffset","ownerDocument","defaultView","pageYOffset","clientTop","documentElement","clientLeft","positionX","positionY","colorMap","colorMapping","equalValue","paths","isNaN","isEqualColor","dataValue","from","to","prototype","call","colorCollections","minOpacity","maxOpacity","deSaturationColor","rangeValue","getColorByValue","rgbToHex","r","g","componentToHex","rbg","Number","getGradientColor","previousOffset","nextOffset","percent","full","previousColor","nextColor","charAt","colorNameToHex","length_1","splitColorValueOffset","splitColor","getPercentageColor","previous","next","prevColor","getPercentage","substr","ColorValue","round","wordWrap","maximumWidth","dataLabel","textCollection","labelCollection","concat","textWrap","resultText","currentLength","totalWidth","totalLength","sliceString","slice","hide","maxHeight","orderByArea","maintainSelection","className","elementId","levelSelection","index","getAttribute","childElementCount","setAttribute","applyOptions","childNodes","border","selectionSettings","legendMaintain","legendGroup","legendId","legendSettings","parseFloat","treemapSVGRectElement","legendItem","removeClassNames","elements","classList","remove","textFormatter","format","_i","keys_1","key","join","formatValue","intl","getNumberFormat","useGrouping","useGroupingSeparator","convertToHexCode","hex","convertHexToColor","result","exec","isRGBValue","window","getComputedStyle","drawSymbol","shape","url","svgRenderer","temp","renderLegendShape","functionName","renderOption","renderPath","shapeWidth","shapeHeight","shapeX","shapeY","merge","rx","ry","cx","cy","d","xValue","yValue","cos","PI","sin","href","isParentItem","item","removeShape","collection","setColor","removeLegend","legendIndex","shapeId","legendShape","legendText","textStyle","themeStyle","legendTextColor","dataCount","k","shapeElement","borderColor","borderWidth","removeSelectionWithHighlight","getElementsByClassName","getLegendIndex","valuePath","rangeColorValuePath","indexFound","dataLength","treeMapLegendModule","legendCollections","palette","pushCollection","number","legendElement","legendCollection","legendEle","oldFill","oldOpacity","oldBorderColor","oldBorderWidth","shapeOldFill","shapeOldOpacity","shapeOldBorderColor","shapeOldBorderWidth","triggerDownload","fileName","isDownload","attrs","download","toLocaleLowerCase","dispatchEvent","MouseEvent","view","bubbles","cancelable","removeElement","getThemeStyle","theme","toLowerCase","backgroundColor","titleFontColor","titleFontWeight","subTitleFontColor","tooltipFillColor","tooltipFontColor","tooltipFontSize","legendTitleColor","subtitleFontSize","legendFontSize","labelFontSize","labelFontFamily","defaultFont","legendBorderColor","legendBorderWidth","tooltipFillOpacity","tooltipTextOpacity","tooltipBorderColor","tooltipBorderWidth","__extends","extendStatics","setPrototypeOf","__proto__","p","hasOwnProperty","__","this","constructor","create","__decorate","decorators","target","desc","c","arguments","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","Border","_super","apply","Property","ChildProperty","Margin","Font","CommonTitleSettings","SubTitleSettings","Complex","TitleSettings","ColorMapping","LegendSettings","InitialDrillSettings","LeafItemSettings","Collection","TooltipSettings","SelectionSettings","HighlightSettings","LevelSettings","Rect","RectOption","dashArray","stroke","PathOption","TextOption","TreeMapAjax","async","contentType","sendData","dataOptions","LayoutPanel","processLayoutPanel","totalRect","treemapLevelData","levelsData","initialDrillDown","groupIndex","groupName","drilledItems","getDrilldownData","extend","currentLevel","calculateLayoutItems","renderLayoutItems","count","enableBreadcrumb","drillData","newData","child","parentData","layoutType","computeSliceAndDiceDimensional","computeSquarifyDimensional","coords","gap","headerHeight","leafItem","groups","sliceAndDiceProcess","groupGap","showHeader","childValue","parentArea","alottedValue","totalWeight","forEach","isHorizontal","sort","isHierarchicalData","padding","calculateChildrenLayout","groupPadding","computeTotalArea","performRowsLayout","currentRow","stack","newCoordinates","getCoordinates","newStack","nextDatum","restData","aspectRatio","newRow","currentRowLength","valueSum","newContainer","cutArea","findMaxAspectRatio","row","rowLength","minArea","Infinity","maxArea","sumArea","area","max","pow","areaWidth","areaHeight","isParent","parentRect","subXOffset","subYOffset","coordinates","y1","x1","dataLength_1","dataSum","i_1","multiplier","datum","onDemandProcess","childItems","parentItem","parentItemGroupname","splice","txtVisible","getItemColor","eventArgs","_this","pathOptions","templatePosition","renderText","groupId","templateEle","elementID","interSectAction","rectPath","secondaryEle","layoutGroup","createGroup","itemGroup","templateGroup","isLeafItem","this_1","drillDownView","treemapItemRect","visible","labelFormat","headerFormat","levelName","showLabels","breadcrumbConnector","enableRtl","enableHtmlSanitizer","labelStyle","headerStyle","textStyleOpacity","labelPosition","labelTemplate","headerTemplate","cancel","RenderItems","textColor","trigger","observedArgs","drawPath","renderItemText","renderTemplate","renderReactTemplates","enable","highlightSettings","tabIndex","outline","cursor","svgObject","customText","textName","tspanText","labelInterSectAction","drillSymbolCount","drillSymbolSize","textLocation","texts","maxNumber","collectionLength","stringText","getSaturatedColor","itemFill","itemOpacity","defaultLevelsData","option","equalColorValuePath","colorValuePath","saturatedColor","rgbValue","templateId","baseTemplateId","labelElement","templateLocation","textValue","destroy","currentRect","Theme","mapsTitleFont","Print","control","print","printWindow","open","outerHeight","outerWidth","moveTo","resizeTo","screen","availWidth","availHeight","argsData","htmlContent","getHTMLContent","printFunction","div","cloneNode","Element","exportElement","backgroundElement","getElementsByTagName","getModuleName","ImageExport","export","allowDownload","Promise","resolve","reject","availableSize","Browser","userAgent","svgData","outerHTML","URL","createObjectURL","Blob","XMLSerializer","serializeToString","image_1","Image","context_1","getContext","onload","drawImage","revokeObjectURL","toDataURL","src","PdfExport","orientation","PdfPageOrientation","Landscape","image","context","PdfDocument","imageString","pageSettings","pages","add","graphics","PdfBitmap","save","TreeMap","isResize","preRender","initPrivateVariable","unWireEVents","createSvg","wireEVents","setCulture","render","renderElements","LevelsData","hierarchyData","createSecondaryElement","addTabIndex","renderBorder","renderTitle","titleSettings","processDataManager","dataModule","queryModule","fetchApiModule","localAjax","dataSource","DataManager","query","Query","executeQuery","then","renderTreeMapElements","Fetch","onSuccess","args","reader_1","FileReader","treemap_1","JSON","parse","readAsText","send","processingData","renderLegend","elementChange","isResized","renderComplete","firstChild","hasChildNodes","clearTemplate","containerWidth","containerHeight","secondaryElement","insertBefore","borderElement","background","borderRect","drawRectangle","title","bounds","groupEle","margin","right","titleText","trimmedTitle","elementSize","location_1","titleBounds","description","subtitleSettings","bottom","map","checkIsHierarchicalData","data_1","currentData","levelOrderName","weight","processHierarchicalData","processFlatJsonData","reOrderLevelData","findTotalWeight","childData","levelIndex","childItemLevel","childLevel","mainData_1","l","allowPrint","printModule","allowPdfExport","pdfExportModule","allowImageExport","imageExportModule","orderNames","level","childName","name_1","childGroupPath","start","currentName","currentPath","prevPath","previousData","IsChildHierarchy","current","isChild","groupObj","EventHandler","clickOnTreeMap","doubleClickOnTreeMap","rightClickOnTreeMap","touchStartEvent","mouseDownOnTreeMap","touchMoveEvent","mouseMoveOnTreeMap","touchEndEvent","mouseEndOnTreeMap","mouseLeaveOnTreeMap","keyDownHandler","keyUpHandler","focusHandler","removeEventListener","resizeEvent","resizeOnTreeMap","bind","addEventListener","Internationalization","isDestroyed","args_1","previousSize","currentSize","clearTimeout","contains","setTimeout","refreshing","itemIndex","targetEle","labelText","clickArgs","mouseEvent","preventDefault","textContent","doubleTapTimer1","end","Date","getMilliseconds","doubleClick","doubleClickArgs","rightClickArgs","mouseDown","removeFocus","notify","moveArgs","calculateSelectedTextLevels","drillLevel","levelText","_a","currentLevelLabel","calculatePreviousLevelChildItems","drillLevelValues","directLevel","levelItems","text1","drillTextLevel","h","compareSelectedLabelWithDrillDownItems","drillLevelChild","newDrillItem","startEvent","endEvent","layoutID","templateID","drillMouseMove","drillLength","rightClick","which","layerElementId","widthIncrement","heightIncrement","drilledLegendItems","drillElementId","treeMapTooltipModule","removeTooltip","removeInteractivePointer","treeMapHighlightModule","shapeHighlightCollection","highLightId","event","code","setProperty","highlightElement","highlightOnMouseMove","selectionElement","treeMapSelectionModule","selectionOnMouseDown","relatedTarget","legendHighlightCollection","highlightedElement","selectItem","levelOrder","isSelected","selectTreemapItem","requiredModules","modules","tooltipSettings","member","onPropertyChanged","newProp","oldProp","removeSvg","doubleTapTimer","getPersistData","Event","NotifyPropertyChanges","Component","TreeMapLegend","page","legendBorderRect","currentPage","textMaxWidth","legendInteractiveGradient","legendItemRect","legendRenderingCollections","legendNames","totalPages","gradientCount","defsElement","createDefs","_changePosition","calculateLegendBounds","drawLegend","legend","findColorMappingLegendItems","findPaletteLegendItems","firstItem","nextItem","leafIndex","legendTitle","titleTextStyle","titleStyle","legendMode","textX","textY","shapeLocation","orientation_1","legendWidth","legendHeight","legendTitleSize","startX_1","startY_1","shapePadding","itemTextStyle","Page","legendTextSize","maxSize","prvePositionX","nextPositionY","getPageChanged","prevPositionY","nextPositionX","DisplayText","Shape","Text","Fill","Data","legendObj","legendRect","legendLength","rectWidth","rectHeight","placement","itemStartX","itemStartY","labelAction","labelDisplayMode","maxTextHeight","maxTextWidth","itemTextSize","textWidth","textHeight","calculateLegendItems","legendFillColor","legendName","showLegendPath","removeDuplicateLegend","removeDuplicates","legendFill","legendData","itemArea","isAddData","gradientElement","x2","y2","actualValue","isDuplicate","isRange","outfill","labelLegend","otherIndex","colorMapProcess","isDesaturation","outOfRangeLegend","showLegend","isAddNewLegendData","colors","q","stop1Color","colorStop","stop2Color","gradient","drawGradient","legendGradientColor","legendLinearGradient","newDataProcess","itemValue","process","textFont","renderLegendBorder","renderLegendTitle","drawLegendItem","itemId","textId","rectOptions","shapeBorder","translate","defaultLegendRtlLocation","spacing","textOptions","legendRtlLocation","shapeSize","isLineShape_1","strokeColor_1","strokeWidth_1","imageUrl","pagingGroup","pagingText","pagingFont","pagingTextSize","leftPageX","rightPageX","locY","pageTextX","leftPageElement","rightPageElement","rightPath","leftPath","leftPageOptions","leftRectPageOptions","wireEvents","rightPageOptions","rightRectPageOptions","pageTextOptions","role","aria-label","borderStyle","legendBorder","pointerEvents","getLegendAlignment","trimTitle","textElement","renderInteractivePointer","interactiveId","pointerDrawn","elementFromPoint","changedTouches","clientX","clientY","targetItem","strokeWidth","svgRect","drawInteractivePointer","locX","invertedPointer","areaX","areaY","totalHeight","mouseUpHandler","legendElementId","changeNextPage","on","off","xmlns","defElement","linerGradientEle","createElementNS","offsetColor","stopEle","TreeMapHighlight","shapeTarget","currentElement","mouseMove","processHighlight","treeMapElement","orders","highlight","highLightElements","selectionModule","shapeSelected","legendSelectionCollection","selectedElementIndex","targetElementIndex","selectionElements","legendSelectId","selectedLegendIndex","shapeSelectId","targetIndex","length_2","nodeEle","Elements","isDrilled","legendSelect","TreeMapSelection","shapeSelectionCollection","shapeSelect","includes","focus","selection","highlightModule","isDrillItem","nextElementSibling","nextSibling","selectionId","length_3","legendSelectIdIndex","length_4","targetEle_1","s","m","length_5","__rest","t","getOwnPropertySymbols","TreeMapTooltip","tooltipId","renderTooltip","touchArg","tootipArgs","isTouch","pointerType","tooltipEle","markerFill","toolTipData","tooltipContent","addTooltip","svgTooltip","Tooltip","header","content","shapes","areaBounds","enableShadow","isVue","isVue3","controlInstance","appendTo","tooltipElementId","Inject","index.TreeMapTooltip","index.TreeMapLegend","index.TreeMapHighlight","index.TreeMapSelection","index.Print","index.PdfExport","index.ImageExport"],"mappings":"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"}
|