@syncfusion/ej2-treemap 20.2.45 → 20.3.56

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"ej2-treemap.umd.min.js","sources":["../src/treemap/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"],"sourcesContent":["import { createElement, compile, merge, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\n/**\n * Create the class for size\n */\nvar Size = /** @class */ (function () {\n function Size(width, height) {\n this.width = width;\n this.height = height;\n }\n return Size;\n}());\nexport { Size };\nexport function stringToNumber(value, containerSize) {\n if (value !== null && value !== undefined) {\n return value.indexOf('%') !== -1 ? (containerSize / 100) * parseInt(value, 10) : parseInt(value, 10);\n }\n return null;\n}\n/**\n * Internal use of type rect\n *\n * @private\n */\nvar Rect = /** @class */ (function () {\n function Rect(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n return Rect;\n}());\nexport { Rect };\n/**\n * Internal use of rectangle options\n *\n * @private\n */\nvar RectOption = /** @class */ (function () {\n function RectOption(id, fill, border, opacity, rect, dashArray) {\n this.y = rect.y;\n this.x = rect.x;\n this.height = rect.height;\n this.width = rect.width;\n this.id = id;\n this.fill = fill;\n this.opacity = opacity;\n this.stroke = border.color;\n this['stroke-width'] = border.width;\n this['stroke-dasharray'] = dashArray;\n }\n return RectOption;\n}());\nexport { RectOption };\nvar PathOption = /** @class */ (function () {\n function PathOption(id, fill, width, color, opacity, dashArray, d) {\n this.id = id;\n this.opacity = opacity;\n this.fill = fill;\n this.stroke = color;\n this['stroke-width'] = width;\n this['stroke-dasharray'] = dashArray;\n this.d = d;\n }\n return PathOption;\n}());\nexport { PathOption };\n/**\n * Function to measure the height and width of the text.\n *\n * @param {string} text - Specifies the text.\n * @param {FontModel} font - Specifies the font.\n * @param {string} id - Specifies the id.\n * @returns {Size} - Returns the size.\n * @private\n */\nexport function measureText(text, font) {\n var measureObject = document.getElementById('treeMapMeasureText');\n if (measureObject === null) {\n measureObject = createElement('text', { id: 'treeMapMeasureText' });\n document.body.appendChild(measureObject);\n }\n measureObject.innerHTML = text;\n measureObject.style.position = 'absolute';\n measureObject.style.fontSize = font.size;\n measureObject.style.fontWeight = font.fontWeight;\n measureObject.style.fontStyle = font.fontStyle;\n measureObject.style.fontFamily = font.fontFamily;\n measureObject.style.visibility = 'hidden';\n measureObject.style.top = '-100';\n measureObject.style.left = '0';\n measureObject.style.whiteSpace = 'nowrap';\n // For bootstrap line height issue\n measureObject.style.lineHeight = 'normal';\n return new Size(measureObject.clientWidth, measureObject.clientHeight);\n}\n/**\n * Internal use of text options\n *\n * @private\n */\nvar TextOption = /** @class */ (function () {\n function TextOption(id, x, y, anchor, text, transform, baseLine, connectorText) {\n if (transform === void 0) { transform = ''; }\n this.transform = '';\n this.baseLine = 'auto';\n this.id = id;\n this.text = text;\n this.transform = transform;\n this.anchor = anchor;\n this.x = x;\n this.y = y;\n this.baseLine = baseLine;\n this.connectorText = connectorText;\n }\n return TextOption;\n}());\nexport { TextOption };\n/**\n * Trim the title text\n *\n * @param {number} maxWidth - Specifies the maximum width\n * @param {string} text - Specifies the text\n * @param {FontModel} font - Specifies the font\n * @returns {string} - Returns the string\n * @private\n */\nexport function textTrim(maxWidth, text, font) {\n var label = text;\n var size = measureText(text, font).width;\n if (size > maxWidth) {\n var textLength = text.length;\n for (var i = textLength - 1; i >= 0; --i) {\n label = text.substring(0, i) + '...';\n size = measureText(label, font).width;\n if (size <= maxWidth || label.length < 4) {\n if (label.length < 4) {\n label = ' ';\n }\n return label;\n }\n }\n }\n return label;\n}\n/**\n * Map internal class for Point\n */\nvar Location = /** @class */ (function () {\n function Location(x, y) {\n this.x = x;\n this.y = y;\n }\n return Location;\n}());\nexport { Location };\n/**\n * Method to calculate x position of title\n */\nexport function findPosition(location, alignment, textSize, type) {\n var x;\n switch (alignment) {\n case 'Near':\n x = location.x;\n break;\n case 'Center':\n x = (type === 'title') ? (location.width / 2 - textSize.width / 2) :\n ((location.x + (location.width / 2)) - textSize.width / 2);\n break;\n case 'Far':\n x = (type === 'title') ? (location.width - location.y - textSize.width) :\n ((location.x + location.width) - textSize.width);\n break;\n }\n var y = (type === 'title') ? location.y + (textSize.height / 2) : ((location.y + location.height / 2) + textSize.height / 2);\n return new Location(x, y);\n}\nexport function createTextStyle(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nrenderer, renderOptions, text) {\n var htmlObject = renderer.createText(renderOptions, text);\n htmlObject.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n htmlObject.style['user-select'] = 'none';\n htmlObject.style['-moz-user-select'] = 'none';\n htmlObject.style['-webkit-touch-callout'] = 'none';\n htmlObject.style['-webkit-user-select'] = 'none';\n htmlObject.style['-khtml-user-select'] = 'none';\n htmlObject.style['-ms-user-select'] = 'none';\n htmlObject.style['-o-user-select'] = 'none';\n return htmlObject;\n}\n/**\n * Internal rendering of text\n *\n * @param {TextOption} options - Specifies the text option\n * @param {FontModel} font - Specifies the font model\n * @param {string} color - Specifies the color\n * @param {HTMLElement | Element} parent - Specifes the html element\n * @param {boolean} isMinus - Specifies the boolean value\n * @returns {Element} - Returns the element\n * @private\n */\nexport function renderTextElement(options, font, color, parent, isMinus) {\n if (isMinus === void 0) { isMinus = false; }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var renderOptions = {\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily,\n 'font-weight': font.fontWeight,\n 'text-anchor': options.anchor,\n 'transform': options.transform,\n 'opacity': font.opacity,\n 'dominant-baseline': options.baseLine,\n 'id': options.id,\n 'x': options.x,\n 'y': options.y,\n 'fill': color\n };\n var text = typeof options.text === 'string' ? options.text : isMinus ? options.text[options.text.length - 1] : options.text[0];\n var tspanElement;\n var renderer = new SvgRenderer('');\n var height;\n var htmlObject;\n var breadCrumbText = !isNullOrUndefined(text) && !isNullOrUndefined(options.connectorText) ?\n (text.search(options.connectorText[1]) >= 0) : false;\n if (breadCrumbText) {\n var drilledLabel = text;\n var spacing = 5;\n var drillLevelText = drilledLabel.split('#');\n for (var z = 0; z < drillLevelText.length; z++) {\n var drillText = (drillLevelText[z].search(options.connectorText) !== -1 && !isNullOrUndefined(options.connectorText)) ?\n options.connectorText : drillLevelText[z];\n renderOptions['id'] = options.id + '_' + z;\n htmlObject = createTextStyle(renderer, renderOptions, drillText);\n if (z % 2 === 0 && z !== 0) {\n var re = /\\s+/g;\n drillText = drillText.replace(re, '&nbsp');\n }\n var size = measureText(drillText, font);\n renderOptions['x'] = z !== 0 ? renderOptions['x'] + size.width : renderOptions['x'] + size.width + spacing;\n parent.appendChild(htmlObject);\n }\n }\n else {\n htmlObject = createTextStyle(renderer, renderOptions, text);\n parent.appendChild(htmlObject);\n }\n if (typeof options.text !== 'string' && options.text.length > 1) {\n for (var i = 1, len = options.text.length; i < len; i++) {\n height = (measureText(options.text[i], font).height);\n tspanElement = renderer.createTSpan({\n 'x': options.x, 'id': options.id,\n 'y': (options.y) + (i * height)\n }, options.text[i]);\n htmlObject.appendChild(tspanElement);\n }\n parent.appendChild(htmlObject);\n }\n return htmlObject;\n}\nexport function setItemTemplateContent(targetId, targetElement, contentItemTemplate) {\n var itemSelect = targetId.split('_RectPath')[0];\n var itemTemplate;\n if (targetId.indexOf('_LabelTemplate') > -1) {\n itemTemplate = targetElement;\n }\n else {\n itemTemplate = document.querySelector('#' + itemSelect + '_LabelTemplate');\n }\n if (!isNullOrUndefined(itemTemplate)) {\n itemTemplate.innerHTML = contentItemTemplate;\n }\n}\nexport function getElement(id) {\n return document.getElementById(id);\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function itemsToOrder(a, b) {\n return a['weight'] === b['weight'] ? 0 : a['weight'] < b['weight'] ? 1 : -1;\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isContainsData(source, pathName, processData, treemap) {\n var isExist = false;\n var name = '';\n var path;\n var leaf = treemap.leafItemSettings;\n for (var i = 0; i < source.length; i++) {\n path = treemap.levels[i] ? treemap.levels[i].groupPath : leaf.labelPath ? leaf.labelPath : treemap.weightValuePath;\n var data = processData[path] || 'undefined';\n if (source[i] === data) {\n name += data + (i === source.length - 1 ? '' : '#');\n if (name === pathName) {\n isExist = true;\n break;\n }\n }\n }\n return isExist;\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function findChildren(data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var children;\n if (data) {\n var keys = Object.keys(data);\n children = {};\n for (var i = 0; i < keys.length; i++) {\n if (data[keys[i]] instanceof Array) {\n children['values'] = data[keys[i]];\n children['key'] = keys[i];\n break;\n }\n }\n }\n return children;\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function findHightLightItems(data, items, mode, treeMap) {\n if (mode === 'Child') {\n items.push(data['levelOrderName']);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var children = findChildren(data)['values'];\n if (children && children.length > 0) {\n for (var i = 0; i < children.length; i++) {\n if (items.indexOf(children[i]['levelOrderName']) === -1) {\n items.push(children[i]['levelOrderName']);\n }\n }\n for (var j = 0; j < children.length; j++) {\n findHightLightItems(children[j], items, mode, treeMap);\n }\n }\n }\n else if (mode === 'Parent') {\n if (typeof data['levelOrderName'] === 'string' && items.indexOf(data['levelOrderName']) === -1) {\n items.push(data['levelOrderName']);\n findHightLightItems(data['parent'], items, mode, treeMap);\n }\n }\n else if (mode === 'All') {\n var parentName = data['levelOrderName'].split('#')[0];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentItem = void 0;\n for (var i = 0; i < treeMap.layout.renderItems.length; i++) {\n currentItem = treeMap.layout.renderItems[i];\n if ((currentItem['levelOrderName']).indexOf(parentName) > -1 && items.indexOf(currentItem['levelOrderName']) === -1) {\n items.push(currentItem['levelOrderName']);\n }\n }\n }\n else {\n items.push(data['levelOrderName']);\n }\n return items;\n}\n/**\n * Function to compile the template function for maps.\n *\n * @param {string} template - Specifies the template\n * @returns {Function} - Returns the template function\n * @private\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getTemplateFunction(template) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateFn = null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var e;\n try {\n if (document.querySelectorAll(template).length) {\n templateFn = compile(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (e) {\n templateFn = compile(template);\n }\n return templateFn;\n}\n/**\n * @private\n * @param {HTMLCollection} element - Specifies the element\n * @param {string} labelId - Specifies the label id\n * @param {Object} data - Specifies the data\n * @returns {HTMLElement} - Returns the element\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function convertElement(element, labelId, data) {\n var childElement = createElement('div', {\n id: labelId,\n styles: 'position: absolute;pointer-events: auto;'\n });\n var elementLength = element.length;\n while (elementLength > 0) {\n childElement.appendChild(element[0]);\n elementLength--;\n }\n var templateHtml = childElement.innerHTML;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n templateHtml = templateHtml.replace(new RegExp('{{:' + keys[i] + '}}', 'g'), data[keys[i].toString()]);\n }\n childElement.innerHTML = templateHtml;\n return childElement;\n}\nexport function findLabelLocation(rect, position, labelSize, type, treemap) {\n var location = new Location(0, 0);\n var padding = 5;\n var paddings = 2;\n var elementRect = treemap.element.getBoundingClientRect();\n var x = (type === 'Template') ? treemap.areaRect.x : 0;\n var y = (type === 'Template') ? treemap.areaRect.y : 0;\n location.x = (Math.abs(x - ((position.indexOf('Left') > -1) ? rect.x + padding : !(position.indexOf('Right') > -1) ?\n rect.x + ((rect.width / 2) - (labelSize.width / 2)) : (rect.x + rect.width) - labelSize.width))) - paddings;\n if (treemap.enableDrillDown && (treemap.renderDirection === 'BottomLeftTopRight'\n || treemap.renderDirection === 'BottomRightTopLeft')) {\n location.y = Math.abs((rect.y + rect.height) - labelSize.height + padding);\n }\n else {\n location.y = Math.abs(y - ((position.indexOf('Top') > -1) ? (type === 'Template' ? rect.y : rect.y + labelSize.height) :\n !(position.indexOf('Bottom') > -1) ? type === 'Template' ? (rect.y + ((rect.height / 2) - (labelSize.height / 2))) :\n (rect.y + (rect.height / 2) + labelSize.height / 4) : (rect.y + rect.height) - labelSize.height));\n }\n return location;\n}\nexport function measureElement(element, parentElement) {\n var size = new Size(0, 0);\n parentElement.appendChild(element);\n size.height = element.offsetHeight;\n size.width = element.offsetWidth;\n var measureElementId = document.getElementById(element.id);\n measureElementId.parentNode.removeChild(measureElementId);\n return size;\n}\nexport function getArea(rect) {\n return (rect.width - rect.x) * (rect.height - rect.y);\n}\nexport function getShortestEdge(input) {\n var container = convertToContainer(input);\n var width = container.width;\n var height = container.height;\n var result = Math.min(width, height);\n return result;\n}\nexport function convertToContainer(rect) {\n var x = rect.x;\n var y = rect.y;\n var width = rect.width;\n var height = rect.height;\n return {\n x: x,\n y: y,\n width: width - x,\n height: height - y\n };\n}\nexport function convertToRect(container) {\n var xOffset = container.x;\n var yOffset = container.y;\n var width = container.width;\n var height = container.height;\n return {\n x: xOffset,\n y: yOffset,\n width: xOffset + width,\n height: yOffset + height\n };\n}\nexport function getMousePosition(pageX, pageY, element) {\n var elementRect = element.getBoundingClientRect();\n var pageXOffset = element.ownerDocument.defaultView.pageXOffset;\n var pageYOffset = element.ownerDocument.defaultView.pageYOffset;\n var clientTop = element.ownerDocument.documentElement.clientTop;\n var clientLeft = element.ownerDocument.documentElement.clientLeft;\n var positionX = elementRect.left + pageXOffset - clientLeft;\n var positionY = elementRect.top + pageYOffset - clientTop;\n return new Location((pageX - positionX), (pageY - positionY));\n}\nexport function colorMap(colorMapping, equalValue, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvalue, weightValuePath) {\n var fill;\n var paths = [];\n var opacity;\n if (isNullOrUndefined(equalValue) && (isNullOrUndefined(value) && isNaN(value))) {\n return null;\n }\n for (var i = 0; i < colorMapping.length; i++) {\n var isEqualColor = false;\n var dataValue = value;\n if (!isNullOrUndefined(colorMapping[i].from) && !isNullOrUndefined(colorMapping[i].to)\n && !isNullOrUndefined(colorMapping[i].value)) {\n if ((value >= colorMapping[i].from && colorMapping[i].to >= value) && (colorMapping[i].value === equalValue)) {\n isEqualColor = true;\n if (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') {\n fill = !isEqualColor ? colorCollections(colorMapping[i], dataValue) : colorMapping[i].color[0];\n }\n else {\n fill = colorMapping[i].color;\n }\n }\n }\n else if ((!isNullOrUndefined(colorMapping[i].from) && !isNullOrUndefined(colorMapping[i].to))\n || !isNullOrUndefined((colorMapping[i].value))) {\n if ((value >= colorMapping[i].from && colorMapping[i].to >= value) || (colorMapping[i].value === equalValue)) {\n if (colorMapping[i].value === equalValue) {\n isEqualColor = true;\n }\n if (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') {\n fill = !isEqualColor ? colorCollections(colorMapping[i], dataValue) : colorMapping[i].color[0];\n }\n else {\n fill = colorMapping[i].color;\n }\n }\n }\n if (((value >= colorMapping[i].from && value <= colorMapping[i].to) || (colorMapping[i].value === equalValue))\n && !isNullOrUndefined(colorMapping[i].minOpacity) && !isNullOrUndefined(colorMapping[i].maxOpacity) && fill) {\n opacity = deSaturationColor(weightValuePath, colorMapping[i], fill, value);\n }\n if ((fill === '' || isNullOrUndefined(fill))\n && isNullOrUndefined(colorMapping[i].from) && isNullOrUndefined(colorMapping[i].to)\n && isNullOrUndefined(colorMapping[i].minOpacity) && isNullOrUndefined(colorMapping[i].maxOpacity)\n && isNullOrUndefined(colorMapping[i].value)) {\n fill = (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') ?\n colorMapping[i].color[0] : colorMapping[i].color;\n }\n opacity = !isNullOrUndefined(opacity) ? opacity : '1';\n paths.push(fill);\n }\n for (var j = paths.length - 1; j >= 0; j--) {\n fill = paths[j];\n j = (fill) ? -1 : j;\n }\n return { fill: fill, opacity: opacity };\n}\nexport function deSaturationColor(weightValuePath, colorMapping, color, rangeValue) {\n var opacity = 1;\n if ((rangeValue >= colorMapping.from && rangeValue <= colorMapping.to)) {\n var ratio = (rangeValue - colorMapping.from) / (colorMapping.to - colorMapping.from);\n opacity = (ratio * (colorMapping.maxOpacity - colorMapping.minOpacity)) + colorMapping.minOpacity;\n }\n return opacity.toString();\n}\nexport function colorCollections(colorMap, value) {\n var gradientFill = getColorByValue(colorMap, value);\n return gradientFill;\n}\nexport function rgbToHex(r, g, b) {\n return '#' + componentToHex(r) + componentToHex(g) + componentToHex(b);\n}\nexport function getColorByValue(colorMap, value) {\n var color = '';\n var rbg;\n if (Number(value) === colorMap.from) {\n color = colorMap.color[0];\n }\n else if (Number(value) === colorMap.to) {\n color = colorMap.color[colorMap.color.length - 1];\n }\n else {\n rbg = getGradientColor(Number(value), colorMap);\n color = rgbToHex(rbg.r, rbg.g, rbg.b);\n }\n return color;\n}\nexport function getGradientColor(value, colorMap) {\n var previousOffset = colorMap.from;\n var nextOffset = colorMap.to;\n var percent = 0;\n var prev1;\n var full = nextOffset - previousOffset;\n var midColor;\n var midreturn;\n percent = (value - previousOffset) / full;\n var previousColor;\n var nextColor;\n if (colorMap.color.length <= 2) {\n previousColor = colorMap.color[0].charAt(0) === '#' ? colorMap.color[0] : colorNameToHex(colorMap.color[0]);\n nextColor = colorMap.color[colorMap.color.length - 1].charAt(0) === '#' ?\n colorMap.color[colorMap.color.length - 1] : colorNameToHex(colorMap.color[colorMap.color.length - 1]);\n }\n else {\n previousColor = colorMap.color[0].charAt(0) === '#' ? colorMap.color[0] : colorNameToHex(colorMap.color[0]);\n nextColor = colorMap.color[colorMap.color.length - 1].charAt(0) === '#' ?\n colorMap.color[colorMap.color.length - 1] : colorNameToHex(colorMap.color[colorMap.color.length - 1]);\n var a = full / (colorMap.color.length - 1);\n var b = void 0;\n var c = void 0;\n var length_1 = colorMap.color.length - 1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var splitColorValueOffset = [];\n var splitColor = {};\n for (var j = 1; j < length_1; j++) {\n c = j * a;\n b = previousOffset + c;\n splitColor = { b: b, color: colorMap.color[j] };\n splitColorValueOffset.push(splitColor);\n }\n for (var i = 0; i < splitColorValueOffset.length; i++) {\n if (previousOffset <= value && value <= splitColorValueOffset[i]['b'] && i === 0) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n nextColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ? 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a)\n : (value - splitColorValueOffset[i]['b']) / a;\n }\n else if (splitColorValueOffset[i]['b'] <= value && value <= nextOffset && i === (splitColorValueOffset.length - 1)) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ?\n 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a) : (value - splitColorValueOffset[i]['b']) / a;\n }\n if (i !== splitColorValueOffset.length - 1 && i < splitColorValueOffset.length) {\n if (splitColorValueOffset[i]['b'] <= value && value <= splitColorValueOffset[i + 1]['b']) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n nextColor = splitColorValueOffset[i + 1]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i + 1]['color'] : colorNameToHex(splitColorValueOffset[i + 1]['color']);\n percent = Math.abs((value - splitColorValueOffset[i + 1]['b'])) / a;\n }\n }\n }\n }\n return getPercentageColor(percent, previousColor, nextColor);\n}\nexport function getPercentageColor(percent, previous, next) {\n var nextColor = next.split('#')[1];\n var prevColor = previous.split('#')[1];\n var r = getPercentage(percent, parseInt(prevColor.substr(0, 2), 16), parseInt(nextColor.substr(0, 2), 16));\n var g = getPercentage(percent, parseInt(prevColor.substr(2, 2), 16), parseInt(nextColor.substr(2, 2), 16));\n var b = getPercentage(percent, parseInt(prevColor.substr(4, 2), 16), parseInt(nextColor.substr(4, 2), 16));\n return new ColorValue(r, g, b);\n}\nexport function getPercentage(percent, previous, next) {\n var full = next - previous;\n return Math.round((previous + (full * percent)));\n}\nexport function wordWrap(maximumWidth, dataLabel, font) {\n var textCollection = dataLabel.split(' ');\n var label = '';\n var labelCollection = [];\n var text;\n for (var i = 0, len = textCollection.length; i < len; i++) {\n text = textCollection[i];\n if (measureText(label.concat(text), font).width < maximumWidth) {\n label = label.concat((label === '' ? '' : ' ') + text);\n }\n else {\n if (label !== '') {\n labelCollection.push(textTrim(maximumWidth, label, font));\n label = text;\n }\n else {\n labelCollection.push(textTrim(maximumWidth, text, font));\n text = '';\n }\n }\n if (label && i === len - 1) {\n labelCollection.push(textTrim(maximumWidth, label, font));\n }\n }\n return labelCollection;\n}\nexport function textWrap(maxWidth, label, font) {\n var text = label;\n var resultText = [];\n var currentLength = 0;\n var totalWidth = measureText(label, font).width;\n var totalLength = label.length;\n if (maxWidth >= totalWidth) {\n resultText.push(label);\n return resultText;\n }\n else {\n for (var i = label.length; i > currentLength; i--) {\n var sliceString = label.slice(currentLength, i);\n totalWidth = measureText(sliceString, font).width;\n if (totalWidth <= maxWidth) {\n resultText.push(sliceString);\n currentLength += sliceString.length;\n if (totalLength === currentLength) {\n return resultText;\n }\n i = totalLength + 1;\n }\n }\n }\n return resultText;\n}\n/**\n * hide function\n *\n * @param {number} maxWidth - Specifies the maximum width\n * @param {number} maxHeight - Specifies the maximum height\n * @param {string} text - Specifies the text\n * @param {FontModel} font - Specifies the font\n * @returns {string} - Returns the hideText\n */\nexport function hide(maxWidth, maxHeight, text, font) {\n var hideText = text;\n var textSize = measureText(text, font);\n hideText = (textSize.width > maxWidth || textSize.height > maxHeight) ? ' ' : text;\n return hideText;\n}\nexport function orderByArea(a, b) {\n if (a['itemArea'] === b['itemArea']) {\n return 0;\n }\n else if (a['itemArea'] < b['itemArea']) {\n return 1;\n }\n return -1;\n}\nexport function maintainSelection(treemap, element, className) {\n var elementId = treemap.levelSelection;\n if (elementId) {\n for (var index = 0; index < elementId.length; index++) {\n if (element.getAttribute('id') === elementId[index]) {\n if (element.childElementCount > 0) {\n element.children[0].setAttribute('class', className);\n applyOptions(element.childNodes[0], {\n border: treemap.selectionSettings.border, fill: treemap.selectionSettings.fill,\n opacity: treemap.selectionSettings.opacity\n });\n }\n }\n else {\n element.setAttribute('class', '');\n }\n }\n }\n}\nexport function legendMaintain(treemap, legendGroup) {\n var elementId = treemap.legendId;\n if (elementId) {\n for (var i = 0; i < elementId.length; i++) {\n for (var j = 0; j < legendGroup.childElementCount; j++) {\n if (legendGroup.childNodes[j]['id'] === elementId[i]) {\n legendGroup.childNodes[j].setAttribute('fill', treemap.selectionSettings.fill);\n legendGroup.childNodes[j].setAttribute('stroke', treemap.selectionSettings.border.color);\n legendGroup.childNodes[j].setAttribute('stroke-width', (treemap.selectionSettings.border.width).toString());\n legendGroup.childNodes[j].setAttribute('opacity', treemap.selectionSettings.opacity);\n }\n }\n }\n }\n}\nexport function removeClassNames(elements, type, treemap) {\n var opacity;\n var process = true;\n var element;\n var stroke;\n var strokeWidth;\n var fill;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var options = {};\n for (var j = 0; j < elements.length; j++) {\n element = isNullOrUndefined(elements[j].childNodes[0]) ? elements[j] :\n elements[j].childNodes[0];\n options = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])]['options'];\n applyOptions(element, options);\n elements[j].classList.remove(type);\n j -= 1;\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function applyOptions(element, options) {\n element.setAttribute('opacity', options['opacity']);\n if (!isNullOrUndefined(options['fill'])) {\n element.setAttribute('fill', options['fill']);\n }\n element.setAttribute('stroke', options['border']['color']);\n element.setAttribute('stroke-width', options['border']['width']);\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function textFormatter(format, data, treemap) {\n if (isNullOrUndefined(format)) {\n return null;\n }\n var keys = Object.keys(data);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n format = format.split('${' + key + '}').join(formatValue(data[key], treemap).toString());\n }\n return format;\n}\nexport function formatValue(value, treemap) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var formatValue;\n var formatFunction;\n if (treemap.format && !isNaN(Number(value))) {\n formatFunction = treemap.intl.getNumberFormat({ format: treemap.format, useGrouping: treemap.useGroupingSeparator });\n formatValue = formatFunction(Number(value));\n }\n else {\n formatValue = value;\n }\n return formatValue ? formatValue : '';\n}\n/**\n * @private\n */\nvar ColorValue = /** @class */ (function () {\n function ColorValue(r, g, b) {\n this.r = r;\n this.g = g;\n this.b = b;\n }\n return ColorValue;\n}());\nexport { ColorValue };\n/**\n * @param {ColorValue} value - Specfies the color value\n * @returns {string} - Returns the string\n * @private\n */\nexport function convertToHexCode(value) {\n return '#' + componentToHex(value.r) + componentToHex(value.g) + componentToHex(value.b);\n}\n/**\n * @param {number} value - Specifes the value\n * @returns {string} - Returns the string\n * @private */\nexport function componentToHex(value) {\n var hex = value.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n}\n/**\n * @param {string} hex - Specifies the hex value\n * @returns {ColorValue} - Returns the color value\n * @private\n */\nexport function convertHexToColor(hex) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? new ColorValue(parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)) :\n new ColorValue(255, 255, 255);\n}\n/**\n * @param {string} color - Specifies the color\n * @returns {string} - Returns the string\n * @private\n */\nexport function colorNameToHex(color) {\n color = color === 'transparent' ? 'white' : color;\n var element = document.getElementById('treeMapMeasureText');\n element.style.color = color;\n color = window.getComputedStyle(element).color;\n var exp = /^(rgb|hsl)(a?)[(]\\s*([\\d.]+\\s*%?)\\s*,\\s*([\\d.]+\\s*%?)\\s*,\\s*([\\d.]+\\s*%?)\\s*(?:,\\s*([\\d.]+)\\s*)?[)]$/;\n var isRGBValue = exp.exec(color);\n return convertToHexCode(new ColorValue(parseInt(isRGBValue[3], 10), parseInt(isRGBValue[4], 10), parseInt(isRGBValue[5], 10)));\n}\n/**\n * @param {Location} location - Specifies the location\n * @param {string} shape - Specifies the shape\n * @param {Size} size - Specifies the size\n * @param {string} url - Specifies the url\n * @param {PathOption} options - Specifies the options\n * @param {string} label - Specifies the label\n * @returns {Element} - Returns the element\n * @private\n */\nexport function drawSymbol(location, shape, size, url, options, label) {\n var functionName = 'Path';\n var svgRenderer = new SvgRenderer('');\n var temp = renderLegendShape(location, size, shape, options, url);\n var htmlElement = svgRenderer['draw' + temp.functionName](temp.renderOption);\n htmlElement.setAttribute('aria-label', label);\n return htmlElement;\n}\n/**\n * @param {Location} location - Specifies the location\n * @param {Size} size - Specifies the size\n * @param {string} shape - Specifies the shape\n * @param {PathOption} options - Specifies the path option\n * @param {string} url - Specifies the string\n * @returns {IShapes} - Returns the shapes\n * @private\n */\nexport function renderLegendShape(location, size, shape, options, url) {\n var renderPath;\n var functionName = 'Path';\n var shapeWidth = size.width;\n var shapeHeight = size.height;\n var shapeX = location.x;\n var shapeY = location.y;\n var x = location.x + (-shapeWidth / 2);\n var y = location.y + (-shapeHeight / 2);\n switch (shape) {\n case 'Circle':\n case 'Bubble':\n functionName = 'Ellipse';\n merge(options, { 'rx': shapeWidth / 2, 'ry': shapeHeight / 2, 'cx': shapeX, 'cy': shapeY });\n break;\n case 'VerticalLine':\n renderPath = 'M' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' + 'L' + ' ' + shapeX + ' '\n + (shapeY + (-shapeHeight / 2));\n merge(options, { 'd': renderPath });\n break;\n case 'Diamond':\n renderPath = 'M' + ' ' + x + ' ' + shapeY + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + shapeY + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + shapeY + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Rectangle':\n renderPath = 'M' + ' ' + x + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (-shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Triangle':\n renderPath = 'M' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'InvertedTriangle':\n renderPath = 'M' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX - (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Pentagon':\n // eslint-disable-next-line no-case-declarations\n var eq = 72;\n // eslint-disable-next-line no-case-declarations\n var xValue = void 0;\n // eslint-disable-next-line no-case-declarations\n var yValue = void 0;\n for (var i = 0; i <= 5; i++) {\n xValue = (shapeWidth / 2) * Math.cos((Math.PI / 180) * (i * eq));\n yValue = (shapeWidth / 2) * Math.sin((Math.PI / 180) * (i * eq));\n if (i === 0) {\n renderPath = 'M' + ' ' + (shapeX + xValue) + ' ' + (shapeY + yValue) + ' ';\n }\n else {\n renderPath = renderPath.concat('L' + ' ' + (shapeX + xValue) + ' ' + (shapeY + yValue) + ' ');\n }\n }\n renderPath = renderPath.concat('Z');\n merge(options, { 'd': renderPath });\n break;\n case 'Star':\n renderPath = 'M ' + (location.x + size.width / 3) + ' ' + (location.y - size.height / 2) + ' L ' + (location.x - size.width / 2)\n + ' ' + (location.y + size.height / 6) + ' L ' + (location.x + size.width / 2) + ' ' + (location.y + size.height / 6)\n + ' L ' + (location.x - size.width / 3) + ' ' + (location.y - size.height / 2) + ' L ' + location.x + ' ' +\n (location.y + size.height / 2) + ' L ' + (location.x + size.width / 3) + ' ' + (location.y - size.height / 2) + ' Z';\n merge(options, { 'd': renderPath });\n break;\n case 'Cross':\n renderPath = 'M' + ' ' + x + ' ' + shapeY + ' ' + 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + shapeY + ' ' +\n 'M' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' + 'L' + ' ' + shapeX + ' ' +\n (shapeY + (-shapeHeight / 2));\n merge(options, { 'd': renderPath });\n break;\n case 'Image':\n functionName = 'Image';\n merge(options, { 'href': url, 'height': shapeHeight, 'width': shapeWidth, x: x, y: y });\n break;\n }\n return { renderOption: options, functionName: functionName };\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isParentItem(data, item) {\n var isParentItem = false;\n for (var j = 0; j < data.length; j++) {\n if (item['levelOrderName'] === data[j]['levelOrderName']) {\n isParentItem = true;\n break;\n }\n }\n return isParentItem;\n}\n/**\n * Ajax support for treemap\n */\nvar TreeMapAjax = /** @class */ (function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function TreeMapAjax(options, type, async, contentType, sendData) {\n this.dataOptions = options;\n this.type = type || 'GET';\n this.async = async || true;\n this.contentType = contentType;\n this.sendData = sendData;\n }\n return TreeMapAjax;\n}());\nexport { TreeMapAjax };\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function removeShape(collection, value) {\n if (collection.length > 0) {\n for (var i = 0; i < collection.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = collection[i];\n setColor(item['legendEle'], item['oldFill'], item['oldOpacity'], item['oldBorderColor'], item['oldBorderWidth']);\n }\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function removeLegend(collection, value) {\n if (collection.length > 0) {\n for (var j = 0; j < collection.length; j++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = collection[j];\n setColor(item['legendEle'], item['oldFill'], item['oldOpacity'], item['oldBorderColor'], item['oldBorderWidth']);\n var dataCount = item['ShapeCollection']['Elements'].length;\n for (var k = 0; k < dataCount; k++) {\n setColor(item['ShapeCollection']['Elements'][k], item['shapeOldFill'], item['shapeOldOpacity'], item['shapeOldBorderColor'], item['shapeOldBorderWidth']);\n }\n }\n }\n}\nexport function setColor(element, fill, opacity, borderColor, borderWidth) {\n element.setAttribute('fill', fill);\n element.setAttribute('opacity', opacity);\n element.setAttribute('stroke', borderColor);\n element.setAttribute('stroke-width', borderWidth);\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function removeSelectionWithHighlight(collection, element, treemap) {\n removeShape(collection, 'highlight');\n element = [];\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getLegendIndex(length, item, treemap) {\n var index;\n for (var i = 0; i < length; i++) {\n var dataLength = treemap.treeMapLegendModule.legendCollections[i]['legendData'].length;\n for (var j = 0; j < dataLength; j++) {\n if (treemap.treeMapLegendModule.legendCollections[i]['legendData'][j]['levelOrderName'] === item['levelOrderName']) {\n index = i;\n break;\n }\n }\n }\n return index;\n}\nexport function pushCollection(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ncollection, index, number, legendElement, shapeElement, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nrenderItems, legendCollection) {\n collection.push({\n legendEle: legendElement, oldFill: legendCollection[index]['legendFill'],\n oldOpacity: legendCollection[index]['opacity'], oldBorderColor: legendCollection[index]['borderColor'],\n oldBorderWidth: legendCollection[index]['borderWidth'],\n shapeElement: shapeElement, shapeOldFill: renderItems[number]['options']['fill'],\n shapeOldOpacity: renderItems[number]['options']['opacity'],\n shapeOldBorderColor: renderItems[number]['options']['border']['color'],\n shapeOldBorderWidth: renderItems[number]['options']['border']['width']\n });\n}\n/**\n * To trigger the download element\n *\n * @param {string} fileName - Specifies the file name\n * @param {ExportType} type - Specifies the type\n * @param {string} url - Specifies the url\n * @param {boolean} isDownload - Specifies the boolean value\n * @returns {void}\n */\nexport function triggerDownload(fileName, type, url, isDownload) {\n createElement('a', {\n attrs: {\n 'download': fileName + '.' + type.toLocaleLowerCase(),\n 'href': url\n }\n }).dispatchEvent(new MouseEvent(isDownload ? 'click' : 'move', {\n view: window,\n bubbles: false,\n cancelable: true\n }));\n}\nexport function removeElement(id) {\n var element = document.getElementById(id);\n return element ? remove(element) : null;\n}\n","/**\n * Maps Themes doc\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Theme;\n(function (Theme) {\n /**\n * @private\n */\n Theme.mapsTitleFont = {\n size: '14px',\n fontWeight: 'Medium',\n color: '#424242',\n fontStyle: 'Medium',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n})(Theme || (Theme = {}));\n/**\n * To get the theme style based on treemap theme.\n *\n * @param {TreeMapTheme} theme Specifies the theme of the treemap control.\n * @returns {IThemeStyle} Returns the theme.\n * @private\n */\nexport function getThemeStyle(theme) {\n var style;\n var color;\n switch (theme.toLowerCase()) {\n case 'materialdark':\n color = '#303030';\n break;\n case 'fabricdark':\n color = '#201F1F';\n break;\n case 'bootstrapdark':\n color = '#1A1A1A';\n break;\n }\n switch (theme.toLowerCase()) {\n case 'bootstrapdark':\n case 'fabricdark':\n case 'materialdark':\n style = {\n backgroundColor: color,\n titleFontColor: '#FFFFFF',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n legendTitleColor: '#DADADA',\n legendTextColor: '#DADADA',\n fontSize: '15px',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n break;\n case 'highcontrast':\n style = {\n backgroundColor: '#000000',\n titleFontColor: '#FFFFFF',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontSize: '15px',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n break;\n case 'bootstrap4':\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#212529',\n subTitleFontColor: '#212529',\n tooltipFillColor: '#000000',\n tooltipFontColor: '#FFFFFF',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 0.9,\n legendTitleColor: '#212529',\n legendTextColor: '#212529',\n fontFamily: 'HelveticaNeue-Medium',\n fontSize: '16px',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'HelveticaNeue'\n };\n break;\n case 'tailwind':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#374151',\n subTitleFontColor: '#374151',\n tooltipFillColor: '#111827',\n tooltipFontColor: '#F9FAFB',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#374151',\n legendTextColor: '#374151',\n fontFamily: 'Inter',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter'\n };\n break;\n case 'tailwinddark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#D1D5DB',\n subTitleFontColor: '#D1D5DB',\n tooltipFillColor: '#F9FAFB',\n tooltipFontColor: '#1F2937',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#D1D5DB',\n legendTextColor: '#D1D5DB',\n fontFamily: 'Inter',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter'\n };\n break;\n case 'bootstrap5':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#212529',\n subTitleFontColor: '#212529',\n tooltipFillColor: '#212529',\n tooltipFontColor: '#F9FAFB',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#212529',\n legendTextColor: '#212529',\n fontFamily: 'Helvetica Neue',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Helvetica Neue'\n };\n break;\n case 'bootstrap5dark':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#FFFFFF',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#E9ECEF',\n tooltipFontColor: '#212529',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontFamily: 'Helvetica Neue',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Helvetica Neue'\n };\n break;\n case 'fluent':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#201F1E',\n subTitleFontColor: '#201F1E',\n tooltipFillColor: '#FFFFFF',\n tooltipFontColor: '#323130',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#201F1E',\n legendTextColor: '#201F1E',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI'\n };\n break;\n case 'fluentdark':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#F3F2F1',\n subTitleFontColor: '#F3F2F1',\n tooltipFillColor: '#252423',\n tooltipFontColor: '#F3F2F1',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#F3F2F1',\n legendTextColor: '#F3F2F1',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI'\n };\n break;\n default:\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#424242',\n subTitleFontColor: '#424242',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n legendTitleColor: '#353535',\n legendTextColor: '#353535',\n fontSize: '15px',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif'\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 component.\n *\n * @private\n */\nexport var defaultFont = 'Roboto, Segoe UI, Noto, Sans-serif';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * Maps base doc\n */\nimport { Property, ChildProperty, Complex, Collection } from '@syncfusion/ej2-base';\nimport { defaultFont } from './constants';\n/**\n * Sets and gets the options for customizing the color and width of the border in treemap component.\n */\nvar Border = /** @class */ (function (_super) {\n __extends(Border, _super);\n function Border() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('#808080')\n ], Border.prototype, \"color\", void 0);\n __decorate([\n Property(0)\n ], Border.prototype, \"width\", void 0);\n return Border;\n}(ChildProperty));\nexport { Border };\n/**\n * Sets and gets the margin for the treemap component.\n */\nvar Margin = /** @class */ (function (_super) {\n __extends(Margin, _super);\n function Margin() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(10)\n ], Margin.prototype, \"left\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"right\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"top\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"bottom\", void 0);\n return Margin;\n}(ChildProperty));\nexport { Margin };\n/**\n * Sets and gets the options to customize the style of the text contents in the treemap component.\n */\nvar Font = /** @class */ (function (_super) {\n __extends(Font, _super);\n function Font() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], Font.prototype, \"size\", void 0);\n __decorate([\n Property(null)\n ], Font.prototype, \"color\", void 0);\n __decorate([\n Property(defaultFont)\n ], Font.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontStyle\", void 0);\n __decorate([\n Property(1)\n ], Font.prototype, \"opacity\", void 0);\n return Font;\n}(ChildProperty));\nexport { Font };\n/**\n * Sets and gets the options for customizing the common title of the treemap component.\n */\nvar CommonTitleSettings = /** @class */ (function (_super) {\n __extends(CommonTitleSettings, _super);\n function CommonTitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], CommonTitleSettings.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], CommonTitleSettings.prototype, \"description\", void 0);\n return CommonTitleSettings;\n}(ChildProperty));\nexport { CommonTitleSettings };\n/**\n * Sets and gets the options for customizing the subtitle of the treemap component.\n */\nvar SubTitleSettings = /** @class */ (function (_super) {\n __extends(SubTitleSettings, _super);\n function SubTitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ fontFamily: 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 component.\n */\nvar TitleSettings = /** @class */ (function (_super) {\n __extends(TitleSettings, _super);\n function TitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ fontFamily: 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 component.\n */\nvar ColorMapping = /** @class */ (function (_super) {\n __extends(ColorMapping, _super);\n function ColorMapping() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"from\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"to\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"color\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"label\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"minOpacity\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"maxOpacity\", void 0);\n __decorate([\n Property(true)\n ], ColorMapping.prototype, \"showLegend\", void 0);\n return ColorMapping;\n}(ChildProperty));\nexport { ColorMapping };\n/**\n * Sets and gets the options for customizing the legend of the treemap component.\n */\nvar LegendSettings = /** @class */ (function (_super) {\n __extends(LegendSettings, _super);\n function LegendSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('Default')\n ], LegendSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('transparent')\n ], LegendSettings.prototype, \"background\", void 0);\n __decorate([\n Property('Circle')\n ], LegendSettings.prototype, \"shape\", void 0);\n __decorate([\n Property('')\n ], LegendSettings.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], LegendSettings.prototype, \"height\", void 0);\n __decorate([\n Complex({ fontFamily: 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: '#000000', width: 0 }, Border)\n ], LegendSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ color: '#000000', width: 0 }, Border)\n ], LegendSettings.prototype, \"shapeBorder\", void 0);\n __decorate([\n Complex({}, CommonTitleSettings)\n ], LegendSettings.prototype, \"title\", void 0);\n __decorate([\n Complex({ size: '14px' }, Font)\n ], LegendSettings.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('Bottom')\n ], LegendSettings.prototype, \"position\", void 0);\n __decorate([\n Property('None')\n ], LegendSettings.prototype, \"orientation\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"invertedPointer\", void 0);\n __decorate([\n Property('After')\n ], LegendSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('None')\n ], LegendSettings.prototype, \"labelDisplayMode\", void 0);\n __decorate([\n Property('Center')\n ], LegendSettings.prototype, \"alignment\", void 0);\n __decorate([\n Property({ x: 0, y: 0 })\n ], LegendSettings.prototype, \"location\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"showLegendPath\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"valuePath\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"removeDuplicateLegend\", void 0);\n return LegendSettings;\n}(ChildProperty));\nexport { LegendSettings };\n/**\n * Sets and gets the settings for drill to visualize the treemap rendered in the initial state.\n */\nvar InitialDrillSettings = /** @class */ (function (_super) {\n __extends(InitialDrillSettings, _super);\n function InitialDrillSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], InitialDrillSettings.prototype, \"groupIndex\", void 0);\n __decorate([\n Property(null)\n ], InitialDrillSettings.prototype, \"groupName\", void 0);\n return InitialDrillSettings;\n}(ChildProperty));\nexport { InitialDrillSettings };\n/**\n * Sets and gets the options for customizing the leaf item of the treemap component.\n */\nvar LeafItemSettings = /** @class */ (function (_super) {\n __extends(LeafItemSettings, _super);\n function LeafItemSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(false)\n ], LeafItemSettings.prototype, \"autoFill\", void 0);\n __decorate([\n Complex({}, Border)\n ], LeafItemSettings.prototype, \"border\", void 0);\n __decorate([\n Property(0)\n ], LeafItemSettings.prototype, \"gap\", void 0);\n __decorate([\n Property(10)\n ], LeafItemSettings.prototype, \"padding\", void 0);\n __decorate([\n Property(1)\n ], LeafItemSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LeafItemSettings.prototype, \"showLabels\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelPath\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelFormat\", void 0);\n __decorate([\n Property('TopLeft')\n ], LeafItemSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Complex({ color: null, size: '12px' }, Font)\n ], LeafItemSettings.prototype, \"labelStyle\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelTemplate\", void 0);\n __decorate([\n Property('Center')\n ], LeafItemSettings.prototype, \"templatePosition\", void 0);\n __decorate([\n Property('Trim')\n ], LeafItemSettings.prototype, \"interSectAction\", void 0);\n __decorate([\n Collection([], ColorMapping)\n ], LeafItemSettings.prototype, \"colorMapping\", void 0);\n return LeafItemSettings;\n}(ChildProperty));\nexport { LeafItemSettings };\n/**\n * Sets and gets the options for customizing the tooltip of the treemap component.\n */\nvar TooltipSettings = /** @class */ (function (_super) {\n __extends(TooltipSettings, _super);\n function TooltipSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('')\n ], TooltipSettings.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(0.75)\n ], TooltipSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(['Circle'])\n ], TooltipSettings.prototype, \"markerShapes\", void 0);\n __decorate([\n Complex({}, Border)\n ], TooltipSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ fontFamily: defaultFont, size: '13px' }, Font)\n ], TooltipSettings.prototype, \"textStyle\", void 0);\n return TooltipSettings;\n}(ChildProperty));\nexport { TooltipSettings };\n/**\n * Sets and gets the options for customizing the selection of the leaf items in treemap component.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], SelectionSettings.prototype, \"fill\", void 0);\n __decorate([\n Property('0.5')\n ], SelectionSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, Border)\n ], SelectionSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Item')\n ], SelectionSettings.prototype, \"mode\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Sets and gets the options for customizing the highlighting of the treemap item,\n * when the mouse hover is performed in it.\n */\nvar HighlightSettings = /** @class */ (function (_super) {\n __extends(HighlightSettings, _super);\n function HighlightSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], HighlightSettings.prototype, \"enable\", void 0);\n __decorate([\n Property('#808080')\n ], HighlightSettings.prototype, \"fill\", void 0);\n __decorate([\n Property('0.5')\n ], HighlightSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, Border)\n ], HighlightSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Item')\n ], HighlightSettings.prototype, \"mode\", void 0);\n return HighlightSettings;\n}(ChildProperty));\nexport { HighlightSettings };\n/**\n * Sets and gets the options for customizing the levels of the treemap component.\n */\nvar LevelSettings = /** @class */ (function (_super) {\n __extends(LevelSettings, _super);\n function LevelSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"groupPath\", void 0);\n __decorate([\n Property(0)\n ], LevelSettings.prototype, \"groupGap\", void 0);\n __decorate([\n Property(10)\n ], LevelSettings.prototype, \"groupPadding\", void 0);\n __decorate([\n Complex({}, Border)\n ], LevelSettings.prototype, \"border\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(false)\n ], LevelSettings.prototype, \"autoFill\", void 0);\n __decorate([\n Property(1)\n ], LevelSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LevelSettings.prototype, \"showHeader\", void 0);\n __decorate([\n Property(20)\n ], LevelSettings.prototype, \"headerHeight\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"headerFormat\", void 0);\n __decorate([\n Property('Near')\n ], LevelSettings.prototype, \"headerAlignment\", void 0);\n __decorate([\n Complex({ color: null, size: '13px' }, Font)\n ], LevelSettings.prototype, \"headerStyle\", void 0);\n __decorate([\n Property('TopLeft')\n ], LevelSettings.prototype, \"templatePosition\", void 0);\n __decorate([\n Collection([], ColorMapping)\n ], LevelSettings.prototype, \"colorMapping\", void 0);\n return LevelSettings;\n}(ChildProperty));\nexport { LevelSettings };\n","import { Rect, itemsToOrder, TextOption, measureText, textTrim, hide, wordWrap, textWrap, getTemplateFunction, convertElement, findLabelLocation, PathOption, textFormatter, colorNameToHex, convertHexToColor, colorMap, measureElement, convertToContainer, convertToRect, getShortestEdge, getArea, orderByArea, isParentItem, maintainSelection } from '../utils/helper';\nimport { isNullOrUndefined, createElement, extend } from '@syncfusion/ej2-base';\nimport { Location, findChildren, renderTextElement } from '../utils/helper';\nimport { itemRendering } from '../model/constants';\nimport { LevelsData } from './../treemap';\n/**\n * To calculate and render the shape layer\n */\nvar LayoutPanel = /** @class */ (function () {\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function LayoutPanel(treemap) {\n this.treemap = treemap;\n }\n LayoutPanel.prototype.processLayoutPanel = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data;\n var totalRect;\n if (LevelsData.levelsData && LevelsData.levelsData.length > 0) {\n data = (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) &&\n !isNullOrUndefined(this.treemap.initialDrillDown.groupName)) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length === 0) ?\n this.getDrilldownData(LevelsData.levelsData[0], [])[0] : LevelsData.levelsData[0];\n totalRect = extend({}, this.treemap.areaRect, totalRect, false);\n if (!isNullOrUndefined(this.treemap.treeMapLegendModule) && !isNullOrUndefined(this.treemap.totalRect)) {\n if (this.treemap.legendSettings.position !== 'Float') {\n totalRect = this.treemap.totalRect;\n }\n }\n if (!isNullOrUndefined(this.treemap.currentLevel) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? !isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length !== 0)) {\n var count = this.treemap.drilledItems.length - 1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var x = this.treemap.drilledItems[count]['data'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var y = {};\n y[this.treemap.drilledItems[count]['data']['groupName']] = [x];\n if (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) && !this.treemap.enableBreadcrumb) {\n this.treemap.currentLevel = this.treemap.drilledItems[count]['data']['groupIndex'];\n }\n this.calculateLayoutItems(y || LevelsData.levelsData[0], totalRect);\n this.renderLayoutItems(y || LevelsData.levelsData[0]);\n }\n else {\n if (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length === 0)) {\n this.treemap.currentLevel = this.treemap.initialDrillDown.groupIndex;\n }\n this.calculateLayoutItems(data || LevelsData.levelsData[0], totalRect);\n this.renderLayoutItems(data || LevelsData.levelsData[0]);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getDrilldownData = function (data, drillData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var treemap = this.treemap;\n var newData = {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n if (child && child.length > 0 && drillData.length === 0) {\n for (var i = 0; i < child.length; i++) {\n if (child[i]['groupIndex'] === treemap.initialDrillDown.groupIndex &&\n child[i]['name'] === treemap.initialDrillDown.groupName) {\n child[i]['isDrilled'] = true;\n newData[child[i]['groupName']] = [child[i]];\n drillData.push(newData);\n }\n }\n for (var j = 0; j < child.length; j++) {\n this.getDrilldownData(child[j], drillData);\n }\n }\n return drillData;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.calculateLayoutItems = function (data, rect) {\n this.renderItems = [];\n this.parentData = [];\n if (!isNullOrUndefined(this.treemap.weightValuePath)) {\n if (this.treemap.layoutType.indexOf('SliceAndDice') > -1) {\n this.computeSliceAndDiceDimensional(data, rect);\n }\n else {\n rect.height = rect.height + rect.y;\n rect.width = rect.width + rect.x;\n this.computeSquarifyDimensional(data, rect);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeSliceAndDiceDimensional = function (data, coords) {\n var leafItem = this.treemap.leafItemSettings;\n var rect;\n var groups = this.treemap.levels;\n var groupIndex;\n var isLeafItem = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var children = findChildren(data)['values'];\n var gap;\n var headerHeight;\n if (children && children.length > 0) {\n this.sliceAndDiceProcess(children, coords);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < children.length; i++) {\n groupIndex = children[i]['groupIndex'];\n isLeafItem = (groups.length === 0 || groupIndex === groups.length);\n gap = isLeafItem ? leafItem.gap : groups[groupIndex].groupGap;\n headerHeight = groups.length === 0 ? 0 : groups[groupIndex] ? groups[groupIndex].showHeader ?\n groups[groupIndex].headerHeight : 0 : groups[groupIndex - 1].showHeader ? groups[groupIndex - 1].headerHeight : 0;\n rect = children[i]['rect'];\n rect = new Rect(rect.x + (gap / 2), rect.y + (headerHeight + (gap / 2)), rect.width - gap, Math.abs(rect.height - (gap + headerHeight)));\n this.computeSliceAndDiceDimensional(children[i], rect);\n }\n }\n }\n return data;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.sliceAndDiceProcess = function (processData, rect) {\n var parentArea = rect.height * rect.width;\n var levels = this.treemap.levels;\n var childValue;\n var alottedValue = 0;\n var totalWeight = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n processData.forEach(function (data) { totalWeight += data['weight']; });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n processData.forEach(function (child) {\n child['weightArea'] = parentArea * child['weight'] / totalWeight;\n });\n var isHorizontal = (this.treemap.layoutType === 'SliceAndDiceAuto') ? (rect.width > rect.height) :\n (this.treemap.layoutType === 'SliceAndDiceHorizontal');\n processData.sort(itemsToOrder);\n for (var i = 0; i < processData.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = processData[i];\n item['isLeafItem'] = (levels.length === 0) || ((this.treemap.isHierarchicalData ||\n isNullOrUndefined(this.treemap.leafItemSettings.labelPath)) ?\n item['groupIndex'] === levels.length - 1 : item['groupIndex'] === this.treemap.levels.length);\n if (isHorizontal) {\n childValue = ((parentArea / totalWeight) * processData[i]['weight']) / rect.height;\n if (alottedValue <= rect.width) {\n processData[i]['rect'] = new Rect(alottedValue + rect.x, rect.y, childValue, rect.height);\n }\n }\n else {\n childValue = ((parentArea / totalWeight) * processData[i]['weight']) / rect.width;\n if (alottedValue <= rect.height) {\n processData[i]['rect'] = new Rect(rect.x, alottedValue + rect.y, rect.width, childValue);\n }\n }\n alottedValue += childValue;\n this.renderItems.push(processData[i]);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeSquarifyDimensional = function (data, coords) {\n var leaf = this.treemap.leafItemSettings;\n var rect;\n var levels = this.treemap.levels;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var groupIndex = 0;\n var isLeafItem = false;\n var item;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n var index;\n var padding;\n var headerHeight;\n if (child && child.length > 0) {\n if (this.parentData.length === 0) {\n this.parentData = [];\n this.parentData.push(child);\n }\n this.calculateChildrenLayout(data, child, coords);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < child.length; i++) {\n item = child[i];\n index = item['groupIndex'];\n rect = item['rect'];\n padding = (item['isLeafItem'] ? leaf.padding : levels[index].groupPadding) / 2;\n headerHeight = this.treemap.isHierarchicalData ? index === 0 && item['isLeafItem'] ? 0 : levels[index] ?\n levels[index].showHeader ? levels[index].headerHeight : 0 : 0 : (levels.length === 0) ? 0 : levels[index] ?\n levels[index].showHeader ? levels[index].headerHeight : 0 : 0;\n rect = new Rect(rect.x + padding, rect.y + (headerHeight + padding), rect.width - padding, rect.height - padding);\n if (!item['isLeafItem'] && item['weight'] > 0) {\n this.computeSquarifyDimensional(child[i], rect);\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.calculateChildrenLayout = function (parent, children, coords) {\n this.computeTotalArea(children, getArea(coords));\n children.sort(orderByArea);\n this.performRowsLayout(children, [], coords, []);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.performRowsLayout = function (data, currentRow, rect, stack) {\n var dataLength = data.length;\n if (dataLength === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newCoordinates = this.getCoordinates(currentRow, rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newStack = stack.concat(newCoordinates);\n return newStack;\n }\n var width = getShortestEdge(rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var nextDatum = data[0];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var restData = data.slice(1, dataLength);\n if (this.aspectRatio(currentRow, nextDatum, width)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newRow = currentRow.concat(nextDatum);\n return this.performRowsLayout(restData, newRow, rect, stack);\n }\n else {\n var currentRowLength = currentRow.length;\n var valueSum = 0;\n for (var i = 0; i < currentRowLength; i += 1) {\n valueSum += currentRow[i]['itemArea'];\n }\n var newContainer = this.cutArea(rect, valueSum);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newCoordinates = this.getCoordinates(currentRow, rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newStack = stack.concat(newCoordinates);\n return this.performRowsLayout(data, [], newContainer, newStack);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.aspectRatio = function (currentRow, nextDatum, length) {\n if (currentRow.length === 0) {\n return true;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newRow = currentRow.concat(nextDatum);\n var currentMaxAspectRatio = this.findMaxAspectRatio(currentRow, length);\n var newMaxAspectRatio = this.findMaxAspectRatio(newRow, length);\n return (currentMaxAspectRatio >= newMaxAspectRatio);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.findMaxAspectRatio = function (row, length) {\n var rowLength = row.length;\n var minArea = Infinity;\n var maxArea = -Infinity;\n var sumArea = 0;\n for (var i = 0; i < rowLength; i += 1) {\n var area = row[i]['itemArea'];\n if (area < minArea) {\n minArea = area;\n }\n if (area > maxArea) {\n maxArea = area;\n }\n sumArea += area;\n }\n var result = Math.max((Math.pow(length, 2)) * maxArea / (Math.pow(sumArea, 2)), (Math.pow(sumArea, 2)) /\n ((Math.pow(length, 2)) * minArea));\n return result;\n };\n LayoutPanel.prototype.cutArea = function (rect, area) {\n var newContainer = convertToContainer(rect);\n var width = newContainer.width;\n var height = newContainer.height;\n var xOffset = newContainer.x;\n var yOffset = newContainer.y;\n if (width >= height) {\n var areaWidth = area / height;\n var newWidth = width - areaWidth;\n var container = {\n x: xOffset + areaWidth,\n y: yOffset,\n width: newWidth,\n height: height\n };\n return convertToRect(container);\n }\n else {\n var areaHeight = area / width;\n var newHeight = height - areaHeight;\n var container = {\n x: xOffset,\n y: yOffset + areaHeight,\n width: width,\n height: newHeight\n };\n return convertToRect(container);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getCoordinates = function (row, rect) {\n var container = convertToContainer(rect);\n var headerHeight;\n var width = container.width;\n var height = container.height;\n var xOffset = container.x;\n var yOffset = container.y;\n var rowLength = row.length;\n var levels = this.treemap.levels;\n var leaf = this.treemap.leafItemSettings;\n var index;\n var valueSum = 0;\n for (var i = 0; i < rowLength; i += 1) {\n valueSum += row[i]['itemArea'];\n }\n var areaWidth = valueSum / height;\n var areaHeight = valueSum / width;\n var subXOffset = xOffset;\n var subYOffset = yOffset;\n var padding;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var coordinates = [];\n var isParent;\n var gap;\n var parentRect;\n for (var i = 0; i < rowLength; i += 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = row[i];\n index = item['groupIndex'];\n item['isLeafItem'] = (levels.length === 0) || (this.treemap.isHierarchicalData ? index === levels.length :\n isNullOrUndefined(leaf.labelPath) ? false : index === levels.length);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isParent = isParentItem(this.parentData[0], item);\n parentRect = isParent ? this.treemap.areaRect : item['parent'].rect;\n padding = item['isLeafItem'] ? leaf.padding : levels[index].groupPadding;\n if (width >= height) {\n var y1 = subYOffset + item['itemArea'] / areaWidth;\n item['rect'] = {\n x: subXOffset,\n y: subYOffset,\n width: subXOffset + areaWidth,\n height: y1\n };\n subYOffset = y1;\n }\n else {\n var x1 = subXOffset + item['itemArea'] / areaHeight;\n item['rect'] = {\n x: subXOffset,\n y: subYOffset,\n width: x1,\n height: subYOffset + areaHeight\n };\n subXOffset = x1;\n }\n if (item['weight'] > 0 && (isParent || (Math.round(rect.y + (padding / 2)) <=\n Math.round(parentRect.y + (parentRect.height - parentRect.y)) && Math.round(rect.x + (padding / 2)) <=\n Math.round(parentRect.x + (parentRect.width - parentRect.x))))) {\n this.renderItems.push(item);\n coordinates.push(item);\n }\n }\n return coordinates;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeTotalArea = function (data, area) {\n var dataLength = data.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataSum = 0;\n var result = [];\n for (var i = 0; i < dataLength; i += 1) {\n var dataLength_1 = data.length;\n var dataSum_1 = 0;\n for (var i_1 = 0; i_1 < dataLength_1; i_1 += 1) {\n dataSum_1 += data[i_1]['weight'];\n }\n var multiplier = area / dataSum_1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var datum = void 0;\n for (var j = 0; j < dataLength_1; j++) {\n datum = data[j];\n datum['itemArea'] = datum['weight'] * multiplier;\n result.push(datum);\n }\n }\n return result;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.onDemandProcess = function (childItems) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentItem = {};\n var totalRect;\n parentItem = childItems[0]['parent'];\n this.treemap.currentLevel = parentItem['isDrilled'] ? parentItem['groupIndex'] : null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentItemGroupname = {};\n if (isNullOrUndefined(parentItem['groupName'])) {\n parentItemGroupname = parentItem;\n }\n else {\n parentItemGroupname[parentItem['groupName']] = [parentItem];\n }\n totalRect = extend({}, this.treemap.areaRect, totalRect, false);\n if (!isNullOrUndefined(this.treemap.treeMapLegendModule) && !isNullOrUndefined(this.treemap.totalRect)) {\n totalRect = this.treemap.totalRect;\n }\n var count = this.treemap.levels.length;\n for (var i = 0; i < count; i++) {\n var levelCount = childItems[0]['groupIndex'];\n if (count === levelCount) {\n this.treemap.levels[count] = this.treemap.levels[i];\n }\n else {\n this.treemap.levels.splice(count - 1, 1);\n }\n }\n this.calculateLayoutItems(parentItemGroupname, totalRect);\n this.renderLayoutItems(parentItemGroupname);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.renderLayoutItems = function (renderData) {\n var _this = this;\n var textCollection = [];\n var position;\n var treeMap = this.treemap;\n var colorMapping;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var txtVisible;\n var getItemColor;\n var eventArgs;\n this.renderer = treeMap.renderer;\n var trimHeader;\n var textLocation = new Location(0, 0);\n var pathOptions;\n var elementID = treeMap.element.id;\n var index;\n var templatePosition;\n var mode = treeMap.layoutType;\n var rect;\n var format;\n var interSectAction = this.treemap.leafItemSettings.interSectAction;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var textSize;\n var fill;\n var item;\n var renderText;\n var opacity;\n var padding = 5;\n var rectPath = '';\n var isRender;\n var secondaryEle = document.getElementById(treeMap.element.id + '_Secondary_Element');\n var groupId;\n var textOptions;\n var templateEle;\n var gap;\n var textStyle;\n var levels = treeMap.levels;\n this.layoutGroup = this.renderer.createGroup({ id: elementID + '_TreeMap_' + mode + '_Layout' });\n var itemGroup;\n var level;\n var template;\n var border;\n var templateGroup = createElement('div', {\n id: treeMap.element.id + '_Label_Template_Group',\n className: 'template',\n styles: 'overflow: hidden; position: absolute;pointer-events: none;' +\n 'top:' + treeMap.areaRect.y + 'px;' +\n 'left:' + treeMap.areaRect.x + 'px;' +\n 'height:' + treeMap.areaRect.height + 'px;' +\n 'width:' + treeMap.areaRect.width + 'px;'\n });\n var isLeafItem = false;\n var leaf = treeMap.leafItemSettings;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childItems;\n var connectorText;\n var _loop_1 = function (i) {\n item = this_1.renderItems[i];\n index = item['groupIndex'];\n if (this_1.treemap.drillDownView && isNullOrUndefined(this_1.treemap.currentLevel)\n && index > 0 || this_1.treemap.drillDownView\n && index > (this_1.treemap.currentLevel + 1)) {\n return \"continue\";\n }\n rect = item['rect'];\n isLeafItem = item['isLeafItem'];\n groupId = elementID + '_Level_Index_' + index + '_Item_Index_' + i;\n itemGroup = this_1.renderer.createGroup({ id: groupId + '_Group' });\n gap = (isLeafItem ? leaf.gap : levels[index].groupGap) / 2;\n var treemapItemRect = this_1.treemap.totalRect ? convertToContainer(this_1.treemap.totalRect) : this_1.treemap.areaRect;\n if (treeMap.layoutType === 'Squarified') {\n rect.width = Math.abs(rect.x - rect.width) - gap;\n rect.height = Math.abs(rect.y - rect.height) - gap;\n }\n if (treeMap.renderDirection === 'TopRightBottomLeft') {\n rect.x = (treemapItemRect.x + treemapItemRect.width) - rect.width - Math.abs(treemapItemRect.x - rect.x);\n }\n else if (treeMap.renderDirection === 'BottomLeftTopRight') {\n rect.y = (treemapItemRect.y + treemapItemRect.height) - rect.height - Math.abs(treemapItemRect.y - rect.y);\n }\n else if (treeMap.renderDirection === 'BottomRightTopLeft') {\n rect.x = (treemapItemRect.x + treemapItemRect.width) - rect.width - Math.abs(treemapItemRect.x - rect.x);\n rect.y = (treemapItemRect.y + treemapItemRect.height) - rect.height - Math.abs(treemapItemRect.y - rect.y);\n }\n colorMapping = isLeafItem ? leaf.colorMapping : levels[index].colorMapping;\n getItemColor = this_1.getItemColor(isLeafItem, item);\n fill = getItemColor['fill'];\n opacity = getItemColor['opacity'];\n format = isLeafItem ? leaf.labelFormat : (levels[index]).headerFormat;\n var levelName;\n txtVisible = isLeafItem ? leaf.showLabels : (levels[index]).showHeader;\n if (index === this_1.treemap.currentLevel) {\n if (this_1.treemap.enableBreadcrumb) {\n var re = /#/gi;\n connectorText = '#' + this_1.treemap.breadcrumbConnector + '#';\n levelName = item['levelOrderName'].replace(re, connectorText);\n levelName = index !== 0 ? '#' + levelName : levelName;\n }\n else {\n levelName = item['name'];\n }\n }\n else {\n if (this_1.treemap.enableBreadcrumb) {\n item['isDrilled'] = false;\n }\n levelName = item['name'];\n }\n renderText = textFormatter(format, item['data'], this_1.treemap) || levelName || 'undefined';\n childItems = findChildren(item)['values'];\n renderText = !isLeafItem && childItems && childItems.length > 0 && this_1.treemap.enableDrillDown ?\n !item['isDrilled'] ? treeMap.enableRtl ? renderText + ' [+]' : '[+] ' + renderText :\n treeMap.enableRtl ? renderText + ' [-]' : '[-] ' + renderText : renderText;\n textStyle = (isLeafItem ? leaf.labelStyle : levels[index].headerStyle);\n textStyle.fontFamily = this_1.treemap.themeStyle.labelFontFamily || textStyle.fontFamily;\n border = isLeafItem ? leaf.border : levels[index].border;\n position = !isLeafItem ? (levels[index].headerAlignment) === 'Near' ? 'TopLeft' : (levels[index].headerAlignment) === 'Center' ?\n 'TopCenter' : 'TopRight' : leaf.labelPosition;\n templatePosition = isLeafItem ? leaf.templatePosition : levels[index].templatePosition;\n template = isLeafItem ? leaf.labelTemplate : levels[index].headerTemplate;\n item['options'] = { border: border, opacity: opacity, fill: fill };\n eventArgs = {\n cancel: false, name: itemRendering, treemap: this_1.treemap, text: renderText,\n currentItem: item, RenderItems: this_1.renderItems, options: item['options']\n };\n this_1.treemap.trigger(itemRendering, eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n rectPath = ' M ' + rect.x + ' ' + rect.y + ' L ' + (rect.x + rect.width) + ' ' + rect.y +\n ' L ' + (rect.x + rect.width) + ' ' + (rect.y + rect.height) + ' L ' + rect.x + ' ' + (rect.y + rect.height) + 'z';\n pathOptions = new PathOption(groupId + '_RectPath', fill, border.width, border.color, opacity, null, rectPath);\n var path = _this.renderer.drawPath(pathOptions);\n itemGroup.appendChild(path);\n if (txtVisible) {\n if (eventArgs.text !== renderText) {\n eventArgs.text = textFormatter(eventArgs.text, item['data'], _this.treemap) || levelName;\n }\n _this.renderItemText(eventArgs.text.toString(), itemGroup, textStyle, rect, interSectAction, groupId, fill, position, connectorText);\n }\n if (template) {\n templateEle = _this.renderTemplate(secondaryEle, groupId, rect, templatePosition, template, item, isLeafItem);\n 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 itemGroup.setAttribute('tabindex', (_this.treemap.tabIndex + i + 2).toString());\n maintainSelection(_this.treemap, itemGroup, 'treeMapSelection');\n _this.layoutGroup.appendChild(itemGroup);\n }\n });\n };\n var this_1 = this;\n for (var i = 0; i < this.renderItems.length; i++) {\n _loop_1(i);\n }\n if (templateGroup.childNodes.length > 0) {\n secondaryEle.appendChild(templateGroup);\n }\n this.treemap.svgObject.appendChild(this.layoutGroup);\n };\n LayoutPanel.prototype.renderItemText = function (text, parentElement, textStyle, rect, interSectAction, groupId, fill, position, connectorText) {\n var level;\n var headerPosition;\n var secondaryEle = document.getElementById(this.treemap.element.id + '_Secondary_Element');\n var leaf = this.treemap.leafItemSettings;\n var padding = 5;\n var textSize;\n var textCollection = [];\n var customText;\n var templateEle;\n var tspanText = [];\n var height = 0;\n var textName;\n textCollection = ((text.indexOf('<br>')) !== -1) ? text.split('<br>') : null;\n customText = this.labelInterSectAction(rect, text, textStyle, interSectAction);\n textSize = measureText(textCollection && textCollection[0] || customText[0], textStyle);\n if (this.treemap.enableRtl) {\n var labelSize = measureText(text, textStyle);\n var drillSymbolCount = text.search('[+]') || text.search('[-]');\n if (rect.width < labelSize.width && drillSymbolCount > 0) {\n var label = text.substring(drillSymbolCount - 1, text.length);\n var drillSymbol = '[+]';\n var drillSymbolSize = measureText(drillSymbol, textStyle);\n customText['0'] = textTrim(rect.width - drillSymbolSize.width - padding, customText[0], textStyle) + label;\n }\n }\n var textLocation = findLabelLocation(rect, position, textSize, 'Text', this.treemap);\n if (!isNullOrUndefined(textCollection)) {\n var collection = [];\n var texts = null;\n var maxNumber = [];\n for (var i = 0; i < textCollection.length; i++) {\n texts = textTrim((rect.width - 5), textCollection[i], textStyle);\n textSize = measureText(texts, textStyle);\n height += textSize.height;\n maxNumber.push(textSize.width);\n collection.push(texts);\n }\n customText = collection;\n textSize.width = Math.max.apply(null, maxNumber);\n textSize.height = height;\n }\n if (interSectAction === 'WrapByWord' || interSectAction === 'Wrap' || interSectAction === 'Trim') {\n for (var j = 0; j < customText.length; j++) {\n textSize = measureText(customText[j], textStyle);\n height += textSize.height;\n if ((rect.height - padding) > height) {\n tspanText.push(customText[j]);\n }\n }\n if (interSectAction === 'Wrap' && customText.length !== tspanText.length && tspanText.length) {\n var collectionLength = tspanText.length - 1;\n var stringText = tspanText[collectionLength];\n stringText = stringText.substring(0, (stringText.length - 1)) + '...';\n tspanText.splice(collectionLength);\n if (stringText !== '...') {\n tspanText.push(stringText);\n }\n }\n }\n else {\n textName = customText;\n tspanText.push(textName);\n }\n var textOptions = new TextOption(groupId + '_Text', textLocation.x, textLocation.y, 'start', tspanText, '', '', connectorText);\n renderTextElement(textOptions, textStyle, textStyle.color || this.getSaturatedColor(fill), parentElement);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getItemColor = function (isLeafItem, item) {\n var treemap = this.treemap;\n var itemFill = isLeafItem ? treemap.leafItemSettings.fill : treemap.levels[item['groupIndex']].fill;\n var itemOpacity = isLeafItem ? treemap.leafItemSettings.opacity : treemap.levels[item['groupIndex']].opacity;\n if (!isNullOrUndefined(LevelsData.defaultLevelsData)) {\n if (LevelsData.defaultLevelsData.length > 0) {\n LevelsData.levelsData = LevelsData.defaultLevelsData;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentData = findChildren(LevelsData.levelsData[0])['values'];\n var colorMapping = isLeafItem ? treemap.leafItemSettings.colorMapping :\n treemap.levels[item['groupIndex']].colorMapping;\n if (colorMapping.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var option = colorMap(colorMapping, item['data'][this.treemap.equalColorValuePath], item['data'][this.treemap.rangeColorValuePath], item['data'][this.treemap.weightValuePath]);\n itemFill = !isNullOrUndefined(option['fill']) ? option['fill'] : treemap.leafItemSettings.fill;\n itemOpacity = option['opacity'];\n }\n else {\n for (var i = 0; i < parentData.length; i++) {\n if (parentData[i]['levelOrderName'] === item['levelOrderName'].split('#')[0]) {\n itemFill = !isNullOrUndefined(itemFill) ? itemFill : !isNullOrUndefined(treemap.colorValuePath) ?\n parentData[i]['data'][treemap.colorValuePath] : treemap.palette.length > 0 ?\n treemap.palette[i % treemap.palette.length] : '#808080';\n }\n }\n }\n return { fill: itemFill, opacity: itemOpacity };\n };\n /**\n * To find saturated color for datalabel\n *\n * @param {string} color - Specifies the color\n * @returns {string} - Returns the color\n */\n LayoutPanel.prototype.getSaturatedColor = function (color) {\n var saturatedColor = color;\n saturatedColor = (saturatedColor === 'transparent') ? window.getComputedStyle(document.body, null).backgroundColor : saturatedColor;\n var rgbValue = convertHexToColor(colorNameToHex(saturatedColor));\n var contrast = Math.round((rgbValue.r * 299 + rgbValue.g * 587 + rgbValue.b * 114) / 1000);\n return contrast >= 128 ? 'black' : 'white';\n };\n LayoutPanel.prototype.renderTemplate = function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n secondaryEle, groupId, rect, position, template, item, isLeafItem) {\n var templateId = isLeafItem ? groupId + '_LabelTemplate' : groupId + '_HeaderTemplate';\n var baseTemplateId = isLeafItem ? '_LabelTemplate' : '_HeaderTemplate';\n if (isNullOrUndefined(template['prototype'])) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var keys = Object.keys(item['data']);\n for (var i = 0; i < keys.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n template = template.replace(new RegExp('{{:' + keys[i] + '}}', 'g'), item['data'][keys[i].toString()]);\n }\n }\n 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 return LayoutPanel;\n}());\nexport { LayoutPanel };\n","import { print as printWindow, createElement } from '@syncfusion/ej2-base';\nimport { getElement } from '../utils/helper';\nimport { beforePrint } from '../model/constants';\n/**\n * Print module handles the print functionality for treemap.\n *\n * @hidden\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function Print(control) {\n this.control = control;\n }\n /**\n * This method is used to perform the print functionality in treemap.\n *\n * @param { string[] | string | Element} elements - Specifies the element.\n * @returns {void}\n * @private\n */\n Print.prototype.print = function (elements) {\n var _this = this;\n this.printWindow = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n this.printWindow.moveTo(0, 0);\n this.printWindow.resizeTo(screen.availWidth, screen.availHeight);\n var argsData = {\n cancel: false, htmlContent: this.getHTMLContent(elements), name: beforePrint\n };\n this.control.trigger(beforePrint, argsData, function () {\n if (!argsData.cancel) {\n printWindow(argsData.htmlContent, _this.printWindow);\n }\n });\n };\n /**\n * To get the html string of the Maps\n *\n * @param {string[] | string | Element} elements - Specifies the element\n * @returns {Element} - Returns the element\n * @private\n */\n Print.prototype.getHTMLContent = function (elements) {\n var div = createElement('div');\n if (elements) {\n if (elements instanceof Array) {\n elements.forEach(function (value) {\n div.appendChild(getElement(value).cloneNode(true));\n });\n }\n else if (elements instanceof Element) {\n div.appendChild(elements.cloneNode(true));\n }\n else {\n div.appendChild(getElement(elements).cloneNode(true));\n }\n }\n else {\n div.appendChild(this.control.element.cloneNode(true));\n }\n return div;\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n Print.prototype.getModuleName = function () {\n // Returns te module name\n return 'Print';\n };\n /**\n * To destroy the legend.\n *\n * @param {TreeMap} treemap - Specifies the treemap instance\n * @returns {void}\n * @private\n */\n Print.prototype.destroy = function (treemap) {\n /**\n * Destroy method performed here\n */\n };\n return Print;\n}());\nexport { Print };\n","import { createElement, Browser } from '@syncfusion/ej2-base';\nimport { triggerDownload } from '../utils/helper';\n/**\n * ImageExport module handles the export to image functionality for treemap.\n *\n * @hidden\n */\nvar ImageExport = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance\n */\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function ImageExport(control) {\n this.control = control;\n }\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {ExportType} type - Specifies the type of the image file.\n * @param {string} fileName - Specifies the file name of the image file.\n * @param {boolean} allowDownload - Specifies whether to download the file or not.\n * @returns {Promise} - Returns the promise string.\n * @private\n */\n ImageExport.prototype.export = function (type, fileName, allowDownload) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var promise = new Promise(function (resolve, reject) {\n var element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'height': _this.control.availableSize.height.toString(),\n 'width': _this.control.availableSize.width.toString()\n }\n });\n var isDownload = !(Browser.userAgent.toString().indexOf('HeadlessChrome') > -1);\n var svgData = '<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">' +\n _this.control.svgObject.outerHTML +\n '</svg>';\n var url = window.URL.createObjectURL(new Blob(type === 'SVG' ? [svgData] :\n [(new XMLSerializer()).serializeToString(_this.control.svgObject)], { type: 'image/svg+xml' }));\n if (type === 'SVG') {\n if (allowDownload) {\n triggerDownload(fileName, type, url, isDownload);\n }\n else {\n resolve(null);\n }\n }\n else {\n var image_1 = new Image();\n var context_1 = element.getContext('2d');\n image_1.onload = (function () {\n context_1.drawImage(image_1, 0, 0);\n window.URL.revokeObjectURL(url);\n if (allowDownload) {\n triggerDownload(fileName, type, element.toDataURL('image/png').replace('image/png', 'image/octet-stream'), isDownload);\n }\n else {\n if (type === 'JPEG') {\n resolve(element.toDataURL('image/jpeg'));\n }\n else if (type === 'PNG') {\n resolve(element.toDataURL('image/png'));\n }\n }\n });\n image_1.src = url;\n }\n });\n return promise;\n };\n ImageExport.prototype.getModuleName = function () {\n // Returns te module name\n return 'ImageExport';\n };\n /**\n * To destroy the ImageExport.\n *\n * @param {TreeMap} treemap - Specifies the instance of the treemap.\n * @returns {void}\n * @private\n */\n ImageExport.prototype.destroy = function (treemap) {\n // Destroy method performed here\n };\n return ImageExport;\n}());\nexport { ImageExport };\n","import { createElement, isNullOrUndefined, Browser } from '@syncfusion/ej2-base';\nimport { PdfPageOrientation, PdfDocument, PdfBitmap } from '@syncfusion/ej2-pdf-export';\n/**\n * PdfExport module handles the export to pdf functionality for treemap.\n *\n * @hidden\n */\nvar PdfExport = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance\n */\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function PdfExport(control) {\n this.control = control;\n }\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {ExportType} type - Specifies the type of the document.\n * @param {string} fileName - Specifies the name of the document.\n * @param {PdfPageOrientation} orientation - Specifies the orientation of the PDF document to export the component.\n * @param {boolean} allowDownload - Specifies whether to download the document or not.\n * @returns {Promise} - Returns the string.\n * @private\n */\n PdfExport.prototype.export = function (type, fileName, orientation, allowDownload) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var promise = new Promise(function (resolve, reject) {\n var element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'width': _this.control.availableSize.width.toString(),\n 'height': _this.control.availableSize.height.toString()\n }\n });\n var isDownload = !(Browser.userAgent.toString().indexOf('HeadlessChrome') > -1);\n orientation = isNullOrUndefined(orientation) ? PdfPageOrientation.Landscape : orientation;\n var exportElement = _this.control.svgObject.cloneNode(true);\n var backgroundElement = exportElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n var backgroundColor = backgroundElement.getAttribute('fill');\n if ((_this.control.theme === 'Tailwind' || _this.control.theme === 'TailwindDark' || _this.control.theme === 'Bootstrap5' || _this.control.theme === 'Bootstrap5Dark'\n || _this.control.theme === 'Fluent' || _this.control.theme === 'FluentDark') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n }\n var url = window.URL.createObjectURL(new Blob([(new XMLSerializer()).serializeToString(exportElement)], { type: 'image/svg+xml' }));\n var image = new Image();\n var context = element.getContext('2d');\n image.onload = (function () {\n context.drawImage(image, 0, 0);\n window.URL.revokeObjectURL(url);\n var document = new PdfDocument();\n var imageString = element.toDataURL('image/jpeg').replace('image/jpeg', 'image/octet-stream');\n document.pageSettings.orientation = orientation;\n imageString = imageString.slice(imageString.indexOf(',') + 1);\n document.pages.add().graphics.drawImage(new PdfBitmap(imageString), 0, 0, (_this.control.availableSize.width - 60), _this.control.availableSize.height);\n if (allowDownload) {\n document.save(fileName + '.pdf');\n document.destroy();\n }\n else {\n resolve(null);\n }\n });\n image.src = url;\n });\n return promise;\n };\n PdfExport.prototype.getModuleName = function () {\n // Returns te module name\n return 'PdfExport';\n };\n /**\n * To destroy the ImageExport.\n *\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @returns {void}\n * @private\n */\n PdfExport.prototype.destroy = function (treemap) {\n // Destroy method performed here\n };\n return PdfExport;\n}());\nexport { PdfExport };\n","/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable @typescript-eslint/dot-notation */\n/* eslint-disable brace-style */\n/* eslint-disable max-len */\n/**\n * Tree Map Components\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, NotifyPropertyChanges, Property, extend, Ajax } from '@syncfusion/ej2-base';\nimport { Complex, Collection } from '@syncfusion/ej2-base';\nimport { Event, Internationalization } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\nimport { isNullOrUndefined, createElement, EventHandler, Browser, remove } from '@syncfusion/ej2-base';\nimport { Border, Margin, TitleSettings, LegendSettings, InitialDrillSettings } from './model/base';\nimport { SelectionSettings, TooltipSettings, LevelSettings, LeafItemSettings, HighlightSettings } from './model/base';\nimport { Size, stringToNumber, RectOption, Rect, textTrim, measureText, findChildren, removeElement, setItemTemplateContent } from '../treemap/utils/helper';\nimport { removeClassNames, removeShape, textFormatter } from '../treemap/utils/helper';\nimport { findPosition, TextOption, renderTextElement, isContainsData, TreeMapAjax } from '../treemap/utils/helper';\nimport { load, loaded, drillStart, drillEnd } from '../treemap/model/constants';\nimport { itemClick, itemMove, click, mouseMove, resize, doubleClick, rightClick } from '../treemap/model/constants';\nimport { LayoutPanel } from './layout/render-panel';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { getThemeStyle } from './model/theme';\nimport { Print } from './model/print';\nimport { ImageExport } from './model/image-export';\nimport { PdfExport } from './model/pdf-export';\n/**\n * Represents the treemap component.\n * ```html\n * <div id=\"container\"/>\n * <script>\n * var treemap = new TreeMap();\n * treemap.appendTo(\"#container\");\n * </script>\n * ```\n */\nvar TreeMap = /** @class */ (function (_super) {\n __extends(TreeMap, _super);\n /**s\n * Constructor for TreeMap component.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function TreeMap(options, element) {\n var _this = _super.call(this, options, element) || this;\n /**\n * resize the treemap\n */\n _this.isResize = false;\n /** @private */\n _this.orientation = 'Horizontal';\n /** @private */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.drilledItems = [];\n /** @private */\n _this.isHierarchicalData = false;\n /** @private */\n _this.levelSelection = [];\n /** @private */\n _this.legendId = [];\n return _this;\n }\n TreeMap.prototype.preRender = function () {\n var _this = this;\n this.trigger(load, { treemap: this }, function () {\n _this.initPrivateVariable();\n _this.unWireEVents();\n _this.createSvg();\n _this.wireEVents();\n _this.setCulture();\n });\n };\n TreeMap.prototype.render = function () {\n this.renderElements();\n };\n TreeMap.prototype.renderElements = function () {\n LevelsData.levelsData = null;\n LevelsData.defaultLevelsData = null;\n LevelsData.hierarchyData = null;\n this.createSecondaryElement();\n this.addTabIndex();\n this.themeStyle = getThemeStyle(this.theme);\n this.renderBorder();\n this.renderTitle(this.titleSettings, 'title', null, null);\n if (!isNullOrUndefined(LevelsData.levelsData)) {\n LevelsData.defaultLevelsData = LevelsData.levelsData;\n }\n this.processDataManager();\n };\n TreeMap.prototype.processDataManager = function () {\n var _this = this;\n var dataModule;\n var queryModule;\n var ajaxModule;\n var localAjax;\n if (this.dataSource instanceof DataManager) {\n dataModule = this.dataSource;\n queryModule = this.query instanceof Query ? this.query : new Query();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataManager = dataModule.executeQuery(queryModule);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataManager.then(function (e) {\n _this.dataSource = e['result'];\n _this.renderTreeMapElements();\n });\n }\n else if (this.dataSource instanceof TreeMapAjax) {\n localAjax = this.dataSource;\n ajaxModule = new Ajax(localAjax.dataOptions, localAjax.type, localAjax.async, localAjax.contentType);\n ajaxModule.onSuccess = function (args) {\n _this.dataSource = JSON.parse('[' + args + ']')[0];\n _this.renderTreeMapElements();\n };\n ajaxModule.send(localAjax.sendData);\n }\n else {\n this.renderTreeMapElements();\n }\n };\n TreeMap.prototype.renderTreeMapElements = function () {\n this.processingData();\n if (this.treeMapLegendModule && this.legendSettings.visible) {\n this.treeMapLegendModule.renderLegend();\n }\n this.layout.processLayoutPanel();\n this.element.appendChild(this.svgObject);\n this.elementChange();\n this.trigger(loaded, { treemap: this, isResized: this.isResize });\n this.isResize = false;\n this.renderComplete();\n };\n TreeMap.prototype.createSvg = function () {\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n this.clearTemplate();\n var containerWidth = this.element.clientWidth;\n var containerHeight = this.element.clientHeight;\n this.availableSize = new Size(stringToNumber(this.width, containerWidth) || containerWidth || 600, stringToNumber(this.height, containerHeight) || containerHeight || 450);\n this.svgObject = this.renderer.createSvg({\n id: this.element.id + '_svg',\n width: this.availableSize.width,\n height: this.availableSize.height\n });\n };\n /**\n * To initilize the private varibales of treemap.\n *\n * @returns {void}\n */\n TreeMap.prototype.initPrivateVariable = function () {\n if (this.element.id === '') {\n var collection = document.getElementsByClassName('e-treemap').length;\n this.element.id = 'treemap_control_' + collection;\n }\n this.renderer = new SvgRenderer(this.element.id);\n this.layout = new LayoutPanel(this);\n };\n TreeMap.prototype.createSecondaryElement = function () {\n var secondaryEle = document.getElementById(this.element.id + '_Secondary_Element');\n if (secondaryEle && secondaryEle.childElementCount > 0) {\n secondaryEle.parentNode.removeChild(secondaryEle);\n }\n if (isNullOrUndefined(document.getElementById(this.element.id + '_Secondary_Element'))) {\n var secondaryElement = createElement('div', {\n id: this.element.id + '_Secondary_Element',\n styles: 'position: absolute;z-index:1;'\n });\n this.element.appendChild(secondaryElement);\n }\n };\n TreeMap.prototype.elementChange = function () {\n if (this.treeMapLegendModule && this.legendSettings.visible && this.treeMapLegendModule.legendGroup && this.layout.layoutGroup\n && !isNullOrUndefined(this.svgObject) && !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 * @private\n * Render the treemap border\n *\n * @returns {void}\n */\n TreeMap.prototype.renderBorder = function () {\n var width = this.border.width;\n var borderElement = this.svgObject.querySelector('#' + this.element.id + '_TreeMap_Border');\n if ((this.border.width > 0 || (this.background || this.themeStyle.backgroundColor)) && isNullOrUndefined(borderElement)) {\n var borderRect = new RectOption(this.element.id + '_TreeMap_Border', this.background || this.themeStyle.backgroundColor, this.border, 1, new Rect(width / 2, width / 2, this.availableSize.width - width, this.availableSize.height - width));\n this.svgObject.appendChild(this.renderer.drawRectangle(borderRect));\n }\n else if (borderElement) {\n borderElement.setAttribute('fill', this.background || this.themeStyle.backgroundColor);\n }\n };\n TreeMap.prototype.renderTitle = function (title, type, bounds, groupEle) {\n var style = {\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.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 trimmedTitle = textTrim(width, title.text, style);\n var elementSize = measureText(trimmedTitle, style);\n var rect = (isNullOrUndefined(bounds)) ? new Rect(this.margin.left, this.margin.top, this.availableSize.width, this.availableSize.height) : bounds;\n var location_1 = findPosition(rect, title.alignment, elementSize, type);\n var options = new TextOption(this.element.id + '_TreeMap_' + type, location_1.x, location_1.y, 'start', trimmedTitle);\n var titleBounds = new Rect(location_1.x, location_1.y, elementSize.width, elementSize.height);\n var element = renderTextElement(options, style, style.color || (type === 'title' ? this.themeStyle.titleFontColor : this.themeStyle.subTitleFontColor), groupEle);\n element.setAttribute('aria-label', title.description || title.text);\n element.setAttribute('tabindex', (this.tabIndex + (type === 'title' ? 1 : 2)).toString());\n if ((type === 'title' && !title.subtitleSettings.text) || (type === 'subtitle')) {\n height = (this.availableSize.height - titleBounds.y - titlePadding - this.margin.bottom);\n this.areaRect = new Rect(this.margin.left, titleBounds.y + titlePadding, width, height);\n }\n if (type !== 'subtitle' && title.subtitleSettings.text) {\n this.renderTitle(title.subtitleSettings, 'subtitle', titleBounds, groupEle);\n }\n else {\n this.svgObject.appendChild(groupEle);\n }\n }\n else {\n height = (this.availableSize.height - this.margin.top - this.margin.bottom);\n this.areaRect = new Rect(this.margin.left, this.margin.top, width, height);\n }\n };\n TreeMap.prototype.processingData = function () {\n var _this = this;\n var path;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource = this.dataSource;\n if (!isNullOrUndefined(this.dataSource) && this.dataSource.length > 0 && this.weightValuePath) {\n LevelsData.levelsData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource.map(function (data) {\n data[_this.weightValuePath] = (data[_this.weightValuePath]) ? data[_this.weightValuePath].toString() :\n data[_this.weightValuePath];\n });\n this.leafItemSettings.labelPath = this.leafItemSettings.labelPath || this.weightValuePath;\n this.checkIsHierarchicalData();\n if (this.levels.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data_1 = {};\n data_1['level'] = 0;\n path = this.leafItemSettings.labelPath;\n data_1[path] = [];\n for (var i = 0; i < this.dataSource.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(this.dataSource[i])['values'];\n if (this.isHierarchicalData && child && child.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n child.forEach(function (currentData, dataIndex) {\n if (currentData[path]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data_1[path].push({\n groupIndex: 0, name: currentData[path], levelOrderName: currentData[path].toString(),\n data: currentData, weight: currentData[_this.weightValuePath]\n });\n }\n });\n }\n else {\n if (this.dataSource[i][path]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data_1[path].push({\n groupIndex: 0, name: this.dataSource[i][path], levelOrderName: this.dataSource[i][path].toString(), data: this.dataSource[i],\n weight: this.dataSource[i][this.weightValuePath]\n });\n }\n }\n }\n LevelsData.levelsData.push(data_1);\n }\n else {\n if (this.isHierarchicalData) {\n LevelsData.hierarchyData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LevelsData.hierarchyData = extend([], this.dataSource, LevelsData.hierarchyData, true);\n for (var i = 0; i < LevelsData.hierarchyData.length; i++) {\n this.processHierarchicalData(LevelsData.hierarchyData[i], i);\n }\n LevelsData.levelsData = LevelsData.hierarchyData;\n }\n else {\n this.processFlatJsonData();\n if (LevelsData.levelsData.length > 1) {\n this.reOrderLevelData(LevelsData.levelsData.length - 1);\n }\n }\n path = this.levels[0].groupPath;\n }\n if (!this.isHierarchicalData) {\n this.findTotalWeight(LevelsData.levelsData[0][path], 'Parent');\n }\n }\n };\n TreeMap.prototype.checkIsHierarchicalData = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child;\n this.dataSource = this.dataSource;\n for (var i = 0; i < this.dataSource.length; i++) {\n child = findChildren(this.dataSource[i])['values'];\n if (child && child.length) {\n this.isHierarchicalData = true;\n break;\n }\n else if (i === this.dataSource.length - 1) {\n this.isHierarchicalData = false;\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.processHierarchicalData = function (data, dataCount) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childData;\n var levelData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newData = {};\n var levelIndex;\n var path = this.leafItemSettings.labelPath ? this.leafItemSettings.labelPath : this.weightValuePath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = {};\n var level;\n var key;\n newData = findChildren(data);\n childData = newData ? newData['values'] : null;\n if (childData && childData.length > 0) {\n key = newData['key'];\n for (var i = 0; i < this.levels.length; i++) {\n if (key === this.levels[i].groupPath) {\n level = this.levels[i];\n levelIndex = i;\n }\n }\n for (var j = 0; j < childData.length; j++) {\n childData[j]['name'] = childData[j][path];\n childData[j]['levelOrderName'] = (levelIndex === 0 ? childData[j]['name'] :\n data['levelOrderName'] + '#' + childData[j]['name']) + '';\n var childItemLevel = childData[j]['levelOrderName'];\n var childLevel = void 0;\n if (childItemLevel.search('#') > 0) {\n childLevel = childItemLevel.split('#').length - 1;\n }\n childData[j]['groupIndex'] = isNullOrUndefined(levelIndex) ? childLevel === this.levels.length\n ? this.levels.length : childLevel : levelIndex;\n if (levelIndex !== 0) {\n childData[j]['parent'] = data;\n }\n childData[j]['groupName'] = key;\n childData[j]['data'] = childData[j];\n childData[j]['isDrilled'] = false;\n childData[j]['weight'] = childData[j][this.weightValuePath];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childData.forEach(function (currentData) {\n _this.processHierarchicalData(currentData, dataCount);\n });\n }\n if (dataCount === LevelsData.hierarchyData.length - 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var mainData_1 = LevelsData.hierarchyData[0][this.levels[0].groupPath];\n for (var k = 0; k < LevelsData.hierarchyData.length; k++) {\n childData = findChildren(LevelsData.hierarchyData[k])['values'];\n if (k !== 0 && childData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childData.forEach(function (currentData) { mainData_1.push(currentData); });\n LevelsData.hierarchyData.splice(k, 1);\n k -= 1;\n }\n }\n mainData_1 = LevelsData.hierarchyData[0][this.levels[0].groupPath];\n for (var l = 0; l < mainData_1.length; l++) {\n newData[this.levels[0].groupPath] = mainData_1;\n mainData_1[l]['parent'] = newData;\n }\n }\n };\n /* eslint-disable valid-jsdoc */\n /**\n * This method is used to perform the print functionality in treemap.\n *\n * @param id - Specifies the element to print the treemap.\n */\n TreeMap.prototype.print = function (id) {\n if (this.allowPrint && this.printModule) {\n this.printModule.print(id);\n }\n };\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param type - Specifies the index of the axis.\n * @param fileName - Specifies file name for exporting the rendered treemap.\n * @param orientation - Specifies the orientation of the pdf document.\n */\n TreeMap.prototype.export = function (type, fileName, orientation, allowDownload) {\n var _this = this;\n if (isNullOrUndefined(allowDownload)) {\n allowDownload = true;\n }\n if (type === 'PDF' && this.allowPdfExport && this.pdfExportModule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new Promise(function (resolve, reject) {\n resolve(_this.pdfExportModule.export(type, fileName, orientation, allowDownload));\n });\n }\n else if (this.allowImageExport && (type !== 'PDF') && this.imageExportModule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new Promise(function (resolve, reject) {\n resolve(_this.imageExportModule.export(type, fileName, allowDownload));\n });\n }\n return null;\n };\n TreeMap.prototype.processFlatJsonData = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource = this.dataSource;\n var groupPath;\n var childGroupPath;\n var orderNames = [];\n var process = false;\n for (var i = 0; i < this.levels.length + 1; i++) {\n groupPath = this.levels[i] ? this.levels[i].groupPath : this.leafItemSettings.labelPath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var level = {};\n level['level'] = i;\n level[groupPath] = [];\n LevelsData.levelsData.push(level);\n for (var j = 0; j < this.dataSource.length; j++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = {};\n var childName = '';\n if (!isNullOrUndefined(groupPath)) {\n var name_1 = this.dataSource[j][groupPath];\n if (i !== 0) {\n for (var k = 0; k <= i; k++) {\n var childGroupPath_1 = this.levels[k] ? this.levels[k].groupPath : groupPath;\n childName += (this.dataSource[j][childGroupPath_1]) + ((k === i) ? '' : '#');\n }\n }\n if (!(orderNames.length > 0 ? orderNames.indexOf(childName ?\n childName : name_1) !== -1 : false)) {\n currentData['name'] = name_1;\n currentData['levelOrderName'] = ((childName) ? childName : name_1) + '';\n currentData['groupIndex'] = i;\n currentData['isDrilled'] = false;\n currentData['groupName'] = groupPath;\n currentData['data'] = this.dataSource[j];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LevelsData.levelsData[LevelsData.levelsData.length - 1][groupPath].push(currentData);\n orderNames.push((childName) ? childName : name_1);\n }\n }\n }\n }\n };\n /**\n * This method orders the treemap level data.\n *\n * @param start - Specifies the start value of the treemap level.\n */\n TreeMap.prototype.reOrderLevelData = function (start) {\n var currentName;\n var currentPath = this.levels[start] ? this.levels[start].groupPath : this.leafItemSettings.labelPath;\n var prevPath = this.levels[start - 1].groupPath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = LevelsData.levelsData[start][currentPath];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var previousData = LevelsData.levelsData[start - 1][prevPath];\n for (var i = 0; i < currentData.length; i++) {\n currentName = currentData[i]['levelOrderName'];\n for (var j = 0; j < previousData.length; j++) {\n previousData[j][currentPath] = isNullOrUndefined(previousData[j][currentPath]) ? [] : previousData[j][currentPath];\n if (this.IsChildHierarchy(currentName.split('#'), previousData[j]['levelOrderName'].split('#'))) {\n if (isNullOrUndefined(currentData[i]['parent'])) {\n currentData[i]['parent'] = previousData[j];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n previousData[j][currentPath].push(currentData[i]);\n break;\n }\n }\n }\n this.findTotalWeight(LevelsData.levelsData[LevelsData.levelsData.length - 1][currentPath], 'Child');\n LevelsData.levelsData.splice(start, 1);\n if ((start - 1) > 0) {\n this.reOrderLevelData(start - 1);\n }\n };\n TreeMap.prototype.IsChildHierarchy = function (current, previous) {\n var isChild = false;\n for (var i = 0; i < previous.length; i++) {\n if (current.length < i || previous[i] !== current[i]) {\n return false;\n }\n else {\n isChild = true;\n }\n }\n return isChild;\n };\n /**\n * This method finds the weight value of the treemap level.\n *\n * @param processData - Specifies the treemap data.\n * @param type - Specifies the type of the data.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.findTotalWeight = function (processData, type) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var totalWeight;\n var childData = [];\n var levelName;\n var start = 0;\n var split;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var groupName;\n var groupObj = {};\n var _loop_1 = function (i) {\n totalWeight = 0;\n groupName = processData[i]['groupName'];\n split = processData[i]['levelOrderName'].split('#');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this_1.dataSource.forEach(function (data) {\n if (isContainsData(split, processData[i]['levelOrderName'], data, _this)) {\n totalWeight += parseFloat(data[_this.weightValuePath]);\n }\n });\n if (type === 'Parent') {\n groupObj[groupName] = processData;\n processData[i]['parent'] = groupObj;\n }\n processData[i]['weight'] = totalWeight;\n };\n var this_1 = this;\n for (var i = 0; i < processData.length; i++) {\n _loop_1(i);\n }\n };\n /**\n * To unbind event handlers for treemap.\n *\n * @returns {void}\n */\n TreeMap.prototype.unWireEVents = function () {\n EventHandler.remove(this.element, 'click', this.clickOnTreeMap);\n EventHandler.remove(this.element, 'dblclick', this.doubleClickOnTreeMap);\n EventHandler.remove(this.element, 'contextmenu', this.rightClickOnTreeMap);\n EventHandler.remove(this.element, Browser.touchStartEvent, this.mouseDownOnTreeMap);\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.mouseMoveOnTreeMap);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.mouseEndOnTreeMap);\n EventHandler.remove(this.element, 'pointerleave mouseleave', this.mouseLeaveOnTreeMap);\n window.removeEventListener('resize', this.resizeOnTreeMap);\n };\n /**\n * To bind event handlers for treemap.\n *\n * @returns {void}\n */\n TreeMap.prototype.wireEVents = function () {\n EventHandler.add(this.element, 'click', this.clickOnTreeMap, this);\n EventHandler.add(this.element, 'dblclick', this.doubleClickOnTreeMap, this);\n EventHandler.add(this.element, 'contextmenu', this.rightClickOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchStartEvent, this.mouseDownOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchMoveEvent, this.mouseMoveOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchEndEvent, this.mouseEndOnTreeMap, this);\n EventHandler.add(this.element, 'pointerleave mouseleave', this.mouseLeaveOnTreeMap, this);\n window.addEventListener('resize', this.resizeOnTreeMap.bind(this));\n };\n /**\n * Method to set culture for maps\n *\n * @returns {void}\n */\n TreeMap.prototype.setCulture = function () {\n this.intl = new Internationalization();\n };\n /**\n * To add tab index for treemap element\n *\n * @returns {void}\n */\n TreeMap.prototype.addTabIndex = function () {\n this.element.setAttribute('aria-label', this.description || 'TreeMap Element');\n this.element.setAttribute('tabindex', this.tabIndex.toString());\n };\n /**\n * This method handles the window resize event on treemap.\n *\n * @param e - Specifies the pointer event.\n */\n TreeMap.prototype.resizeOnTreeMap = function (e) {\n var _this = this;\n this.isResize = true;\n var args = {\n name: resize,\n cancel: false,\n previousSize: this.availableSize,\n currentSize: new Size(0, 0),\n treemap: this\n };\n if (this.resizeTo) {\n clearTimeout(this.resizeTo);\n }\n if (!isNullOrUndefined(this.element) && this.element.classList.contains('e-treemap')) {\n this.resizeTo = setTimeout(function () {\n _this.unWireEVents();\n _this.createSvg();\n _this.refreshing = true;\n _this.wireEVents();\n args.currentSize = _this.availableSize;\n _this.trigger(resize, args, function (observedArgs) {\n _this.render();\n });\n }, 500);\n }\n };\n /**\n * This method handles the click event on the treemap.\n *\n * @param e - Specifies the mouse click event in the treemap.\n */\n TreeMap.prototype.clickOnTreeMap = function (e) {\n var _this = this;\n var targetEle = e.target;\n var targetId = targetEle.id;\n var eventArgs;\n var itemIndex;\n var labelText = targetEle.innerHTML;\n var clickArgs = { cancel: false, name: click, treemap: this, mouseEvent: e };\n this.trigger(click, clickArgs);\n if (targetId.indexOf('_Item_Index') > -1) {\n e.preventDefault();\n itemIndex = parseFloat(targetId.split('_Item_Index_')[1]);\n eventArgs = {\n cancel: false, name: itemClick, treemap: this, item: this.layout.renderItems[itemIndex], mouseEvent: e,\n groupIndex: this.layout.renderItems[itemIndex]['groupIndex'], groupName: this.layout.renderItems[itemIndex]['name'],\n text: labelText, contentItemTemplate: labelText\n };\n this.trigger(itemClick, eventArgs, function (observedArgs) {\n if (observedArgs.text !== labelText || observedArgs.contentItemTemplate !== labelText) {\n if (isNullOrUndefined(_this.leafItemSettings.labelTemplate)) {\n observedArgs.text = textFormatter(observedArgs.text, observedArgs['item']['data'], observedArgs.treemap);\n targetEle.innerHTML = observedArgs.text;\n }\n else {\n setItemTemplateContent(targetId, targetEle, observedArgs.contentItemTemplate);\n }\n }\n });\n }\n var end = new Date().getMilliseconds();\n var doubleTapTimer1;\n if (!isNullOrUndefined(this.doubleClick)) {\n if (!isNullOrUndefined(doubleTapTimer1) && end - doubleTapTimer1 < 500) {\n this.doubleClickOnTreeMap(e);\n }\n doubleTapTimer1 = end;\n }\n };\n /**\n * This method handles the double click event in the treemap.\n *\n * @param e - Specifies the pointer event of mouse click.\n */\n TreeMap.prototype.doubleClickOnTreeMap = function (e) {\n var doubleClickArgs = { cancel: false, name: doubleClick, treemap: this, mouseEvent: e };\n this.trigger(doubleClick, doubleClickArgs);\n //this.notify('dblclick', e);\n };\n /**\n * This method handles the right click event in the treemap.\n *\n * @param e - Specifies the pointer event of mouse click.\n */\n TreeMap.prototype.rightClickOnTreeMap = function (e) {\n var rightClickArgs = { cancel: false, name: rightClick, treemap: this, mouseEvent: e };\n this.trigger(rightClick, rightClickArgs);\n };\n /**\n * This method handles the mouse down event in the treemap.\n *\n * @param e - Specifies the pointer event of mouse click.\n */\n TreeMap.prototype.mouseDownOnTreeMap = function (e) {\n if (e.target.id.indexOf('_Item_Index') > -1) {\n this.mouseDown = true;\n }\n this.notify(Browser.touchStartEvent, e);\n };\n /**\n * This method handles the mouse move event in the treemap.\n *\n * @param e - Specifies the pointer event of mouse click.\n */\n TreeMap.prototype.mouseMoveOnTreeMap = function (e) {\n var targetEle = e.target;\n var targetId = targetEle.id;\n var eventArgs;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n var moveArgs = { cancel: false, name: mouseMove, treemap: this, mouseEvent: e };\n this.trigger(mouseMove, moveArgs);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childItems;\n if (targetId.indexOf('_Item_Index') > -1) {\n item = this.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childItems = findChildren(item)['values'];\n this.element.style.cursor = (!item['isLeafItem'] && childItems && childItems.length > 0 && this.enableDrillDown) ?\n 'pointer' : 'auto';\n eventArgs = { cancel: false, name: itemMove, treemap: this, item: item, mouseEvent: e };\n this.trigger(itemMove, eventArgs);\n }\n this.notify(Browser.touchMoveEvent, e);\n };\n /**\n * This method calculates the selected treemap levels.\n *\n * @param labelText - Specifies the label text.\n * @param item - Specifies the treemap item.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.calculateSelectedTextLevels = function (labelText, item) {\n //to find the levels by clicking the particular text both for drillDownView as true / false.\n var drillLevel;\n var k;\n var text;\n var levelLabels = item['levelOrderName'];\n var levelText = levelLabels.split('#');\n for (var _i = 0, _a = Object.keys(levelText); _i < _a.length; _i++) {\n k = _a[_i];\n if (levelText[k] === labelText) {\n drillLevel = parseInt(k, 10);\n text = labelText;\n }\n }\n return { drillLevel: drillLevel, currentLevelLabel: text, levelText: levelText };\n };\n /**\n * This method calculates the previous level of child items in treemap.\n *\n * @param labelText - Specifies the label text in treemap\n * @param drillLevelValues - Specifies the values of drill level.\n * @param item - Specifies the treemap item.\n * @param directLevel - Specifies the current level.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.calculatePreviousLevelChildItems = function (labelText, drillLevelValues, item, directLevel) {\n //By clicking any child items drilldown to the particular level.\n //At the time store all the previous drilled level items in drilledItems\n // This condition satisfies while drilldown View is set as false and the text contains '[+]'\n var text;\n var p = 0;\n var levelItems;\n var text1;\n var drillTextLevel = this.layout.renderItems[0]['levelOrderName'].split('#').length;\n for (var h = 0; h < drillTextLevel; h++) {\n text1 = h === 0 ? drillLevelValues['levelText'][h] : text1 + '#' + drillLevelValues['levelText'][h];\n }\n p = drillTextLevel > 1 ? drillTextLevel : p;\n for (var _i = 0, _a = Object['values'](this.layout.renderItems); _i < _a.length; _i++) {\n levelItems = _a[_i];\n var drillLevelText = levelItems['levelOrderName'].split('#');\n if (drillLevelText[0] === drillLevelValues['levelText'][0]) {\n text = p === 0 ? isNullOrUndefined(text1) ? text1 : drillLevelValues['levelText'][p] :\n directLevel ? text1 : text1 + '#' + drillLevelValues['levelText'][p];\n if (text === levelItems['levelOrderName']) {\n this.drilledItems.push({ name: levelItems['levelOrderName'], data: levelItems });\n p++;\n directLevel = true;\n if (p <= item['groupIndex']) {\n text = text + '#' + drillLevelValues['levelText'][p];\n text1 = text;\n }\n }\n }\n }\n return directLevel;\n };\n /**\n * This method compares the selected labels with the drill down items.\n *\n * @param drillLevelValues - Specifies the values of drill level.\n * @param item - Specifies the treemap item.\n * @param i - Specifies the treemap item.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.compareSelectedLabelWithDrillDownItems = function (drillLevelValues, item, i) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var drillLevelChild;\n var newDrillItem = {};\n var b = drillLevelValues['drillLevel'] + 1;\n if (b === this.drilledItems[i]['data']['groupIndex']) {\n drillLevelChild = this.drilledItems[i]['data']['parent'];\n drillLevelChild['isDrilled'] = true;\n newDrillItem[drillLevelChild[this.drilledItems[i]['data']['groupName']]]\n = [drillLevelChild];\n // to remove all the items after matched drilled items\n this.drilledItems.splice(i, this.drilledItems.length);\n }\n else if (drillLevelValues['drillLevel'] === (this.drilledItems.length - 1)\n || drillLevelValues['drillLevel'] === item['groupIndex']) {\n newDrillItem[item['groupName']] = [item];\n }\n return newDrillItem;\n };\n /**\n * This method handles mouse end event in treemap.\n *\n * @param e - Specifies the pointer event of mouse.\n */\n TreeMap.prototype.mouseEndOnTreeMap = function (e) {\n var _this = this;\n var targetEle = e.target;\n var targetId = targetEle.id;\n var totalRect;\n var startEvent;\n var endEvent;\n var directLevel = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var index;\n var newDrillItem = {};\n var item;\n var process = true;\n var layoutID = this.element.id + '_TreeMap_' + this.layoutType + '_Layout';\n var drillLevel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateID = this.element.id + '_Label_Template_Group';\n var drillLevelValues;\n if (targetId.indexOf('_Item_Index') > -1 && this.enableDrillDown && !this.drillMouseMove) {\n if (e.cancelable) {\n e.preventDefault();\n }\n index = parseFloat(targetId.split('_Item_Index_')[1]);\n item = this.layout.renderItems[index];\n var labelText = targetEle.innerHTML;\n if (this.enableBreadcrumb) {\n drillLevelValues = this.calculateSelectedTextLevels(labelText, item);\n drillLevel = drillLevelValues['drillLevel'];\n if (!this.drillDownView && labelText.search('[+]') !== -1) {\n directLevel = this.calculatePreviousLevelChildItems(labelText, drillLevelValues, item, directLevel);\n }\n }\n if (this.levels.length !== 0 && !item['isLeafItem'] && findChildren(item)['values'] &&\n findChildren(item)['values'].length > 0) {\n if (this.drilledItems.length > 0) {\n item = directLevel ? this.drilledItems[this.drilledItems.length - 1]['data'] : item;\n for (var i = 0; i < this.drilledItems.length; i++) {\n if (!isNullOrUndefined(drillLevel)) { //Compare the selected text level with drilled items\n var drillLength = this.drilledItems.length;\n newDrillItem = this.compareSelectedLabelWithDrillDownItems(drillLevelValues, item, i);\n if (drillLength !== this.drilledItems.length) {\n i -= 1;\n break;\n }\n } //when clicking the levels drill back to the previous level process takes place\n if (item['levelOrderName'] === this.drilledItems[i]['name'] && !directLevel && isNullOrUndefined(drillLevel)) {\n if (item['groupIndex'] === 0 && item['parent'][item['groupName']] instanceof Array) {\n item['isDrilled'] = !(item['isDrilled']);\n if (!item['isDrilled']) {\n newDrillItem = item['parent'];\n }\n else {\n newDrillItem[item['groupName']] = [item];\n }\n }\n else {\n item['isDrilled'] = false;\n item['parent']['isDrilled'] = true;\n item = item['parent'];\n newDrillItem[item['groupName']] = [item];\n }\n this.drilledItems.splice(i, 1);\n i -= 1;\n break;\n }\n else if (i === this.drilledItems.length - 1 && isNullOrUndefined(drillLevel)) {\n item['isDrilled'] = true; // click the items move to next level.\n newDrillItem[item['groupName']] = [item];\n }\n }\n }\n else {\n item['isDrilled'] = true;\n newDrillItem[item['groupName']] = [item];\n }\n startEvent = {\n cancel: false, name: drillStart, treemap: this,\n element: targetEle, groupIndex: this.enableBreadcrumb &&\n this.drilledItems.length !== 0 && !isNullOrUndefined(drillLevel) ?\n this.drilledItems[this.drilledItems.length - 1]['data']['groupIndex'] : item['groupIndex'],\n groupName: this.enableBreadcrumb && this.drilledItems.length !== 0 && !isNullOrUndefined(drillLevel) ?\n this.drilledItems[this.drilledItems.length - 1]['data']['name'] : item['name'],\n rightClick: e.which === 3 ? true : false, childItems: null, item: newDrillItem\n };\n this.trigger(drillStart, startEvent, function (observedArgs) {\n _this.currentLevel = item['isDrilled'] && isNullOrUndefined(drillLevel) ? item['groupIndex'] :\n (!isNullOrUndefined(drillLevel) && _this.enableBreadcrumb && item['isDrilled']) ? drillLevel : null;\n if (!observedArgs.cancel) {\n if (document.getElementById(layoutID)) {\n var layerElementId = document.getElementById(layoutID);\n layerElementId.parentNode.removeChild(layerElementId);\n }\n totalRect = extend({}, _this.areaRect, totalRect, true);\n if (_this.legendSettings.visible && !isNullOrUndefined(_this.treeMapLegendModule)) {\n if (!isNullOrUndefined(newDrillItem)) {\n _this.treeMapLegendModule.legendGroup.textContent = '';\n _this.treeMapLegendModule.legendGroup = null;\n _this.treeMapLegendModule.widthIncrement = 0;\n _this.treeMapLegendModule.heightIncrement = 0;\n if (_this.enableBreadcrumb && !isNullOrUndefined(drillLevel)) {\n _this.drilledLegendItems = {\n name: _this.drilledItems[_this.drilledItems.length - 1]['data']['levelOrderName'],\n data: _this.drilledItems[_this.drilledItems.length - 1]['data']\n };\n }\n else {\n _this.drilledLegendItems = { name: item['levelOrderName'], data: item };\n }\n _this.treeMapLegendModule.renderLegend();\n }\n totalRect = !isNullOrUndefined(_this.totalRect) ? _this.totalRect : totalRect;\n }\n if (document.getElementById(templateID)) {\n var drillElementId = document.getElementById(templateID);\n drillElementId.parentNode.removeChild(drillElementId);\n }\n if (!isNullOrUndefined(observedArgs.childItems) && !observedArgs.cancel) {\n _this.layout.onDemandProcess(observedArgs.childItems);\n }\n else {\n _this.layout.calculateLayoutItems(newDrillItem, totalRect);\n _this.layout.renderLayoutItems(newDrillItem);\n }\n }\n });\n endEvent = { cancel: false, name: drillEnd, treemap: this, renderItems: this.layout.renderItems };\n this.trigger(drillEnd, endEvent);\n if (process) {\n if (!directLevel && isNullOrUndefined(drillLevel)) {\n this.drilledItems.push({ name: item['levelOrderName'], data: item });\n }\n }\n }\n }\n this.mouseDown = false;\n this.notify(Browser.touchEndEvent, e);\n };\n /**\n * This method handles mouse leave event in treemap.\n *\n * @param e - Specifies the pointer event of mouse.\n */\n TreeMap.prototype.mouseLeaveOnTreeMap = function (e) {\n if (this.treeMapTooltipModule) {\n this.treeMapTooltipModule.removeTooltip();\n }\n if (this.treeMapLegendModule) {\n this.treeMapLegendModule.removeInteractivePointer();\n }\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', this);\n if (this.treeMapHighlightModule) {\n removeShape(this.treeMapHighlightModule.shapeHighlightCollection, 'highlight');\n this.treeMapHighlightModule.highLightId = '';\n }\n };\n /**\n * This method is used to select or remove the selection of treemap item based on the provided selection settings.\n */\n TreeMap.prototype.selectItem = function (levelOrder, isSelected) {\n if (isNullOrUndefined(isSelected)) {\n isSelected = true;\n }\n var levelOrderName = '';\n for (var i = 0; i < levelOrder.length; i++) {\n if (i !== levelOrder.length - 1) {\n levelOrderName += levelOrder[i] + '#';\n }\n else {\n levelOrderName += levelOrder[i];\n }\n }\n if (this.treeMapSelectionModule && this.selectionSettings.enable) {\n this.treeMapSelectionModule.selectTreemapItem(levelOrderName, isSelected);\n }\n };\n /**\n * To provide the array of modules needed for maps rendering\n *\n * @returns {ModuleDeclaration[]} Returns the modules\n * @private\n */\n TreeMap.prototype.requiredModules = function () {\n var modules = [];\n if (this.tooltipSettings.visible) {\n modules.push({\n member: 'treeMapTooltip',\n args: [this]\n });\n }\n if (this.highlightSettings.enable) {\n modules.push({\n member: 'treeMapHighlight',\n args: [this]\n });\n }\n if (this.selectionSettings.enable) {\n modules.push({\n member: 'treeMapSelection',\n args: [this]\n });\n }\n if (this.legendSettings.visible) {\n modules.push({\n member: 'treeMapLegend',\n args: [this]\n });\n }\n if (this.allowPrint) {\n modules.push({\n member: 'Print',\n args: [this, Print]\n });\n }\n if (this.allowImageExport) {\n modules.push({\n member: 'ImageExport',\n args: [this, ImageExport]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this, PdfExport]\n });\n }\n return modules;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TreeMapModel} newProp - Specifies the new property\n * @param {TreeMapModel} oldProp - Specifies the old property\n * @returns {void}\n * @private\n */\n TreeMap.prototype.onPropertyChanged = function (newProp, oldProp) {\n var render = false;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'background':\n this.renderBorder();\n break;\n case 'height':\n case 'width':\n case 'layoutType':\n case 'levels':\n case 'drillDownView':\n case 'renderDirection':\n case 'leafItemSettings':\n case 'legendSettings':\n case 'dataSource':\n render = true;\n break;\n }\n }\n if (render) {\n this.createSvg();\n this.renderElements();\n }\n };\n /**\n * Gets component name.\n */\n TreeMap.prototype.getModuleName = function () {\n return 'treemap';\n };\n /**\n * This method is used to dispose the treemap component.\n */\n TreeMap.prototype.destroy = function () {\n this.unWireEVents();\n this.drilledItems = [];\n this.levelSelection = [];\n this.legendId = [];\n this.removeSvg();\n _super.prototype.destroy.call(this);\n };\n TreeMap.prototype.removeSvg = function () {\n removeElement(this.element.id + '_Secondary_Element');\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Returns the string value.\n * @private\n */\n TreeMap.prototype.getPersistData = function () {\n return '';\n };\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowPrint\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowImageExport\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"height\", void 0);\n __decorate([\n Complex({}, Border)\n ], TreeMap.prototype, \"border\", void 0);\n __decorate([\n Complex({}, Margin)\n ], TreeMap.prototype, \"margin\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"background\", void 0);\n __decorate([\n Property('Material')\n ], TreeMap.prototype, \"theme\", void 0);\n __decorate([\n Complex({}, TitleSettings)\n ], TreeMap.prototype, \"titleSettings\", void 0);\n __decorate([\n Property('Squarified')\n ], TreeMap.prototype, \"layoutType\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"weightValuePath\", void 0);\n __decorate([\n Property('')\n ], TreeMap.prototype, \"rangeColorValuePath\", void 0);\n __decorate([\n Property('')\n ], TreeMap.prototype, \"equalColorValuePath\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"colorValuePath\", void 0);\n __decorate([\n Property([])\n ], TreeMap.prototype, \"palette\", void 0);\n __decorate([\n Property('TopLeftBottomRight')\n ], TreeMap.prototype, \"renderDirection\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"enableDrillDown\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"enableBreadcrumb\", void 0);\n __decorate([\n Property(' - ')\n ], TreeMap.prototype, \"breadcrumbConnector\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"drillDownView\", void 0);\n __decorate([\n Complex({}, InitialDrillSettings)\n ], TreeMap.prototype, \"initialDrillDown\", void 0);\n __decorate([\n Complex({}, LeafItemSettings)\n ], TreeMap.prototype, \"leafItemSettings\", void 0);\n __decorate([\n Collection([], LevelSettings)\n ], TreeMap.prototype, \"levels\", void 0);\n __decorate([\n Complex({}, HighlightSettings)\n ], TreeMap.prototype, \"highlightSettings\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], TreeMap.prototype, \"selectionSettings\", void 0);\n __decorate([\n Complex({}, TooltipSettings)\n ], TreeMap.prototype, \"tooltipSettings\", void 0);\n __decorate([\n Complex({}, LegendSettings)\n ], TreeMap.prototype, \"legendSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"useGroupingSeparator\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"description\", void 0);\n __decorate([\n Property(1)\n ], TreeMap.prototype, \"tabIndex\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"format\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"drillStart\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"drillEnd\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemSelected\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemHighlight\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"tooltipRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemMove\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"doubleClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"rightClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"mouseMove\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"resize\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"legendItemRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"legendRendering\", void 0);\n TreeMap = __decorate([\n NotifyPropertyChanges\n ], TreeMap);\n return TreeMap;\n}(Component));\nexport { TreeMap };\n/**\n * @private\n */\nvar LevelsData = /** @class */ (function () {\n function LevelsData() {\n }\n return LevelsData;\n}());\nexport { LevelsData };\n","/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable @typescript-eslint/dot-notation */\n/* eslint-disable max-len */\nimport { LevelsData } from '../treemap';\nimport { findChildren, Location, Rect, Size, measureText, TextOption, PathOption, RectOption, drawSymbol, orderByArea, legendMaintain } from '../utils/helper';\nimport { Browser, isNullOrUndefined, EventHandler, extend } from '@syncfusion/ej2-base';\nimport { renderTextElement, textTrim } from '../utils/helper';\nimport { legendItemRendering, legendRendering } from '../model/constants';\n/**\n * Legend module class\n */\nvar TreeMapLegend = /** @class */ (function () {\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function TreeMapLegend(treemap) {\n this.page = 0;\n this.legendBorderRect = new Rect(0, 0, 0, 0);\n this.currentPage = 0;\n this.heightIncrement = 0;\n this.widthIncrement = 0;\n this.textMaxWidth = 0;\n this.legendInteractiveGradient = [];\n this.legendItemRect = new Rect(0, 0, 0, 0);\n this.treemap = treemap;\n this.addEventListener();\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * method for legend\n */\n TreeMapLegend.prototype.renderLegend = function () {\n var _this = this;\n this.legendRenderingCollections = [];\n this.legendCollections = [];\n this.legendNames = [];\n this.totalPages = [];\n this.gradientCount = 1;\n this.widthIncrement = 0;\n this.heightIncrement = 0;\n this.defsElement = this.treemap.renderer.createDefs();\n this.treemap.svgObject.appendChild(this.defsElement);\n var eventArgs;\n eventArgs = {\n cancel: false, name: legendRendering, treemap: this.treemap, _changePosition: this.treemap.legendSettings.position,\n position: this.treemap.legendSettings.position\n };\n this.treemap.trigger(legendRendering, eventArgs, function (observedArgs) {\n // eslint-disable-next-line no-underscore-dangle\n if (!observedArgs.cancel && observedArgs._changePosition !== _this.treemap.legendSettings.position) {\n // eslint-disable-next-line no-underscore-dangle\n _this.treemap.legendSettings.position = observedArgs._changePosition;\n }\n _this.calculateLegendBounds();\n if (_this.legendCollections.length > 0) {\n _this.drawLegend();\n }\n });\n };\n TreeMapLegend.prototype.calculateLegendBounds = function () {\n var _this = this;\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n this.findColorMappingLegendItems(LevelsData.levelsData[0]);\n if ((this.treemap.palette.length > 0 || !isNullOrUndefined(this.treemap.colorValuePath))\n && this.legendCollections.length === 0) {\n this.findPaletteLegendItems(LevelsData.levelsData[0], 'Parent');\n }\n if (this.legendCollections.length > 0) {\n var defaultSize = 25;\n var textPadding = 10;\n var position = legend.position;\n var legendTitle = legend.title.text;\n var titleTextStyle = legend.titleStyle;\n var legendMode = legend.mode;\n var shapeX = 0;\n var shapeY = 0;\n var textX = 0;\n var textY = 0;\n var shapeHeight = legend.shapeHeight;\n var shapeWidth = legend.shapeWidth;\n var shapeLocation = [];\n var textLocation = [];\n var orientation_1 = (legend.orientation === 'None') ? ((position === 'Top' || position === 'Bottom'\n || (position === 'Auto' && treemap.availableSize.width <= treemap.availableSize.height))\n ? 'Horizontal' : 'Vertical') : legend.orientation;\n var leftPadding = 10;\n var topPadding = 10;\n var spacing = 10;\n var legendWidth = (legend.width.length > 1) ? (legend.width.indexOf('%') > -1) ? (treemap.availableSize.width / 100)\n * parseFloat(legend.width) : parseFloat(legend.width) : null;\n var legendHeight = (legend.height.length > 1) ? (legend.height.indexOf('%') > -1) ?\n (treemap.availableSize.height / 100) * parseFloat(legend.height) : parseFloat(legend.height) : null;\n titleTextStyle.fontFamily = treemap.themeStyle.fontFamily || titleTextStyle.fontFamily;\n titleTextStyle.size = treemap.themeStyle.legendFontSize || titleTextStyle.size;\n var legendTitleSize = measureText(legendTitle, titleTextStyle);\n var startX_1 = 0;\n var startY_1 = 0;\n var shapePadding = legend.shapePadding;\n var rectWidth = void 0;\n var rectHeight = void 0;\n var itemTextStyle = legend.textStyle;\n var legendLength = this.legendCollections.length;\n itemTextStyle.size = itemTextStyle.size || treemap.themeStyle.legendFontSize;\n itemTextStyle.fontFamily = itemTextStyle.fontFamily || treemap.themeStyle.fontFamily;\n if (legendMode === 'Default') {\n legendWidth = (isNullOrUndefined(legendWidth)) ? treemap.areaRect.width : legendWidth;\n legendHeight = (isNullOrUndefined(legendHeight)) ? treemap.areaRect.height : legendHeight;\n var j = 0;\n for (var i = 0; i < this.legendCollections.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var legendItem = this.legendCollections[i];\n if (isNullOrUndefined(this.totalPages[this.page])) {\n this.totalPages[this.page] = { Page: (this.page + 1), Collection: [] };\n }\n var legendTextSize = measureText(legendItem['legendName'], 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_1 = this.legendCollections.length;\n var rectWidth_1 = (orientation_1 === 'Horizontal') ? (isNullOrUndefined(legendWidth)) ? (treemap.areaRect.width / legendLength_1) :\n (legendWidth / legendLength_1) : (isNullOrUndefined(legendWidth)) ? defaultSize : legendWidth;\n var rectHeight_1 = (orientation_1 === 'Horizontal') ? (isNullOrUndefined(legendHeight)) ? defaultSize : legendHeight :\n (isNullOrUndefined(legendHeight)) ? (treemap.areaRect.height / legendLength_1) : (legendHeight / legendLength_1);\n startX_1 = 0;\n startY_1 = legendTitleSize.height + spacing;\n var textPadding_1 = 10;\n var placement = legend.labelPosition;\n var itemStartX = 0;\n var itemStartY = 0;\n var labelAction = legend.labelDisplayMode;\n var maxTextHeight = 0;\n var maxTextWidth = 0;\n for (var i = 0; i < this.legendCollections.length; i++) {\n startX_1 = (orientation_1 === 'Horizontal') ? (startX_1 + rectWidth_1) : startX_1;\n startY_1 = (orientation_1 === 'Horizontal') ? startY_1 : (startY_1 + rectHeight_1);\n var legendText = this.legendCollections[i]['legendName'];\n var itemTextSize = new Size(0, 0);\n if (labelAction === 'None') {\n itemTextSize = measureText(legendText, itemTextStyle);\n }\n else if (labelAction === 'Trim') {\n legendText = textTrim((orientation_1 === 'Horizontal' ? rectWidth_1 : rectHeight_1), 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_1 / 2);\n textY = (placement === 'After') ? (startY_1 + rectHeight_1 + (itemTextSize.height / 2)) + textPadding_1 :\n (startY_1 - textPadding_1);\n }\n else {\n textX = (placement === 'After') ? startX_1 - (itemTextSize.width / 2) - textPadding_1\n : (startX_1 + rectWidth_1 + itemTextSize.width / 2) + textPadding_1;\n textY = startY_1 + (rectHeight_1 / 2) + (itemTextSize.height / 4);\n }\n }\n if (i === 0) {\n itemStartX = (orientation_1 === 'Horizontal') ? startX_1 : (placement === 'After') ?\n textX - (itemTextSize.width / 2) : startX_1;\n itemStartY = (orientation_1 === 'Horizontal') ? (placement === 'After') ? startY_1 :\n textY - (itemTextSize.height / 2) : startY_1;\n }\n if (i === legendLength_1 - 1) {\n legendWidth = (orientation_1 === 'Horizontal') ? Math.abs((startX_1 + rectWidth_1) - itemStartX) :\n (rectWidth_1 + maxTextWidth + textPadding_1);\n legendHeight = (orientation_1 === 'Horizontal') ? (rectHeight_1 + (maxTextHeight / 2) + textPadding_1) :\n Math.abs((startY_1 + rectHeight_1) - itemStartY);\n }\n this.legendRenderingCollections.push({\n fill: this.legendCollections[i]['legendFill'], x: startX_1, y: startY_1,\n width: rectWidth_1, height: rectHeight_1, element: this.legendCollections[i]['gradientElement'],\n text: legendText, textX: textX, textY: textY,\n textWidth: itemTextSize.width, textHeight: itemTextSize.height,\n data: this.legendCollections[i]['legendData']\n });\n }\n this.legendItemRect = { x: itemStartX, y: itemStartY, width: legendWidth, height: legendHeight };\n }\n }\n };\n TreeMapLegend.prototype.getPageChanged = function () {\n this.page++;\n if (isNullOrUndefined(this.totalPages[this.page])) {\n this.totalPages[this.page] = { Page: (this.page + 1), Collection: [] };\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.findColorMappingLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n if (child && child.length > 0) {\n this.calculateLegendItems(child);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < child.length; i++) {\n this.findColorMappingLegendItems(child[i]);\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.findPaletteLegendItems = function (data, type) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child;\n var legendFillColor;\n if (!isNullOrUndefined(this.treemap.drilledItems)) {\n if (this.treemap.drilledItems.length === 0 && !isNullOrUndefined(this.treemap.initialDrillDown.groupName)\n && isNullOrUndefined(this.treemap.drilledLegendItems)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var items = findChildren(data)['values'];\n for (var k = 0; k < items.length; k++) {\n if (items[k]['Name'] === this.treemap.initialDrillDown.groupName) {\n items[k]['isDrilled'] = !items[k]['isDrilled'];\n data = items[k];\n this.treemap.currentLevel = this.treemap.initialDrillDown.groupIndex;\n legendFillColor = this.treemap.palette.length > 0 ? this.treemap.palette[k % this.treemap.palette.length] :\n items[k]['data'][this.treemap.colorValuePath];\n break;\n }\n }\n }\n }\n if (this.treemap.enableDrillDown && !isNullOrUndefined(this.treemap.drilledLegendItems)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childElement = this.treemap.drilledLegendItems;\n legendFillColor = childElement['data']['options']['fill'];\n if (childElement['data']['isDrilled']) {\n child = findChildren(childElement['data'])['values'];\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentElement = childElement['data']['parent'];\n child = findChildren(parentElement)['values'];\n }\n }\n else {\n child = findChildren(data)['values'];\n }\n var isDuplicate;\n var legendName;\n if (child && child.length > 0) {\n for (var i = 0; i < child.length; i++) {\n if (isNullOrUndefined(child[i]['data'][this.treemap.legendSettings.showLegendPath]) ||\n child[i]['data'][this.treemap.legendSettings.showLegendPath]) {\n legendName = child[i]['data'][this.treemap.legendSettings.valuePath] ?\n child[i]['data'][this.treemap.legendSettings.valuePath] : child[i]['name'];\n isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, legendName) : false;\n if (!isDuplicate) {\n this.legendCollections.push({\n legendName: legendName,\n legendFill: this.treemap.palette.length > 0 ? !isNullOrUndefined(this.treemap.currentLevel)\n ? legendFillColor : this.treemap.palette[i % this.treemap.palette.length] :\n child[i]['data'][this.treemap.colorValuePath],\n legendData: [],\n itemArea: child[i]['weight']\n });\n }\n }\n }\n this.legendCollections.sort(orderByArea);\n if (this.treemap.palette.length > 0) {\n for (var j = 0; j < this.legendCollections.length; j++) {\n this.legendCollections[j]['legendFill'] = !isNullOrUndefined(this.treemap.currentLevel)\n ? legendFillColor : this.treemap.palette[j % this.treemap.palette.length];\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.calculateLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isAddData;\n var fill;\n var rangeValue;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData;\n var legendText;\n var itemValue;\n var isLeafItem;\n var colorMapProcess = false;\n var colorMapping;\n var groupIndex;\n var leaf = this.treemap.leafItemSettings;\n var levels = this.treemap.levels;\n var equalValue;\n var position = this.treemap.legendSettings.position;\n var gradientElement;\n var x2;\n var y2;\n var actualValue;\n var isDuplicate;\n var isEqualColor;\n var isRange;\n var isDesaturation = false;\n var legendIndex = 0;\n var outfill;\n var labelLegend;\n var otherIndex;\n this.outOfRangeLegend = null;\n for (var i = 0; i < data.length; i++) {\n fill = '';\n isEqualColor = false;\n isRange = false;\n isDesaturation = false;\n currentData = data[i]['data'];\n groupIndex = data[i]['groupIndex'];\n isLeafItem = (this.treemap.levels.length === 0 || groupIndex === this.treemap.levels.length);\n colorMapping = isLeafItem ? leaf.colorMapping : levels[groupIndex].colorMapping;\n for (var _i = 0, colorMapping_1 = colorMapping; _i < colorMapping_1.length; _i++) {\n var colorMap = colorMapping_1[_i];\n gradientElement = null;\n rangeValue = Number(currentData[this.treemap.rangeColorValuePath]);\n equalValue = currentData[this.treemap.equalColorValuePath];\n colorMap.value = !isNullOrUndefined(colorMap.value) ? colorMap.value.toString() : colorMap.value;\n if (!isNullOrUndefined(colorMap.from) && !isNullOrUndefined(colorMap.to) &&\n rangeValue >= colorMap.from && rangeValue <= colorMap.to && colorMap.showLegend) {\n colorMapProcess = true;\n isRange = true;\n actualValue = colorMap.from + ' - ' + colorMap.to;\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : colorMap.from + ' - ' + colorMap.to;\n fill = isNullOrUndefined(colorMap.color) ? fill : colorMap.color;\n isAddData = this.isAddNewLegendData(actualValue);\n }\n else if (!isNullOrUndefined(colorMap.value) && equalValue === colorMap.value && colorMap.showLegend) {\n colorMapProcess = true;\n isEqualColor = true;\n actualValue = colorMap.value.toString();\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : colorMap.value.toString();\n fill = isNullOrUndefined(colorMap.color) ? fill :\n Object.prototype.toString.call(colorMap.color) === '[object Array]' ? colorMap.color[0] : colorMap.color;\n isAddData = this.isAddNewLegendData(actualValue);\n }\n if (colorMapProcess && isNullOrUndefined(colorMap.value) && colorMap.maxOpacity && colorMap.minOpacity\n && this.treemap.legendSettings.mode === 'Interactive') {\n var colors = [];\n isDesaturation = true;\n if (Object.prototype.toString.call(colorMap.color) === '[object Array]') {\n for (var q = 0; q < colorMap.color.length; q++) {\n var offsetColor = 100 / (colorMap.color.length - 1);\n var offsetValue = q * offsetColor + '%';\n var stop1Color = { colorStop: offsetValue.toString(), color: colorMap.color[q] };\n colors.push(stop1Color);\n }\n }\n else {\n var stop1Color = { colorStop: '0%', color: fill };\n var stop2Color = { colorStop: '100%', color: fill };\n colors.push(stop1Color);\n colors.push(stop2Color);\n }\n x2 = position === 'Top' || position === 'Bottom' ? '100%' : '0%';\n y2 = position === 'Top' || position === 'Bottom' ? '0%' : '100%';\n var gradient = {\n id: 'groupIndex_' + groupIndex + '_colorIndex_' + this.gradientCount, x1: '0%', y1: '0%', x2: x2, y2: y2\n };\n gradientElement = this.treemap.renderer.drawGradient('linearGradient', gradient, colors).childNodes[0];\n if (Object.prototype.toString.call(colorMap.color) !== '[object Array]') {\n gradientElement.childNodes[0].setAttribute('stop-opacity', colorMap.minOpacity.toString());\n gradientElement.childNodes[1].setAttribute('stop-opacity', colorMap.maxOpacity.toString());\n }\n this.defsElement.appendChild(gradientElement);\n this.gradientCount++;\n }\n isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, legendText) : false;\n if (isAddData && isAddData['process'] && colorMapProcess && !isDuplicate) {\n colorMapProcess = false;\n fill = ((Object.prototype.toString.call(colorMap.color) === '[object Array]')) && isNullOrUndefined(gradientElement)\n && isNullOrUndefined(colorMap.value) ? this.legendGradientColor(colorMap, legendIndex) : fill;\n this.legendCollections.push({\n actualValue: actualValue,\n legendName: legendText, legendFill: fill, legendData: [],\n gradientElement: !isNullOrUndefined(gradientElement) ? gradientElement : isNullOrUndefined(colorMap.value)\n ? this.legendLinearGradient : null, name: data[i]['name'],\n opacity: this.treemap.legendSettings.opacity, borderColor: this.treemap.legendSettings.border.color,\n borderWidth: this.treemap.legendSettings.border.width\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[this.legendCollections.length - 1]['legendData'].push(data[i]);\n legendIndex++;\n }\n else if (colorMapProcess && !isDuplicate) {\n colorMapProcess = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[isAddData['value']]['legendData'].push(data[i]);\n }\n if (!isRange && !isDesaturation && !isEqualColor) {\n if (isNullOrUndefined(colorMap.from) && isNullOrUndefined(colorMap.to)\n && isNullOrUndefined(colorMap.minOpacity) &&\n isNullOrUndefined(colorMap.maxOpacity) && isNullOrUndefined(colorMap.value) &&\n !isNullOrUndefined(colorMap.color)) {\n outfill = ((Object.prototype.toString.call(colorMap.color) === '[object Array]'))\n ? colorMap.color[0] : colorMap.color;\n labelLegend = !isNullOrUndefined(colorMap.label) ? colorMap.label : 'Others';\n if (isNullOrUndefined(this.outOfRangeLegend)) {\n this.legendCollections.push({\n actualValue: labelLegend, legendData: [],\n legendName: labelLegend, legendFill: outfill\n });\n otherIndex = this.legendCollections.length;\n this.outOfRangeLegend = this.legendCollections[otherIndex - 1];\n legendIndex++;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[otherIndex - 1]['legendData'].push(data[i]);\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.removeDuplicates = function (legendCollection, text) {\n var isDuplicate = false;\n for (var i = 0; i < legendCollection.length; i++) {\n if (legendCollection[i]['legendName'] === text) {\n isDuplicate = true;\n break;\n }\n else {\n continue;\n }\n }\n return isDuplicate;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.isAddNewLegendData = function (legendText) {\n var newDataProcess;\n var itemValue;\n if (this.legendCollections.length === 0) {\n newDataProcess = true;\n }\n else {\n for (var j = 0; j < this.legendCollections.length; j++) {\n if (legendText === this.legendCollections[j]['actualValue']) {\n newDataProcess = false;\n itemValue = j;\n break;\n }\n else if (j === this.legendCollections.length - 1) {\n newDataProcess = true;\n }\n }\n }\n return { process: newDataProcess, value: itemValue };\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To draw the legend\n */\n TreeMapLegend.prototype.drawLegend = function () {\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n var render = treemap.renderer;\n var fill;\n var textOptions;\n var gradientElement;\n var textFont = legend.textStyle;\n this.legendGroup = render.createGroup({ id: treemap.element.id + '_Legend_Group' });\n this.renderLegendBorder();\n this.renderLegendTitle();\n if (legend.mode === 'Default') {\n this.drawLegendItem(this.currentPage);\n }\n else {\n for (var i = 0; i < this.legendRenderingCollections.length; i++) {\n var itemId = treemap.element.id + '_Legend_Index_' + i;\n var textId = treemap.element.id + '_Legend_Index_' + i + '_Text';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = this.legendRenderingCollections[i];\n gradientElement = item['element'];\n fill = gradientElement ? 'url(#' + gradientElement.id + ')' : item['fill'];\n var bounds = new Rect(item['x'], item['y'], item['width'], item['height']);\n var textLocation = new Location(item['textX'], item['textY']);\n var rectOptions = new RectOption(itemId, fill, legend.shapeBorder, legend.opacity, bounds);\n if (this.treemap.enableRtl) {\n if (treemap.legendSettings.position === 'Left' || treemap.legendSettings.position === 'Right'\n || (treemap.legendSettings.position === 'Auto'\n && this.treemap.availableSize.width >= this.treemap.availableSize.height)) {\n rectOptions.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - (this.translate.y + rectOptions.height) - Math.abs(this.legendBorderRect.y - rectOptions.y);\n textLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - (this.translate.y) + (item['textHeight'] / 2)\n - Math.abs(this.legendBorderRect.y - textLocation.y);\n }\n else {\n rectOptions.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + rectOptions.width)\n - Math.abs(this.legendBorderRect.x - rectOptions.x);\n textLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - this.translate.x - Math.abs(this.legendBorderRect.x - textLocation.x);\n }\n }\n textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'middle', item['text'], '', '');\n renderTextElement(textOptions, textFont, textFont.color || this.treemap.themeStyle.legendTextColor, this.legendGroup);\n this.legendGroup.appendChild(render.drawRectangle(rectOptions));\n }\n }\n legendMaintain(this.treemap, this.legendGroup);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.defaultLegendRtlLocation = function (collection, spacing, treemap, legend) {\n var shapeLocation = collection['Shape'];\n var textLocation = collection['Text'];\n var legendText = collection['DisplayText'];\n var textSize = measureText(legendText, legend.textStyle);\n shapeLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + spacing) - Math.abs(this.legendBorderRect.x - shapeLocation.x);\n textLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + textSize.width + spacing) - Math.abs(this.legendBorderRect.x - textLocation.x);\n if (treemap.legendSettings.position === 'Left' || treemap.legendSettings.position === 'Right'\n || (treemap.legendSettings.position === 'Auto'\n && this.treemap.availableSize.width >= this.treemap.availableSize.height)) {\n shapeLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - this.translate.y - Math.abs(Math.abs(this.legendBorderRect.y) - shapeLocation.y) - (legend.shapeHeight / 2);\n textLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - this.translate.y - Math.abs(Math.abs(this.legendBorderRect.y) - textLocation.y);\n }\n return { shapeLocation: shapeLocation, textLocation: textLocation };\n };\n TreeMapLegend.prototype.drawLegendItem = function (page) {\n var _this = this;\n var treemap = this.treemap;\n var spacing = 10;\n var legend = treemap.legendSettings;\n var shapeSize = new Size(legend.shapeWidth, legend.shapeHeight);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var textOptions;\n var legendRtlLocation;\n var renderOptions;\n var render = treemap.renderer;\n var shapeBorder = legend.shapeBorder;\n var eventArgs;\n if (page >= 0 && page < this.totalPages.length) {\n if (document.getElementById(this.legendGroup.id)) {\n document.getElementById(this.legendGroup.id).remove();\n }\n var isLineShape_1 = (legend.shape === 'HorizontalLine' || legend.shape === 'VerticalLine' || legend.shape === 'Cross');\n var strokeColor_1 = isLineShape_1 ? isNullOrUndefined(legend.fill) ? '#000000' : legend.fill : shapeBorder.color;\n var strokeWidth_1 = isLineShape_1 ? (shapeBorder.width === 0) ? 1 : shapeBorder.width : shapeBorder.width;\n var _loop_1 = function (i) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this_1.totalPages[page]['Collection'][i];\n var legendElement = render.createGroup({ id: treemap.element.id + '_Legend_Index_' + i });\n var legendText = collection['DisplayText'];\n var shapeId = treemap.element.id + '_Legend_Shape_Index_' + i;\n var textId = treemap.element.id + '_Legend_Text_Index_' + i;\n var shapeLocation = collection['Shape'];\n var textLocation = collection['Text'];\n if (treemap.enableRtl) {\n legendRtlLocation = this_1.defaultLegendRtlLocation(collection, spacing, treemap, legend);\n shapeLocation = legendRtlLocation['shapeLocation'];\n textLocation = legendRtlLocation['textLocation'];\n }\n eventArgs = {\n cancel: false, name: legendItemRendering, treemap: treemap, fill: collection['Fill'],\n shape: legend.shape, imageUrl: legend.imageUrl\n };\n this_1.treemap.trigger(legendItemRendering, eventArgs, function (observedArgs) {\n var renderOptions = new PathOption(shapeId, observedArgs.fill, strokeWidth_1, isLineShape_1 ? collection['Fill'] : strokeColor_1, legend.opacity, '');\n legendElement.appendChild(drawSymbol(shapeLocation, observedArgs.shape, shapeSize, observedArgs.imageUrl, renderOptions, legendText));\n textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'start', legendText, '', '');\n renderTextElement(textOptions, legend.textStyle, legend.textStyle.color || _this.treemap.themeStyle.legendTextColor, legendElement);\n _this.legendGroup.appendChild(legendElement);\n });\n };\n var this_1 = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (var i = 0; i < this.totalPages[page]['Collection'].length; i++) {\n _loop_1(i);\n }\n var pagingGroup = void 0;\n var width = spacing;\n var height = (spacing / 2);\n if (this.page !== 0) {\n var pagingText = (page + 1) + '/' + this.totalPages.length;\n var pagingFont = legend.textStyle;\n var pagingTextSize = measureText(pagingText, pagingFont);\n var leftPageX = (this.legendItemRect.x + this.legendItemRect.width) - pagingTextSize.width -\n (width * 2) - spacing;\n var rightPageX = (this.legendItemRect.x + this.legendItemRect.width);\n var locY = (this.legendItemRect.y + this.legendItemRect.height) + (height / 2) + spacing;\n var pageTextX = rightPageX - width - (pagingTextSize.width / 2) - (spacing / 2);\n pagingGroup = render.createGroup({ id: treemap.element.id + '_Legend_Paging_Group' });\n var leftPageElement = render.createGroup({ id: treemap.element.id + '_Legend_Left_Paging_Group' });\n var rightPageElement = render.createGroup({ id: treemap.element.id + '_Legend_Right_Paging_Group' });\n var rightPath = ' M ' + rightPageX + ' ' + locY + ' L ' + (rightPageX - width) + ' ' + (locY - height) +\n ' L ' + (rightPageX - width) + ' ' + (locY + height) + ' z ';\n var leftPath = ' M ' + leftPageX + ' ' + locY + ' L ' + (leftPageX + width) + ' ' + (locY - height) +\n ' L ' + (leftPageX + width) + ' ' + (locY + height) + ' z ';\n var leftPageOptions = new PathOption(treemap.element.id + '_Left_Page', '#a6a6a6', 0, '#a6a6a6', 1, '', leftPath);\n leftPageElement.appendChild(render.drawPath(leftPageOptions));\n var leftRectPageOptions = new RectOption(treemap.element.id + '_Left_Page_Rect', 'transparent', {}, 1, new Rect(leftPageX - (width / 2), (locY - (height * 2)), width * 2, spacing * 2), '');\n leftPageElement.appendChild(render.drawRectangle(leftRectPageOptions));\n this.wireEvents(leftPageElement);\n var rightPageOptions = new PathOption(treemap.element.id + '_Right_Page', '#a6a6a6', 0, '#a6a6a6', 1, '', rightPath);\n rightPageElement.appendChild(render.drawPath(rightPageOptions));\n var rightRectPageOptions = new RectOption(treemap.element.id + '_Right_Page_Rect', 'transparent', {}, 1, new Rect((rightPageX - width), (locY - height), width, spacing), '');\n rightPageElement.appendChild(render.drawRectangle(rightRectPageOptions));\n this.wireEvents(rightPageElement);\n pagingGroup.appendChild(leftPageElement);\n pagingGroup.appendChild(rightPageElement);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var pageTextOptions = {\n 'id': treemap.element.id + '_Paging_Text',\n 'x': pageTextX,\n 'y': locY + (pagingTextSize.height / 4),\n 'fill': '#a6a6a6',\n 'font-size': '14px',\n 'font-style': pagingFont.fontStyle,\n 'font-family': pagingFont.fontFamily,\n 'font-weight': pagingFont.fontWeight,\n 'text-anchor': 'middle',\n 'transform': '',\n 'opacity': 1,\n 'dominant-baseline': ''\n };\n pagingGroup.appendChild(render.createText(pageTextOptions, pagingText));\n this.legendGroup.appendChild(pagingGroup);\n }\n }\n };\n TreeMapLegend.prototype.renderLegendBorder = function () {\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n var legendTitle = legend.title.text;\n var spacing = 10;\n var textStyle = legend.titleStyle;\n var textOptions;\n var title = textTrim((this.legendItemRect.width + (spacing * 2)), legendTitle, textStyle);\n var textSize = measureText(title, textStyle);\n this.legendBorderRect = new Rect((this.legendItemRect.x - spacing), (this.legendItemRect.y - spacing - textSize.height), (this.legendItemRect.width) + (spacing * 2), (this.legendItemRect.height) + (spacing * 2) + textSize.height +\n (legend.mode === 'Interactive' ? 0 : (this.page !== 0) ? spacing : 0));\n var renderOptions = new RectOption(treemap.element.id + '_Legend_Border', legend.background, legend.border, 1, this.legendBorderRect, '');\n var legendBorder = treemap.renderer.drawRectangle(renderOptions);\n legendBorder.style.pointerEvents = 'none';\n this.legendGroup.appendChild(legendBorder);\n this.getLegendAlignment(treemap, this.legendBorderRect.width, this.legendBorderRect.height, legend);\n this.legendGroup.setAttribute('transform', 'translate( ' + (this.translate.x + (-(this.legendBorderRect.x))) + ' ' +\n (this.translate.y + (-(this.legendBorderRect.y))) + ' )');\n treemap.svgObject.appendChild(this.legendGroup);\n };\n TreeMapLegend.prototype.renderLegendTitle = function () {\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n var textStyle = legend.titleStyle;\n var legendTitle = legend.title.text;\n var textOptions;\n var spacing = 10;\n var trimTitle = textTrim((this.legendItemRect.width + (spacing * 2)), legendTitle, textStyle);\n var textSize = measureText(trimTitle, textStyle);\n if (legendTitle) {\n textOptions = new TextOption(treemap.element.id + '_LegendTitle', (this.legendItemRect.x) + (this.legendItemRect.width / 2), this.legendItemRect.y - (textSize.height / 2) - (spacing / 2), 'middle', trimTitle, '');\n renderTextElement(textOptions, textStyle, textStyle.color || this.treemap.themeStyle.legendTitleColor, this.legendGroup);\n }\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To rendered the interactive pointer\n */\n TreeMapLegend.prototype.renderInteractivePointer = function (e) {\n var treemap = this.treemap;\n var target = e.target;\n var interactiveId = treemap.element.id + '_Interactive_Legend';\n target = !(e.type.indexOf('touch') > -1) ? target :\n document.elementFromPoint(e.changedTouches[0].clientX, e.changedTouches[0].clientY);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetItem;\n var legend = treemap.legendSettings;\n if (target.id.indexOf('_Item_Index') > -1 && legend.visible && this.legendRenderingCollections.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = void 0;\n var legendRect = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var rect = void 0;\n var data = void 0;\n var fill = void 0;\n var stroke = void 0;\n var strokeWidth = void 0;\n var legendElement = void 0;\n targetItem = treemap.layout.renderItems[parseFloat(target.id.split('_Item_Index_')[1])];\n var svgRect = treemap.svgObject.getBoundingClientRect();\n for (var i = 0; i < this.legendCollections.length; i++) {\n currentData = this.legendCollections[i];\n legendElement = document.getElementById(treemap.element.id + '_Legend_Index_' + i);\n legendRect = legendElement.getBoundingClientRect();\n var rect_1 = new Rect(Math.abs(legendRect.left - svgRect.left), Math.abs(legendRect.top - svgRect.top), legendRect.width, legendRect.height);\n fill = legendElement.getAttribute('fill');\n stroke = legend.shapeBorder.color;\n strokeWidth = legend.shapeBorder.width;\n if (!isNullOrUndefined(currentData['legendData'])) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data = currentData['legendData'];\n for (var j = 0; j < data.length; j++) {\n if (data[j]['levelOrderName'] === targetItem['levelOrderName']) {\n this.drawInteractivePointer(legend, fill, stroke, interactiveId, strokeWidth, rect_1);\n break;\n }\n }\n }\n }\n }\n else {\n this.removeInteractivePointer();\n }\n };\n TreeMapLegend.prototype.drawInteractivePointer = function (legend, fill, stroke, id, strokeWidth, rect) {\n var path;\n var locX;\n var locY;\n var height = 10;\n var width = 10;\n var direction = (legend.orientation === 'None') ? (legend.position === 'Top' || legend.position === 'Bottom')\n ? 'Horizontal' : 'Vertical' : legend.orientation;\n if (direction === 'Horizontal') {\n if (!legend.invertedPointer) {\n locX = rect.x + (rect.width / 2);\n locY = rect.y;\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX - width) + ' ' + (locY - height) +\n ' L ' + (locX + width) + ' ' + (locY - height) + ' Z ';\n }\n else {\n locX = rect.x + (rect.width / 2);\n locY = rect.y + (rect.height);\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX - width) + ' ' + (locY + height) +\n ' L ' + (locX + width) + ' ' + (locY + height) + ' Z ';\n }\n }\n else {\n if (!legend.invertedPointer) {\n locX = rect.x + (rect.width);\n locY = rect.y + (rect.height / 2);\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX + width) + ' ' + (locY - height) +\n ' L ' + (locX + width) + ' ' + (locY + height) + ' z ';\n }\n else {\n locX = rect.x;\n locY = rect.y + (rect.height / 2);\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX - width) + ' ' + (locY - height) +\n ' L ' + (locX - width) + ' ' + (locY + height) + ' z ';\n }\n }\n var pathOptions = new PathOption(id, fill, strokeWidth, stroke, 1, '', path);\n this.treemap.svgObject.appendChild(this.treemap.renderer.drawPath(pathOptions));\n };\n TreeMapLegend.prototype.getLegendAlignment = function (treemap, width, height, legend) {\n var x;\n var y;\n var spacing = 10;\n var totalRect;\n // eslint-disable-next-line prefer-const\n totalRect = extend({}, treemap.areaRect, totalRect, true);\n var areaX = totalRect.x;\n var areaY = totalRect.y;\n var areaHeight = totalRect.height;\n var areaWidth = totalRect.width;\n var totalWidth = treemap.availableSize.width;\n var totalHeight = treemap.availableSize.height;\n var position = legend.position === 'Auto' ? (totalWidth > totalHeight) ? 'Right' : 'Bottom' : legend.position;\n if (legend.position === 'Float') {\n this.translate = legend.location;\n }\n else {\n switch (position) {\n case 'Top':\n case 'Bottom':\n totalRect.height = (areaHeight - height);\n x = (totalWidth / 2) - (width / 2);\n y = (position === 'Top') ? areaY : (areaY + totalRect.height) + spacing;\n totalRect.y = (position === 'Top') ? areaY + height + spacing : areaY;\n break;\n case 'Left':\n case 'Right':\n totalRect.width = (areaWidth - width);\n x = (position === 'Left') ? areaX : areaX + totalRect.width;\n y = (totalHeight / 2) - (height / 2);\n totalRect.x = (position === 'Left') ? areaX + width : areaX;\n break;\n }\n switch (legend.alignment) {\n case 'Near':\n if (position === 'Top' || position === 'Bottom') {\n x = totalRect.x;\n }\n else {\n y = totalRect.y;\n }\n break;\n case 'Far':\n if (position === 'Top' || position === 'Bottom') {\n x = totalWidth - width;\n }\n else {\n y = totalHeight - height;\n }\n break;\n }\n this.treemap.totalRect = totalRect;\n this.translate = new Location(x, y);\n }\n };\n TreeMapLegend.prototype.mouseUpHandler = function (e) {\n this.renderInteractivePointer(e);\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeInteractivePointer.bind(this), 3000);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To remove the interactive pointer\n */\n TreeMapLegend.prototype.removeInteractivePointer = function () {\n if (document.getElementById(this.treemap.element.id + '_Interactive_Legend')) {\n var legendElementId = document.getElementById(this.treemap.element.id + '_Interactive_Legend');\n legendElementId.parentNode.removeChild(legendElementId);\n }\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To change the next page\n */\n TreeMapLegend.prototype.changeNextPage = function (e) {\n this.currentPage = (e.target.id.indexOf('_Left_Page_') > -1) ? (this.currentPage - 1) :\n (this.currentPage + 1);\n this.drawLegend();\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * Wire events for event handler\n */\n TreeMapLegend.prototype.wireEvents = function (element) {\n EventHandler.add(element, Browser.touchStartEvent, this.changeNextPage, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To add the event listener\n */\n TreeMapLegend.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.renderInteractivePointer, this);\n this.treemap.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To remove the event listener\n */\n TreeMapLegend.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.renderInteractivePointer);\n this.treemap.off(Browser.touchEndEvent, this.mouseUpHandler);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * Get module name.\n */\n TreeMapLegend.prototype.getModuleName = function () {\n return 'treeMapLegend';\n };\n /**\n * To destroy the legend.\n *\n * @param {TreeMap} treemap - Specifies treemap instance\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.destroy = function (treemap) {\n /**\n * Destroy method performed here\n */\n this.removeEventListener();\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * Get the gradient color for interactive legend.\n */\n TreeMapLegend.prototype.legendGradientColor = function (colorMap, legendIndex) {\n var legendFillColor;\n var xmlns = 'http://www.w3.org/2000/svg';\n if (!isNullOrUndefined(colorMap.color) && Object.prototype.toString.call(colorMap.color) === '[object Array]') {\n var defElement = this.treemap.renderer.createDefs();\n var linerGradientEle = document.createElementNS(xmlns, 'linearGradient');\n var opacity = 1;\n var position = this.treemap.legendSettings.position;\n var x2 = position === 'Top' || position === 'Bottom' ? '100' : '0';\n var y2 = position === 'Top' || position === 'Bottom' ? '0' : '100';\n linerGradientEle.setAttribute('id', 'linear_' + legendIndex);\n linerGradientEle.setAttribute('x1', 0 + '%');\n linerGradientEle.setAttribute('y1', 0 + '%');\n linerGradientEle.setAttribute('x2', x2 + '%');\n linerGradientEle.setAttribute('y2', y2 + '%');\n for (var b = 0; b < colorMap.color.length; b++) {\n var offsetColor = 100 / (colorMap.color.length - 1);\n var stopEle = document.createElementNS(xmlns, 'stop');\n stopEle.setAttribute('offset', b * offsetColor + '%');\n stopEle.setAttribute('stop-color', colorMap.color[b]);\n stopEle.setAttribute('stop-opacity', opacity.toString());\n linerGradientEle.appendChild(stopEle);\n }\n defElement.appendChild(linerGradientEle);\n this.legendLinearGradient = linerGradientEle;\n var color = 'url(' + '#linear_' + legendIndex + ')';\n this.defsElement.appendChild(linerGradientEle);\n legendFillColor = color;\n }\n return legendFillColor;\n };\n return TreeMapLegend;\n}());\nexport { TreeMapLegend };\n","import { Browser } from '@syncfusion/ej2-base';\nimport { itemHighlight, itemSelected } from '../model/constants';\nimport { findHightLightItems, removeClassNames, applyOptions, removeShape, removeLegend, removeSelectionWithHighlight, setColor, getLegendIndex, pushCollection, setItemTemplateContent } from '../utils/helper';\n/**\n * Performing treemap highlight\n */\nvar TreeMapHighlight = /** @class */ (function () {\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function TreeMapHighlight(treeMap) {\n this.target = 'highlight';\n this.shapeTarget = 'highlight';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.shapeHighlightCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendHighlightCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentElement = [];\n this.treemap = treeMap;\n this.addEventListener();\n }\n /* eslint-disable max-len */\n // eslint-disable-next-line valid-jsdoc\n /**\n * Mouse down event in highlight\n */\n TreeMapHighlight.prototype.mouseMove = function (e) {\n var treemap = this.treemap;\n var processHighlight;\n var targetId = e.target.id;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var eventArgs;\n var items = [];\n var highlight = this.treemap.highlightSettings;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n var highLightElements = [];\n var process;\n var treeMapElement;\n var element;\n var orders;\n var selectionModule = this.treemap.treeMapSelectionModule;\n if (targetId.indexOf('_Item_Index') > -1 && (selectionModule ? this.treemap.selectionId !== targetId : true)) {\n if (this.highLightId !== targetId) {\n treeMapElement = document.getElementById(treemap.element.id + '_TreeMap_' + treemap.layoutType + '_Layout');\n var selectionElements = document.getElementsByClassName('treeMapSelection');\n item = this.treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n var index = void 0;\n if (this.treemap.legendSettings.visible) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n var length_1 = this.treemap.treeMapLegendModule.legendCollections.length;\n index = getLegendIndex(length_1, item, treemap);\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index) : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index);\n if (this.shapeElement !== null && (selectionModule ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true)) {\n if (selectionModule ? this.shapeElement !== selectionModule.shapeElement : true) {\n this.currentElement.push({ currentElement: this.shapeElement });\n removeShape(this.shapeHighlightCollection, 'highlight');\n this.shapeHighlightCollection.push({ legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n setColor(this.shapeElement, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n this.target = 'highlight';\n }\n else if (this.currentElement.length > 0 && this.currentElement[this.currentElement.length - 1]['currentElement'] !== this.shapeElement) {\n removeSelectionWithHighlight(this.shapeHighlightCollection, this.currentElement, treemap);\n this.highLightId = '';\n }\n }\n else if (this.currentElement.length > 0 && this.currentElement[this.currentElement.length - 1]['currentElement'] !== this.shapeElement) {\n removeSelectionWithHighlight(this.shapeHighlightCollection, this.currentElement, treemap);\n this.highLightId = '';\n }\n }\n orders = findHightLightItems(item, [], highlight.mode, treemap);\n if (this.treemap.legendSettings.visible ? selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true : true) {\n if (this.treemap.legendSettings.visible ? selectionModule ? this.shapeElement !== selectionModule.shapeElement : true : true) {\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n process = true;\n item = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])];\n for (var j = 0; j < selectionElements.length; j++) {\n if (element.id === selectionElements[j].id) {\n process = false;\n break;\n }\n }\n if (orders.indexOf(item['levelOrderName']) > -1 && process) {\n highLightElements.push(element);\n items.push(item);\n }\n }\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n for (var k = 0; k < highLightElements.length; k++) {\n element = highLightElements[k];\n applyOptions(element.childNodes[0], { border: highlight.border, fill: highlight.fill, opacity: highlight.opacity });\n element.classList.add('treeMapHighLight');\n this.highLightId = targetId;\n }\n eventArgs = { cancel: false, name: itemHighlight, treemap: treemap, items: items, elements: highLightElements };\n treemap.trigger(itemHighlight, eventArgs);\n }\n else {\n processHighlight = false;\n }\n }\n }\n }\n else if (targetId.indexOf('_Legend_Shape') > -1 || targetId.indexOf('_Legend_Index') > -1) {\n if (this.treemap.legendSettings.visible && (selectionModule ? selectionModule.legendSelectId !== targetId : true) && (selectionModule ? selectionModule.shapeSelectId !== targetId : true)) {\n var itemIndex = void 0;\n var groupIndex = void 0;\n var length_2;\n var targetEle = document.getElementById(targetId);\n if (this.shapeTarget === 'highlight') {\n removeLegend(this.legendHighlightCollection, 'highlight');\n }\n this.shapeTarget = 'highlight';\n var index = this.treemap.legendSettings.mode === 'Default' ? parseFloat(targetId.split('_Legend_Shape_Index_')[1]) : parseFloat(targetId.split('_Legend_Index_')[1]);\n var dataLength = this.treemap.treeMapLegendModule.legendCollections[index]['legendData'].length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n var legendIndex = parseInt(targetId[targetId.length - 1], 10);\n for (var i = 0; i < dataLength; i++) {\n for (var j = 0; j < this.treemap.layout.renderItems.length; j++) {\n if (this.treemap.treeMapLegendModule.legendCollections[index]['legendData'][i]['levelOrderName'] === this.treemap.layout.renderItems[j]['levelOrderName']) {\n itemIndex = j;\n groupIndex = this.treemap.layout.renderItems[j]['groupIndex'];\n var nodeEle = document.getElementById(this.treemap.element.id + '_Level_Index_' + groupIndex + '_Item_Index_' + itemIndex + '_RectPath');\n if (i === 0) {\n this.legendHighlightCollection = [];\n pushCollection(this.legendHighlightCollection, legendIndex, j, targetEle, nodeEle, this.treemap.layout.renderItems, collection);\n length_2 = this.legendHighlightCollection.length;\n this.legendHighlightCollection[length_2 - 1]['ShapeCollection'] = { Elements: [] };\n }\n setColor(targetEle, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n setColor(nodeEle, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n length_2 = this.legendHighlightCollection.length;\n this.legendHighlightCollection[length_2 - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n }\n }\n else {\n if (selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true) {\n if (selectionModule ? this.shapeElement !== selectionModule.shapeElement : true && this.treemap.legendSettings.visible) {\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n }\n }\n if ((this.shapeTarget === 'highlight' || this.target === 'highlight') && this.treemap.legendSettings.visible) {\n if (selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true) {\n if (selectionModule ? this.shapeElement !== selectionModule.shapeElement : true && selectionModule ? selectionModule.legendSelect : true) {\n removeShape(this.shapeHighlightCollection, 'highlight');\n this.shapeHighlightCollection = [];\n }\n }\n }\n if (this.shapeTarget === 'highlight' && this.treemap.legendSettings.visible) {\n removeLegend(this.legendHighlightCollection, 'highlight');\n }\n this.highLightId = '';\n processHighlight = false;\n }\n return processHighlight;\n };\n /**\n * To bind events for highlight\n *\n * @returns {void}\n */\n TreeMapHighlight.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.mouseMove, this);\n };\n /**\n * To unbind events for highlight\n *\n * @returns {void}\n */\n TreeMapHighlight.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.mouseMove);\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name\n */\n TreeMapHighlight.prototype.getModuleName = function () {\n return 'treeMapHighlight';\n };\n /**\n * To destroy the hightlight.\n *\n * @param {TreeMap} treeMap - Specifies the instance of the treemap.\n * @returns {void}\n * @private\n */\n TreeMapHighlight.prototype.destroy = function (treeMap) {\n this.removeEventListener();\n };\n return TreeMapHighlight;\n}());\nexport { TreeMapHighlight };\n/**\n * Performing treemap selection\n */\nvar TreeMapSelection = /** @class */ (function () {\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function TreeMapSelection(treeMap) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.shapeSelectionCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendSelectionCollection = [];\n this.shapeSelect = true;\n this.legendSelect = true;\n this.treemap = treeMap;\n this.addEventListener();\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * Mouse down event in selection\n */\n TreeMapSelection.prototype.mouseDown = function (e) {\n var targetEle = e.target;\n var eventArgs;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var treemap = this.treemap;\n treemap.levelSelection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var items = [];\n var targetId = targetEle.id;\n var labelText = targetEle.innerHTML;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n var selectionElements = [];\n var opacity;\n var treeMapElement;\n var element;\n var orders;\n var selection = treemap.selectionSettings;\n var highlightModule = this.treemap.treeMapHighlightModule;\n var layoutID = treemap.element.id + '_TreeMap_' + treemap.layoutType + '_Layout';\n if (targetId.indexOf('_Item_Index') > -1) {\n e.preventDefault();\n if (this.treemap.selectionId !== targetId && this.legendSelect) {\n treeMapElement = document.getElementById(layoutID);\n item = treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n var index = void 0;\n if (this.treemap.legendSettings.visible) {\n this.shapeSelect = false;\n var length_3 = this.treemap.treeMapLegendModule.legendCollections.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n this.shapeElement = undefined;\n removeShape(this.shapeSelectionCollection, 'selection');\n if (highlightModule) {\n highlightModule.shapeTarget = 'selection';\n highlightModule.shapeHighlightCollection = [];\n }\n index = getLegendIndex(length_3, item, treemap);\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index) : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index);\n if (this.shapeElement !== null) {\n this.shapeSelectId = this.shapeElement.getAttribute('id');\n this.shapeSelectionCollection.push({ legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n setColor(this.shapeElement, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n }\n }\n orders = findHightLightItems(item, [], selection.mode, treemap);\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n item = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])];\n if (orders.indexOf(item['levelOrderName']) > -1) {\n selectionElements.push(element);\n treemap.levelSelection.push(element.id);\n items.push(item);\n }\n }\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', treemap);\n this.treemap.selectionId = targetId;\n var highLightElements = document.getElementsByClassName('treeMapHighLight');\n for (var k = 0; k < selectionElements.length; k++) {\n element = selectionElements[k];\n if (highLightElements.length > 0) {\n for (var j = 0; j < highLightElements.length; j++) {\n if (highLightElements[j].id === element.id) {\n highLightElements[j].classList.remove('treeMapHighLight');\n }\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n else {\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n eventArgs = { cancel: false, name: itemSelected, treemap: treemap, items: items, elements: selectionElements,\n text: labelText, contentItemTemplate: labelText };\n treemap.trigger(itemSelected, eventArgs, function (observedArgs) {\n if (observedArgs.contentItemTemplate !== labelText) {\n setItemTemplateContent(targetId, targetEle, observedArgs.contentItemTemplate);\n }\n });\n }\n }\n else {\n removeShape(this.shapeSelectionCollection, 'selection');\n this.shapeSelectionCollection = [];\n this.shapeElement = undefined;\n this.shapeSelect = true;\n this.shapeSelectId = '';\n this.treemap.legendId = [];\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', treemap);\n this.treemap.selectionId = '';\n }\n }\n else if (targetId.indexOf('_Legend_Shape') > -1 || targetId.indexOf('_Legend_Index') > -1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n if (this.treemap.legendSettings.visible && this.legendSelectId !== targetId && this.shapeSelect) {\n var itemIndex = void 0;\n var groupIndex = void 0;\n var length_4;\n this.legendSelectId = targetId;\n this.legendSelect = false;\n var legendIndex = parseInt(targetId[targetId.length - 1], 10);\n var targetEle_1 = document.getElementById(targetId);\n removeLegend(this.legendSelectionCollection, 'selection');\n if (highlightModule) {\n highlightModule.shapeTarget = 'selection';\n }\n var index = this.treemap.legendSettings.mode === 'Default' ? parseFloat(targetId.split('_Legend_Shape_Index_')[1]) : parseFloat(targetId.split('_Legend_Index_')[1]);\n var dataLength = this.treemap.treeMapLegendModule.legendCollections[index]['legendData'].length;\n for (var k = 0; k < dataLength; k++) {\n for (var l = 0; l < this.treemap.layout.renderItems.length; l++) {\n if (this.treemap.treeMapLegendModule.legendCollections[index]['legendData'][k]['levelOrderName'] === this.treemap.layout.renderItems[l]['levelOrderName']) {\n itemIndex = l;\n groupIndex = this.treemap.layout.renderItems[l]['groupIndex'];\n var nodeEle = document.getElementById(this.treemap.element.id + '_Level_Index_' + groupIndex + '_Item_Index_' + itemIndex + '_RectPath');\n if (k === 0) {\n pushCollection(this.legendSelectionCollection, legendIndex, l, targetEle_1, nodeEle, this.treemap.layout.renderItems, collection);\n length_4 = this.legendSelectionCollection.length;\n this.legendSelectionCollection[length_4 - 1]['ShapeCollection'] = { Elements: [] };\n }\n setColor(targetEle_1, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n setColor(nodeEle, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n length_4 = this.legendSelectionCollection.length;\n this.legendSelectionCollection[length_4 - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n }\n else {\n removeLegend(this.legendSelectionCollection, 'Selection');\n if (highlightModule) {\n highlightModule.shapeTarget = 'highlight';\n }\n this.legendSelect = true;\n this.legendSelectId = '';\n }\n }\n };\n /**\n * @param {string} levelOrder - Specifies the level order of treemap item\n * @param {boolean} enable - Specifies the boolean value\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.selectTreemapItem = function (levelOrder, enable) {\n if (enable) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = void 0;\n for (var s = 0; s < this.treemap.layout.renderItems.length; s++) {\n if (levelOrder === this.treemap.layout.renderItems[s]['levelOrderName']) {\n item = this.treemap.layout.renderItems[s];\n break;\n }\n }\n var selection = this.treemap.selectionSettings;\n var selectionElements = [];\n var element = void 0;\n var index = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var items = [];\n this.treemap.levelSelection = [];\n var layoutID = this.treemap.element.id + '_TreeMap_' + this.treemap.layoutType + '_Layout';\n var treeMapElement = document.getElementById(layoutID);\n var orders = findHightLightItems(item, [], selection.mode, this.treemap);\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n item = this.treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])];\n if (orders.indexOf(item['levelOrderName']) > -1) {\n selectionElements.push(element);\n this.treemap.levelSelection.push(element.id);\n items.push(item);\n }\n }\n if (this.treemap.legendSettings.visible) {\n for (var m = 0; m < items.length; m++) {\n this.shapeSelect = false;\n var length_5 = this.treemap.treeMapLegendModule.legendCollections.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n this.shapeElement = undefined;\n removeShape(this.shapeSelectionCollection, 'selection');\n index = getLegendIndex(length_5, items[m], this.treemap);\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index) : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index);\n if (this.shapeElement !== null) {\n this.shapeSelectId = this.shapeElement.getAttribute('id');\n this.treemap.legendId.push(this.shapeSelectId);\n this.shapeSelectionCollection.push({\n legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n setColor(this.shapeElement, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n }\n }\n }\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', this.treemap);\n var selectionElement = document.getElementById(this.treemap.levelSelection[0]);\n this.treemap.selectionId = selectionElement.childNodes[0]['id'];\n var highLightElements = document.getElementsByClassName('treeMapHighLight');\n for (var k = 0; k < selectionElements.length; k++) {\n element = selectionElements[k];\n if (highLightElements.length > 0) {\n for (var j = 0; j < highLightElements.length; j++) {\n if (highLightElements[j].id === element.id) {\n highLightElements[j].classList.remove('treeMapHighLight');\n }\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n else {\n selection.fill = selection.fill === 'null' ?\n this.treemap.layout.renderItems[parseInt(element.id.split('Item_Index_')[1], 10)]['options']['fill']\n : selection.fill;\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n }\n else {\n removeShape(this.shapeSelectionCollection, 'selection');\n this.shapeElement = undefined;\n this.treemap.levelSelection = [];\n this.shapeSelect = true;\n this.shapeSelectId = '';\n this.treemap.legendId = [];\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', this.treemap);\n this.treemap.selectionId = '';\n }\n };\n /**\n * To bind events for selection\n *\n * @returns {void}\n */\n TreeMapSelection.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchStartEvent, this.mouseDown, this);\n };\n /**\n * To unbind events for selection\n *\n * @returns {void}\n */\n TreeMapSelection.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchStartEvent, this.mouseDown);\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n TreeMapSelection.prototype.getModuleName = function () {\n return 'treeMapSelection';\n };\n /**\n * To destroy the selection.\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.destroy = function (treeMap) {\n this.removeEventListener();\n };\n return TreeMapSelection;\n}());\nexport { TreeMapSelection };\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport { Tooltip } from '@syncfusion/ej2-svg-base';\nimport { Browser, createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getMousePosition, textFormatter, formatValue } from '../utils/helper';\nimport { tooltipRendering } from '../model/constants';\n/**\n * Render Tooltip\n */\nvar TreeMapTooltip = /** @class */ (function () {\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function TreeMapTooltip(treeMap) {\n this.treemap = treeMap;\n this.tooltipSettings = this.treemap.tooltipSettings;\n this.tooltipId = this.treemap.element.id + '_TreeMapTooltip';\n this.addEventListener();\n }\n TreeMapTooltip.prototype.renderTooltip = function (e) {\n var _this = this;\n var pageX;\n var pageY;\n var target;\n var touchArg;\n var tootipArgs;\n if (e.type.indexOf('touch') !== -1) {\n this.isTouch = true;\n touchArg = e;\n pageX = touchArg.changedTouches[0].pageX;\n pageY = touchArg.changedTouches[0].pageY;\n target = touchArg.target;\n }\n else {\n this.isTouch = e.pointerType === 'touch';\n pageX = e.pageX;\n pageY = e.pageY;\n target = e.target;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value;\n var targetId = target.id;\n var item = {};\n var tooltipEle;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var location;\n var toolTipHeader;\n var toolTipData = {};\n var tooltipContent = [];\n var markerFill;\n if (targetId.indexOf('_Item_Index') > -1) {\n item = this.treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n if (!isNullOrUndefined(item)) {\n toolTipHeader = item['name'];\n value = item['weight'];\n toolTipData = item['data'];\n markerFill = item['options']['fill'];\n if (this.treemap.enableRtl) {\n tooltipContent = [textFormatter(this.tooltipSettings.format, toolTipData, this.treemap) ||\n formatValue(value, this.treemap) + ' : ' + this.treemap.weightValuePath.toString()];\n }\n else {\n tooltipContent = [textFormatter(this.tooltipSettings.format, toolTipData, this.treemap) ||\n this.treemap.weightValuePath.toString() + ' : ' + formatValue(value, this.treemap)];\n }\n if (document.getElementById(this.tooltipId)) {\n tooltipEle = document.getElementById(this.tooltipId);\n }\n else {\n tooltipEle = createElement('div', {\n id: this.treemap.element.id + '_TreeMapTooltip',\n className: 'EJ2-TreeMap-Tooltip',\n styles: 'position: absolute;pointer-events:none;'\n });\n document.getElementById(this.treemap.element.id + '_Secondary_Element').appendChild(tooltipEle);\n }\n location = getMousePosition(pageX, pageY, this.treemap.svgObject);\n location.y = (this.tooltipSettings.template) ? location.y + 10 : location.y;\n this.tooltipSettings.textStyle.fontFamily = this.treemap.themeStyle.fontFamily;\n this.tooltipSettings.textStyle.color = this.treemap.themeStyle.tooltipFontColor\n || this.tooltipSettings.textStyle.color;\n this.tooltipSettings.textStyle.opacity = this.treemap.themeStyle.tooltipTextOpacity\n || this.tooltipSettings.textStyle.opacity;\n tootipArgs = {\n cancel: false, name: tooltipRendering, item: item,\n options: {\n location: location, text: tooltipContent, data: toolTipData,\n textStyle: this.tooltipSettings.textStyle, template: this.tooltipSettings.template\n },\n treemap: this.treemap,\n element: target, eventArgs: e\n };\n this.treemap.trigger(tooltipRendering, tootipArgs, function (args) {\n _this.addTooltip(tootipArgs, markerFill, tooltipEle);\n });\n }\n }\n else {\n this.removeTooltip();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.clearTemplate();\n }\n };\n TreeMapTooltip.prototype.addTooltip = function (tootipArgs, markerFill, tooltipEle, eventArgs) {\n var cancel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var args;\n if (!isNullOrUndefined(tootipArgs)) {\n var c = tootipArgs.cancel, otherArgs = __rest(tootipArgs, [\"cancel\"]);\n cancel = c;\n args = otherArgs.options;\n }\n else {\n cancel = eventArgs.cancel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args = eventArgs;\n }\n if (!cancel) {\n this.svgTooltip = new Tooltip({\n enable: true,\n header: '',\n data: args['data'],\n template: args['template'],\n content: args['text'],\n shapes: [],\n location: args['location'],\n palette: [markerFill],\n areaBounds: this.treemap.areaRect,\n textStyle: args['textStyle'],\n fill: this.treemap.tooltipSettings.fill ? this.treemap.tooltipSettings.fill : this.treemap.themeStyle.tooltipFillColor\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.treemap.isVue || this.treemap.isVue3) {\n this.svgTooltip.controlInstance = this.treemap;\n }\n this.svgTooltip.opacity = this.treemap.themeStyle.tooltipFillOpacity || this.svgTooltip.opacity;\n this.svgTooltip.appendTo(tooltipEle);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.renderReactTemplates();\n }\n else {\n this.removeTooltip();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.clearTemplate();\n }\n };\n TreeMapTooltip.prototype.mouseUpHandler = function (e) {\n this.renderTooltip(e);\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeTooltip.bind(this), 2000);\n };\n TreeMapTooltip.prototype.removeTooltip = function () {\n if (document.getElementsByClassName('EJ2-TreeMap-Tooltip').length > 0) {\n var tooltipElementId = document.getElementsByClassName('EJ2-TreeMap-Tooltip')[0];\n tooltipElementId.parentNode.removeChild(tooltipElementId);\n }\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To bind events for tooltip module\n */\n TreeMapTooltip.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.renderTooltip, this);\n this.treemap.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To unbind events for tooltip module\n */\n TreeMapTooltip.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.renderTooltip);\n this.treemap.off(Browser.touchEndEvent, this.mouseUpHandler);\n };\n /**\n * Get module name.\n *\n * @returns {string} returns string\n */\n TreeMapTooltip.prototype.getModuleName = function () {\n return 'treeMapTooltip';\n };\n /**\n * To destroy the tooltip.\n *\n * @param {TreeMap} treeMap - Specifies the instance of the treemap\n * @returns {void}\n * @private\n */\n TreeMapTooltip.prototype.destroy = function (treeMap) {\n /**\n * Destroy method performed here\n */\n this.removeEventListener();\n };\n return TreeMapTooltip;\n}());\nexport { TreeMapTooltip };\n"],"names":["stringToNumber","value","containerSize","undefined","indexOf","parseInt","measureText","text","font","measureObject","document","getElementById","createElement","id","body","appendChild","innerHTML","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","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","styles","elementLength","templateHtml","RegExp","toString","findLabelLocation","rect","labelSize","getBoundingClientRect","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","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","removeClassNames","elements","parseFloat","classList","remove","textFormatter","format","_i","keys_1","key","join","formatValue","intl","getNumberFormat","useGrouping","useGroupingSeparator","formatFunction","convertToHexCode","hex","convertHexToColor","result","exec","window","getComputedStyle","isRGBValue","drawSymbol","shape","url","svgRenderer","temp","renderLegendShape","htmlElement","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","dataCount","k","borderColor","borderWidth","removeSelectionWithHighlight","getElementsByClassName","getLegendIndex","dataLength","treeMapLegendModule","legendCollections","pushCollection","number","legendElement","shapeElement","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","subTitleFontColor","tooltipFillColor","tooltipFontColor","legendTitleColor","legendTextColor","subtitleFontSize","legendFontSize","tooltipFillOpacity","tooltipTextOpacity","labelFontFamily","beforePrint","itemRendering","drillStart","drillEnd","itemSelected","itemHighlight","tooltipRendering","itemClick","itemMove","doubleClick","rightClick","mouseMove","legendItemRendering","legendRendering","resize","defaultFont","__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","LevelsData","levelsData","initialDrillDown","groupIndex","groupName","drilledItems","getDrilldownData","extend","legendSettings","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_1","i_1","multiplier","datum","onDemandProcess","childItems","parentItem","parentItemGroupname","splice","renderData","txtVisible","getItemColor","eventArgs","_this","pathOptions","templatePosition","renderText","groupId","templateEle","textStyle","elementID","interSectAction","rectPath","secondaryEle","layoutGroup","createGroup","itemGroup","templateGroup","isLeafItem","_loop_1","this_1","drillDownView","treemapItemRect","labelFormat","headerFormat","levelName","showLabels","breadcrumbConnector","enableRtl","labelStyle","headerStyle","themeStyle","labelPosition","labelTemplate","headerTemplate","cancel","RenderItems","trigger","observedArgs","path","drawPath","renderItemText","renderTemplate","renderReactTemplates","tabIndex","svgObject","customText","textName","tspanText","labelInterSectAction","drillSymbolCount","drillSymbolSize","textLocation","texts","maxNumber","collectionLength","stringText","getSaturatedColor","itemFill","itemOpacity","defaultLevelsData","option","equalColorValuePath","rangeColorValuePath","colorValuePath","palette","saturatedColor","rgbValue","templateId","baseTemplateId","labelElement","templateLocation","textValue","Theme","mapsTitleFont","Print","control","print","printWindow","open","outerHeight","outerWidth","moveTo","resizeTo","screen","availWidth","availHeight","argsData","htmlContent","getHTMLContent","div","cloneNode","Element","getModuleName","destroy","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","exportElement","backgroundElement","image","context","PdfDocument","imageString","pageSettings","pages","add","graphics","PdfBitmap","save","TreeMap","isResize","preRender","initPrivateVariable","unWireEVents","createSvg","wireEVents","setCulture","render","renderElements","hierarchyData","createSecondaryElement","addTabIndex","renderBorder","renderTitle","titleSettings","processDataManager","dataModule","queryModule","ajaxModule","localAjax","dataSource","DataManager","query","Query","executeQuery","then","renderTreeMapElements","Ajax","onSuccess","args","JSON","parse","send","processingData","visible","renderLegend","elementChange","isResized","renderComplete","firstChild","hasChildNodes","clearTemplate","containerWidth","containerHeight","secondaryElement","insertBefore","borderElement","background","borderRect","drawRectangle","title","bounds","groupEle","margin","right","trimmedTitle","elementSize","location_1","titleBounds","description","subtitleSettings","bottom","map","checkIsHierarchicalData","data_1","currentData","dataIndex","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_1","start","currentName","currentPath","prevPath","previousData","IsChildHierarchy","current","isChild","groupObj","EventHandler","clickOnTreeMap","doubleClickOnTreeMap","rightClickOnTreeMap","touchStartEvent","mouseDownOnTreeMap","touchMoveEvent","mouseMoveOnTreeMap","touchEndEvent","mouseEndOnTreeMap","mouseLeaveOnTreeMap","removeEventListener","resizeOnTreeMap","addEventListener","bind","Internationalization","previousSize","currentSize","clearTimeout","contains","setTimeout","refreshing","itemIndex","targetEle","labelText","clickArgs","mouseEvent","preventDefault","doubleTapTimer1","end","Date","getMilliseconds","doubleClickArgs","rightClickArgs","mouseDown","notify","moveArgs","cursor","calculateSelectedTextLevels","drillLevel","levelText","_a","currentLevelLabel","calculatePreviousLevelChildItems","drillLevelValues","directLevel","levelItems","text1","drillTextLevel","h","compareSelectedLabelWithDrillDownItems","drillLevelChild","newDrillItem","startEvent","endEvent","layoutID","templateID","drillMouseMove","drillLength","which","layerElementId","textContent","widthIncrement","heightIncrement","drilledLegendItems","drillElementId","treeMapTooltipModule","removeTooltip","removeInteractivePointer","treeMapHighlightModule","shapeHighlightCollection","highLightId","selectItem","levelOrder","isSelected","treeMapSelectionModule","enable","selectTreemapItem","requiredModules","modules","tooltipSettings","member","highlightSettings","onPropertyChanged","newProp","oldProp","removeSvg","getPersistData","Event","NotifyPropertyChanges","Component","TreeMapLegend","page","legendBorderRect","currentPage","textMaxWidth","legendInteractiveGradient","legendItemRect","legendRenderingCollections","legendNames","totalPages","gradientCount","defsElement","createDefs","_changePosition","calculateLegendBounds","drawLegend","legend","findColorMappingLegendItems","findPaletteLegendItems","legendTitle","titleTextStyle","titleStyle","legendMode","textX","textY","shapeLocation","orientation_1","legendWidth","legendHeight","legendTitleSize","startX_1","startY_1","shapePadding","itemTextStyle","legendItem","Page","legendTextSize","maxSize","prvePositionX","nextPositionY","getPageChanged","prevPositionY","nextPositionX","DisplayText","Shape","Text","Fill","Data","legendObj","legendRect","legendLength_1","rectWidth_1","rectHeight_1","placement","itemStartX","itemStartY","labelAction","labelDisplayMode","maxTextHeight","maxTextWidth","legendText","itemTextSize","textWidth","textHeight","calculateLegendItems","legendFillColor","legendName","showLegendPath","valuePath","removeDuplicateLegend","removeDuplicates","legendFill","legendData","itemArea","isAddData","gradientElement","x2","y2","actualValue","isDuplicate","isRange","outfill","labelLegend","otherIndex","colorMapProcess","isDesaturation","legendIndex","outOfRangeLegend","colorMapping_1","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","legendRtlLocation","shapeSize","isLineShape_1","strokeColor_1","strokeWidth_1","shapeId","imageUrl","pagingGroup","pagingText","pagingFont","pagingTextSize","leftPageX","rightPageX","locY","pageTextX","leftPageElement","rightPageElement","rightPath","leftPath","leftPageOptions","leftRectPageOptions","wireEvents","rightPageOptions","rightRectPageOptions","pageTextOptions","legendBorder","pointerEvents","getLegendAlignment","trimTitle","renderInteractivePointer","interactiveId","elementFromPoint","changedTouches","clientX","clientY","targetItem","strokeWidth","svgRect","rect_1","drawInteractivePointer","locX","invertedPointer","areaX","areaY","totalHeight","mouseUpHandler","legendElementId","changeNextPage","isDestroyed","on","off","xmlns","defElement","linerGradientEle","createElementNS","offsetColor","stopEle","TreeMapHighlight","shapeTarget","legendHighlightCollection","currentElement","processHighlight","treeMapElement","orders","highlight","highLightElements","selectionModule","selectionId","selectionElements","legendSelectId","shapeSelectId","length_2","nodeEle","Elements","legendSelect","TreeMapSelection","shapeSelectionCollection","legendSelectionCollection","shapeSelect","selection","highlightModule","length_3","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","isVue","isVue3","controlInstance","appendTo","tooltipElementId"],"mappings":"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"}
1
+ {"version":3,"file":"ej2-treemap.umd.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"],"sourcesContent":["import { createElement, compile, merge, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\n/**\n * Create the class for size\n */\nvar Size = /** @class */ (function () {\n function Size(width, height) {\n this.width = width;\n this.height = height;\n }\n return Size;\n}());\nexport { Size };\nexport function stringToNumber(value, containerSize) {\n if (value !== null && value !== undefined) {\n return value.indexOf('%') !== -1 ? (containerSize / 100) * parseInt(value, 10) : parseInt(value, 10);\n }\n return null;\n}\n/**\n * Internal use of type rect\n *\n * @private\n */\nvar Rect = /** @class */ (function () {\n function Rect(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n return Rect;\n}());\nexport { Rect };\n/**\n * Internal use of rectangle options\n *\n * @private\n */\nvar RectOption = /** @class */ (function () {\n function RectOption(id, fill, border, opacity, rect, dashArray) {\n this.y = rect.y;\n this.x = rect.x;\n this.height = rect.height;\n this.width = rect.width;\n this.id = id;\n this.fill = fill;\n this.opacity = opacity;\n this.stroke = border.color;\n this['stroke-width'] = border.width;\n this['stroke-dasharray'] = dashArray;\n }\n return RectOption;\n}());\nexport { RectOption };\nvar PathOption = /** @class */ (function () {\n function PathOption(id, fill, width, color, opacity, dashArray, d) {\n this.id = id;\n this.opacity = opacity;\n this.fill = fill;\n this.stroke = color;\n this['stroke-width'] = width;\n this['stroke-dasharray'] = dashArray;\n this.d = d;\n }\n return PathOption;\n}());\nexport { PathOption };\n/**\n * Function to measure the height and width of the text.\n *\n * @param {string} text - Specifies the text.\n * @param {FontModel} font - Specifies the font.\n * @param {string} id - Specifies the id.\n * @returns {Size} - Returns the size.\n * @private\n */\nexport function measureText(text, font) {\n var measureObject = document.getElementById('treeMapMeasureText');\n if (measureObject === null) {\n measureObject = createElement('text', { id: 'treeMapMeasureText' });\n document.body.appendChild(measureObject);\n }\n measureObject.innerHTML = text;\n measureObject.style.position = 'absolute';\n measureObject.style.fontSize = font.size;\n measureObject.style.fontWeight = font.fontWeight;\n measureObject.style.fontStyle = font.fontStyle;\n measureObject.style.fontFamily = font.fontFamily;\n measureObject.style.visibility = 'hidden';\n measureObject.style.top = '-100';\n measureObject.style.left = '0';\n measureObject.style.whiteSpace = 'nowrap';\n // For bootstrap line height issue\n measureObject.style.lineHeight = 'normal';\n return new Size(measureObject.clientWidth, measureObject.clientHeight);\n}\n/**\n * Internal use of text options\n *\n * @private\n */\nvar TextOption = /** @class */ (function () {\n function TextOption(id, x, y, anchor, text, transform, baseLine, connectorText) {\n if (transform === void 0) { transform = ''; }\n this.transform = '';\n this.baseLine = 'auto';\n this.id = id;\n this.text = text;\n this.transform = transform;\n this.anchor = anchor;\n this.x = x;\n this.y = y;\n this.baseLine = baseLine;\n this.connectorText = connectorText;\n }\n return TextOption;\n}());\nexport { TextOption };\n/**\n * Trim the title text\n *\n * @param {number} maxWidth - Specifies the maximum width\n * @param {string} text - Specifies the text\n * @param {FontModel} font - Specifies the font\n * @returns {string} - Returns the string\n * @private\n */\nexport function textTrim(maxWidth, text, font) {\n var label = text;\n var size = measureText(text, font).width;\n if (size > maxWidth) {\n var textLength = text.length;\n for (var i = textLength - 1; i >= 0; --i) {\n label = text.substring(0, i) + '...';\n size = measureText(label, font).width;\n if (size <= maxWidth || label.length < 4) {\n if (label.length < 4) {\n label = ' ';\n }\n return label;\n }\n }\n }\n return label;\n}\n/**\n * Map internal class for Point\n */\nvar Location = /** @class */ (function () {\n function Location(x, y) {\n this.x = x;\n this.y = y;\n }\n return Location;\n}());\nexport { Location };\n/**\n * Method to calculate x position of title\n */\nexport function findPosition(location, alignment, textSize, type) {\n var x;\n switch (alignment) {\n case 'Near':\n x = location.x;\n break;\n case 'Center':\n x = (type === 'title') ? (location.width / 2 - textSize.width / 2) :\n ((location.x + (location.width / 2)) - textSize.width / 2);\n break;\n case 'Far':\n x = (type === 'title') ? (location.width - location.y - textSize.width) :\n ((location.x + location.width) - textSize.width);\n break;\n }\n var y = (type === 'title') ? location.y + (textSize.height / 2) : ((location.y + location.height / 2) + textSize.height / 2);\n return new Location(x, y);\n}\nexport function createTextStyle(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nrenderer, renderOptions, text) {\n var htmlObject = renderer.createText(renderOptions, text);\n htmlObject.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n htmlObject.style['user-select'] = 'none';\n htmlObject.style['-moz-user-select'] = 'none';\n htmlObject.style['-webkit-touch-callout'] = 'none';\n htmlObject.style['-webkit-user-select'] = 'none';\n htmlObject.style['-khtml-user-select'] = 'none';\n htmlObject.style['-ms-user-select'] = 'none';\n htmlObject.style['-o-user-select'] = 'none';\n return htmlObject;\n}\n/**\n * Internal rendering of text\n *\n * @param {TextOption} options - Specifies the text option\n * @param {FontModel} font - Specifies the font model\n * @param {string} color - Specifies the color\n * @param {HTMLElement | Element} parent - Specifes the html element\n * @param {boolean} isMinus - Specifies the boolean value\n * @returns {Element} - Returns the element\n * @private\n */\nexport function renderTextElement(options, font, color, parent, isMinus) {\n if (isMinus === void 0) { isMinus = false; }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var renderOptions = {\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily,\n 'font-weight': font.fontWeight,\n 'text-anchor': options.anchor,\n 'transform': options.transform,\n 'opacity': font.opacity,\n 'dominant-baseline': options.baseLine,\n 'id': options.id,\n 'x': options.x,\n 'y': options.y,\n 'fill': color\n };\n var text = typeof options.text === 'string' ? options.text : isMinus ? options.text[options.text.length - 1] : options.text[0];\n var tspanElement;\n var renderer = new SvgRenderer('');\n var height;\n var htmlObject;\n var breadCrumbText = !isNullOrUndefined(text) && !isNullOrUndefined(options.connectorText) ?\n (text.search(options.connectorText[1]) >= 0) : false;\n if (breadCrumbText) {\n var drilledLabel = text;\n var spacing = 5;\n var drillLevelText = drilledLabel.split('#');\n for (var z = 0; z < drillLevelText.length; z++) {\n var drillText = (drillLevelText[z].search(options.connectorText) !== -1 && !isNullOrUndefined(options.connectorText)) ?\n options.connectorText : drillLevelText[z];\n renderOptions['id'] = options.id + '_' + z;\n htmlObject = createTextStyle(renderer, renderOptions, drillText);\n if (z % 2 === 0 && z !== 0) {\n var re = /\\s+/g;\n drillText = drillText.replace(re, '&nbsp');\n }\n var size = measureText(drillText, font);\n renderOptions['x'] = z !== 0 ? renderOptions['x'] + size.width : renderOptions['x'] + size.width + spacing;\n parent.appendChild(htmlObject);\n }\n }\n else {\n htmlObject = createTextStyle(renderer, renderOptions, text);\n parent.appendChild(htmlObject);\n }\n if (typeof options.text !== 'string' && options.text.length > 1) {\n for (var i = 1, len = options.text.length; i < len; i++) {\n height = (measureText(options.text[i], font).height);\n tspanElement = renderer.createTSpan({\n 'x': options.x, 'id': options.id,\n 'y': (options.y) + (i * height)\n }, options.text[i]);\n htmlObject.appendChild(tspanElement);\n }\n parent.appendChild(htmlObject);\n }\n return htmlObject;\n}\nexport function setItemTemplateContent(targetId, targetElement, contentItemTemplate) {\n var itemSelect = targetId.split('_RectPath')[0];\n var itemTemplate;\n if (targetId.indexOf('_LabelTemplate') > -1) {\n itemTemplate = targetElement;\n }\n else {\n itemTemplate = document.querySelector('#' + itemSelect + '_LabelTemplate');\n }\n if (!isNullOrUndefined(itemTemplate)) {\n itemTemplate.innerHTML = contentItemTemplate;\n }\n}\nexport function getElement(id) {\n return document.getElementById(id);\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function itemsToOrder(a, b) {\n return a['weight'] === b['weight'] ? 0 : a['weight'] < b['weight'] ? 1 : -1;\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isContainsData(source, pathName, processData, treemap) {\n var isExist = false;\n var name = '';\n var path;\n var leaf = treemap.leafItemSettings;\n for (var i = 0; i < source.length; i++) {\n path = treemap.levels[i] ? treemap.levels[i].groupPath : leaf.labelPath ? leaf.labelPath : treemap.weightValuePath;\n var data = processData[path] || 'undefined';\n if (source[i] === data) {\n name += data + (i === source.length - 1 ? '' : '#');\n if (name === pathName) {\n isExist = true;\n break;\n }\n }\n }\n return isExist;\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function findChildren(data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var children;\n if (data) {\n var keys = Object.keys(data);\n children = {};\n for (var i = 0; i < keys.length; i++) {\n if (data[keys[i]] instanceof Array) {\n children['values'] = data[keys[i]];\n children['key'] = keys[i];\n break;\n }\n }\n }\n return children;\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function findHightLightItems(data, items, mode, treeMap) {\n if (mode === 'Child') {\n items.push(data['levelOrderName']);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var children = findChildren(data)['values'];\n if (children && children.length > 0) {\n for (var i = 0; i < children.length; i++) {\n if (items.indexOf(children[i]['levelOrderName']) === -1) {\n items.push(children[i]['levelOrderName']);\n }\n }\n for (var j = 0; j < children.length; j++) {\n findHightLightItems(children[j], items, mode, treeMap);\n }\n }\n }\n else if (mode === 'Parent') {\n if (typeof data['levelOrderName'] === 'string' && items.indexOf(data['levelOrderName']) === -1) {\n items.push(data['levelOrderName']);\n findHightLightItems(data['parent'], items, mode, treeMap);\n }\n }\n else if (mode === 'All') {\n var parentName = data['levelOrderName'].split('#')[0];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentItem = void 0;\n for (var i = 0; i < treeMap.layout.renderItems.length; i++) {\n currentItem = treeMap.layout.renderItems[i];\n if ((currentItem['levelOrderName']).indexOf(parentName) > -1 && items.indexOf(currentItem['levelOrderName']) === -1) {\n items.push(currentItem['levelOrderName']);\n }\n }\n }\n else {\n items.push(data['levelOrderName']);\n }\n return items;\n}\n/**\n * Function to compile the template function for maps.\n *\n * @param {string} template - Specifies the template\n * @returns {Function} - Returns the template function\n * @private\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getTemplateFunction(template) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateFn = null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var e;\n try {\n if (document.querySelectorAll(template).length) {\n templateFn = compile(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (e) {\n templateFn = compile(template);\n }\n return templateFn;\n}\n/**\n * @private\n * @param {HTMLCollection} element - Specifies the element\n * @param {string} labelId - Specifies the label id\n * @param {Object} data - Specifies the data\n * @returns {HTMLElement} - Returns the element\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function convertElement(element, labelId, data) {\n var childElement = createElement('div', {\n id: labelId,\n styles: 'position: absolute;pointer-events: auto;'\n });\n var elementLength = element.length;\n while (elementLength > 0) {\n childElement.appendChild(element[0]);\n elementLength--;\n }\n var templateHtml = childElement.innerHTML;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n templateHtml = templateHtml.replace(new RegExp('{{:' + keys[i] + '}}', 'g'), data[keys[i].toString()]);\n }\n childElement.innerHTML = templateHtml;\n return childElement;\n}\nexport function findLabelLocation(rect, position, labelSize, type, treemap) {\n var location = new Location(0, 0);\n var padding = 5;\n var paddings = 2;\n var elementRect = treemap.element.getBoundingClientRect();\n var x = (type === 'Template') ? treemap.areaRect.x : 0;\n var y = (type === 'Template') ? treemap.areaRect.y : 0;\n location.x = (Math.abs(x - ((position.indexOf('Left') > -1) ? rect.x + padding : !(position.indexOf('Right') > -1) ?\n rect.x + ((rect.width / 2) - (labelSize.width / 2)) : (rect.x + rect.width) - labelSize.width))) - paddings;\n if (treemap.enableDrillDown && (treemap.renderDirection === 'BottomLeftTopRight'\n || treemap.renderDirection === 'BottomRightTopLeft')) {\n location.y = Math.abs((rect.y + rect.height) - labelSize.height + padding);\n }\n else {\n location.y = Math.abs(y - ((position.indexOf('Top') > -1) ? (type === 'Template' ? rect.y : rect.y + labelSize.height) :\n !(position.indexOf('Bottom') > -1) ? type === 'Template' ? (rect.y + ((rect.height / 2) - (labelSize.height / 2))) :\n (rect.y + (rect.height / 2) + labelSize.height / 4) : (rect.y + rect.height) - labelSize.height));\n }\n return location;\n}\nexport function measureElement(element, parentElement) {\n var size = new Size(0, 0);\n parentElement.appendChild(element);\n size.height = element.offsetHeight;\n size.width = element.offsetWidth;\n var measureElementId = document.getElementById(element.id);\n measureElementId.parentNode.removeChild(measureElementId);\n return size;\n}\nexport function getArea(rect) {\n return (rect.width - rect.x) * (rect.height - rect.y);\n}\nexport function getShortestEdge(input) {\n var container = convertToContainer(input);\n var width = container.width;\n var height = container.height;\n var result = Math.min(width, height);\n return result;\n}\nexport function convertToContainer(rect) {\n var x = rect.x;\n var y = rect.y;\n var width = rect.width;\n var height = rect.height;\n return {\n x: x,\n y: y,\n width: width - x,\n height: height - y\n };\n}\nexport function convertToRect(container) {\n var xOffset = container.x;\n var yOffset = container.y;\n var width = container.width;\n var height = container.height;\n return {\n x: xOffset,\n y: yOffset,\n width: xOffset + width,\n height: yOffset + height\n };\n}\nexport function getMousePosition(pageX, pageY, element) {\n var elementRect = element.getBoundingClientRect();\n var pageXOffset = element.ownerDocument.defaultView.pageXOffset;\n var pageYOffset = element.ownerDocument.defaultView.pageYOffset;\n var clientTop = element.ownerDocument.documentElement.clientTop;\n var clientLeft = element.ownerDocument.documentElement.clientLeft;\n var positionX = elementRect.left + pageXOffset - clientLeft;\n var positionY = elementRect.top + pageYOffset - clientTop;\n return new Location((pageX - positionX), (pageY - positionY));\n}\nexport function colorMap(colorMapping, equalValue, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvalue, weightValuePath) {\n var fill;\n var paths = [];\n var opacity;\n if (isNullOrUndefined(equalValue) && (isNullOrUndefined(value) && isNaN(value))) {\n return null;\n }\n for (var i = 0; i < colorMapping.length; i++) {\n var isEqualColor = false;\n var dataValue = value;\n if (!isNullOrUndefined(colorMapping[i].from) && !isNullOrUndefined(colorMapping[i].to)\n && !isNullOrUndefined(colorMapping[i].value)) {\n if ((value >= colorMapping[i].from && colorMapping[i].to >= value) && (colorMapping[i].value === equalValue)) {\n isEqualColor = true;\n if (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') {\n fill = !isEqualColor ? colorCollections(colorMapping[i], dataValue) : colorMapping[i].color[0];\n }\n else {\n fill = colorMapping[i].color;\n }\n }\n }\n else if ((!isNullOrUndefined(colorMapping[i].from) && !isNullOrUndefined(colorMapping[i].to))\n || !isNullOrUndefined((colorMapping[i].value))) {\n if ((value >= colorMapping[i].from && colorMapping[i].to >= value) || (colorMapping[i].value === equalValue)) {\n if (colorMapping[i].value === equalValue) {\n isEqualColor = true;\n }\n if (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') {\n fill = !isEqualColor ? colorCollections(colorMapping[i], dataValue) : colorMapping[i].color[0];\n }\n else {\n fill = colorMapping[i].color;\n }\n }\n }\n if (((value >= colorMapping[i].from && value <= colorMapping[i].to) || (colorMapping[i].value === equalValue))\n && !isNullOrUndefined(colorMapping[i].minOpacity) && !isNullOrUndefined(colorMapping[i].maxOpacity) && fill) {\n opacity = deSaturationColor(weightValuePath, colorMapping[i], fill, value);\n }\n if ((fill === '' || isNullOrUndefined(fill))\n && isNullOrUndefined(colorMapping[i].from) && isNullOrUndefined(colorMapping[i].to)\n && isNullOrUndefined(colorMapping[i].minOpacity) && isNullOrUndefined(colorMapping[i].maxOpacity)\n && isNullOrUndefined(colorMapping[i].value)) {\n fill = (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') ?\n colorMapping[i].color[0] : colorMapping[i].color;\n }\n opacity = !isNullOrUndefined(opacity) ? opacity : '1';\n paths.push(fill);\n }\n for (var j = paths.length - 1; j >= 0; j--) {\n fill = paths[j];\n j = (fill) ? -1 : j;\n }\n return { fill: fill, opacity: opacity };\n}\nexport function deSaturationColor(weightValuePath, colorMapping, color, rangeValue) {\n var opacity = 1;\n if ((rangeValue >= colorMapping.from && rangeValue <= colorMapping.to)) {\n var ratio = (rangeValue - colorMapping.from) / (colorMapping.to - colorMapping.from);\n opacity = (ratio * (colorMapping.maxOpacity - colorMapping.minOpacity)) + colorMapping.minOpacity;\n }\n return opacity.toString();\n}\nexport function colorCollections(colorMap, value) {\n var gradientFill = getColorByValue(colorMap, value);\n return gradientFill;\n}\nexport function rgbToHex(r, g, b) {\n return '#' + componentToHex(r) + componentToHex(g) + componentToHex(b);\n}\nexport function getColorByValue(colorMap, value) {\n var color = '';\n var rbg;\n if (Number(value) === colorMap.from) {\n color = colorMap.color[0];\n }\n else if (Number(value) === colorMap.to) {\n color = colorMap.color[colorMap.color.length - 1];\n }\n else {\n rbg = getGradientColor(Number(value), colorMap);\n color = rgbToHex(rbg.r, rbg.g, rbg.b);\n }\n return color;\n}\nexport function getGradientColor(value, colorMap) {\n var previousOffset = colorMap.from;\n var nextOffset = colorMap.to;\n var percent = 0;\n var prev1;\n var full = nextOffset - previousOffset;\n var midColor;\n var midreturn;\n percent = (value - previousOffset) / full;\n var previousColor;\n var nextColor;\n if (colorMap.color.length <= 2) {\n previousColor = colorMap.color[0].charAt(0) === '#' ? colorMap.color[0] : colorNameToHex(colorMap.color[0]);\n nextColor = colorMap.color[colorMap.color.length - 1].charAt(0) === '#' ?\n colorMap.color[colorMap.color.length - 1] : colorNameToHex(colorMap.color[colorMap.color.length - 1]);\n }\n else {\n previousColor = colorMap.color[0].charAt(0) === '#' ? colorMap.color[0] : colorNameToHex(colorMap.color[0]);\n nextColor = colorMap.color[colorMap.color.length - 1].charAt(0) === '#' ?\n colorMap.color[colorMap.color.length - 1] : colorNameToHex(colorMap.color[colorMap.color.length - 1]);\n var a = full / (colorMap.color.length - 1);\n var b = void 0;\n var c = void 0;\n var length_1 = colorMap.color.length - 1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var splitColorValueOffset = [];\n var splitColor = {};\n for (var j = 1; j < length_1; j++) {\n c = j * a;\n b = previousOffset + c;\n splitColor = { b: b, color: colorMap.color[j] };\n splitColorValueOffset.push(splitColor);\n }\n for (var i = 0; i < splitColorValueOffset.length; i++) {\n if (previousOffset <= value && value <= splitColorValueOffset[i]['b'] && i === 0) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n nextColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ? 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a)\n : (value - splitColorValueOffset[i]['b']) / a;\n }\n else if (splitColorValueOffset[i]['b'] <= value && value <= nextOffset && i === (splitColorValueOffset.length - 1)) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ?\n 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a) : (value - splitColorValueOffset[i]['b']) / a;\n }\n if (i !== splitColorValueOffset.length - 1 && i < splitColorValueOffset.length) {\n if (splitColorValueOffset[i]['b'] <= value && value <= splitColorValueOffset[i + 1]['b']) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n nextColor = splitColorValueOffset[i + 1]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i + 1]['color'] : colorNameToHex(splitColorValueOffset[i + 1]['color']);\n percent = Math.abs((value - splitColorValueOffset[i + 1]['b'])) / a;\n }\n }\n }\n }\n return getPercentageColor(percent, previousColor, nextColor);\n}\nexport function getPercentageColor(percent, previous, next) {\n var nextColor = next.split('#')[1];\n var prevColor = previous.split('#')[1];\n var r = getPercentage(percent, parseInt(prevColor.substr(0, 2), 16), parseInt(nextColor.substr(0, 2), 16));\n var g = getPercentage(percent, parseInt(prevColor.substr(2, 2), 16), parseInt(nextColor.substr(2, 2), 16));\n var b = getPercentage(percent, parseInt(prevColor.substr(4, 2), 16), parseInt(nextColor.substr(4, 2), 16));\n return new ColorValue(r, g, b);\n}\nexport function getPercentage(percent, previous, next) {\n var full = next - previous;\n return Math.round((previous + (full * percent)));\n}\nexport function wordWrap(maximumWidth, dataLabel, font) {\n var textCollection = dataLabel.split(' ');\n var label = '';\n var labelCollection = [];\n var text;\n for (var i = 0, len = textCollection.length; i < len; i++) {\n text = textCollection[i];\n if (measureText(label.concat(text), font).width < maximumWidth) {\n label = label.concat((label === '' ? '' : ' ') + text);\n }\n else {\n if (label !== '') {\n labelCollection.push(textTrim(maximumWidth, label, font));\n label = text;\n }\n else {\n labelCollection.push(textTrim(maximumWidth, text, font));\n text = '';\n }\n }\n if (label && i === len - 1) {\n labelCollection.push(textTrim(maximumWidth, label, font));\n }\n }\n return labelCollection;\n}\nexport function textWrap(maxWidth, label, font) {\n var text = label;\n var resultText = [];\n var currentLength = 0;\n var totalWidth = measureText(label, font).width;\n var totalLength = label.length;\n if (maxWidth >= totalWidth) {\n resultText.push(label);\n return resultText;\n }\n else {\n for (var i = label.length; i > currentLength; i--) {\n var sliceString = label.slice(currentLength, i);\n totalWidth = measureText(sliceString, font).width;\n if (totalWidth <= maxWidth) {\n resultText.push(sliceString);\n currentLength += sliceString.length;\n if (totalLength === currentLength) {\n return resultText;\n }\n i = totalLength + 1;\n }\n }\n }\n return resultText;\n}\n/**\n * hide function\n *\n * @param {number} maxWidth - Specifies the maximum width\n * @param {number} maxHeight - Specifies the maximum height\n * @param {string} text - Specifies the text\n * @param {FontModel} font - Specifies the font\n * @returns {string} - Returns the hideText\n */\nexport function hide(maxWidth, maxHeight, text, font) {\n var hideText = text;\n var textSize = measureText(text, font);\n hideText = (textSize.width > maxWidth || textSize.height > maxHeight) ? ' ' : text;\n return hideText;\n}\nexport function orderByArea(a, b) {\n if (a['itemArea'] === b['itemArea']) {\n return 0;\n }\n else if (a['itemArea'] < b['itemArea']) {\n return 1;\n }\n return -1;\n}\nexport function maintainSelection(treemap, element, className) {\n var elementId = treemap.levelSelection;\n if (elementId) {\n for (var index = 0; index < elementId.length; index++) {\n if (element.getAttribute('id') === elementId[index]) {\n if (element.childElementCount > 0) {\n element.children[0].setAttribute('class', className);\n applyOptions(element.childNodes[0], {\n border: treemap.selectionSettings.border, fill: treemap.selectionSettings.fill,\n opacity: treemap.selectionSettings.opacity\n });\n }\n }\n else {\n element.setAttribute('class', '');\n }\n }\n }\n}\nexport function legendMaintain(treemap, legendGroup) {\n var elementId = treemap.legendId;\n if (elementId) {\n for (var i = 0; i < elementId.length; i++) {\n for (var j = 0; j < legendGroup.childElementCount; j++) {\n if (legendGroup.childNodes[j]['id'] === elementId[i]) {\n legendGroup.childNodes[j].setAttribute('fill', treemap.selectionSettings.fill);\n legendGroup.childNodes[j].setAttribute('stroke', treemap.selectionSettings.border.color);\n legendGroup.childNodes[j].setAttribute('stroke-width', (treemap.selectionSettings.border.width).toString());\n legendGroup.childNodes[j].setAttribute('opacity', treemap.selectionSettings.opacity);\n }\n }\n }\n }\n}\nexport function removeClassNames(elements, type, treemap) {\n var opacity;\n var process = true;\n var element;\n var stroke;\n var strokeWidth;\n var fill;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var options = {};\n for (var j = 0; j < elements.length; j++) {\n element = isNullOrUndefined(elements[j].childNodes[0]) ? elements[j] :\n elements[j].childNodes[0];\n options = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])]['options'];\n applyOptions(element, options);\n elements[j].classList.remove(type);\n j -= 1;\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function applyOptions(element, options) {\n element.setAttribute('opacity', options['opacity']);\n if (!isNullOrUndefined(options['fill'])) {\n element.setAttribute('fill', options['fill']);\n }\n element.setAttribute('stroke', options['border']['color']);\n element.setAttribute('stroke-width', options['border']['width']);\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function textFormatter(format, data, treemap) {\n if (isNullOrUndefined(format)) {\n return null;\n }\n var keys = Object.keys(data);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n format = format.split('${' + key + '}').join(formatValue(data[key], treemap).toString());\n }\n return format;\n}\nexport function formatValue(value, treemap) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var formatValue;\n var formatFunction;\n if (treemap.format && !isNaN(Number(value))) {\n formatFunction = treemap.intl.getNumberFormat({ format: treemap.format, useGrouping: treemap.useGroupingSeparator });\n formatValue = formatFunction(Number(value));\n }\n else {\n formatValue = value;\n }\n return formatValue ? formatValue : '';\n}\n/**\n * @private\n */\nvar ColorValue = /** @class */ (function () {\n function ColorValue(r, g, b) {\n this.r = r;\n this.g = g;\n this.b = b;\n }\n return ColorValue;\n}());\nexport { ColorValue };\n/**\n * @param {ColorValue} value - Specfies the color value\n * @returns {string} - Returns the string\n * @private\n */\nexport function convertToHexCode(value) {\n return '#' + componentToHex(value.r) + componentToHex(value.g) + componentToHex(value.b);\n}\n/**\n * @param {number} value - Specifes the value\n * @returns {string} - Returns the string\n * @private */\nexport function componentToHex(value) {\n var hex = value.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n}\n/**\n * @param {string} hex - Specifies the hex value\n * @returns {ColorValue} - Returns the color value\n * @private\n */\nexport function convertHexToColor(hex) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? new ColorValue(parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)) :\n new ColorValue(255, 255, 255);\n}\n/**\n * @param {string} color - Specifies the color\n * @returns {string} - Returns the string\n * @private\n */\nexport function colorNameToHex(color) {\n color = color === 'transparent' ? 'white' : color;\n var element = document.getElementById('treeMapMeasureText');\n element.style.color = color;\n color = window.getComputedStyle(element).color;\n var exp = /^(rgb|hsl)(a?)[(]\\s*([\\d.]+\\s*%?)\\s*,\\s*([\\d.]+\\s*%?)\\s*,\\s*([\\d.]+\\s*%?)\\s*(?:,\\s*([\\d.]+)\\s*)?[)]$/;\n var isRGBValue = exp.exec(color);\n return convertToHexCode(new ColorValue(parseInt(isRGBValue[3], 10), parseInt(isRGBValue[4], 10), parseInt(isRGBValue[5], 10)));\n}\n/**\n * @param {Location} location - Specifies the location\n * @param {string} shape - Specifies the shape\n * @param {Size} size - Specifies the size\n * @param {string} url - Specifies the url\n * @param {PathOption} options - Specifies the options\n * @param {string} label - Specifies the label\n * @returns {Element} - Returns the element\n * @private\n */\nexport function drawSymbol(location, shape, size, url, options, label) {\n var functionName = 'Path';\n var svgRenderer = new SvgRenderer('');\n var temp = renderLegendShape(location, size, shape, options, url);\n var htmlElement = svgRenderer['draw' + temp.functionName](temp.renderOption);\n htmlElement.setAttribute('aria-label', label);\n return htmlElement;\n}\n/**\n * @param {Location} location - Specifies the location\n * @param {Size} size - Specifies the size\n * @param {string} shape - Specifies the shape\n * @param {PathOption} options - Specifies the path option\n * @param {string} url - Specifies the string\n * @returns {IShapes} - Returns the shapes\n * @private\n */\nexport function renderLegendShape(location, size, shape, options, url) {\n var renderPath;\n var functionName = 'Path';\n var shapeWidth = size.width;\n var shapeHeight = size.height;\n var shapeX = location.x;\n var shapeY = location.y;\n var x = location.x + (-shapeWidth / 2);\n var y = location.y + (-shapeHeight / 2);\n switch (shape) {\n case 'Circle':\n case 'Bubble':\n functionName = 'Ellipse';\n merge(options, { 'rx': shapeWidth / 2, 'ry': shapeHeight / 2, 'cx': shapeX, 'cy': shapeY });\n break;\n case 'VerticalLine':\n renderPath = 'M' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' + 'L' + ' ' + shapeX + ' '\n + (shapeY + (-shapeHeight / 2));\n merge(options, { 'd': renderPath });\n break;\n case 'Diamond':\n renderPath = 'M' + ' ' + x + ' ' + shapeY + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + shapeY + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + shapeY + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Rectangle':\n renderPath = 'M' + ' ' + x + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (-shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Triangle':\n renderPath = 'M' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'InvertedTriangle':\n renderPath = 'M' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX - (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Pentagon':\n // eslint-disable-next-line no-case-declarations\n var eq = 72;\n // eslint-disable-next-line no-case-declarations\n var xValue = void 0;\n // eslint-disable-next-line no-case-declarations\n var yValue = void 0;\n for (var i = 0; i <= 5; i++) {\n xValue = (shapeWidth / 2) * Math.cos((Math.PI / 180) * (i * eq));\n yValue = (shapeWidth / 2) * Math.sin((Math.PI / 180) * (i * eq));\n if (i === 0) {\n renderPath = 'M' + ' ' + (shapeX + xValue) + ' ' + (shapeY + yValue) + ' ';\n }\n else {\n renderPath = renderPath.concat('L' + ' ' + (shapeX + xValue) + ' ' + (shapeY + yValue) + ' ');\n }\n }\n renderPath = renderPath.concat('Z');\n merge(options, { 'd': renderPath });\n break;\n case 'Star':\n renderPath = 'M ' + (location.x + size.width / 3) + ' ' + (location.y - size.height / 2) + ' L ' + (location.x - size.width / 2)\n + ' ' + (location.y + size.height / 6) + ' L ' + (location.x + size.width / 2) + ' ' + (location.y + size.height / 6)\n + ' L ' + (location.x - size.width / 3) + ' ' + (location.y - size.height / 2) + ' L ' + location.x + ' ' +\n (location.y + size.height / 2) + ' L ' + (location.x + size.width / 3) + ' ' + (location.y - size.height / 2) + ' Z';\n merge(options, { 'd': renderPath });\n break;\n case 'Cross':\n renderPath = 'M' + ' ' + x + ' ' + shapeY + ' ' + 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + shapeY + ' ' +\n 'M' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' + 'L' + ' ' + shapeX + ' ' +\n (shapeY + (-shapeHeight / 2));\n merge(options, { 'd': renderPath });\n break;\n case 'Image':\n functionName = 'Image';\n merge(options, { 'href': url, 'height': shapeHeight, 'width': shapeWidth, x: x, y: y });\n break;\n }\n return { renderOption: options, functionName: functionName };\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isParentItem(data, item) {\n var isParentItem = false;\n for (var j = 0; j < data.length; j++) {\n if (item['levelOrderName'] === data[j]['levelOrderName']) {\n isParentItem = true;\n break;\n }\n }\n return isParentItem;\n}\n/**\n * Ajax support for treemap\n */\nvar TreeMapAjax = /** @class */ (function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function TreeMapAjax(options, type, async, contentType, sendData) {\n this.dataOptions = options;\n this.type = type || 'GET';\n this.async = async || true;\n this.contentType = contentType;\n this.sendData = sendData;\n }\n return TreeMapAjax;\n}());\nexport { TreeMapAjax };\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function removeShape(collection, value) {\n if (collection.length > 0) {\n for (var i = 0; i < collection.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = collection[i];\n setColor(item['legendEle'], item['oldFill'], item['oldOpacity'], item['oldBorderColor'], item['oldBorderWidth']);\n }\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function removeLegend(collection, value) {\n if (collection.length > 0) {\n for (var j = 0; j < collection.length; j++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = collection[j];\n setColor(item['legendEle'], item['oldFill'], item['oldOpacity'], item['oldBorderColor'], item['oldBorderWidth']);\n var dataCount = item['ShapeCollection']['Elements'].length;\n for (var k = 0; k < dataCount; k++) {\n setColor(item['ShapeCollection']['Elements'][k], item['shapeOldFill'], item['shapeOldOpacity'], item['shapeOldBorderColor'], item['shapeOldBorderWidth']);\n }\n }\n }\n}\nexport function setColor(element, fill, opacity, borderColor, borderWidth) {\n element.setAttribute('fill', fill);\n element.setAttribute('opacity', opacity);\n element.setAttribute('stroke', borderColor);\n element.setAttribute('stroke-width', borderWidth);\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function removeSelectionWithHighlight(collection, element, treemap) {\n removeShape(collection, 'highlight');\n element = [];\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getLegendIndex(length, item, treemap) {\n var index;\n for (var i = 0; i < length; i++) {\n var dataLength = treemap.treeMapLegendModule.legendCollections[i]['legendData'].length;\n for (var j = 0; j < dataLength; j++) {\n if (treemap.treeMapLegendModule.legendCollections[i]['legendData'][j]['levelOrderName'] === item['levelOrderName']) {\n index = i;\n break;\n }\n }\n }\n return index;\n}\nexport function pushCollection(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ncollection, index, number, legendElement, shapeElement, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nrenderItems, legendCollection) {\n collection.push({\n legendEle: legendElement, oldFill: legendCollection[index]['legendFill'],\n oldOpacity: legendCollection[index]['opacity'], oldBorderColor: legendCollection[index]['borderColor'],\n oldBorderWidth: legendCollection[index]['borderWidth'],\n shapeElement: shapeElement, shapeOldFill: renderItems[number]['options']['fill'],\n shapeOldOpacity: renderItems[number]['options']['opacity'],\n shapeOldBorderColor: renderItems[number]['options']['border']['color'],\n shapeOldBorderWidth: renderItems[number]['options']['border']['width']\n });\n}\n/**\n * To trigger the download element\n *\n * @param {string} fileName - Specifies the file name\n * @param {ExportType} type - Specifies the type\n * @param {string} url - Specifies the url\n * @param {boolean} isDownload - Specifies the boolean value\n * @returns {void}\n */\nexport function triggerDownload(fileName, type, url, isDownload) {\n createElement('a', {\n attrs: {\n 'download': fileName + '.' + type.toLocaleLowerCase(),\n 'href': url\n }\n }).dispatchEvent(new MouseEvent(isDownload ? 'click' : 'move', {\n view: window,\n bubbles: false,\n cancelable: true\n }));\n}\nexport function removeElement(id) {\n var element = document.getElementById(id);\n return element ? remove(element) : null;\n}\n","/**\n * Maps Themes doc\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Theme;\n(function (Theme) {\n /**\n * @private\n */\n Theme.mapsTitleFont = {\n size: '14px',\n fontWeight: 'Medium',\n color: '#424242',\n fontStyle: 'Medium',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n})(Theme || (Theme = {}));\n/**\n * To get the theme style based on treemap theme.\n *\n * @param {TreeMapTheme} theme Specifies the theme of the treemap control.\n * @returns {IThemeStyle} Returns the theme.\n * @private\n */\nexport function getThemeStyle(theme) {\n var style;\n var color;\n switch (theme.toLowerCase()) {\n case 'materialdark':\n color = '#303030';\n break;\n case 'fabricdark':\n color = '#201F1F';\n break;\n case 'bootstrapdark':\n color = '#1A1A1A';\n break;\n }\n switch (theme.toLowerCase()) {\n case 'bootstrapdark':\n case 'fabricdark':\n case 'materialdark':\n style = {\n backgroundColor: color,\n titleFontColor: '#FFFFFF',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n legendTitleColor: '#DADADA',\n legendTextColor: '#DADADA',\n fontSize: '15px',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n break;\n case 'highcontrast':\n style = {\n backgroundColor: '#000000',\n titleFontColor: '#FFFFFF',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontSize: '15px',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n break;\n case 'bootstrap4':\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#212529',\n subTitleFontColor: '#212529',\n tooltipFillColor: '#000000',\n tooltipFontColor: '#FFFFFF',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 0.9,\n legendTitleColor: '#212529',\n legendTextColor: '#212529',\n fontFamily: 'HelveticaNeue-Medium',\n fontSize: '16px',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'HelveticaNeue'\n };\n break;\n case 'tailwind':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#374151',\n subTitleFontColor: '#374151',\n tooltipFillColor: '#111827',\n tooltipFontColor: '#F9FAFB',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#374151',\n legendTextColor: '#374151',\n fontFamily: 'Inter',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter'\n };\n break;\n case 'tailwinddark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#D1D5DB',\n subTitleFontColor: '#D1D5DB',\n tooltipFillColor: '#F9FAFB',\n tooltipFontColor: '#1F2937',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#D1D5DB',\n legendTextColor: '#D1D5DB',\n fontFamily: 'Inter',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter'\n };\n break;\n case 'bootstrap5':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#212529',\n subTitleFontColor: '#212529',\n tooltipFillColor: '#212529',\n tooltipFontColor: '#F9FAFB',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#212529',\n legendTextColor: '#212529',\n fontFamily: 'Helvetica Neue',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Helvetica Neue'\n };\n break;\n case 'bootstrap5dark':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#FFFFFF',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#E9ECEF',\n tooltipFontColor: '#212529',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontFamily: 'Helvetica Neue',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Helvetica Neue'\n };\n break;\n case 'fluent':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#201F1E',\n subTitleFontColor: '#201F1E',\n tooltipFillColor: '#FFFFFF',\n tooltipFontColor: '#323130',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#201F1E',\n legendTextColor: '#201F1E',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI'\n };\n break;\n case 'fluentdark':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#F3F2F1',\n subTitleFontColor: '#F3F2F1',\n tooltipFillColor: '#252423',\n tooltipFontColor: '#F3F2F1',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#F3F2F1',\n legendTextColor: '#F3F2F1',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI'\n };\n break;\n default:\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#424242',\n subTitleFontColor: '#424242',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n legendTitleColor: '#353535',\n legendTextColor: '#353535',\n fontSize: '15px',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif'\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 component.\n *\n * @private\n */\nexport var defaultFont = 'Roboto, Segoe UI, Noto, Sans-serif';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * Maps base doc\n */\nimport { Property, ChildProperty, Complex, Collection } from '@syncfusion/ej2-base';\nimport { defaultFont } from './constants';\n/**\n * Sets and gets the options for customizing the color and width of the border in treemap component.\n */\nvar Border = /** @class */ (function (_super) {\n __extends(Border, _super);\n function Border() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('#808080')\n ], Border.prototype, \"color\", void 0);\n __decorate([\n Property(0)\n ], Border.prototype, \"width\", void 0);\n return Border;\n}(ChildProperty));\nexport { Border };\n/**\n * Sets and gets the margin for the treemap component.\n */\nvar Margin = /** @class */ (function (_super) {\n __extends(Margin, _super);\n function Margin() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(10)\n ], Margin.prototype, \"left\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"right\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"top\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"bottom\", void 0);\n return Margin;\n}(ChildProperty));\nexport { Margin };\n/**\n * Sets and gets the options to customize the style of the text contents in the treemap component.\n */\nvar Font = /** @class */ (function (_super) {\n __extends(Font, _super);\n function Font() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], Font.prototype, \"size\", void 0);\n __decorate([\n Property(null)\n ], Font.prototype, \"color\", void 0);\n __decorate([\n Property(defaultFont)\n ], Font.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontStyle\", void 0);\n __decorate([\n Property(1)\n ], Font.prototype, \"opacity\", void 0);\n return Font;\n}(ChildProperty));\nexport { Font };\n/**\n * Sets and gets the options for customizing the common title of the treemap component.\n */\nvar CommonTitleSettings = /** @class */ (function (_super) {\n __extends(CommonTitleSettings, _super);\n function CommonTitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], CommonTitleSettings.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], CommonTitleSettings.prototype, \"description\", void 0);\n return CommonTitleSettings;\n}(ChildProperty));\nexport { CommonTitleSettings };\n/**\n * Sets and gets the options for customizing the subtitle of the treemap component.\n */\nvar SubTitleSettings = /** @class */ (function (_super) {\n __extends(SubTitleSettings, _super);\n function SubTitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ fontFamily: 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 component.\n */\nvar TitleSettings = /** @class */ (function (_super) {\n __extends(TitleSettings, _super);\n function TitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ fontFamily: 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 component.\n */\nvar ColorMapping = /** @class */ (function (_super) {\n __extends(ColorMapping, _super);\n function ColorMapping() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"from\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"to\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"color\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"label\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"minOpacity\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"maxOpacity\", void 0);\n __decorate([\n Property(true)\n ], ColorMapping.prototype, \"showLegend\", void 0);\n return ColorMapping;\n}(ChildProperty));\nexport { ColorMapping };\n/**\n * Sets and gets the options for customizing the legend of the treemap component.\n */\nvar LegendSettings = /** @class */ (function (_super) {\n __extends(LegendSettings, _super);\n function LegendSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('Default')\n ], LegendSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('transparent')\n ], LegendSettings.prototype, \"background\", void 0);\n __decorate([\n Property('Circle')\n ], LegendSettings.prototype, \"shape\", void 0);\n __decorate([\n Property('')\n ], LegendSettings.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], LegendSettings.prototype, \"height\", void 0);\n __decorate([\n Complex({ fontFamily: 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: '#000000', width: 0 }, Border)\n ], LegendSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ color: '#000000', width: 0 }, Border)\n ], LegendSettings.prototype, \"shapeBorder\", void 0);\n __decorate([\n Complex({}, CommonTitleSettings)\n ], LegendSettings.prototype, \"title\", void 0);\n __decorate([\n Complex({ size: '14px' }, Font)\n ], LegendSettings.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('Bottom')\n ], LegendSettings.prototype, \"position\", void 0);\n __decorate([\n Property('None')\n ], LegendSettings.prototype, \"orientation\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"invertedPointer\", void 0);\n __decorate([\n Property('After')\n ], LegendSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('None')\n ], LegendSettings.prototype, \"labelDisplayMode\", void 0);\n __decorate([\n Property('Center')\n ], LegendSettings.prototype, \"alignment\", void 0);\n __decorate([\n Property({ x: 0, y: 0 })\n ], LegendSettings.prototype, \"location\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"showLegendPath\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"valuePath\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"removeDuplicateLegend\", void 0);\n return LegendSettings;\n}(ChildProperty));\nexport { LegendSettings };\n/**\n * Sets and gets the settings for drill to visualize the treemap rendered in the initial state.\n */\nvar InitialDrillSettings = /** @class */ (function (_super) {\n __extends(InitialDrillSettings, _super);\n function InitialDrillSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], InitialDrillSettings.prototype, \"groupIndex\", void 0);\n __decorate([\n Property(null)\n ], InitialDrillSettings.prototype, \"groupName\", void 0);\n return InitialDrillSettings;\n}(ChildProperty));\nexport { InitialDrillSettings };\n/**\n * Sets and gets the options for customizing the leaf item of the treemap component.\n */\nvar LeafItemSettings = /** @class */ (function (_super) {\n __extends(LeafItemSettings, _super);\n function LeafItemSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(false)\n ], LeafItemSettings.prototype, \"autoFill\", void 0);\n __decorate([\n Complex({}, Border)\n ], LeafItemSettings.prototype, \"border\", void 0);\n __decorate([\n Property(0)\n ], LeafItemSettings.prototype, \"gap\", void 0);\n __decorate([\n Property(10)\n ], LeafItemSettings.prototype, \"padding\", void 0);\n __decorate([\n Property(1)\n ], LeafItemSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LeafItemSettings.prototype, \"showLabels\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelPath\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelFormat\", void 0);\n __decorate([\n Property('TopLeft')\n ], LeafItemSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Complex({ color: null, size: '12px' }, Font)\n ], LeafItemSettings.prototype, \"labelStyle\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelTemplate\", void 0);\n __decorate([\n Property('Center')\n ], LeafItemSettings.prototype, \"templatePosition\", void 0);\n __decorate([\n Property('Trim')\n ], LeafItemSettings.prototype, \"interSectAction\", void 0);\n __decorate([\n Collection([], ColorMapping)\n ], LeafItemSettings.prototype, \"colorMapping\", void 0);\n return LeafItemSettings;\n}(ChildProperty));\nexport { LeafItemSettings };\n/**\n * Sets and gets the options for customizing the tooltip of the treemap component.\n */\nvar TooltipSettings = /** @class */ (function (_super) {\n __extends(TooltipSettings, _super);\n function TooltipSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('')\n ], TooltipSettings.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(0.75)\n ], TooltipSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(['Circle'])\n ], TooltipSettings.prototype, \"markerShapes\", void 0);\n __decorate([\n Complex({}, Border)\n ], TooltipSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ fontFamily: defaultFont, size: '13px' }, Font)\n ], TooltipSettings.prototype, \"textStyle\", void 0);\n return TooltipSettings;\n}(ChildProperty));\nexport { TooltipSettings };\n/**\n * Sets and gets the options for customizing the selection of the leaf items in treemap component.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], SelectionSettings.prototype, \"fill\", void 0);\n __decorate([\n Property('0.5')\n ], SelectionSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, Border)\n ], SelectionSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Item')\n ], SelectionSettings.prototype, \"mode\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Sets and gets the options for customizing the highlighting of the treemap item,\n * when the mouse hover is performed in it.\n */\nvar HighlightSettings = /** @class */ (function (_super) {\n __extends(HighlightSettings, _super);\n function HighlightSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], HighlightSettings.prototype, \"enable\", void 0);\n __decorate([\n Property('#808080')\n ], HighlightSettings.prototype, \"fill\", void 0);\n __decorate([\n Property('0.5')\n ], HighlightSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, Border)\n ], HighlightSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Item')\n ], HighlightSettings.prototype, \"mode\", void 0);\n return HighlightSettings;\n}(ChildProperty));\nexport { HighlightSettings };\n/**\n * Sets and gets the options for customizing the levels of the treemap component.\n */\nvar LevelSettings = /** @class */ (function (_super) {\n __extends(LevelSettings, _super);\n function LevelSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"groupPath\", void 0);\n __decorate([\n Property(0)\n ], LevelSettings.prototype, \"groupGap\", void 0);\n __decorate([\n Property(10)\n ], LevelSettings.prototype, \"groupPadding\", void 0);\n __decorate([\n Complex({}, Border)\n ], LevelSettings.prototype, \"border\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(false)\n ], LevelSettings.prototype, \"autoFill\", void 0);\n __decorate([\n Property(1)\n ], LevelSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LevelSettings.prototype, \"showHeader\", void 0);\n __decorate([\n Property(20)\n ], LevelSettings.prototype, \"headerHeight\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"headerFormat\", void 0);\n __decorate([\n Property('Near')\n ], LevelSettings.prototype, \"headerAlignment\", void 0);\n __decorate([\n Complex({ color: null, size: '13px' }, Font)\n ], LevelSettings.prototype, \"headerStyle\", void 0);\n __decorate([\n Property('TopLeft')\n ], LevelSettings.prototype, \"templatePosition\", void 0);\n __decorate([\n Collection([], ColorMapping)\n ], LevelSettings.prototype, \"colorMapping\", void 0);\n return LevelSettings;\n}(ChildProperty));\nexport { LevelSettings };\n","import { Rect, itemsToOrder, TextOption, measureText, textTrim, hide, wordWrap, textWrap, getTemplateFunction, convertElement, findLabelLocation, PathOption, textFormatter, colorNameToHex, convertHexToColor, colorMap, measureElement, convertToContainer, convertToRect, getShortestEdge, getArea, orderByArea, isParentItem, maintainSelection } from '../utils/helper';\nimport { isNullOrUndefined, createElement, extend } from '@syncfusion/ej2-base';\nimport { Location, findChildren, renderTextElement } from '../utils/helper';\nimport { itemRendering } from '../model/constants';\nimport { LevelsData } from './../treemap';\n/**\n * To calculate and render the shape layer\n */\nvar LayoutPanel = /** @class */ (function () {\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function LayoutPanel(treemap) {\n this.treemap = treemap;\n }\n LayoutPanel.prototype.processLayoutPanel = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data;\n var totalRect;\n if (LevelsData.levelsData && LevelsData.levelsData.length > 0) {\n data = (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) &&\n !isNullOrUndefined(this.treemap.initialDrillDown.groupName)) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length === 0) ?\n this.getDrilldownData(LevelsData.levelsData[0], [])[0] : LevelsData.levelsData[0];\n totalRect = extend({}, this.treemap.areaRect, totalRect, false);\n if (!isNullOrUndefined(this.treemap.treeMapLegendModule) && !isNullOrUndefined(this.treemap.totalRect)) {\n if (this.treemap.legendSettings.position !== 'Float') {\n totalRect = this.treemap.totalRect;\n }\n }\n if (!isNullOrUndefined(this.treemap.currentLevel) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? !isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length !== 0)) {\n var count = this.treemap.drilledItems.length - 1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var x = this.treemap.drilledItems[count]['data'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var y = {};\n y[this.treemap.drilledItems[count]['data']['groupName']] = [x];\n if (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) && !this.treemap.enableBreadcrumb) {\n this.treemap.currentLevel = this.treemap.drilledItems[count]['data']['groupIndex'];\n }\n this.calculateLayoutItems(y || LevelsData.levelsData[0], totalRect);\n this.renderLayoutItems(y || LevelsData.levelsData[0]);\n }\n else {\n if (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length === 0)) {\n this.treemap.currentLevel = this.treemap.initialDrillDown.groupIndex;\n }\n this.calculateLayoutItems(data || LevelsData.levelsData[0], totalRect);\n this.renderLayoutItems(data || LevelsData.levelsData[0]);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getDrilldownData = function (data, drillData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var treemap = this.treemap;\n var newData = {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n if (child && child.length > 0 && drillData.length === 0) {\n for (var i = 0; i < child.length; i++) {\n if (child[i]['groupIndex'] === treemap.initialDrillDown.groupIndex &&\n child[i]['name'] === treemap.initialDrillDown.groupName) {\n child[i]['isDrilled'] = true;\n newData[child[i]['groupName']] = [child[i]];\n drillData.push(newData);\n }\n }\n for (var j = 0; j < child.length; j++) {\n this.getDrilldownData(child[j], drillData);\n }\n }\n return drillData;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.calculateLayoutItems = function (data, rect) {\n this.renderItems = [];\n this.parentData = [];\n if (!isNullOrUndefined(this.treemap.weightValuePath)) {\n if (this.treemap.layoutType.indexOf('SliceAndDice') > -1) {\n this.computeSliceAndDiceDimensional(data, rect);\n }\n else {\n rect.height = rect.height + rect.y;\n rect.width = rect.width + rect.x;\n this.computeSquarifyDimensional(data, rect);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeSliceAndDiceDimensional = function (data, coords) {\n var leafItem = this.treemap.leafItemSettings;\n var rect;\n var groups = this.treemap.levels;\n var groupIndex;\n var isLeafItem = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var children = findChildren(data)['values'];\n var gap;\n var headerHeight;\n if (children && children.length > 0) {\n this.sliceAndDiceProcess(children, coords);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < children.length; i++) {\n groupIndex = children[i]['groupIndex'];\n isLeafItem = (groups.length === 0 || groupIndex === groups.length);\n gap = isLeafItem ? leafItem.gap : groups[groupIndex].groupGap;\n headerHeight = groups.length === 0 ? 0 : groups[groupIndex] ? groups[groupIndex].showHeader ?\n groups[groupIndex].headerHeight : 0 : groups[groupIndex - 1].showHeader ? groups[groupIndex - 1].headerHeight : 0;\n rect = children[i]['rect'];\n rect = new Rect(rect.x + (gap / 2), rect.y + (headerHeight + (gap / 2)), rect.width - gap, Math.abs(rect.height - (gap + headerHeight)));\n this.computeSliceAndDiceDimensional(children[i], rect);\n }\n }\n }\n return data;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.sliceAndDiceProcess = function (processData, rect) {\n var parentArea = rect.height * rect.width;\n var levels = this.treemap.levels;\n var childValue;\n var alottedValue = 0;\n var totalWeight = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n processData.forEach(function (data) { totalWeight += data['weight']; });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n processData.forEach(function (child) {\n child['weightArea'] = parentArea * child['weight'] / totalWeight;\n });\n var isHorizontal = (this.treemap.layoutType === 'SliceAndDiceAuto') ? (rect.width > rect.height) :\n (this.treemap.layoutType === 'SliceAndDiceHorizontal');\n processData.sort(itemsToOrder);\n for (var i = 0; i < processData.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = processData[i];\n item['isLeafItem'] = (levels.length === 0) || ((this.treemap.isHierarchicalData ||\n isNullOrUndefined(this.treemap.leafItemSettings.labelPath)) ?\n item['groupIndex'] === levels.length - 1 : item['groupIndex'] === this.treemap.levels.length);\n if (isHorizontal) {\n childValue = ((parentArea / totalWeight) * processData[i]['weight']) / rect.height;\n if (alottedValue <= rect.width) {\n processData[i]['rect'] = new Rect(alottedValue + rect.x, rect.y, childValue, rect.height);\n }\n }\n else {\n childValue = ((parentArea / totalWeight) * processData[i]['weight']) / rect.width;\n if (alottedValue <= rect.height) {\n processData[i]['rect'] = new Rect(rect.x, alottedValue + rect.y, rect.width, childValue);\n }\n }\n alottedValue += childValue;\n this.renderItems.push(processData[i]);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeSquarifyDimensional = function (data, coords) {\n var leaf = this.treemap.leafItemSettings;\n var rect;\n var levels = this.treemap.levels;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var groupIndex = 0;\n var isLeafItem = false;\n var item;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n var index;\n var padding;\n var headerHeight;\n if (child && child.length > 0) {\n if (this.parentData.length === 0) {\n this.parentData = [];\n this.parentData.push(child);\n }\n this.calculateChildrenLayout(data, child, coords);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < child.length; i++) {\n item = child[i];\n index = item['groupIndex'];\n rect = item['rect'];\n padding = (item['isLeafItem'] ? leaf.padding : levels[index].groupPadding) / 2;\n headerHeight = this.treemap.isHierarchicalData ? index === 0 && item['isLeafItem'] ? 0 : levels[index] ?\n levels[index].showHeader ? levels[index].headerHeight : 0 : 0 : (levels.length === 0) ? 0 : levels[index] ?\n levels[index].showHeader ? levels[index].headerHeight : 0 : 0;\n rect = new Rect(rect.x + padding, rect.y + (headerHeight + padding), rect.width - padding, rect.height - padding);\n if (!item['isLeafItem'] && item['weight'] > 0) {\n this.computeSquarifyDimensional(child[i], rect);\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.calculateChildrenLayout = function (parent, children, coords) {\n this.computeTotalArea(children, getArea(coords));\n children.sort(orderByArea);\n this.performRowsLayout(children, [], coords, []);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.performRowsLayout = function (data, currentRow, rect, stack) {\n var dataLength = data.length;\n if (dataLength === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newCoordinates = this.getCoordinates(currentRow, rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newStack = stack.concat(newCoordinates);\n return newStack;\n }\n var width = getShortestEdge(rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var nextDatum = data[0];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var restData = data.slice(1, dataLength);\n if (this.aspectRatio(currentRow, nextDatum, width)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newRow = currentRow.concat(nextDatum);\n return this.performRowsLayout(restData, newRow, rect, stack);\n }\n else {\n var currentRowLength = currentRow.length;\n var valueSum = 0;\n for (var i = 0; i < currentRowLength; i += 1) {\n valueSum += currentRow[i]['itemArea'];\n }\n var newContainer = this.cutArea(rect, valueSum);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newCoordinates = this.getCoordinates(currentRow, rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newStack = stack.concat(newCoordinates);\n return this.performRowsLayout(data, [], newContainer, newStack);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.aspectRatio = function (currentRow, nextDatum, length) {\n if (currentRow.length === 0) {\n return true;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newRow = currentRow.concat(nextDatum);\n var currentMaxAspectRatio = this.findMaxAspectRatio(currentRow, length);\n var newMaxAspectRatio = this.findMaxAspectRatio(newRow, length);\n return (currentMaxAspectRatio >= newMaxAspectRatio);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.findMaxAspectRatio = function (row, length) {\n var rowLength = row.length;\n var minArea = Infinity;\n var maxArea = -Infinity;\n var sumArea = 0;\n for (var i = 0; i < rowLength; i += 1) {\n var area = row[i]['itemArea'];\n if (area < minArea) {\n minArea = area;\n }\n if (area > maxArea) {\n maxArea = area;\n }\n sumArea += area;\n }\n var result = Math.max((Math.pow(length, 2)) * maxArea / (Math.pow(sumArea, 2)), (Math.pow(sumArea, 2)) /\n ((Math.pow(length, 2)) * minArea));\n return result;\n };\n LayoutPanel.prototype.cutArea = function (rect, area) {\n var newContainer = convertToContainer(rect);\n var width = newContainer.width;\n var height = newContainer.height;\n var xOffset = newContainer.x;\n var yOffset = newContainer.y;\n if (width >= height) {\n var areaWidth = area / height;\n var newWidth = width - areaWidth;\n var container = {\n x: xOffset + areaWidth,\n y: yOffset,\n width: newWidth,\n height: height\n };\n return convertToRect(container);\n }\n else {\n var areaHeight = area / width;\n var newHeight = height - areaHeight;\n var container = {\n x: xOffset,\n y: yOffset + areaHeight,\n width: width,\n height: newHeight\n };\n return convertToRect(container);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getCoordinates = function (row, rect) {\n var container = convertToContainer(rect);\n var headerHeight;\n var width = container.width;\n var height = container.height;\n var xOffset = container.x;\n var yOffset = container.y;\n var rowLength = row.length;\n var levels = this.treemap.levels;\n var leaf = this.treemap.leafItemSettings;\n var index;\n var valueSum = 0;\n for (var i = 0; i < rowLength; i += 1) {\n valueSum += row[i]['itemArea'];\n }\n var areaWidth = valueSum / height;\n var areaHeight = valueSum / width;\n var subXOffset = xOffset;\n var subYOffset = yOffset;\n var padding;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var coordinates = [];\n var isParent;\n var gap;\n var parentRect;\n for (var i = 0; i < rowLength; i += 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = row[i];\n index = item['groupIndex'];\n item['isLeafItem'] = (levels.length === 0) || (this.treemap.isHierarchicalData ? index === levels.length :\n isNullOrUndefined(leaf.labelPath) ? false : index === levels.length);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isParent = isParentItem(this.parentData[0], item);\n parentRect = isParent ? this.treemap.areaRect : item['parent'].rect;\n padding = item['isLeafItem'] ? leaf.padding : levels[index].groupPadding;\n if (width >= height) {\n var y1 = subYOffset + item['itemArea'] / areaWidth;\n item['rect'] = {\n x: subXOffset,\n y: subYOffset,\n width: subXOffset + areaWidth,\n height: y1\n };\n subYOffset = y1;\n }\n else {\n var x1 = subXOffset + item['itemArea'] / areaHeight;\n item['rect'] = {\n x: subXOffset,\n y: subYOffset,\n width: x1,\n height: subYOffset + areaHeight\n };\n subXOffset = x1;\n }\n if (item['weight'] > 0 && (isParent || (Math.round(rect.y + (padding / 2)) <=\n Math.round(parentRect.y + (parentRect.height - parentRect.y)) && Math.round(rect.x + (padding / 2)) <=\n Math.round(parentRect.x + (parentRect.width - parentRect.x))))) {\n this.renderItems.push(item);\n coordinates.push(item);\n }\n }\n return coordinates;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeTotalArea = function (data, area) {\n var dataLength = data.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataSum = 0;\n var result = [];\n for (var i = 0; i < dataLength; i += 1) {\n var dataLength_1 = data.length;\n var dataSum_1 = 0;\n for (var i_1 = 0; i_1 < dataLength_1; i_1 += 1) {\n dataSum_1 += data[i_1]['weight'];\n }\n var multiplier = area / dataSum_1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var datum = void 0;\n for (var j = 0; j < dataLength_1; j++) {\n datum = data[j];\n datum['itemArea'] = datum['weight'] * multiplier;\n result.push(datum);\n }\n }\n return result;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.onDemandProcess = function (childItems) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentItem = {};\n var totalRect;\n parentItem = childItems[0]['parent'];\n this.treemap.currentLevel = parentItem['isDrilled'] ? parentItem['groupIndex'] : null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentItemGroupname = {};\n if (isNullOrUndefined(parentItem['groupName'])) {\n parentItemGroupname = parentItem;\n }\n else {\n parentItemGroupname[parentItem['groupName']] = [parentItem];\n }\n totalRect = extend({}, this.treemap.areaRect, totalRect, false);\n if (!isNullOrUndefined(this.treemap.treeMapLegendModule) && !isNullOrUndefined(this.treemap.totalRect)) {\n totalRect = this.treemap.totalRect;\n }\n var count = this.treemap.levels.length;\n for (var i = 0; i < count; i++) {\n var levelCount = childItems[0]['groupIndex'];\n if (count === levelCount) {\n this.treemap.levels[count] = this.treemap.levels[i];\n }\n else {\n this.treemap.levels.splice(count - 1, 1);\n }\n }\n this.calculateLayoutItems(parentItemGroupname, totalRect);\n this.renderLayoutItems(parentItemGroupname);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.renderLayoutItems = function (renderData) {\n var _this = this;\n var textCollection = [];\n var position;\n var treeMap = this.treemap;\n var colorMapping;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var txtVisible;\n var getItemColor;\n var eventArgs;\n this.renderer = treeMap.renderer;\n var trimHeader;\n var textLocation = new Location(0, 0);\n var pathOptions;\n var elementID = treeMap.element.id;\n var index;\n var templatePosition;\n var mode = treeMap.layoutType;\n var rect;\n var format;\n var interSectAction = this.treemap.leafItemSettings.interSectAction;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var textSize;\n var fill;\n var item;\n var renderText;\n var opacity;\n var padding = 5;\n var rectPath = '';\n var isRender;\n var secondaryEle = document.getElementById(treeMap.element.id + '_Secondary_Element');\n var groupId;\n var textOptions;\n var templateEle;\n var gap;\n var textStyle;\n var levels = treeMap.levels;\n this.layoutGroup = this.renderer.createGroup({ id: elementID + '_TreeMap_' + mode + '_Layout' });\n var itemGroup;\n var level;\n var template;\n var border;\n var templateGroup = createElement('div', {\n id: treeMap.element.id + '_Label_Template_Group',\n className: 'template',\n styles: 'overflow: hidden; position: absolute;pointer-events: none;' +\n 'top:' + treeMap.areaRect.y + 'px;' +\n 'left:' + treeMap.areaRect.x + 'px;' +\n 'height:' + treeMap.areaRect.height + 'px;' +\n 'width:' + treeMap.areaRect.width + 'px;'\n });\n var isLeafItem = false;\n var leaf = treeMap.leafItemSettings;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childItems;\n var connectorText;\n var _loop_1 = function (i) {\n item = this_1.renderItems[i];\n index = item['groupIndex'];\n if (this_1.treemap.drillDownView && isNullOrUndefined(this_1.treemap.currentLevel)\n && index > 0 || this_1.treemap.drillDownView\n && index > (this_1.treemap.currentLevel + 1)) {\n return \"continue\";\n }\n rect = item['rect'];\n isLeafItem = item['isLeafItem'];\n groupId = elementID + '_Level_Index_' + index + '_Item_Index_' + i;\n itemGroup = this_1.renderer.createGroup({ id: groupId + '_Group' });\n gap = (isLeafItem ? leaf.gap : levels[index].groupGap) / 2;\n var treemapItemRect = this_1.treemap.totalRect ? convertToContainer(this_1.treemap.totalRect) : this_1.treemap.areaRect;\n if (treeMap.layoutType === 'Squarified') {\n rect.width = Math.abs(rect.x - rect.width) - gap;\n rect.height = Math.abs(rect.y - rect.height) - gap;\n }\n if (treeMap.renderDirection === 'TopRightBottomLeft') {\n rect.x = (treemapItemRect.x + treemapItemRect.width) - rect.width - Math.abs(treemapItemRect.x - rect.x);\n }\n else if (treeMap.renderDirection === 'BottomLeftTopRight') {\n rect.y = (treemapItemRect.y + treemapItemRect.height) - rect.height - Math.abs(treemapItemRect.y - rect.y);\n }\n else if (treeMap.renderDirection === 'BottomRightTopLeft') {\n rect.x = (treemapItemRect.x + treemapItemRect.width) - rect.width - Math.abs(treemapItemRect.x - rect.x);\n rect.y = (treemapItemRect.y + treemapItemRect.height) - rect.height - Math.abs(treemapItemRect.y - rect.y);\n }\n colorMapping = isLeafItem ? leaf.colorMapping : levels[index].colorMapping;\n getItemColor = this_1.getItemColor(isLeafItem, item);\n fill = getItemColor['fill'];\n opacity = getItemColor['opacity'];\n format = isLeafItem ? leaf.labelFormat : (levels[index]).headerFormat;\n var levelName;\n txtVisible = isLeafItem ? leaf.showLabels : (levels[index]).showHeader;\n if (index === this_1.treemap.currentLevel) {\n if (this_1.treemap.enableBreadcrumb) {\n var re = /#/gi;\n connectorText = '#' + this_1.treemap.breadcrumbConnector + '#';\n levelName = item['levelOrderName'].replace(re, connectorText);\n levelName = index !== 0 ? '#' + levelName : levelName;\n }\n else {\n levelName = item['name'];\n }\n }\n else {\n if (this_1.treemap.enableBreadcrumb) {\n item['isDrilled'] = false;\n }\n levelName = item['name'];\n }\n renderText = textFormatter(format, item['data'], this_1.treemap) || levelName || 'undefined';\n childItems = findChildren(item)['values'];\n renderText = !isLeafItem && childItems && childItems.length > 0 && this_1.treemap.enableDrillDown ?\n !item['isDrilled'] ? treeMap.enableRtl ? renderText + ' [+]' : '[+] ' + renderText :\n treeMap.enableRtl ? renderText + ' [-]' : '[-] ' + renderText : renderText;\n textStyle = (isLeafItem ? leaf.labelStyle : levels[index].headerStyle);\n textStyle.fontFamily = this_1.treemap.themeStyle.labelFontFamily || textStyle.fontFamily;\n border = isLeafItem ? leaf.border : levels[index].border;\n position = !isLeafItem ? (levels[index].headerAlignment) === 'Near' ? 'TopLeft' : (levels[index].headerAlignment) === 'Center' ?\n 'TopCenter' : 'TopRight' : leaf.labelPosition;\n templatePosition = isLeafItem ? leaf.templatePosition : levels[index].templatePosition;\n template = isLeafItem ? leaf.labelTemplate : levels[index].headerTemplate;\n item['options'] = { border: border, opacity: opacity, fill: fill };\n eventArgs = {\n cancel: false, name: itemRendering, treemap: this_1.treemap, text: renderText,\n currentItem: item, RenderItems: this_1.renderItems, options: item['options']\n };\n this_1.treemap.trigger(itemRendering, eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n rectPath = ' M ' + rect.x + ' ' + rect.y + ' L ' + (rect.x + rect.width) + ' ' + rect.y +\n ' L ' + (rect.x + rect.width) + ' ' + (rect.y + rect.height) + ' L ' + rect.x + ' ' + (rect.y + rect.height) + 'z';\n pathOptions = new PathOption(groupId + '_RectPath', fill, border.width, border.color, opacity, null, rectPath);\n var path = _this.renderer.drawPath(pathOptions);\n itemGroup.appendChild(path);\n if (txtVisible) {\n if (eventArgs.text !== renderText) {\n eventArgs.text = textFormatter(eventArgs.text, item['data'], _this.treemap) || levelName;\n }\n _this.renderItemText(eventArgs.text.toString(), itemGroup, textStyle, rect, interSectAction, groupId, fill, position, connectorText);\n }\n if (template) {\n templateEle = _this.renderTemplate(secondaryEle, groupId, rect, templatePosition, template, item, isLeafItem);\n 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 itemGroup.setAttribute('role', '');\n itemGroup.setAttribute('tabindex', (_this.treemap.tabIndex + i + 2).toString());\n maintainSelection(_this.treemap, itemGroup, 'treeMapSelection');\n _this.layoutGroup.appendChild(itemGroup);\n }\n });\n };\n var this_1 = this;\n for (var i = 0; i < this.renderItems.length; i++) {\n _loop_1(i);\n }\n if (templateGroup.childNodes.length > 0) {\n secondaryEle.appendChild(templateGroup);\n }\n this.treemap.svgObject.appendChild(this.layoutGroup);\n };\n LayoutPanel.prototype.renderItemText = function (text, parentElement, textStyle, rect, interSectAction, groupId, fill, position, connectorText) {\n var level;\n var headerPosition;\n var secondaryEle = document.getElementById(this.treemap.element.id + '_Secondary_Element');\n var leaf = this.treemap.leafItemSettings;\n var padding = 5;\n var textSize;\n var textCollection = [];\n var customText;\n var templateEle;\n var tspanText = [];\n var height = 0;\n var textName;\n textCollection = ((text.indexOf('<br>')) !== -1) ? text.split('<br>') : null;\n customText = this.labelInterSectAction(rect, text, textStyle, interSectAction);\n textSize = measureText(textCollection && textCollection[0] || customText[0], textStyle);\n if (this.treemap.enableRtl) {\n var labelSize = measureText(text, textStyle);\n var drillSymbolCount = text.search('[+]') || text.search('[-]');\n if (rect.width < labelSize.width && drillSymbolCount > 0) {\n var label = text.substring(drillSymbolCount - 1, text.length);\n var drillSymbol = '[+]';\n var drillSymbolSize = measureText(drillSymbol, textStyle);\n customText['0'] = textTrim(rect.width - drillSymbolSize.width - padding, customText[0], textStyle) + label;\n }\n }\n var textLocation = findLabelLocation(rect, position, textSize, 'Text', this.treemap);\n if (!isNullOrUndefined(textCollection)) {\n var collection = [];\n var texts = null;\n var maxNumber = [];\n for (var i = 0; i < textCollection.length; i++) {\n texts = textTrim((rect.width - 5), textCollection[i], textStyle);\n textSize = measureText(texts, textStyle);\n height += textSize.height;\n maxNumber.push(textSize.width);\n collection.push(texts);\n }\n customText = collection;\n textSize.width = Math.max.apply(null, maxNumber);\n textSize.height = height;\n }\n if (interSectAction === 'WrapByWord' || interSectAction === 'Wrap' || interSectAction === 'Trim') {\n for (var j = 0; j < customText.length; j++) {\n textSize = measureText(customText[j], textStyle);\n height += textSize.height;\n if ((rect.height - padding) > height) {\n tspanText.push(customText[j]);\n }\n }\n if (interSectAction === 'Wrap' && customText.length !== tspanText.length && tspanText.length) {\n var collectionLength = tspanText.length - 1;\n var stringText = tspanText[collectionLength];\n stringText = stringText.substring(0, (stringText.length - 1)) + '...';\n tspanText.splice(collectionLength);\n if (stringText !== '...') {\n tspanText.push(stringText);\n }\n }\n }\n else {\n textName = customText;\n tspanText.push(textName);\n }\n var textOptions = new TextOption(groupId + '_Text', textLocation.x, textLocation.y, 'start', tspanText, '', '', connectorText);\n renderTextElement(textOptions, textStyle, textStyle.color || this.getSaturatedColor(fill), parentElement);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getItemColor = function (isLeafItem, item) {\n var treemap = this.treemap;\n var itemFill = isLeafItem ? treemap.leafItemSettings.fill : treemap.levels[item['groupIndex']].fill;\n var itemOpacity = isLeafItem ? treemap.leafItemSettings.opacity : treemap.levels[item['groupIndex']].opacity;\n if (!isNullOrUndefined(LevelsData.defaultLevelsData)) {\n if (LevelsData.defaultLevelsData.length > 0) {\n LevelsData.levelsData = LevelsData.defaultLevelsData;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentData = findChildren(LevelsData.levelsData[0])['values'];\n var colorMapping = isLeafItem ? treemap.leafItemSettings.colorMapping :\n treemap.levels[item['groupIndex']].colorMapping;\n if (colorMapping.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var option = colorMap(colorMapping, item['data'][this.treemap.equalColorValuePath], item['data'][this.treemap.rangeColorValuePath], item['data'][this.treemap.weightValuePath]);\n itemFill = !isNullOrUndefined(option['fill']) ? option['fill'] : treemap.leafItemSettings.fill;\n itemOpacity = option['opacity'];\n }\n else {\n for (var i = 0; i < parentData.length; i++) {\n if (parentData[i]['levelOrderName'] === item['levelOrderName'].split('#')[0]) {\n itemFill = !isNullOrUndefined(itemFill) ? itemFill : !isNullOrUndefined(treemap.colorValuePath) ?\n parentData[i]['data'][treemap.colorValuePath] : treemap.palette.length > 0 ?\n treemap.palette[i % treemap.palette.length] : '#808080';\n }\n }\n }\n return { fill: itemFill, opacity: itemOpacity };\n };\n /**\n * To find saturated color for datalabel\n *\n * @param {string} color - Specifies the color\n * @returns {string} - Returns the color\n */\n LayoutPanel.prototype.getSaturatedColor = function (color) {\n var saturatedColor = color;\n saturatedColor = (saturatedColor === 'transparent') ? window.getComputedStyle(document.body, null).backgroundColor : saturatedColor;\n var rgbValue = convertHexToColor(colorNameToHex(saturatedColor));\n var contrast = Math.round((rgbValue.r * 299 + rgbValue.g * 587 + rgbValue.b * 114) / 1000);\n return contrast >= 128 ? 'black' : 'white';\n };\n LayoutPanel.prototype.renderTemplate = function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n secondaryEle, groupId, rect, position, template, item, isLeafItem) {\n var templateId = isLeafItem ? groupId + '_LabelTemplate' : groupId + '_HeaderTemplate';\n var baseTemplateId = isLeafItem ? '_LabelTemplate' : '_HeaderTemplate';\n if (isNullOrUndefined(template['prototype'])) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var keys = Object.keys(item['data']);\n for (var i = 0; i < keys.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n template = template.replace(new RegExp('{{:' + keys[i] + '}}', 'g'), item['data'][keys[i].toString()]);\n }\n }\n 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 } from '@syncfusion/ej2-base';\nimport { getElement } from '../utils/helper';\nimport { beforePrint } from '../model/constants';\n/**\n * Print module handles the print functionality for treemap.\n *\n * @hidden\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function Print(control) {\n }\n /**\n * This method is used to perform the print functionality in treemap.\n *\n * @param { string[] | string | Element} elements - Specifies the element.\n * @returns {void}\n * @private\n */\n Print.prototype.print = function (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 {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 div.appendChild(treeMap.element.cloneNode(true));\n }\n return div;\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n Print.prototype.getModuleName = function () {\n // Returns te module name\n return 'Print';\n };\n /**\n * To destroy the Print module.\n *\n * @returns {void}\n * @private\n */\n Print.prototype.destroy = function () { };\n return Print;\n}());\nexport { Print };\n","import { createElement, Browser } from '@syncfusion/ej2-base';\nimport { triggerDownload } from '../utils/helper';\n/**\n * ImageExport module handles the export to image functionality for treemap.\n *\n * @hidden\n */\nvar ImageExport = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance\n */\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function ImageExport(control) {\n }\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {ExportType} type - Specifies the type of the image file.\n * @param {string} fileName - Specifies the file name of the image file.\n * @param {boolean} allowDownload - Specifies whether to download the file or not.\n * @returns {Promise} - Returns the promise string.\n * @private\n */\n ImageExport.prototype.export = function (treeMap, type, fileName, allowDownload) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var promise = new Promise(function (resolve, reject) {\n var element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'height': treeMap.availableSize.height.toString(),\n 'width': treeMap.availableSize.width.toString()\n }\n });\n var isDownload = !(Browser.userAgent.toString().indexOf('HeadlessChrome') > -1);\n var svgData = '<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">' +\n treeMap.svgObject.outerHTML +\n '</svg>';\n var url = window.URL.createObjectURL(new Blob(type === 'SVG' ? [svgData] :\n [(new XMLSerializer()).serializeToString(treeMap.svgObject)], { type: 'image/svg+xml' }));\n if (type === 'SVG') {\n if (allowDownload) {\n triggerDownload(fileName, type, url, isDownload);\n }\n else {\n resolve(null);\n }\n }\n else {\n var image_1 = new Image();\n var context_1 = element.getContext('2d');\n image_1.onload = (function () {\n context_1.drawImage(image_1, 0, 0);\n window.URL.revokeObjectURL(url);\n if (allowDownload) {\n triggerDownload(fileName, type, element.toDataURL('image/png').replace('image/png', 'image/octet-stream'), isDownload);\n }\n else {\n if (type === 'JPEG') {\n resolve(element.toDataURL('image/jpeg'));\n }\n else if (type === 'PNG') {\n resolve(element.toDataURL('image/png'));\n }\n }\n });\n image_1.src = url;\n }\n });\n return promise;\n };\n ImageExport.prototype.getModuleName = function () {\n // Returns te module name\n return 'ImageExport';\n };\n /**\n * To destroy the ImageExport.\n *\n * @returns {void}\n * @private\n */\n ImageExport.prototype.destroy = function () { };\n return ImageExport;\n}());\nexport { ImageExport };\n","import { createElement, isNullOrUndefined, Browser } from '@syncfusion/ej2-base';\nimport { PdfPageOrientation, PdfDocument, PdfBitmap } from '@syncfusion/ej2-pdf-export';\n/**\n * PdfExport module handles the export to pdf functionality for treemap.\n *\n * @hidden\n */\nvar PdfExport = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance\n */\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function PdfExport(control) {\n }\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {ExportType} type - Specifies the type of the document.\n * @param {string} fileName - Specifies the name of the document.\n * @param {PdfPageOrientation} orientation - Specifies the orientation of the PDF document to export the component.\n * @param {boolean} allowDownload - Specifies whether to download the document or not.\n * @returns {Promise} - Returns the string.\n * @private\n */\n PdfExport.prototype.export = function (treeMap, type, fileName, orientation, allowDownload) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var promise = new Promise(function (resolve, reject) {\n var element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'width': treeMap.availableSize.width.toString(),\n 'height': treeMap.availableSize.height.toString()\n }\n });\n var isDownload = !(Browser.userAgent.toString().indexOf('HeadlessChrome') > -1);\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 === 'TailwindDark' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Bootstrap5Dark'\n || treeMap.theme === 'Fluent' || treeMap.theme === 'FluentDark') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n }\n var url = window.URL.createObjectURL(new Blob([(new XMLSerializer()).serializeToString(exportElement)], { type: 'image/svg+xml' }));\n var image = new Image();\n var context = element.getContext('2d');\n image.onload = (function () {\n context.drawImage(image, 0, 0);\n window.URL.revokeObjectURL(url);\n var document = new PdfDocument();\n var imageString = element.toDataURL('image/jpeg').replace('image/jpeg', 'image/octet-stream');\n document.pageSettings.orientation = orientation;\n imageString = imageString.slice(imageString.indexOf(',') + 1);\n document.pages.add().graphics.drawImage(new PdfBitmap(imageString), 0, 0, (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 PdfExport.prototype.destroy = function () { };\n return PdfExport;\n}());\nexport { PdfExport };\n","/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable @typescript-eslint/dot-notation */\n/* eslint-disable brace-style */\n/* eslint-disable max-len */\n/**\n * Tree Map Components\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, NotifyPropertyChanges, Property, extend, Ajax } from '@syncfusion/ej2-base';\nimport { Complex, Collection } from '@syncfusion/ej2-base';\nimport { Event, Internationalization } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\nimport { isNullOrUndefined, createElement, EventHandler, Browser, remove } from '@syncfusion/ej2-base';\nimport { Border, Margin, TitleSettings, LegendSettings, InitialDrillSettings } from './model/base';\nimport { SelectionSettings, TooltipSettings, LevelSettings, LeafItemSettings, HighlightSettings } from './model/base';\nimport { Size, stringToNumber, RectOption, Rect, textTrim, measureText, findChildren, removeElement, setItemTemplateContent } from '../treemap/utils/helper';\nimport { removeClassNames, removeShape, textFormatter } from '../treemap/utils/helper';\nimport { findPosition, TextOption, renderTextElement, isContainsData, TreeMapAjax } from '../treemap/utils/helper';\nimport { load, loaded, drillStart, drillEnd } from '../treemap/model/constants';\nimport { itemClick, itemMove, click, mouseMove, resize, doubleClick, rightClick } from '../treemap/model/constants';\nimport { LayoutPanel } from './layout/render-panel';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { getThemeStyle } from './model/theme';\nimport { Print } from './model/print';\nimport { ImageExport } from './model/image-export';\nimport { PdfExport } from './model/pdf-export';\n/**\n * Represents the treemap component.\n * ```html\n * <div id=\"container\"/>\n * <script>\n * var treemap = new TreeMap();\n * treemap.appendTo(\"#container\");\n * </script>\n * ```\n */\nvar TreeMap = /** @class */ (function (_super) {\n __extends(TreeMap, _super);\n /**s\n * Constructor for TreeMap component.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function TreeMap(options, element) {\n var _this = _super.call(this, options, element) || this;\n /**\n * resize the treemap\n */\n _this.isResize = false;\n /** @private */\n _this.orientation = 'Horizontal';\n /** @private */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.drilledItems = [];\n /** @private */\n _this.isHierarchicalData = false;\n /** @private */\n _this.levelSelection = [];\n /** @private */\n _this.legendId = [];\n return _this;\n }\n TreeMap.prototype.preRender = function () {\n var _this = this;\n this.trigger(load, { treemap: this }, function () {\n _this.initPrivateVariable();\n _this.unWireEVents();\n _this.createSvg();\n _this.wireEVents();\n _this.setCulture();\n });\n };\n TreeMap.prototype.render = function () {\n this.renderElements();\n };\n TreeMap.prototype.renderElements = function () {\n LevelsData.levelsData = null;\n LevelsData.defaultLevelsData = null;\n LevelsData.hierarchyData = null;\n this.createSecondaryElement();\n this.addTabIndex();\n this.themeStyle = getThemeStyle(this.theme);\n this.renderBorder();\n this.renderTitle(this.titleSettings, 'title', null, null);\n if (!isNullOrUndefined(LevelsData.levelsData)) {\n LevelsData.defaultLevelsData = LevelsData.levelsData;\n }\n this.processDataManager();\n };\n TreeMap.prototype.processDataManager = function () {\n var _this = this;\n var dataModule;\n var queryModule;\n var ajaxModule;\n var localAjax;\n if (this.dataSource instanceof DataManager) {\n dataModule = this.dataSource;\n queryModule = this.query instanceof Query ? this.query : new Query();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataManager = dataModule.executeQuery(queryModule);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataManager.then(function (e) {\n _this.dataSource = e['result'];\n _this.renderTreeMapElements();\n });\n }\n else if (this.dataSource instanceof TreeMapAjax) {\n localAjax = this.dataSource;\n ajaxModule = new Ajax(localAjax.dataOptions, localAjax.type, localAjax.async, localAjax.contentType);\n ajaxModule.onSuccess = function (args) {\n _this.dataSource = JSON.parse('[' + args + ']')[0];\n _this.renderTreeMapElements();\n };\n ajaxModule.send(localAjax.sendData);\n }\n else {\n this.renderTreeMapElements();\n }\n };\n TreeMap.prototype.renderTreeMapElements = function () {\n this.processingData();\n if (this.treeMapLegendModule && this.legendSettings.visible) {\n this.treeMapLegendModule.renderLegend();\n }\n this.layout.processLayoutPanel();\n this.element.appendChild(this.svgObject);\n this.elementChange();\n this.trigger(loaded, { treemap: this, isResized: this.isResize });\n this.isResize = false;\n this.renderComplete();\n };\n TreeMap.prototype.createSvg = function () {\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n 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 styles: 'position: absolute;z-index:1;'\n });\n this.element.appendChild(secondaryElement);\n }\n };\n TreeMap.prototype.elementChange = function () {\n if (this.treeMapLegendModule && this.legendSettings.visible && this.treeMapLegendModule.legendGroup && this.layout.layoutGroup\n && !isNullOrUndefined(this.svgObject) && !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 * @private\n * Render the treemap border\n *\n * @returns {void}\n */\n TreeMap.prototype.renderBorder = function () {\n var width = this.border.width;\n var borderElement = this.svgObject.querySelector('#' + this.element.id + '_TreeMap_Border');\n if ((this.border.width > 0 || (this.background || this.themeStyle.backgroundColor)) && isNullOrUndefined(borderElement)) {\n var borderRect = new RectOption(this.element.id + '_TreeMap_Border', this.background || this.themeStyle.backgroundColor, this.border, 1, new Rect(width / 2, width / 2, this.availableSize.width - width, this.availableSize.height - width));\n this.svgObject.appendChild(this.renderer.drawRectangle(borderRect));\n }\n else if (borderElement) {\n borderElement.setAttribute('fill', this.background || this.themeStyle.backgroundColor);\n }\n };\n TreeMap.prototype.renderTitle = function (title, type, bounds, groupEle) {\n var style = {\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.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 trimmedTitle = textTrim(width, title.text, style);\n var elementSize = measureText(trimmedTitle, style);\n var rect = (isNullOrUndefined(bounds)) ? new Rect(this.margin.left, this.margin.top, this.availableSize.width, this.availableSize.height) : bounds;\n var location_1 = findPosition(rect, title.alignment, elementSize, type);\n var options = new TextOption(this.element.id + '_TreeMap_' + type, location_1.x, location_1.y, 'start', trimmedTitle);\n var titleBounds = new Rect(location_1.x, location_1.y, elementSize.width, elementSize.height);\n var element = renderTextElement(options, style, style.color || (type === 'title' ? this.themeStyle.titleFontColor : this.themeStyle.subTitleFontColor), groupEle);\n element.setAttribute('aria-label', title.description || title.text);\n element.setAttribute('role', '');\n element.setAttribute('tabindex', (this.tabIndex + (type === 'title' ? 1 : 2)).toString());\n if ((type === 'title' && !title.subtitleSettings.text) || (type === 'subtitle')) {\n height = (this.availableSize.height - titleBounds.y - titlePadding - this.margin.bottom);\n this.areaRect = new Rect(this.margin.left, titleBounds.y + titlePadding, width, height);\n }\n if (type !== 'subtitle' && title.subtitleSettings.text) {\n this.renderTitle(title.subtitleSettings, 'subtitle', titleBounds, groupEle);\n }\n else {\n this.svgObject.appendChild(groupEle);\n }\n }\n else {\n height = (this.availableSize.height - this.margin.top - this.margin.bottom);\n this.areaRect = new Rect(this.margin.left, this.margin.top, width, height);\n }\n };\n TreeMap.prototype.processingData = function () {\n var _this = this;\n var path;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource = this.dataSource;\n if (!isNullOrUndefined(this.dataSource) && this.dataSource.length > 0 && this.weightValuePath) {\n LevelsData.levelsData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource.map(function (data) {\n data[_this.weightValuePath] = (data[_this.weightValuePath]) ? data[_this.weightValuePath].toString() :\n data[_this.weightValuePath];\n });\n this.leafItemSettings.labelPath = this.leafItemSettings.labelPath || this.weightValuePath;\n this.checkIsHierarchicalData();\n if (this.levels.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data_1 = {};\n data_1['level'] = 0;\n path = this.leafItemSettings.labelPath;\n data_1[path] = [];\n for (var i = 0; i < this.dataSource.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(this.dataSource[i])['values'];\n if (this.isHierarchicalData && child && child.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n child.forEach(function (currentData, dataIndex) {\n if (currentData[path]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data_1[path].push({\n groupIndex: 0, name: currentData[path], levelOrderName: currentData[path].toString(),\n data: currentData, weight: currentData[_this.weightValuePath]\n });\n }\n });\n }\n else {\n if (this.dataSource[i][path]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data_1[path].push({\n groupIndex: 0, name: this.dataSource[i][path], levelOrderName: this.dataSource[i][path].toString(), data: this.dataSource[i],\n weight: this.dataSource[i][this.weightValuePath]\n });\n }\n }\n }\n LevelsData.levelsData.push(data_1);\n }\n else {\n if (this.isHierarchicalData) {\n LevelsData.hierarchyData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LevelsData.hierarchyData = extend([], this.dataSource, LevelsData.hierarchyData, true);\n for (var i = 0; i < LevelsData.hierarchyData.length; i++) {\n this.processHierarchicalData(LevelsData.hierarchyData[i], i);\n }\n LevelsData.levelsData = LevelsData.hierarchyData;\n }\n else {\n this.processFlatJsonData();\n if (LevelsData.levelsData.length > 1) {\n this.reOrderLevelData(LevelsData.levelsData.length - 1);\n }\n }\n path = this.levels[0].groupPath;\n }\n if (!this.isHierarchicalData) {\n this.findTotalWeight(LevelsData.levelsData[0][path], 'Parent');\n }\n }\n };\n TreeMap.prototype.checkIsHierarchicalData = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child;\n this.dataSource = this.dataSource;\n for (var i = 0; i < this.dataSource.length; i++) {\n child = findChildren(this.dataSource[i])['values'];\n if (child && child.length) {\n this.isHierarchicalData = true;\n break;\n }\n else if (i === this.dataSource.length - 1) {\n this.isHierarchicalData = false;\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.processHierarchicalData = function (data, dataCount) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childData;\n var levelData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newData = {};\n var levelIndex;\n var path = this.leafItemSettings.labelPath ? this.leafItemSettings.labelPath : this.weightValuePath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = {};\n var level;\n var key;\n newData = findChildren(data);\n childData = newData ? newData['values'] : null;\n if (childData && childData.length > 0) {\n key = newData['key'];\n for (var i = 0; i < this.levels.length; i++) {\n if (key === this.levels[i].groupPath) {\n level = this.levels[i];\n levelIndex = i;\n }\n }\n for (var j = 0; j < childData.length; j++) {\n childData[j]['name'] = childData[j][path];\n childData[j]['levelOrderName'] = (levelIndex === 0 ? childData[j]['name'] :\n data['levelOrderName'] + '#' + childData[j]['name']) + '';\n var childItemLevel = childData[j]['levelOrderName'];\n var childLevel = void 0;\n if (childItemLevel.search('#') > 0) {\n childLevel = childItemLevel.split('#').length - 1;\n }\n childData[j]['groupIndex'] = isNullOrUndefined(levelIndex) ? childLevel === this.levels.length\n ? this.levels.length : childLevel : levelIndex;\n if (levelIndex !== 0) {\n childData[j]['parent'] = data;\n }\n childData[j]['groupName'] = key;\n childData[j]['data'] = childData[j];\n childData[j]['isDrilled'] = false;\n childData[j]['weight'] = childData[j][this.weightValuePath];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childData.forEach(function (currentData) {\n _this.processHierarchicalData(currentData, dataCount);\n });\n }\n if (dataCount === LevelsData.hierarchyData.length - 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var mainData_1 = LevelsData.hierarchyData[0][this.levels[0].groupPath];\n for (var k = 0; k < LevelsData.hierarchyData.length; k++) {\n childData = findChildren(LevelsData.hierarchyData[k])['values'];\n if (k !== 0 && childData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childData.forEach(function (currentData) { mainData_1.push(currentData); });\n LevelsData.hierarchyData.splice(k, 1);\n k -= 1;\n }\n }\n mainData_1 = LevelsData.hierarchyData[0][this.levels[0].groupPath];\n for (var l = 0; l < mainData_1.length; l++) {\n newData[this.levels[0].groupPath] = mainData_1;\n mainData_1[l]['parent'] = newData;\n }\n }\n };\n /* eslint-disable valid-jsdoc */\n /**\n * This method is used to perform the print functionality in treemap.\n *\n * @param id - Specifies the element to print the treemap.\n */\n TreeMap.prototype.print = function (id) {\n if (this.allowPrint && this.printModule) {\n this.printModule.print(this, id);\n }\n };\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param type - Specifies the index of the axis.\n * @param fileName - Specifies file name for exporting the rendered treemap.\n * @param orientation - Specifies the orientation of the pdf document.\n */\n TreeMap.prototype.export = function (type, fileName, orientation, allowDownload) {\n var _this = this;\n if (isNullOrUndefined(allowDownload)) {\n allowDownload = true;\n }\n if (type === 'PDF' && this.allowPdfExport && this.pdfExportModule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new Promise(function (resolve, reject) {\n resolve(_this.pdfExportModule.export(_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\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 childGroupPath;\n var orderNames = [];\n var process = false;\n for (var i = 0; i < this.levels.length + 1; i++) {\n groupPath = this.levels[i] ? this.levels[i].groupPath : this.leafItemSettings.labelPath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var level = {};\n level['level'] = i;\n level[groupPath] = [];\n LevelsData.levelsData.push(level);\n for (var j = 0; j < this.dataSource.length; j++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = {};\n var childName = '';\n if (!isNullOrUndefined(groupPath)) {\n var name_1 = this.dataSource[j][groupPath];\n if (i !== 0) {\n for (var k = 0; k <= i; k++) {\n var childGroupPath_1 = this.levels[k] ? this.levels[k].groupPath : groupPath;\n childName += (this.dataSource[j][childGroupPath_1]) + ((k === i) ? '' : '#');\n }\n }\n if (!(orderNames.length > 0 ? orderNames.indexOf(childName ?\n childName : name_1) !== -1 : false)) {\n currentData['name'] = name_1;\n currentData['levelOrderName'] = ((childName) ? childName : name_1) + '';\n currentData['groupIndex'] = i;\n currentData['isDrilled'] = false;\n currentData['groupName'] = groupPath;\n currentData['data'] = this.dataSource[j];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LevelsData.levelsData[LevelsData.levelsData.length - 1][groupPath].push(currentData);\n orderNames.push((childName) ? childName : name_1);\n }\n }\n }\n }\n };\n /**\n * This method orders the treemap level data.\n *\n * @param start - Specifies the start value of the treemap level.\n */\n TreeMap.prototype.reOrderLevelData = function (start) {\n var currentName;\n var currentPath = this.levels[start] ? this.levels[start].groupPath : this.leafItemSettings.labelPath;\n var prevPath = this.levels[start - 1].groupPath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = LevelsData.levelsData[start][currentPath];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var previousData = LevelsData.levelsData[start - 1][prevPath];\n for (var i = 0; i < currentData.length; i++) {\n currentName = currentData[i]['levelOrderName'];\n for (var j = 0; j < previousData.length; j++) {\n previousData[j][currentPath] = isNullOrUndefined(previousData[j][currentPath]) ? [] : previousData[j][currentPath];\n if (this.IsChildHierarchy(currentName.split('#'), previousData[j]['levelOrderName'].split('#'))) {\n if (isNullOrUndefined(currentData[i]['parent'])) {\n currentData[i]['parent'] = previousData[j];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n previousData[j][currentPath].push(currentData[i]);\n break;\n }\n }\n }\n this.findTotalWeight(LevelsData.levelsData[LevelsData.levelsData.length - 1][currentPath], 'Child');\n LevelsData.levelsData.splice(start, 1);\n if ((start - 1) > 0) {\n this.reOrderLevelData(start - 1);\n }\n };\n TreeMap.prototype.IsChildHierarchy = function (current, previous) {\n var isChild = false;\n for (var i = 0; i < previous.length; i++) {\n if (current.length < i || previous[i] !== current[i]) {\n return false;\n }\n else {\n isChild = true;\n }\n }\n return isChild;\n };\n /**\n * This method finds the weight value of the treemap level.\n *\n * @param processData - Specifies the treemap data.\n * @param type - Specifies the type of the data.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.findTotalWeight = function (processData, type) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var totalWeight;\n var childData = [];\n var levelName;\n var start = 0;\n var split;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var groupName;\n var groupObj = {};\n var _loop_1 = function (i) {\n totalWeight = 0;\n groupName = processData[i]['groupName'];\n split = processData[i]['levelOrderName'].split('#');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this_1.dataSource.forEach(function (data) {\n if (isContainsData(split, processData[i]['levelOrderName'], data, _this)) {\n totalWeight += parseFloat(data[_this.weightValuePath]);\n }\n });\n if (type === 'Parent') {\n groupObj[groupName] = processData;\n processData[i]['parent'] = groupObj;\n }\n processData[i]['weight'] = totalWeight;\n };\n var this_1 = this;\n for (var i = 0; i < processData.length; i++) {\n _loop_1(i);\n }\n };\n /**\n * To unbind event handlers for treemap.\n *\n * @returns {void}\n */\n TreeMap.prototype.unWireEVents = function () {\n EventHandler.remove(this.element, 'click', this.clickOnTreeMap);\n EventHandler.remove(this.element, 'dblclick', this.doubleClickOnTreeMap);\n EventHandler.remove(this.element, 'contextmenu', this.rightClickOnTreeMap);\n EventHandler.remove(this.element, Browser.touchStartEvent, this.mouseDownOnTreeMap);\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.mouseMoveOnTreeMap);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.mouseEndOnTreeMap);\n EventHandler.remove(this.element, 'pointerleave mouseleave', this.mouseLeaveOnTreeMap);\n window.removeEventListener('resize', this.resizeOnTreeMap);\n };\n /**\n * To bind event handlers for treemap.\n *\n * @returns {void}\n */\n TreeMap.prototype.wireEVents = function () {\n EventHandler.add(this.element, 'click', this.clickOnTreeMap, this);\n EventHandler.add(this.element, 'dblclick', this.doubleClickOnTreeMap, this);\n EventHandler.add(this.element, 'contextmenu', this.rightClickOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchStartEvent, this.mouseDownOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchMoveEvent, this.mouseMoveOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchEndEvent, this.mouseEndOnTreeMap, this);\n EventHandler.add(this.element, 'pointerleave mouseleave', this.mouseLeaveOnTreeMap, this);\n window.addEventListener('resize', this.resizeOnTreeMap.bind(this));\n };\n /**\n * Method to set culture for maps\n *\n * @returns {void}\n */\n TreeMap.prototype.setCulture = function () {\n this.intl = new Internationalization();\n };\n /**\n * To add tab index for treemap element\n *\n * @returns {void}\n */\n TreeMap.prototype.addTabIndex = function () {\n this.element.setAttribute('aria-label', this.description || 'TreeMap Element');\n this.element.setAttribute('role', '');\n this.element.setAttribute('tabindex', this.tabIndex.toString());\n };\n /**\n * This method handles the window resize event on treemap.\n *\n * @param e - Specifies the pointer event.\n */\n TreeMap.prototype.resizeOnTreeMap = function (e) {\n var _this = this;\n if (!this.isDestroyed) {\n this.isResize = true;\n var args_1 = {\n name: resize,\n cancel: false,\n previousSize: this.availableSize,\n currentSize: new Size(0, 0),\n treemap: this\n };\n if (this.resizeTo) {\n clearTimeout(this.resizeTo);\n }\n if (!isNullOrUndefined(this.element) && this.element.classList.contains('e-treemap')) {\n this.resizeTo = setTimeout(function () {\n _this.unWireEVents();\n _this.createSvg();\n _this.refreshing = true;\n _this.wireEVents();\n args_1.currentSize = _this.availableSize;\n _this.trigger(resize, args_1, function (observedArgs) {\n _this.render();\n });\n }, 500);\n }\n }\n };\n /**\n * This method handles the click event on the treemap.\n *\n * @param e - Specifies the mouse click event in the treemap.\n */\n TreeMap.prototype.clickOnTreeMap = function (e) {\n var _this = this;\n var targetEle = e.target;\n var targetId = targetEle.id;\n var eventArgs;\n var itemIndex;\n var labelText = targetEle.innerHTML;\n var clickArgs = { cancel: false, name: click, treemap: this, mouseEvent: e };\n this.trigger(click, clickArgs);\n if (targetId.indexOf('_Item_Index') > -1) {\n e.preventDefault();\n itemIndex = parseFloat(targetId.split('_Item_Index_')[1]);\n eventArgs = {\n cancel: false, name: itemClick, treemap: this, item: this.layout.renderItems[itemIndex], mouseEvent: e,\n groupIndex: this.layout.renderItems[itemIndex]['groupIndex'], groupName: this.layout.renderItems[itemIndex]['name'],\n text: labelText, contentItemTemplate: labelText\n };\n this.trigger(itemClick, eventArgs, function (observedArgs) {\n if (observedArgs.text !== labelText || observedArgs.contentItemTemplate !== labelText) {\n if (isNullOrUndefined(_this.leafItemSettings.labelTemplate)) {\n observedArgs.text = textFormatter(observedArgs.text, observedArgs['item']['data'], observedArgs.treemap);\n targetEle.innerHTML = observedArgs.text;\n }\n else {\n setItemTemplateContent(targetId, targetEle, observedArgs.contentItemTemplate);\n }\n }\n });\n }\n var end = new Date().getMilliseconds();\n var doubleTapTimer1;\n if (!isNullOrUndefined(this.doubleClick)) {\n if (!isNullOrUndefined(doubleTapTimer1) && end - doubleTapTimer1 < 500) {\n this.doubleClickOnTreeMap(e);\n }\n doubleTapTimer1 = end;\n }\n };\n /**\n * This method handles the double click event in the treemap.\n *\n * @param e - Specifies the pointer event of mouse click.\n */\n TreeMap.prototype.doubleClickOnTreeMap = function (e) {\n var doubleClickArgs = { cancel: false, name: doubleClick, treemap: this, mouseEvent: e };\n this.trigger(doubleClick, doubleClickArgs);\n //this.notify('dblclick', e);\n };\n /**\n * This method handles the right click event in the treemap.\n *\n * @param e - Specifies the pointer event of mouse click.\n */\n TreeMap.prototype.rightClickOnTreeMap = function (e) {\n var rightClickArgs = { cancel: false, name: rightClick, treemap: this, mouseEvent: e };\n this.trigger(rightClick, rightClickArgs);\n };\n /**\n * This method handles the mouse down event in the treemap.\n *\n * @param e - Specifies the pointer event of mouse click.\n */\n TreeMap.prototype.mouseDownOnTreeMap = function (e) {\n if (e.target.id.indexOf('_Item_Index') > -1) {\n this.mouseDown = true;\n }\n this.notify(Browser.touchStartEvent, e);\n };\n /**\n * This method handles the mouse move event in the treemap.\n *\n * @param e - Specifies the pointer event of mouse click.\n */\n TreeMap.prototype.mouseMoveOnTreeMap = function (e) {\n var targetEle = e.target;\n var targetId = targetEle.id;\n var eventArgs;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n var moveArgs = { cancel: false, name: mouseMove, treemap: this, mouseEvent: e };\n this.trigger(mouseMove, moveArgs);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childItems;\n if (targetId.indexOf('_Item_Index') > -1) {\n item = this.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childItems = findChildren(item)['values'];\n this.element.style.cursor = (!item['isLeafItem'] && childItems && childItems.length > 0 && this.enableDrillDown) ?\n 'pointer' : 'auto';\n eventArgs = { cancel: false, name: itemMove, treemap: this, item: item, mouseEvent: e };\n this.trigger(itemMove, eventArgs);\n }\n this.notify(Browser.touchMoveEvent, e);\n };\n /**\n * This method calculates the selected treemap levels.\n *\n * @param labelText - Specifies the label text.\n * @param item - Specifies the treemap item.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.calculateSelectedTextLevels = function (labelText, item) {\n //to find the levels by clicking the particular text both for drillDownView as true / false.\n var drillLevel;\n var k;\n var text;\n var levelLabels = item['levelOrderName'];\n var levelText = levelLabels.split('#');\n for (var _i = 0, _a = Object.keys(levelText); _i < _a.length; _i++) {\n k = _a[_i];\n if (levelText[k] === labelText) {\n drillLevel = parseInt(k, 10);\n text = labelText;\n }\n }\n return { drillLevel: drillLevel, currentLevelLabel: text, levelText: levelText };\n };\n /**\n * This method calculates the previous level of child items in treemap.\n *\n * @param labelText - Specifies the label text in treemap\n * @param drillLevelValues - Specifies the values of drill level.\n * @param item - Specifies the treemap item.\n * @param directLevel - Specifies the current level.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.calculatePreviousLevelChildItems = function (labelText, drillLevelValues, item, directLevel) {\n //By clicking any child items drilldown to the particular level.\n //At the time store all the previous drilled level items in drilledItems\n // This condition satisfies while drilldown View is set as false and the text contains '[+]'\n var text;\n var p = 0;\n var levelItems;\n var text1;\n var drillTextLevel = this.layout.renderItems[0]['levelOrderName'].split('#').length;\n for (var h = 0; h < drillTextLevel; h++) {\n text1 = h === 0 ? drillLevelValues['levelText'][h] : text1 + '#' + drillLevelValues['levelText'][h];\n }\n p = drillTextLevel > 1 ? drillTextLevel : p;\n for (var _i = 0, _a = Object['values'](this.layout.renderItems); _i < _a.length; _i++) {\n levelItems = _a[_i];\n var drillLevelText = levelItems['levelOrderName'].split('#');\n if (drillLevelText[0] === drillLevelValues['levelText'][0]) {\n text = p === 0 ? isNullOrUndefined(text1) ? text1 : drillLevelValues['levelText'][p] :\n directLevel ? text1 : text1 + '#' + drillLevelValues['levelText'][p];\n if (text === levelItems['levelOrderName']) {\n this.drilledItems.push({ name: levelItems['levelOrderName'], data: levelItems });\n p++;\n directLevel = true;\n if (p <= item['groupIndex']) {\n text = text + '#' + drillLevelValues['levelText'][p];\n text1 = text;\n }\n }\n }\n }\n return directLevel;\n };\n /**\n * This method compares the selected labels with the drill down items.\n *\n * @param drillLevelValues - Specifies the values of drill level.\n * @param item - Specifies the treemap item.\n * @param i - Specifies the treemap item.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.compareSelectedLabelWithDrillDownItems = function (drillLevelValues, item, i) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var drillLevelChild;\n var newDrillItem = {};\n var b = drillLevelValues['drillLevel'] + 1;\n if (b === this.drilledItems[i]['data']['groupIndex']) {\n drillLevelChild = this.drilledItems[i]['data']['parent'];\n drillLevelChild['isDrilled'] = true;\n newDrillItem[drillLevelChild[this.drilledItems[i]['data']['groupName']]]\n = [drillLevelChild];\n // to remove all the items after matched drilled items\n this.drilledItems.splice(i, this.drilledItems.length);\n }\n else if (drillLevelValues['drillLevel'] === (this.drilledItems.length - 1)\n || drillLevelValues['drillLevel'] === item['groupIndex']) {\n newDrillItem[item['groupName']] = [item];\n }\n return newDrillItem;\n };\n /**\n * This method handles mouse end event in treemap.\n *\n * @param e - Specifies the pointer event of mouse.\n */\n TreeMap.prototype.mouseEndOnTreeMap = function (e) {\n var _this = this;\n var targetEle = e.target;\n var targetId = targetEle.id;\n var totalRect;\n var startEvent;\n var endEvent;\n var directLevel = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var index;\n var newDrillItem = {};\n var item;\n var process = true;\n var layoutID = this.element.id + '_TreeMap_' + this.layoutType + '_Layout';\n var drillLevel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateID = this.element.id + '_Label_Template_Group';\n var drillLevelValues;\n if (targetId.indexOf('_Item_Index') > -1 && this.enableDrillDown && !this.drillMouseMove) {\n if (e.cancelable) {\n e.preventDefault();\n }\n index = parseFloat(targetId.split('_Item_Index_')[1]);\n item = this.layout.renderItems[index];\n var labelText = targetEle.innerHTML;\n if (this.enableBreadcrumb) {\n drillLevelValues = this.calculateSelectedTextLevels(labelText, item);\n drillLevel = drillLevelValues['drillLevel'];\n if (!this.drillDownView && labelText.search('[+]') !== -1) {\n directLevel = this.calculatePreviousLevelChildItems(labelText, drillLevelValues, item, directLevel);\n }\n }\n if (this.levels.length !== 0 && !item['isLeafItem'] && findChildren(item)['values'] &&\n findChildren(item)['values'].length > 0) {\n if (this.drilledItems.length > 0) {\n item = directLevel ? this.drilledItems[this.drilledItems.length - 1]['data'] : item;\n for (var i = 0; i < this.drilledItems.length; i++) {\n if (!isNullOrUndefined(drillLevel)) { //Compare the selected text level with drilled items\n var drillLength = this.drilledItems.length;\n newDrillItem = this.compareSelectedLabelWithDrillDownItems(drillLevelValues, item, i);\n if (drillLength !== this.drilledItems.length) {\n i -= 1;\n break;\n }\n } //when clicking the levels drill back to the previous level process takes place\n if (item['levelOrderName'] === this.drilledItems[i]['name'] && !directLevel && isNullOrUndefined(drillLevel)) {\n if (item['groupIndex'] === 0 && item['parent'][item['groupName']] instanceof Array) {\n item['isDrilled'] = !(item['isDrilled']);\n if (!item['isDrilled']) {\n newDrillItem = item['parent'];\n }\n else {\n newDrillItem[item['groupName']] = [item];\n }\n }\n else {\n item['isDrilled'] = false;\n item['parent']['isDrilled'] = true;\n item = item['parent'];\n newDrillItem[item['groupName']] = [item];\n }\n this.drilledItems.splice(i, 1);\n i -= 1;\n break;\n }\n else if (i === this.drilledItems.length - 1 && isNullOrUndefined(drillLevel)) {\n item['isDrilled'] = true; // click the items move to next level.\n newDrillItem[item['groupName']] = [item];\n }\n }\n }\n else {\n item['isDrilled'] = true;\n newDrillItem[item['groupName']] = [item];\n }\n startEvent = {\n cancel: false, name: drillStart, treemap: this,\n element: targetEle, groupIndex: this.enableBreadcrumb &&\n this.drilledItems.length !== 0 && !isNullOrUndefined(drillLevel) ?\n this.drilledItems[this.drilledItems.length - 1]['data']['groupIndex'] : item['groupIndex'],\n groupName: this.enableBreadcrumb && this.drilledItems.length !== 0 && !isNullOrUndefined(drillLevel) ?\n this.drilledItems[this.drilledItems.length - 1]['data']['name'] : item['name'],\n rightClick: e.which === 3 ? true : false, childItems: null, item: newDrillItem\n };\n this.trigger(drillStart, startEvent, function (observedArgs) {\n _this.currentLevel = item['isDrilled'] && isNullOrUndefined(drillLevel) ? item['groupIndex'] :\n (!isNullOrUndefined(drillLevel) && _this.enableBreadcrumb && item['isDrilled']) ? drillLevel : null;\n if (!observedArgs.cancel) {\n if (document.getElementById(layoutID)) {\n var layerElementId = document.getElementById(layoutID);\n layerElementId.parentNode.removeChild(layerElementId);\n }\n totalRect = extend({}, _this.areaRect, totalRect, true);\n if (_this.legendSettings.visible && !isNullOrUndefined(_this.treeMapLegendModule)) {\n if (!isNullOrUndefined(newDrillItem)) {\n _this.treeMapLegendModule.legendGroup.textContent = '';\n _this.treeMapLegendModule.legendGroup = null;\n _this.treeMapLegendModule.widthIncrement = 0;\n _this.treeMapLegendModule.heightIncrement = 0;\n if (_this.enableBreadcrumb && !isNullOrUndefined(drillLevel)) {\n _this.drilledLegendItems = {\n name: _this.drilledItems[_this.drilledItems.length - 1]['data']['levelOrderName'],\n data: _this.drilledItems[_this.drilledItems.length - 1]['data']\n };\n }\n else {\n _this.drilledLegendItems = { name: item['levelOrderName'], data: item };\n }\n _this.treeMapLegendModule.renderLegend();\n }\n totalRect = !isNullOrUndefined(_this.totalRect) ? _this.totalRect : totalRect;\n }\n if (document.getElementById(templateID)) {\n var drillElementId = document.getElementById(templateID);\n drillElementId.parentNode.removeChild(drillElementId);\n }\n if (!isNullOrUndefined(observedArgs.childItems) && !observedArgs.cancel) {\n _this.layout.onDemandProcess(observedArgs.childItems);\n }\n else {\n _this.layout.calculateLayoutItems(newDrillItem, totalRect);\n _this.layout.renderLayoutItems(newDrillItem);\n }\n }\n });\n endEvent = { cancel: false, name: drillEnd, treemap: this, renderItems: this.layout.renderItems };\n this.trigger(drillEnd, endEvent);\n if (process) {\n if (!directLevel && isNullOrUndefined(drillLevel)) {\n this.drilledItems.push({ name: item['levelOrderName'], data: item });\n }\n }\n }\n }\n this.mouseDown = false;\n this.notify(Browser.touchEndEvent, e);\n };\n /**\n * This method handles mouse leave event in treemap.\n *\n * @param e - Specifies the pointer event of mouse.\n */\n TreeMap.prototype.mouseLeaveOnTreeMap = function (e) {\n if (this.treeMapTooltipModule) {\n this.treeMapTooltipModule.removeTooltip();\n }\n if (this.treeMapLegendModule) {\n this.treeMapLegendModule.removeInteractivePointer();\n }\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', this);\n if (this.treeMapHighlightModule) {\n removeShape(this.treeMapHighlightModule.shapeHighlightCollection, 'highlight');\n this.treeMapHighlightModule.highLightId = '';\n }\n };\n /**\n * This method is used to select or remove the selection of treemap item based on the provided selection settings.\n */\n TreeMap.prototype.selectItem = function (levelOrder, isSelected) {\n if (isNullOrUndefined(isSelected)) {\n isSelected = true;\n }\n var levelOrderName = '';\n for (var i = 0; i < levelOrder.length; i++) {\n if (i !== levelOrder.length - 1) {\n levelOrderName += levelOrder[i] + '#';\n }\n else {\n levelOrderName += levelOrder[i];\n }\n }\n if (this.treeMapSelectionModule && this.selectionSettings.enable) {\n this.treeMapSelectionModule.selectTreemapItem(levelOrderName, isSelected);\n }\n };\n /**\n * To provide the array of modules needed for maps rendering\n *\n * @returns {ModuleDeclaration[]} Returns the modules\n * @private\n */\n TreeMap.prototype.requiredModules = function () {\n var modules = [];\n if (this.tooltipSettings.visible) {\n modules.push({\n member: 'treeMapTooltip',\n args: [this]\n });\n }\n if (this.highlightSettings.enable) {\n modules.push({\n member: 'treeMapHighlight',\n args: [this]\n });\n }\n if (this.selectionSettings.enable) {\n modules.push({\n member: 'treeMapSelection',\n args: [this]\n });\n }\n if (this.legendSettings.visible) {\n modules.push({\n member: 'treeMapLegend',\n args: [this]\n });\n }\n if (this.allowPrint) {\n modules.push({\n member: 'Print',\n args: [this, Print]\n });\n }\n if (this.allowImageExport) {\n modules.push({\n member: 'ImageExport',\n args: [this, ImageExport]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this, PdfExport]\n });\n }\n return modules;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TreeMapModel} newProp - Specifies the new property\n * @param {TreeMapModel} oldProp - Specifies the old property\n * @returns {void}\n * @private\n */\n TreeMap.prototype.onPropertyChanged = function (newProp, oldProp) {\n 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 TreeMap.prototype.getModuleName = function () {\n return 'treemap';\n };\n /**\n * This method is used to dispose the treemap component.\n */\n TreeMap.prototype.destroy = function () {\n this.unWireEVents();\n removeElement('treeMapMeasureText');\n this.drilledItems = [];\n this.levelSelection = [];\n this.legendId = [];\n this.removeSvg();\n _super.prototype.destroy.call(this);\n };\n TreeMap.prototype.removeSvg = function () {\n removeElement(this.element.id + '_Secondary_Element');\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Returns the string value.\n * @private\n */\n TreeMap.prototype.getPersistData = function () {\n return '';\n };\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowPrint\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowImageExport\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"height\", void 0);\n __decorate([\n Complex({}, Border)\n ], TreeMap.prototype, \"border\", void 0);\n __decorate([\n Complex({}, Margin)\n ], TreeMap.prototype, \"margin\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"background\", void 0);\n __decorate([\n Property('Material')\n ], TreeMap.prototype, \"theme\", void 0);\n __decorate([\n Complex({}, TitleSettings)\n ], TreeMap.prototype, \"titleSettings\", void 0);\n __decorate([\n Property('Squarified')\n ], TreeMap.prototype, \"layoutType\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"weightValuePath\", void 0);\n __decorate([\n Property('')\n ], TreeMap.prototype, \"rangeColorValuePath\", void 0);\n __decorate([\n Property('')\n ], TreeMap.prototype, \"equalColorValuePath\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"colorValuePath\", void 0);\n __decorate([\n Property([])\n ], TreeMap.prototype, \"palette\", void 0);\n __decorate([\n Property('TopLeftBottomRight')\n ], TreeMap.prototype, \"renderDirection\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"enableDrillDown\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"enableBreadcrumb\", void 0);\n __decorate([\n Property(' - ')\n ], TreeMap.prototype, \"breadcrumbConnector\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"drillDownView\", void 0);\n __decorate([\n Complex({}, InitialDrillSettings)\n ], TreeMap.prototype, \"initialDrillDown\", void 0);\n __decorate([\n Complex({}, LeafItemSettings)\n ], TreeMap.prototype, \"leafItemSettings\", void 0);\n __decorate([\n Collection([], LevelSettings)\n ], TreeMap.prototype, \"levels\", void 0);\n __decorate([\n Complex({}, HighlightSettings)\n ], TreeMap.prototype, \"highlightSettings\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], TreeMap.prototype, \"selectionSettings\", void 0);\n __decorate([\n Complex({}, TooltipSettings)\n ], TreeMap.prototype, \"tooltipSettings\", void 0);\n __decorate([\n Complex({}, LegendSettings)\n ], TreeMap.prototype, \"legendSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"useGroupingSeparator\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"description\", void 0);\n __decorate([\n Property(1)\n ], TreeMap.prototype, \"tabIndex\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"format\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"drillStart\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"drillEnd\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemSelected\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemHighlight\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"tooltipRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemMove\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"doubleClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"rightClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"mouseMove\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"resize\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"legendItemRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"legendRendering\", void 0);\n TreeMap = __decorate([\n NotifyPropertyChanges\n ], TreeMap);\n return TreeMap;\n}(Component));\nexport { TreeMap };\n/**\n * @private\n */\nvar LevelsData = /** @class */ (function () {\n function LevelsData() {\n }\n return LevelsData;\n}());\nexport { LevelsData };\n","/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable @typescript-eslint/dot-notation */\n/* eslint-disable max-len */\nimport { LevelsData } from '../treemap';\nimport { findChildren, Location, Rect, Size, measureText, TextOption, PathOption, RectOption, drawSymbol, orderByArea, legendMaintain } from '../utils/helper';\nimport { Browser, isNullOrUndefined, EventHandler, extend } from '@syncfusion/ej2-base';\nimport { renderTextElement, textTrim } from '../utils/helper';\nimport { legendItemRendering, legendRendering } from '../model/constants';\n/**\n * Legend module class\n */\nvar TreeMapLegend = /** @class */ (function () {\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function TreeMapLegend(treemap) {\n this.page = 0;\n this.legendBorderRect = new Rect(0, 0, 0, 0);\n this.currentPage = 0;\n this.heightIncrement = 0;\n this.widthIncrement = 0;\n this.textMaxWidth = 0;\n this.legendInteractiveGradient = [];\n this.legendItemRect = new Rect(0, 0, 0, 0);\n this.treemap = treemap;\n this.addEventListener();\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * method for legend\n */\n TreeMapLegend.prototype.renderLegend = function () {\n var _this = this;\n this.legendRenderingCollections = [];\n this.legendCollections = [];\n this.legendNames = [];\n this.totalPages = [];\n this.gradientCount = 1;\n this.widthIncrement = 0;\n this.heightIncrement = 0;\n this.defsElement = this.treemap.renderer.createDefs();\n this.treemap.svgObject.appendChild(this.defsElement);\n var eventArgs;\n eventArgs = {\n cancel: false, name: legendRendering, treemap: this.treemap, _changePosition: this.treemap.legendSettings.position,\n position: this.treemap.legendSettings.position\n };\n this.treemap.trigger(legendRendering, eventArgs, function (observedArgs) {\n // eslint-disable-next-line no-underscore-dangle\n if (!observedArgs.cancel && observedArgs._changePosition !== _this.treemap.legendSettings.position) {\n // eslint-disable-next-line no-underscore-dangle\n _this.treemap.legendSettings.position = observedArgs._changePosition;\n }\n _this.calculateLegendBounds();\n if (_this.legendCollections.length > 0) {\n _this.drawLegend();\n }\n });\n };\n TreeMapLegend.prototype.calculateLegendBounds = function () {\n var _this = this;\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n this.findColorMappingLegendItems(LevelsData.levelsData[0]);\n if ((this.treemap.palette.length > 0 || !isNullOrUndefined(this.treemap.colorValuePath))\n && this.legendCollections.length === 0) {\n this.findPaletteLegendItems(LevelsData.levelsData[0], 'Parent');\n }\n if (this.legendCollections.length > 0) {\n var defaultSize = 25;\n var textPadding = 10;\n var position = legend.position;\n var legendTitle = legend.title.text;\n var titleTextStyle = legend.titleStyle;\n var legendMode = legend.mode;\n var shapeX = 0;\n var shapeY = 0;\n var textX = 0;\n var textY = 0;\n var shapeHeight = legend.shapeHeight;\n var shapeWidth = legend.shapeWidth;\n var shapeLocation = [];\n var textLocation = [];\n var orientation_1 = (legend.orientation === 'None') ? ((position === 'Top' || position === 'Bottom'\n || (position === 'Auto' && treemap.availableSize.width <= treemap.availableSize.height))\n ? 'Horizontal' : 'Vertical') : legend.orientation;\n var leftPadding = 10;\n var topPadding = 10;\n var spacing = 10;\n var legendWidth = (legend.width.length > 1) ? (legend.width.indexOf('%') > -1) ? (treemap.availableSize.width / 100)\n * parseFloat(legend.width) : parseFloat(legend.width) : null;\n var legendHeight = (legend.height.length > 1) ? (legend.height.indexOf('%') > -1) ?\n (treemap.availableSize.height / 100) * parseFloat(legend.height) : parseFloat(legend.height) : null;\n titleTextStyle.fontFamily = treemap.themeStyle.fontFamily || titleTextStyle.fontFamily;\n titleTextStyle.size = treemap.themeStyle.legendFontSize || titleTextStyle.size;\n var legendTitleSize = measureText(legendTitle, titleTextStyle);\n var startX_1 = 0;\n var startY_1 = 0;\n var shapePadding = legend.shapePadding;\n var rectWidth = void 0;\n var rectHeight = void 0;\n var itemTextStyle = legend.textStyle;\n var legendLength = this.legendCollections.length;\n itemTextStyle.size = itemTextStyle.size || treemap.themeStyle.legendFontSize;\n itemTextStyle.fontFamily = itemTextStyle.fontFamily || treemap.themeStyle.fontFamily;\n if (legendMode === 'Default') {\n legendWidth = (isNullOrUndefined(legendWidth)) ? treemap.areaRect.width : legendWidth;\n legendHeight = (isNullOrUndefined(legendHeight)) ? treemap.areaRect.height : legendHeight;\n var j = 0;\n for (var i = 0; i < this.legendCollections.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var legendItem = this.legendCollections[i];\n if (isNullOrUndefined(this.totalPages[this.page])) {\n this.totalPages[this.page] = { Page: (this.page + 1), Collection: [] };\n }\n var legendTextSize = measureText(legendItem['legendName'], 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_1 = this.legendCollections.length;\n var rectWidth_1 = (orientation_1 === 'Horizontal') ? (isNullOrUndefined(legendWidth)) ? (treemap.areaRect.width / legendLength_1) :\n (legendWidth / legendLength_1) : (isNullOrUndefined(legendWidth)) ? defaultSize : legendWidth;\n var rectHeight_1 = (orientation_1 === 'Horizontal') ? (isNullOrUndefined(legendHeight)) ? defaultSize : legendHeight :\n (isNullOrUndefined(legendHeight)) ? (treemap.areaRect.height / legendLength_1) : (legendHeight / legendLength_1);\n startX_1 = 0;\n startY_1 = legendTitleSize.height + spacing;\n var textPadding_1 = 10;\n var placement = legend.labelPosition;\n var itemStartX = 0;\n var itemStartY = 0;\n var labelAction = legend.labelDisplayMode;\n var maxTextHeight = 0;\n var maxTextWidth = 0;\n for (var i = 0; i < this.legendCollections.length; i++) {\n startX_1 = (orientation_1 === 'Horizontal') ? (startX_1 + rectWidth_1) : startX_1;\n startY_1 = (orientation_1 === 'Horizontal') ? startY_1 : (startY_1 + rectHeight_1);\n var legendText = this.legendCollections[i]['legendName'];\n var itemTextSize = new Size(0, 0);\n if (labelAction === 'None') {\n itemTextSize = measureText(legendText, itemTextStyle);\n }\n else if (labelAction === 'Trim') {\n legendText = textTrim((orientation_1 === 'Horizontal' ? rectWidth_1 : rectHeight_1), 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_1 / 2);\n textY = (placement === 'After') ? (startY_1 + rectHeight_1 + (itemTextSize.height / 2)) + textPadding_1 :\n (startY_1 - textPadding_1);\n }\n else {\n textX = (placement === 'After') ? startX_1 - (itemTextSize.width / 2) - textPadding_1\n : (startX_1 + rectWidth_1 + itemTextSize.width / 2) + textPadding_1;\n textY = startY_1 + (rectHeight_1 / 2) + (itemTextSize.height / 4);\n }\n }\n if (i === 0) {\n itemStartX = (orientation_1 === 'Horizontal') ? startX_1 : (placement === 'After') ?\n textX - (itemTextSize.width / 2) : startX_1;\n itemStartY = (orientation_1 === 'Horizontal') ? (placement === 'After') ? startY_1 :\n textY - (itemTextSize.height / 2) : startY_1;\n }\n if (i === legendLength_1 - 1) {\n legendWidth = (orientation_1 === 'Horizontal') ? Math.abs((startX_1 + rectWidth_1) - itemStartX) :\n (rectWidth_1 + maxTextWidth + textPadding_1);\n legendHeight = (orientation_1 === 'Horizontal') ? (rectHeight_1 + (maxTextHeight / 2) + textPadding_1) :\n Math.abs((startY_1 + rectHeight_1) - itemStartY);\n }\n this.legendRenderingCollections.push({\n fill: this.legendCollections[i]['legendFill'], x: startX_1, y: startY_1,\n width: rectWidth_1, height: rectHeight_1, element: this.legendCollections[i]['gradientElement'],\n text: legendText, textX: textX, textY: textY,\n textWidth: itemTextSize.width, textHeight: itemTextSize.height,\n data: this.legendCollections[i]['legendData']\n });\n }\n this.legendItemRect = { x: itemStartX, y: itemStartY, width: legendWidth, height: legendHeight };\n }\n }\n };\n TreeMapLegend.prototype.getPageChanged = function () {\n this.page++;\n if (isNullOrUndefined(this.totalPages[this.page])) {\n this.totalPages[this.page] = { Page: (this.page + 1), Collection: [] };\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.findColorMappingLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n if (child && child.length > 0) {\n this.calculateLegendItems(child);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < child.length; i++) {\n this.findColorMappingLegendItems(child[i]);\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.findPaletteLegendItems = function (data, type) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child;\n var legendFillColor;\n if (!isNullOrUndefined(this.treemap.drilledItems)) {\n if (this.treemap.drilledItems.length === 0 && !isNullOrUndefined(this.treemap.initialDrillDown.groupName)\n && isNullOrUndefined(this.treemap.drilledLegendItems)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var items = findChildren(data)['values'];\n for (var k = 0; k < items.length; k++) {\n if (items[k]['Name'] === this.treemap.initialDrillDown.groupName) {\n items[k]['isDrilled'] = !items[k]['isDrilled'];\n data = items[k];\n this.treemap.currentLevel = this.treemap.initialDrillDown.groupIndex;\n legendFillColor = this.treemap.palette.length > 0 ? this.treemap.palette[k % this.treemap.palette.length] :\n items[k]['data'][this.treemap.colorValuePath];\n break;\n }\n }\n }\n }\n if (this.treemap.enableDrillDown && !isNullOrUndefined(this.treemap.drilledLegendItems)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childElement = this.treemap.drilledLegendItems;\n legendFillColor = childElement['data']['options']['fill'];\n if (childElement['data']['isDrilled']) {\n child = findChildren(childElement['data'])['values'];\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentElement = childElement['data']['parent'];\n child = findChildren(parentElement)['values'];\n }\n }\n else {\n child = findChildren(data)['values'];\n }\n var isDuplicate;\n var legendName;\n if (child && child.length > 0) {\n for (var i = 0; i < child.length; i++) {\n if (isNullOrUndefined(child[i]['data'][this.treemap.legendSettings.showLegendPath]) ||\n child[i]['data'][this.treemap.legendSettings.showLegendPath]) {\n legendName = child[i]['data'][this.treemap.legendSettings.valuePath] ?\n child[i]['data'][this.treemap.legendSettings.valuePath] : child[i]['name'];\n isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, legendName) : false;\n if (!isDuplicate) {\n this.legendCollections.push({\n legendName: legendName,\n legendFill: this.treemap.palette.length > 0 ? !isNullOrUndefined(this.treemap.currentLevel)\n ? legendFillColor : this.treemap.palette[i % this.treemap.palette.length] :\n child[i]['data'][this.treemap.colorValuePath],\n legendData: [],\n itemArea: child[i]['weight']\n });\n }\n }\n }\n this.legendCollections.sort(orderByArea);\n if (this.treemap.palette.length > 0) {\n for (var j = 0; j < this.legendCollections.length; j++) {\n this.legendCollections[j]['legendFill'] = !isNullOrUndefined(this.treemap.currentLevel)\n ? legendFillColor : this.treemap.palette[j % this.treemap.palette.length];\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.calculateLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isAddData;\n var fill;\n var rangeValue;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData;\n var legendText;\n var itemValue;\n var isLeafItem;\n var colorMapProcess = false;\n var colorMapping;\n var groupIndex;\n var leaf = this.treemap.leafItemSettings;\n var levels = this.treemap.levels;\n var equalValue;\n var position = this.treemap.legendSettings.position;\n var gradientElement;\n var x2;\n var y2;\n var actualValue;\n var isDuplicate;\n var isEqualColor;\n var isRange;\n var isDesaturation = false;\n var legendIndex = 0;\n var outfill;\n var labelLegend;\n var otherIndex;\n this.outOfRangeLegend = null;\n for (var i = 0; i < data.length; i++) {\n fill = '';\n isEqualColor = false;\n isRange = false;\n isDesaturation = false;\n currentData = data[i]['data'];\n groupIndex = data[i]['groupIndex'];\n isLeafItem = (this.treemap.levels.length === 0 || groupIndex === this.treemap.levels.length);\n colorMapping = isLeafItem ? leaf.colorMapping : levels[groupIndex].colorMapping;\n for (var _i = 0, colorMapping_1 = colorMapping; _i < colorMapping_1.length; _i++) {\n var colorMap = colorMapping_1[_i];\n gradientElement = null;\n rangeValue = Number(currentData[this.treemap.rangeColorValuePath]);\n equalValue = currentData[this.treemap.equalColorValuePath];\n colorMap.value = !isNullOrUndefined(colorMap.value) ? colorMap.value.toString() : colorMap.value;\n if (!isNullOrUndefined(colorMap.from) && !isNullOrUndefined(colorMap.to) &&\n rangeValue >= colorMap.from && rangeValue <= colorMap.to && colorMap.showLegend) {\n colorMapProcess = true;\n isRange = true;\n actualValue = colorMap.from + ' - ' + colorMap.to;\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : colorMap.from + ' - ' + colorMap.to;\n fill = isNullOrUndefined(colorMap.color) ? fill : colorMap.color;\n isAddData = this.isAddNewLegendData(actualValue);\n }\n else if (!isNullOrUndefined(colorMap.value) && equalValue === colorMap.value && colorMap.showLegend) {\n colorMapProcess = true;\n isEqualColor = true;\n actualValue = colorMap.value.toString();\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : colorMap.value.toString();\n fill = isNullOrUndefined(colorMap.color) ? fill :\n Object.prototype.toString.call(colorMap.color) === '[object Array]' ? colorMap.color[0] : colorMap.color;\n isAddData = this.isAddNewLegendData(actualValue);\n }\n if (colorMapProcess && isNullOrUndefined(colorMap.value) && colorMap.maxOpacity && colorMap.minOpacity\n && this.treemap.legendSettings.mode === 'Interactive') {\n var colors = [];\n isDesaturation = true;\n if (Object.prototype.toString.call(colorMap.color) === '[object Array]') {\n for (var q = 0; q < colorMap.color.length; q++) {\n var offsetColor = 100 / (colorMap.color.length - 1);\n var offsetValue = q * offsetColor + '%';\n var stop1Color = { colorStop: offsetValue.toString(), color: colorMap.color[q] };\n colors.push(stop1Color);\n }\n }\n else {\n var stop1Color = { colorStop: '0%', color: fill };\n var stop2Color = { colorStop: '100%', color: fill };\n colors.push(stop1Color);\n colors.push(stop2Color);\n }\n x2 = position === 'Top' || position === 'Bottom' ? '100%' : '0%';\n y2 = position === 'Top' || position === 'Bottom' ? '0%' : '100%';\n var gradient = {\n id: 'groupIndex_' + groupIndex + '_colorIndex_' + this.gradientCount, x1: '0%', y1: '0%', x2: x2, y2: y2\n };\n gradientElement = this.treemap.renderer.drawGradient('linearGradient', gradient, colors).childNodes[0];\n if (Object.prototype.toString.call(colorMap.color) !== '[object Array]') {\n gradientElement.childNodes[0].setAttribute('stop-opacity', colorMap.minOpacity.toString());\n gradientElement.childNodes[1].setAttribute('stop-opacity', colorMap.maxOpacity.toString());\n }\n this.defsElement.appendChild(gradientElement);\n this.gradientCount++;\n }\n isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, legendText) : false;\n if (isAddData && isAddData['process'] && colorMapProcess && !isDuplicate) {\n colorMapProcess = false;\n fill = ((Object.prototype.toString.call(colorMap.color) === '[object Array]')) && isNullOrUndefined(gradientElement)\n && isNullOrUndefined(colorMap.value) ? this.legendGradientColor(colorMap, legendIndex) : fill;\n this.legendCollections.push({\n actualValue: actualValue,\n legendName: legendText, legendFill: fill, legendData: [],\n gradientElement: !isNullOrUndefined(gradientElement) ? gradientElement : isNullOrUndefined(colorMap.value)\n ? this.legendLinearGradient : null, name: data[i]['name'],\n opacity: this.treemap.legendSettings.opacity, borderColor: this.treemap.legendSettings.border.color,\n borderWidth: this.treemap.legendSettings.border.width\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[this.legendCollections.length - 1]['legendData'].push(data[i]);\n legendIndex++;\n }\n else if (colorMapProcess && !isDuplicate) {\n colorMapProcess = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[isAddData['value']]['legendData'].push(data[i]);\n }\n if (!isRange && !isDesaturation && !isEqualColor) {\n if (isNullOrUndefined(colorMap.from) && isNullOrUndefined(colorMap.to)\n && isNullOrUndefined(colorMap.minOpacity) &&\n isNullOrUndefined(colorMap.maxOpacity) && isNullOrUndefined(colorMap.value) &&\n !isNullOrUndefined(colorMap.color)) {\n outfill = ((Object.prototype.toString.call(colorMap.color) === '[object Array]'))\n ? colorMap.color[0] : colorMap.color;\n labelLegend = !isNullOrUndefined(colorMap.label) ? colorMap.label : 'Others';\n if (isNullOrUndefined(this.outOfRangeLegend)) {\n this.legendCollections.push({\n actualValue: labelLegend, legendData: [],\n legendName: labelLegend, legendFill: outfill\n });\n otherIndex = this.legendCollections.length;\n this.outOfRangeLegend = this.legendCollections[otherIndex - 1];\n legendIndex++;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[otherIndex - 1]['legendData'].push(data[i]);\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.removeDuplicates = function (legendCollection, text) {\n var isDuplicate = false;\n for (var i = 0; i < legendCollection.length; i++) {\n if (legendCollection[i]['legendName'] === text) {\n isDuplicate = true;\n break;\n }\n else {\n continue;\n }\n }\n return isDuplicate;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.isAddNewLegendData = function (legendText) {\n var newDataProcess;\n var itemValue;\n if (this.legendCollections.length === 0) {\n newDataProcess = true;\n }\n else {\n for (var j = 0; j < this.legendCollections.length; j++) {\n if (legendText === this.legendCollections[j]['actualValue']) {\n newDataProcess = false;\n itemValue = j;\n break;\n }\n else if (j === this.legendCollections.length - 1) {\n newDataProcess = true;\n }\n }\n }\n return { process: newDataProcess, value: itemValue };\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To draw the legend\n */\n TreeMapLegend.prototype.drawLegend = function () {\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n var render = treemap.renderer;\n var fill;\n var textOptions;\n var gradientElement;\n var textFont = legend.textStyle;\n this.legendGroup = render.createGroup({ id: treemap.element.id + '_Legend_Group' });\n this.renderLegendBorder();\n this.renderLegendTitle();\n if (legend.mode === 'Default') {\n this.drawLegendItem(this.currentPage);\n }\n else {\n for (var i = 0; i < this.legendRenderingCollections.length; i++) {\n var itemId = treemap.element.id + '_Legend_Index_' + i;\n var textId = treemap.element.id + '_Legend_Index_' + i + '_Text';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = this.legendRenderingCollections[i];\n gradientElement = item['element'];\n fill = gradientElement ? 'url(#' + gradientElement.id + ')' : item['fill'];\n var bounds = new Rect(item['x'], item['y'], item['width'], item['height']);\n var textLocation = new Location(item['textX'], item['textY']);\n var rectOptions = new RectOption(itemId, fill, legend.shapeBorder, legend.opacity, bounds);\n if (this.treemap.enableRtl) {\n if (treemap.legendSettings.position === 'Left' || treemap.legendSettings.position === 'Right'\n || (treemap.legendSettings.position === 'Auto'\n && this.treemap.availableSize.width >= this.treemap.availableSize.height)) {\n rectOptions.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - (this.translate.y + rectOptions.height) - Math.abs(this.legendBorderRect.y - rectOptions.y);\n textLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - (this.translate.y) + (item['textHeight'] / 2)\n - Math.abs(this.legendBorderRect.y - textLocation.y);\n }\n else {\n rectOptions.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + rectOptions.width)\n - Math.abs(this.legendBorderRect.x - rectOptions.x);\n textLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - this.translate.x - Math.abs(this.legendBorderRect.x - textLocation.x);\n }\n }\n textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'middle', item['text'], '', '');\n renderTextElement(textOptions, textFont, textFont.color || this.treemap.themeStyle.legendTextColor, this.legendGroup);\n this.legendGroup.appendChild(render.drawRectangle(rectOptions));\n }\n }\n legendMaintain(this.treemap, this.legendGroup);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.defaultLegendRtlLocation = function (collection, spacing, treemap, legend) {\n var shapeLocation = collection['Shape'];\n var textLocation = collection['Text'];\n var legendText = collection['DisplayText'];\n var textSize = measureText(legendText, legend.textStyle);\n shapeLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + spacing) - Math.abs(this.legendBorderRect.x - shapeLocation.x);\n textLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + textSize.width + spacing) - Math.abs(this.legendBorderRect.x - textLocation.x);\n if (treemap.legendSettings.position === 'Left' || treemap.legendSettings.position === 'Right'\n || (treemap.legendSettings.position === 'Auto'\n && this.treemap.availableSize.width >= this.treemap.availableSize.height)) {\n shapeLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - this.translate.y - Math.abs(Math.abs(this.legendBorderRect.y) - shapeLocation.y) - (legend.shapeHeight / 2);\n textLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - this.translate.y - Math.abs(Math.abs(this.legendBorderRect.y) - textLocation.y);\n }\n return { shapeLocation: shapeLocation, textLocation: textLocation };\n };\n TreeMapLegend.prototype.drawLegendItem = function (page) {\n var _this = this;\n var treemap = this.treemap;\n var spacing = 10;\n var legend = treemap.legendSettings;\n var shapeSize = new Size(legend.shapeWidth, legend.shapeHeight);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var textOptions;\n var legendRtlLocation;\n var renderOptions;\n var render = treemap.renderer;\n var shapeBorder = legend.shapeBorder;\n var eventArgs;\n if (page >= 0 && page < this.totalPages.length) {\n if (document.getElementById(this.legendGroup.id)) {\n document.getElementById(this.legendGroup.id).remove();\n }\n var isLineShape_1 = (legend.shape === 'HorizontalLine' || legend.shape === 'VerticalLine' || legend.shape === 'Cross');\n var strokeColor_1 = isLineShape_1 ? isNullOrUndefined(legend.fill) ? '#000000' : legend.fill : shapeBorder.color;\n var strokeWidth_1 = isLineShape_1 ? (shapeBorder.width === 0) ? 1 : shapeBorder.width : shapeBorder.width;\n var _loop_1 = function (i) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this_1.totalPages[page]['Collection'][i];\n var legendElement = render.createGroup({ id: treemap.element.id + '_Legend_Index_' + i });\n var legendText = collection['DisplayText'];\n var shapeId = treemap.element.id + '_Legend_Shape_Index_' + i;\n var textId = treemap.element.id + '_Legend_Text_Index_' + i;\n var shapeLocation = collection['Shape'];\n var textLocation = collection['Text'];\n if (treemap.enableRtl) {\n legendRtlLocation = this_1.defaultLegendRtlLocation(collection, spacing, treemap, legend);\n shapeLocation = legendRtlLocation['shapeLocation'];\n textLocation = legendRtlLocation['textLocation'];\n }\n eventArgs = {\n cancel: false, name: legendItemRendering, treemap: treemap, fill: collection['Fill'],\n shape: legend.shape, imageUrl: legend.imageUrl\n };\n this_1.treemap.trigger(legendItemRendering, eventArgs, function (observedArgs) {\n var renderOptions = new PathOption(shapeId, observedArgs.fill, strokeWidth_1, isLineShape_1 ? collection['Fill'] : strokeColor_1, legend.opacity, '');\n legendElement.appendChild(drawSymbol(shapeLocation, observedArgs.shape, shapeSize, observedArgs.imageUrl, renderOptions, legendText));\n textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'start', legendText, '', '');\n renderTextElement(textOptions, legend.textStyle, legend.textStyle.color || _this.treemap.themeStyle.legendTextColor, legendElement);\n _this.legendGroup.appendChild(legendElement);\n });\n };\n var this_1 = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (var i = 0; i < this.totalPages[page]['Collection'].length; i++) {\n _loop_1(i);\n }\n var pagingGroup = void 0;\n var width = spacing;\n var height = (spacing / 2);\n if (this.page !== 0) {\n var pagingText = (page + 1) + '/' + this.totalPages.length;\n var pagingFont = legend.textStyle;\n var pagingTextSize = measureText(pagingText, pagingFont);\n var leftPageX = (this.legendItemRect.x + this.legendItemRect.width) - pagingTextSize.width -\n (width * 2) - spacing;\n var rightPageX = (this.legendItemRect.x + this.legendItemRect.width);\n var locY = (this.legendItemRect.y + this.legendItemRect.height) + (height / 2) + spacing;\n var pageTextX = rightPageX - width - (pagingTextSize.width / 2) - (spacing / 2);\n pagingGroup = render.createGroup({ id: treemap.element.id + '_Legend_Paging_Group' });\n var leftPageElement = render.createGroup({ id: treemap.element.id + '_Legend_Left_Paging_Group' });\n var rightPageElement = render.createGroup({ id: treemap.element.id + '_Legend_Right_Paging_Group' });\n var rightPath = ' M ' + rightPageX + ' ' + locY + ' L ' + (rightPageX - width) + ' ' + (locY - height) +\n ' L ' + (rightPageX - width) + ' ' + (locY + height) + ' z ';\n var leftPath = ' M ' + leftPageX + ' ' + locY + ' L ' + (leftPageX + width) + ' ' + (locY - height) +\n ' L ' + (leftPageX + width) + ' ' + (locY + height) + ' z ';\n var leftPageOptions = new PathOption(treemap.element.id + '_Left_Page', '#a6a6a6', 0, '#a6a6a6', 1, '', leftPath);\n leftPageElement.appendChild(render.drawPath(leftPageOptions));\n var leftRectPageOptions = new RectOption(treemap.element.id + '_Left_Page_Rect', 'transparent', {}, 1, new Rect(leftPageX - (width / 2), (locY - (height * 2)), width * 2, spacing * 2), '');\n leftPageElement.appendChild(render.drawRectangle(leftRectPageOptions));\n this.wireEvents(leftPageElement);\n var rightPageOptions = new PathOption(treemap.element.id + '_Right_Page', '#a6a6a6', 0, '#a6a6a6', 1, '', rightPath);\n rightPageElement.appendChild(render.drawPath(rightPageOptions));\n var rightRectPageOptions = new RectOption(treemap.element.id + '_Right_Page_Rect', 'transparent', {}, 1, new Rect((rightPageX - width), (locY - height), width, spacing), '');\n rightPageElement.appendChild(render.drawRectangle(rightRectPageOptions));\n this.wireEvents(rightPageElement);\n pagingGroup.appendChild(leftPageElement);\n pagingGroup.appendChild(rightPageElement);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var pageTextOptions = {\n 'id': treemap.element.id + '_Paging_Text',\n 'x': pageTextX,\n 'y': locY + (pagingTextSize.height / 4),\n 'fill': '#a6a6a6',\n 'font-size': '14px',\n 'font-style': pagingFont.fontStyle,\n 'font-family': pagingFont.fontFamily,\n 'font-weight': pagingFont.fontWeight,\n 'text-anchor': 'middle',\n 'transform': '',\n 'opacity': 1,\n 'dominant-baseline': ''\n };\n pagingGroup.appendChild(render.createText(pageTextOptions, pagingText));\n this.legendGroup.appendChild(pagingGroup);\n }\n }\n };\n TreeMapLegend.prototype.renderLegendBorder = function () {\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n var legendTitle = legend.title.text;\n var spacing = 10;\n var textStyle = legend.titleStyle;\n var textOptions;\n var title = textTrim((this.legendItemRect.width + (spacing * 2)), legendTitle, textStyle);\n var textSize = measureText(title, textStyle);\n this.legendBorderRect = new Rect((this.legendItemRect.x - spacing), (this.legendItemRect.y - spacing - textSize.height), (this.legendItemRect.width) + (spacing * 2), (this.legendItemRect.height) + (spacing * 2) + textSize.height +\n (legend.mode === 'Interactive' ? 0 : (this.page !== 0) ? spacing : 0));\n var renderOptions = new RectOption(treemap.element.id + '_Legend_Border', legend.background, legend.border, 1, this.legendBorderRect, '');\n var legendBorder = treemap.renderer.drawRectangle(renderOptions);\n legendBorder.style.pointerEvents = 'none';\n this.legendGroup.appendChild(legendBorder);\n this.getLegendAlignment(treemap, this.legendBorderRect.width, this.legendBorderRect.height, legend);\n this.legendGroup.setAttribute('transform', 'translate( ' + (this.translate.x + (-(this.legendBorderRect.x))) + ' ' +\n (this.translate.y + (-(this.legendBorderRect.y))) + ' )');\n treemap.svgObject.appendChild(this.legendGroup);\n };\n TreeMapLegend.prototype.renderLegendTitle = function () {\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n var textStyle = legend.titleStyle;\n var legendTitle = legend.title.text;\n var textOptions;\n var spacing = 10;\n var trimTitle = textTrim((this.legendItemRect.width + (spacing * 2)), legendTitle, textStyle);\n var textSize = measureText(trimTitle, textStyle);\n if (legendTitle) {\n textOptions = new TextOption(treemap.element.id + '_LegendTitle', (this.legendItemRect.x) + (this.legendItemRect.width / 2), this.legendItemRect.y - (textSize.height / 2) - (spacing / 2), 'middle', trimTitle, '');\n renderTextElement(textOptions, textStyle, textStyle.color || this.treemap.themeStyle.legendTitleColor, this.legendGroup);\n }\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To rendered the interactive pointer\n */\n TreeMapLegend.prototype.renderInteractivePointer = function (e) {\n var treemap = this.treemap;\n var target = e.target;\n var interactiveId = treemap.element.id + '_Interactive_Legend';\n target = !(e.type.indexOf('touch') > -1) ? target :\n document.elementFromPoint(e.changedTouches[0].clientX, e.changedTouches[0].clientY);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetItem;\n var legend = treemap.legendSettings;\n if (target.id.indexOf('_Item_Index') > -1 && legend.visible && this.legendRenderingCollections.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = void 0;\n var legendRect = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var rect = void 0;\n var data = void 0;\n var fill = void 0;\n var stroke = void 0;\n var strokeWidth = void 0;\n var legendElement = void 0;\n targetItem = treemap.layout.renderItems[parseFloat(target.id.split('_Item_Index_')[1])];\n var svgRect = treemap.svgObject.getBoundingClientRect();\n for (var i = 0; i < this.legendCollections.length; i++) {\n currentData = this.legendCollections[i];\n legendElement = document.getElementById(treemap.element.id + '_Legend_Index_' + i);\n legendRect = legendElement.getBoundingClientRect();\n var rect_1 = new Rect(Math.abs(legendRect.left - svgRect.left), Math.abs(legendRect.top - svgRect.top), legendRect.width, legendRect.height);\n fill = legendElement.getAttribute('fill');\n stroke = legend.shapeBorder.color;\n strokeWidth = legend.shapeBorder.width;\n if (!isNullOrUndefined(currentData['legendData'])) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data = currentData['legendData'];\n for (var j = 0; j < data.length; j++) {\n if (data[j]['levelOrderName'] === targetItem['levelOrderName']) {\n this.drawInteractivePointer(legend, fill, stroke, interactiveId, strokeWidth, rect_1);\n break;\n }\n }\n }\n }\n }\n else {\n this.removeInteractivePointer();\n }\n };\n TreeMapLegend.prototype.drawInteractivePointer = function (legend, fill, stroke, id, strokeWidth, rect) {\n var path;\n var locX;\n var locY;\n var height = 10;\n var width = 10;\n var direction = (legend.orientation === 'None') ? (legend.position === 'Top' || legend.position === 'Bottom')\n ? 'Horizontal' : 'Vertical' : legend.orientation;\n if (direction === 'Horizontal') {\n if (!legend.invertedPointer) {\n locX = rect.x + (rect.width / 2);\n locY = rect.y;\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX - width) + ' ' + (locY - height) +\n ' L ' + (locX + width) + ' ' + (locY - height) + ' Z ';\n }\n else {\n locX = rect.x + (rect.width / 2);\n locY = rect.y + (rect.height);\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX - width) + ' ' + (locY + height) +\n ' L ' + (locX + width) + ' ' + (locY + height) + ' Z ';\n }\n }\n else {\n if (!legend.invertedPointer) {\n locX = rect.x + (rect.width);\n locY = rect.y + (rect.height / 2);\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX + width) + ' ' + (locY - height) +\n ' L ' + (locX + width) + ' ' + (locY + height) + ' z ';\n }\n else {\n locX = rect.x;\n locY = rect.y + (rect.height / 2);\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX - width) + ' ' + (locY - height) +\n ' L ' + (locX - width) + ' ' + (locY + height) + ' z ';\n }\n }\n var pathOptions = new PathOption(id, fill, strokeWidth, stroke, 1, '', path);\n this.treemap.svgObject.appendChild(this.treemap.renderer.drawPath(pathOptions));\n };\n TreeMapLegend.prototype.getLegendAlignment = function (treemap, width, height, legend) {\n var x;\n var y;\n var spacing = 10;\n var totalRect;\n // eslint-disable-next-line prefer-const\n totalRect = extend({}, treemap.areaRect, totalRect, true);\n var areaX = totalRect.x;\n var areaY = totalRect.y;\n var areaHeight = totalRect.height;\n var areaWidth = totalRect.width;\n var totalWidth = treemap.availableSize.width;\n var totalHeight = treemap.availableSize.height;\n var position = legend.position === 'Auto' ? (totalWidth > totalHeight) ? 'Right' : 'Bottom' : legend.position;\n if (legend.position === 'Float') {\n this.translate = legend.location;\n }\n else {\n switch (position) {\n case 'Top':\n case 'Bottom':\n totalRect.height = (areaHeight - height);\n x = (totalWidth / 2) - (width / 2);\n y = (position === 'Top') ? areaY : (areaY + totalRect.height) + spacing;\n totalRect.y = (position === 'Top') ? areaY + height + spacing : areaY;\n break;\n case 'Left':\n case 'Right':\n totalRect.width = (areaWidth - width);\n x = (position === 'Left') ? areaX : areaX + totalRect.width;\n y = (totalHeight / 2) - (height / 2);\n totalRect.x = (position === 'Left') ? areaX + width : areaX;\n break;\n }\n switch (legend.alignment) {\n case 'Near':\n if (position === 'Top' || position === 'Bottom') {\n x = totalRect.x;\n }\n else {\n y = totalRect.y;\n }\n break;\n case 'Far':\n if (position === 'Top' || position === 'Bottom') {\n x = totalWidth - width;\n }\n else {\n y = totalHeight - height;\n }\n break;\n }\n this.treemap.totalRect = totalRect;\n this.translate = new Location(x, y);\n }\n };\n TreeMapLegend.prototype.mouseUpHandler = function (e) {\n this.renderInteractivePointer(e);\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeInteractivePointer.bind(this), 3000);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To remove the interactive pointer\n */\n TreeMapLegend.prototype.removeInteractivePointer = function () {\n if (document.getElementById(this.treemap.element.id + '_Interactive_Legend')) {\n var legendElementId = document.getElementById(this.treemap.element.id + '_Interactive_Legend');\n legendElementId.parentNode.removeChild(legendElementId);\n }\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To change the next page\n */\n TreeMapLegend.prototype.changeNextPage = function (e) {\n this.currentPage = (e.target.id.indexOf('_Left_Page_') > -1) ? (this.currentPage - 1) :\n (this.currentPage + 1);\n this.drawLegend();\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * Wire events for event handler\n */\n TreeMapLegend.prototype.wireEvents = function (element) {\n EventHandler.add(element, Browser.touchStartEvent, this.changeNextPage, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To add the event listener\n */\n TreeMapLegend.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.renderInteractivePointer, this);\n this.treemap.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To remove the event listener\n */\n TreeMapLegend.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.renderInteractivePointer);\n this.treemap.off(Browser.touchEndEvent, this.mouseUpHandler);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * Get module name.\n */\n TreeMapLegend.prototype.getModuleName = function () {\n return 'treeMapLegend';\n };\n /**\n * To destroy the legend.\n *\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.destroy = function () {\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 //TODO: The removeInteractivePointer method (calling method) is called in a timer in the mouseUpHandler method. Because of this handling, adding the below code results in a spec failure.\n //this.treemap = null;\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * Get the gradient color for interactive legend.\n */\n TreeMapLegend.prototype.legendGradientColor = function (colorMap, legendIndex) {\n var legendFillColor;\n var xmlns = 'http://www.w3.org/2000/svg';\n if (!isNullOrUndefined(colorMap.color) && Object.prototype.toString.call(colorMap.color) === '[object Array]') {\n var defElement = this.treemap.renderer.createDefs();\n var linerGradientEle = document.createElementNS(xmlns, 'linearGradient');\n var opacity = 1;\n var position = this.treemap.legendSettings.position;\n var x2 = position === 'Top' || position === 'Bottom' ? '100' : '0';\n var y2 = position === 'Top' || position === 'Bottom' ? '0' : '100';\n linerGradientEle.setAttribute('id', 'linear_' + legendIndex);\n linerGradientEle.setAttribute('x1', 0 + '%');\n linerGradientEle.setAttribute('y1', 0 + '%');\n linerGradientEle.setAttribute('x2', x2 + '%');\n linerGradientEle.setAttribute('y2', y2 + '%');\n for (var b = 0; b < colorMap.color.length; b++) {\n var offsetColor = 100 / (colorMap.color.length - 1);\n var stopEle = document.createElementNS(xmlns, 'stop');\n stopEle.setAttribute('offset', b * offsetColor + '%');\n stopEle.setAttribute('stop-color', colorMap.color[b]);\n stopEle.setAttribute('stop-opacity', opacity.toString());\n linerGradientEle.appendChild(stopEle);\n }\n defElement.appendChild(linerGradientEle);\n this.legendLinearGradient = linerGradientEle;\n var color = 'url(' + '#linear_' + legendIndex + ')';\n this.defsElement.appendChild(linerGradientEle);\n legendFillColor = color;\n }\n return legendFillColor;\n };\n return TreeMapLegend;\n}());\nexport { TreeMapLegend };\n","import { Browser } from '@syncfusion/ej2-base';\nimport { itemHighlight, itemSelected } from '../model/constants';\nimport { findHightLightItems, removeClassNames, applyOptions, removeShape, removeLegend, removeSelectionWithHighlight, setColor, getLegendIndex, pushCollection, setItemTemplateContent } from '../utils/helper';\n/**\n * Performing treemap highlight\n */\nvar TreeMapHighlight = /** @class */ (function () {\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function TreeMapHighlight(treeMap) {\n this.target = 'highlight';\n this.shapeTarget = 'highlight';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.shapeHighlightCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendHighlightCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentElement = [];\n this.treemap = treeMap;\n this.addEventListener();\n }\n /* eslint-disable max-len */\n // eslint-disable-next-line valid-jsdoc\n /**\n * Mouse down event in highlight\n */\n TreeMapHighlight.prototype.mouseMove = function (e) {\n var treemap = this.treemap;\n var processHighlight;\n var targetId = e.target.id;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var eventArgs;\n var items = [];\n var highlight = this.treemap.highlightSettings;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n var highLightElements = [];\n var process;\n var treeMapElement;\n var element;\n var orders;\n var selectionModule = this.treemap.treeMapSelectionModule;\n if (targetId.indexOf('_Item_Index') > -1 && (selectionModule ? this.treemap.selectionId !== targetId : true)) {\n if (this.highLightId !== targetId) {\n treeMapElement = document.getElementById(treemap.element.id + '_TreeMap_' + treemap.layoutType + '_Layout');\n var selectionElements = document.getElementsByClassName('treeMapSelection');\n item = this.treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n var index = void 0;\n if (this.treemap.legendSettings.visible) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n var length_1 = this.treemap.treeMapLegendModule.legendCollections.length;\n index = getLegendIndex(length_1, item, treemap);\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index) : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index);\n if (this.shapeElement !== null && (selectionModule ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true)) {\n if (selectionModule ? this.shapeElement !== selectionModule.shapeElement : true) {\n this.currentElement.push({ currentElement: this.shapeElement });\n removeShape(this.shapeHighlightCollection, 'highlight');\n this.shapeHighlightCollection.push({ legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n setColor(this.shapeElement, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n this.target = 'highlight';\n }\n else if (this.currentElement.length > 0 && this.currentElement[this.currentElement.length - 1]['currentElement'] !== this.shapeElement) {\n removeSelectionWithHighlight(this.shapeHighlightCollection, this.currentElement, treemap);\n this.highLightId = '';\n }\n }\n else if (this.currentElement.length > 0 && this.currentElement[this.currentElement.length - 1]['currentElement'] !== this.shapeElement) {\n removeSelectionWithHighlight(this.shapeHighlightCollection, this.currentElement, treemap);\n this.highLightId = '';\n }\n }\n orders = findHightLightItems(item, [], highlight.mode, treemap);\n if (this.treemap.legendSettings.visible ? selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true : true) {\n if (this.treemap.legendSettings.visible ? selectionModule ? this.shapeElement !== selectionModule.shapeElement : true : true) {\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n process = true;\n item = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])];\n for (var j = 0; j < selectionElements.length; j++) {\n if (element.id === selectionElements[j].id) {\n process = false;\n break;\n }\n }\n if (orders.indexOf(item['levelOrderName']) > -1 && process) {\n highLightElements.push(element);\n items.push(item);\n }\n }\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n for (var k = 0; k < highLightElements.length; k++) {\n element = highLightElements[k];\n applyOptions(element.childNodes[0], { border: highlight.border, fill: highlight.fill, opacity: highlight.opacity });\n element.classList.add('treeMapHighLight');\n this.highLightId = targetId;\n }\n eventArgs = { cancel: false, name: itemHighlight, treemap: treemap, items: items, elements: highLightElements };\n treemap.trigger(itemHighlight, eventArgs);\n }\n else {\n processHighlight = false;\n }\n }\n }\n }\n else if (targetId.indexOf('_Legend_Shape') > -1 || targetId.indexOf('_Legend_Index') > -1) {\n if (this.treemap.legendSettings.visible && (selectionModule ? selectionModule.legendSelectId !== targetId : true) && (selectionModule ? selectionModule.shapeSelectId !== targetId : true)) {\n var itemIndex = void 0;\n var groupIndex = void 0;\n var length_2;\n var targetEle = document.getElementById(targetId);\n if (this.shapeTarget === 'highlight') {\n removeLegend(this.legendHighlightCollection, 'highlight');\n }\n this.shapeTarget = 'highlight';\n var index = this.treemap.legendSettings.mode === 'Default' ? parseFloat(targetId.split('_Legend_Shape_Index_')[1]) : parseFloat(targetId.split('_Legend_Index_')[1]);\n var dataLength = this.treemap.treeMapLegendModule.legendCollections[index]['legendData'].length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n var legendIndex = parseInt(targetId[targetId.length - 1], 10);\n for (var i = 0; i < dataLength; i++) {\n for (var j = 0; j < this.treemap.layout.renderItems.length; j++) {\n if (this.treemap.treeMapLegendModule.legendCollections[index]['legendData'][i]['levelOrderName'] === this.treemap.layout.renderItems[j]['levelOrderName']) {\n itemIndex = j;\n groupIndex = this.treemap.layout.renderItems[j]['groupIndex'];\n var nodeEle = document.getElementById(this.treemap.element.id + '_Level_Index_' + groupIndex + '_Item_Index_' + itemIndex + '_RectPath');\n if (i === 0) {\n this.legendHighlightCollection = [];\n pushCollection(this.legendHighlightCollection, legendIndex, j, targetEle, nodeEle, this.treemap.layout.renderItems, collection);\n length_2 = this.legendHighlightCollection.length;\n this.legendHighlightCollection[length_2 - 1]['ShapeCollection'] = { Elements: [] };\n }\n setColor(targetEle, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n setColor(nodeEle, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n length_2 = this.legendHighlightCollection.length;\n this.legendHighlightCollection[length_2 - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n }\n }\n else {\n if (selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true) {\n if (selectionModule ? this.shapeElement !== selectionModule.shapeElement : true && this.treemap.legendSettings.visible) {\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n }\n }\n if ((this.shapeTarget === 'highlight' || this.target === 'highlight') && this.treemap.legendSettings.visible) {\n if (selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true) {\n if (selectionModule ? this.shapeElement !== selectionModule.shapeElement : true && selectionModule ? selectionModule.legendSelect : true) {\n removeShape(this.shapeHighlightCollection, 'highlight');\n this.shapeHighlightCollection = [];\n }\n }\n }\n if (this.shapeTarget === 'highlight' && this.treemap.legendSettings.visible) {\n removeLegend(this.legendHighlightCollection, 'highlight');\n }\n this.highLightId = '';\n processHighlight = false;\n }\n return processHighlight;\n };\n /**\n * To bind events for highlight\n *\n * @returns {void}\n */\n TreeMapHighlight.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.mouseMove, this);\n };\n /**\n * To unbind events for highlight\n *\n * @returns {void}\n */\n TreeMapHighlight.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.mouseMove);\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name\n */\n TreeMapHighlight.prototype.getModuleName = function () {\n return 'treeMapHighlight';\n };\n /**\n * To destroy the hightlight.\n *\n * @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 // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function TreeMapSelection(treeMap) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.shapeSelectionCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendSelectionCollection = [];\n this.shapeSelect = true;\n this.legendSelect = true;\n this.treemap = treeMap;\n this.addEventListener();\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * Mouse down event in selection\n */\n TreeMapSelection.prototype.mouseDown = function (e) {\n var targetEle = e.target;\n var eventArgs;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var treemap = this.treemap;\n treemap.levelSelection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var items = [];\n var targetId = targetEle.id;\n var labelText = targetEle.innerHTML;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n var selectionElements = [];\n var opacity;\n var treeMapElement;\n var element;\n var orders;\n var selection = treemap.selectionSettings;\n var highlightModule = this.treemap.treeMapHighlightModule;\n var layoutID = treemap.element.id + '_TreeMap_' + treemap.layoutType + '_Layout';\n if (targetId.indexOf('_Item_Index') > -1) {\n e.preventDefault();\n if (this.treemap.selectionId !== targetId && this.legendSelect) {\n treeMapElement = document.getElementById(layoutID);\n item = treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n var index = void 0;\n if (this.treemap.legendSettings.visible) {\n this.shapeSelect = false;\n var length_3 = this.treemap.treeMapLegendModule.legendCollections.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n this.shapeElement = undefined;\n removeShape(this.shapeSelectionCollection, 'selection');\n if (highlightModule) {\n highlightModule.shapeTarget = 'selection';\n highlightModule.shapeHighlightCollection = [];\n }\n index = getLegendIndex(length_3, item, treemap);\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index) : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index);\n if (this.shapeElement !== null) {\n this.shapeSelectId = this.shapeElement.getAttribute('id');\n this.shapeSelectionCollection.push({ legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n setColor(this.shapeElement, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n }\n }\n orders = findHightLightItems(item, [], selection.mode, treemap);\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n item = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])];\n if (orders.indexOf(item['levelOrderName']) > -1) {\n selectionElements.push(element);\n treemap.levelSelection.push(element.id);\n items.push(item);\n }\n }\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', treemap);\n this.treemap.selectionId = targetId;\n var highLightElements = document.getElementsByClassName('treeMapHighLight');\n for (var k = 0; k < selectionElements.length; k++) {\n element = selectionElements[k];\n if (highLightElements.length > 0) {\n for (var j = 0; j < highLightElements.length; j++) {\n if (highLightElements[j].id === element.id) {\n highLightElements[j].classList.remove('treeMapHighLight');\n }\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n else {\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n eventArgs = { cancel: false, name: itemSelected, treemap: treemap, items: items, elements: selectionElements,\n text: labelText, contentItemTemplate: labelText };\n treemap.trigger(itemSelected, eventArgs, function (observedArgs) {\n if (observedArgs.contentItemTemplate !== labelText) {\n setItemTemplateContent(targetId, targetEle, observedArgs.contentItemTemplate);\n }\n });\n }\n }\n else {\n removeShape(this.shapeSelectionCollection, 'selection');\n this.shapeSelectionCollection = [];\n this.shapeElement = undefined;\n this.shapeSelect = true;\n this.shapeSelectId = '';\n this.treemap.legendId = [];\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', treemap);\n this.treemap.selectionId = '';\n }\n }\n else if (targetId.indexOf('_Legend_Shape') > -1 || targetId.indexOf('_Legend_Index') > -1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n if (this.treemap.legendSettings.visible && this.legendSelectId !== targetId && this.shapeSelect) {\n var itemIndex = void 0;\n var groupIndex = void 0;\n var length_4;\n this.legendSelectId = targetId;\n this.legendSelect = false;\n var legendIndex = parseInt(targetId[targetId.length - 1], 10);\n var targetEle_1 = document.getElementById(targetId);\n removeLegend(this.legendSelectionCollection, 'selection');\n if (highlightModule) {\n highlightModule.shapeTarget = 'selection';\n }\n var index = this.treemap.legendSettings.mode === 'Default' ? parseFloat(targetId.split('_Legend_Shape_Index_')[1]) : parseFloat(targetId.split('_Legend_Index_')[1]);\n var dataLength = this.treemap.treeMapLegendModule.legendCollections[index]['legendData'].length;\n for (var k = 0; k < dataLength; k++) {\n for (var l = 0; l < this.treemap.layout.renderItems.length; l++) {\n if (this.treemap.treeMapLegendModule.legendCollections[index]['legendData'][k]['levelOrderName'] === this.treemap.layout.renderItems[l]['levelOrderName']) {\n itemIndex = l;\n groupIndex = this.treemap.layout.renderItems[l]['groupIndex'];\n var nodeEle = document.getElementById(this.treemap.element.id + '_Level_Index_' + groupIndex + '_Item_Index_' + itemIndex + '_RectPath');\n if (k === 0) {\n pushCollection(this.legendSelectionCollection, legendIndex, l, targetEle_1, nodeEle, this.treemap.layout.renderItems, collection);\n length_4 = this.legendSelectionCollection.length;\n this.legendSelectionCollection[length_4 - 1]['ShapeCollection'] = { Elements: [] };\n }\n setColor(targetEle_1, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n setColor(nodeEle, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n length_4 = this.legendSelectionCollection.length;\n this.legendSelectionCollection[length_4 - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n }\n else {\n removeLegend(this.legendSelectionCollection, 'Selection');\n if (highlightModule) {\n highlightModule.shapeTarget = 'highlight';\n }\n this.legendSelect = true;\n this.legendSelectId = '';\n }\n }\n };\n /**\n * @param {string} levelOrder - Specifies the level order of treemap item\n * @param {boolean} enable - Specifies the boolean value\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.selectTreemapItem = function (levelOrder, enable) {\n if (enable) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = void 0;\n for (var s = 0; s < this.treemap.layout.renderItems.length; s++) {\n if (levelOrder === this.treemap.layout.renderItems[s]['levelOrderName']) {\n item = this.treemap.layout.renderItems[s];\n break;\n }\n }\n var selection = this.treemap.selectionSettings;\n var selectionElements = [];\n var element = void 0;\n var index = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var items = [];\n this.treemap.levelSelection = [];\n var layoutID = this.treemap.element.id + '_TreeMap_' + this.treemap.layoutType + '_Layout';\n var treeMapElement = document.getElementById(layoutID);\n var orders = findHightLightItems(item, [], selection.mode, this.treemap);\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n item = this.treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])];\n if (orders.indexOf(item['levelOrderName']) > -1) {\n selectionElements.push(element);\n this.treemap.levelSelection.push(element.id);\n items.push(item);\n }\n }\n if (this.treemap.legendSettings.visible) {\n for (var m = 0; m < items.length; m++) {\n this.shapeSelect = false;\n var length_5 = this.treemap.treeMapLegendModule.legendCollections.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n this.shapeElement = undefined;\n removeShape(this.shapeSelectionCollection, 'selection');\n index = getLegendIndex(length_5, items[m], this.treemap);\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index) : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index);\n if (this.shapeElement !== null) {\n this.shapeSelectId = this.shapeElement.getAttribute('id');\n this.treemap.legendId.push(this.shapeSelectId);\n this.shapeSelectionCollection.push({\n legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n setColor(this.shapeElement, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n }\n }\n }\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', this.treemap);\n var selectionElement = document.getElementById(this.treemap.levelSelection[0]);\n this.treemap.selectionId = selectionElement.childNodes[0]['id'];\n var highLightElements = document.getElementsByClassName('treeMapHighLight');\n for (var k = 0; k < selectionElements.length; k++) {\n element = selectionElements[k];\n if (highLightElements.length > 0) {\n for (var j = 0; j < highLightElements.length; j++) {\n if (highLightElements[j].id === element.id) {\n highLightElements[j].classList.remove('treeMapHighLight');\n }\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n else {\n selection.fill = selection.fill === 'null' ?\n this.treemap.layout.renderItems[parseInt(element.id.split('Item_Index_')[1], 10)]['options']['fill']\n : selection.fill;\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n }\n else {\n removeShape(this.shapeSelectionCollection, 'selection');\n this.shapeElement = undefined;\n this.treemap.levelSelection = [];\n this.shapeSelect = true;\n this.shapeSelectId = '';\n this.treemap.legendId = [];\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', this.treemap);\n this.treemap.selectionId = '';\n }\n };\n /**\n * To bind events for selection\n *\n * @returns {void}\n */\n TreeMapSelection.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchStartEvent, this.mouseDown, this);\n };\n /**\n * To unbind events for selection\n *\n * @returns {void}\n */\n TreeMapSelection.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchStartEvent, this.mouseDown);\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n TreeMapSelection.prototype.getModuleName = function () {\n return 'treeMapSelection';\n };\n /**\n * To destroy the selection.\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.destroy = function () {\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 } from '@syncfusion/ej2-base';\nimport { getMousePosition, textFormatter, formatValue } from '../utils/helper';\nimport { tooltipRendering } from '../model/constants';\n/**\n * Render Tooltip\n */\nvar TreeMapTooltip = /** @class */ (function () {\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function TreeMapTooltip(treeMap) {\n this.treemap = treeMap;\n this.tooltipSettings = this.treemap.tooltipSettings;\n this.tooltipId = this.treemap.element.id + '_TreeMapTooltip';\n this.addEventListener();\n }\n TreeMapTooltip.prototype.renderTooltip = function (e) {\n var _this = this;\n var pageX;\n var pageY;\n var target;\n var touchArg;\n var tootipArgs;\n if (e.type.indexOf('touch') !== -1) {\n this.isTouch = true;\n touchArg = e;\n pageX = touchArg.changedTouches[0].pageX;\n pageY = touchArg.changedTouches[0].pageY;\n target = touchArg.target;\n }\n else {\n this.isTouch = e.pointerType === 'touch';\n pageX = e.pageX;\n pageY = e.pageY;\n target = e.target;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value;\n var targetId = target.id;\n var item = {};\n var tooltipEle;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var location;\n var toolTipHeader;\n var toolTipData = {};\n var tooltipContent = [];\n var markerFill;\n if (targetId.indexOf('_Item_Index') > -1) {\n item = this.treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n if (!isNullOrUndefined(item)) {\n toolTipHeader = item['name'];\n value = item['weight'];\n toolTipData = item['data'];\n if (!isNullOrUndefined(item['options'])) {\n markerFill = item['options']['fill'];\n }\n if (this.treemap.enableRtl) {\n tooltipContent = [textFormatter(this.tooltipSettings.format, toolTipData, this.treemap) ||\n formatValue(value, this.treemap) + ' : ' + this.treemap.weightValuePath.toString()];\n }\n else {\n tooltipContent = [textFormatter(this.tooltipSettings.format, toolTipData, this.treemap) ||\n this.treemap.weightValuePath.toString() + ' : ' + formatValue(value, this.treemap)];\n }\n if (document.getElementById(this.tooltipId)) {\n tooltipEle = document.getElementById(this.tooltipId);\n }\n else {\n tooltipEle = createElement('div', {\n id: this.treemap.element.id + '_TreeMapTooltip',\n className: 'EJ2-TreeMap-Tooltip',\n styles: 'position: absolute;pointer-events:none;'\n });\n document.getElementById(this.treemap.element.id + '_Secondary_Element').appendChild(tooltipEle);\n }\n location = getMousePosition(pageX, pageY, this.treemap.svgObject);\n location.y = (this.tooltipSettings.template) ? location.y + 10 : location.y;\n this.tooltipSettings.textStyle.fontFamily = this.treemap.themeStyle.fontFamily;\n this.tooltipSettings.textStyle.color = this.treemap.themeStyle.tooltipFontColor\n || this.tooltipSettings.textStyle.color;\n this.tooltipSettings.textStyle.opacity = this.treemap.themeStyle.tooltipTextOpacity\n || this.tooltipSettings.textStyle.opacity;\n tootipArgs = {\n cancel: false, name: tooltipRendering, item: item,\n options: {\n location: location, text: tooltipContent, data: toolTipData,\n textStyle: this.tooltipSettings.textStyle, template: this.tooltipSettings.template\n },\n treemap: this.treemap,\n element: target, eventArgs: e\n };\n this.treemap.trigger(tooltipRendering, tootipArgs, function (args) {\n _this.addTooltip(tootipArgs, markerFill, tooltipEle);\n });\n }\n }\n else {\n this.removeTooltip();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.clearTemplate();\n }\n };\n TreeMapTooltip.prototype.addTooltip = function (tootipArgs, markerFill, tooltipEle, eventArgs) {\n var cancel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var args;\n if (!isNullOrUndefined(tootipArgs)) {\n var c = tootipArgs.cancel, otherArgs = __rest(tootipArgs, [\"cancel\"]);\n cancel = c;\n args = otherArgs.options;\n }\n else {\n cancel = eventArgs.cancel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args = eventArgs;\n }\n if (!cancel) {\n this.svgTooltip = new Tooltip({\n enable: true,\n header: '',\n data: args['data'],\n template: args['template'],\n content: args['text'],\n shapes: [],\n location: args['location'],\n palette: [markerFill],\n areaBounds: this.treemap.areaRect,\n textStyle: args['textStyle'],\n fill: this.treemap.tooltipSettings.fill ? this.treemap.tooltipSettings.fill : this.treemap.themeStyle.tooltipFillColor\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.treemap.isVue || this.treemap.isVue3) {\n this.svgTooltip.controlInstance = this.treemap;\n }\n this.svgTooltip.opacity = this.treemap.themeStyle.tooltipFillOpacity || this.svgTooltip.opacity;\n this.svgTooltip.appendTo(tooltipEle);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.renderReactTemplates();\n }\n else {\n this.removeTooltip();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.clearTemplate();\n }\n };\n TreeMapTooltip.prototype.mouseUpHandler = function (e) {\n this.renderTooltip(e);\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeTooltip.bind(this), 2000);\n };\n TreeMapTooltip.prototype.removeTooltip = function () {\n if (document.getElementsByClassName('EJ2-TreeMap-Tooltip').length > 0) {\n var tooltipElementId = document.getElementsByClassName('EJ2-TreeMap-Tooltip')[0];\n tooltipElementId.parentNode.removeChild(tooltipElementId);\n }\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To bind events for tooltip module\n */\n TreeMapTooltip.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.renderTooltip, this);\n this.treemap.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To unbind events for tooltip module\n */\n TreeMapTooltip.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.renderTooltip);\n this.treemap.off(Browser.touchEndEvent, this.mouseUpHandler);\n };\n /**\n * Get module name.\n *\n * @returns {string} returns string\n */\n TreeMapTooltip.prototype.getModuleName = function () {\n return 'treeMapTooltip';\n };\n /**\n * To destroy the tooltip.\n *\n * @returns {void}\n * @private\n */\n TreeMapTooltip.prototype.destroy = function () {\n if (!isNullOrUndefined(this.svgTooltip)) {\n this.svgTooltip.destroy();\n }\n this.svgTooltip = null;\n this.tooltipSettings = null;\n this.removeEventListener();\n this.treemap = null;\n };\n return TreeMapTooltip;\n}());\nexport { TreeMapTooltip };\n"],"names":["stringToNumber","value","containerSize","undefined","indexOf","parseInt","measureText","text","font","measureObject","document","getElementById","createElement","id","body","appendChild","innerHTML","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","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","styles","elementLength","templateHtml","RegExp","toString","findLabelLocation","rect","labelSize","getBoundingClientRect","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","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","removeClassNames","elements","parseFloat","classList","remove","textFormatter","format","_i","keys_1","key","join","formatValue","intl","getNumberFormat","useGrouping","useGroupingSeparator","formatFunction","convertToHexCode","hex","convertHexToColor","result","exec","window","getComputedStyle","isRGBValue","drawSymbol","shape","url","svgRenderer","temp","renderLegendShape","htmlElement","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","dataCount","k","borderColor","borderWidth","removeSelectionWithHighlight","getElementsByClassName","getLegendIndex","dataLength","treeMapLegendModule","legendCollections","pushCollection","number","legendElement","shapeElement","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","subTitleFontColor","tooltipFillColor","tooltipFontColor","legendTitleColor","legendTextColor","subtitleFontSize","legendFontSize","tooltipFillOpacity","tooltipTextOpacity","labelFontFamily","beforePrint","itemRendering","drillStart","drillEnd","itemSelected","itemHighlight","tooltipRendering","itemClick","itemMove","doubleClick","rightClick","mouseMove","legendItemRendering","legendRendering","resize","defaultFont","__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","LevelsData","levelsData","initialDrillDown","groupIndex","groupName","drilledItems","getDrilldownData","extend","legendSettings","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_1","i_1","multiplier","datum","onDemandProcess","childItems","parentItem","parentItemGroupname","splice","renderData","txtVisible","getItemColor","eventArgs","_this","pathOptions","templatePosition","renderText","groupId","templateEle","textStyle","elementID","interSectAction","rectPath","secondaryEle","layoutGroup","createGroup","itemGroup","templateGroup","isLeafItem","_loop_1","this_1","drillDownView","treemapItemRect","labelFormat","headerFormat","levelName","showLabels","breadcrumbConnector","enableRtl","labelStyle","headerStyle","themeStyle","labelPosition","labelTemplate","headerTemplate","cancel","RenderItems","trigger","observedArgs","path","drawPath","renderItemText","renderTemplate","renderReactTemplates","tabIndex","svgObject","customText","textName","tspanText","labelInterSectAction","drillSymbolCount","drillSymbolSize","textLocation","texts","maxNumber","collectionLength","stringText","getSaturatedColor","itemFill","itemOpacity","defaultLevelsData","option","equalColorValuePath","rangeColorValuePath","colorValuePath","palette","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","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","exportElement","backgroundElement","image","context","PdfDocument","imageString","pageSettings","pages","add","graphics","PdfBitmap","save","TreeMap","isResize","preRender","initPrivateVariable","unWireEVents","createSvg","wireEVents","setCulture","render","renderElements","hierarchyData","createSecondaryElement","addTabIndex","renderBorder","renderTitle","titleSettings","processDataManager","dataModule","queryModule","ajaxModule","localAjax","dataSource","DataManager","query","Query","executeQuery","then","renderTreeMapElements","Ajax","onSuccess","args","JSON","parse","send","processingData","visible","renderLegend","elementChange","isResized","renderComplete","firstChild","hasChildNodes","clearTemplate","containerWidth","containerHeight","secondaryElement","insertBefore","borderElement","background","borderRect","drawRectangle","title","bounds","groupEle","margin","right","trimmedTitle","elementSize","location_1","titleBounds","description","subtitleSettings","bottom","map","checkIsHierarchicalData","data_1","currentData","dataIndex","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_1","start","currentName","currentPath","prevPath","previousData","IsChildHierarchy","current","isChild","groupObj","EventHandler","clickOnTreeMap","doubleClickOnTreeMap","rightClickOnTreeMap","touchStartEvent","mouseDownOnTreeMap","touchMoveEvent","mouseMoveOnTreeMap","touchEndEvent","mouseEndOnTreeMap","mouseLeaveOnTreeMap","removeEventListener","resizeOnTreeMap","addEventListener","bind","Internationalization","isDestroyed","args_1","previousSize","currentSize","clearTimeout","contains","setTimeout","refreshing","itemIndex","targetEle","labelText","clickArgs","mouseEvent","preventDefault","doubleTapTimer1","end","Date","getMilliseconds","doubleClickArgs","rightClickArgs","mouseDown","notify","moveArgs","cursor","calculateSelectedTextLevels","drillLevel","levelText","_a","currentLevelLabel","calculatePreviousLevelChildItems","drillLevelValues","directLevel","levelItems","text1","drillTextLevel","h","compareSelectedLabelWithDrillDownItems","drillLevelChild","newDrillItem","startEvent","endEvent","layoutID","templateID","drillMouseMove","drillLength","which","layerElementId","textContent","widthIncrement","heightIncrement","drilledLegendItems","drillElementId","treeMapTooltipModule","removeTooltip","removeInteractivePointer","treeMapHighlightModule","shapeHighlightCollection","highLightId","selectItem","levelOrder","isSelected","treeMapSelectionModule","enable","selectTreemapItem","requiredModules","modules","tooltipSettings","member","highlightSettings","onPropertyChanged","newProp","oldProp","removeSvg","getPersistData","Event","NotifyPropertyChanges","Component","TreeMapLegend","page","legendBorderRect","currentPage","textMaxWidth","legendInteractiveGradient","legendItemRect","legendRenderingCollections","legendNames","totalPages","gradientCount","defsElement","createDefs","_changePosition","calculateLegendBounds","drawLegend","legend","findColorMappingLegendItems","findPaletteLegendItems","legendTitle","titleTextStyle","titleStyle","legendMode","textX","textY","shapeLocation","orientation_1","legendWidth","legendHeight","legendTitleSize","startX_1","startY_1","shapePadding","itemTextStyle","legendItem","Page","legendTextSize","maxSize","prvePositionX","nextPositionY","getPageChanged","prevPositionY","nextPositionX","DisplayText","Shape","Text","Fill","Data","legendObj","legendRect","legendLength_1","rectWidth_1","rectHeight_1","placement","itemStartX","itemStartY","labelAction","labelDisplayMode","maxTextHeight","maxTextWidth","legendText","itemTextSize","textWidth","textHeight","calculateLegendItems","legendFillColor","legendName","showLegendPath","valuePath","removeDuplicateLegend","removeDuplicates","legendFill","legendData","itemArea","isAddData","gradientElement","x2","y2","actualValue","isDuplicate","isRange","outfill","labelLegend","otherIndex","colorMapProcess","isDesaturation","legendIndex","outOfRangeLegend","colorMapping_1","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","legendRtlLocation","shapeSize","isLineShape_1","strokeColor_1","strokeWidth_1","shapeId","imageUrl","pagingGroup","pagingText","pagingFont","pagingTextSize","leftPageX","rightPageX","locY","pageTextX","leftPageElement","rightPageElement","rightPath","leftPath","leftPageOptions","leftRectPageOptions","wireEvents","rightPageOptions","rightRectPageOptions","pageTextOptions","legendBorder","pointerEvents","getLegendAlignment","trimTitle","renderInteractivePointer","interactiveId","elementFromPoint","changedTouches","clientX","clientY","targetItem","strokeWidth","svgRect","rect_1","drawInteractivePointer","locX","invertedPointer","areaX","areaY","totalHeight","mouseUpHandler","legendElementId","changeNextPage","on","off","xmlns","defElement","linerGradientEle","createElementNS","offsetColor","stopEle","TreeMapHighlight","shapeTarget","legendHighlightCollection","currentElement","processHighlight","treeMapElement","orders","highlight","highLightElements","selectionModule","selectionId","selectionElements","legendSelectId","shapeSelectId","length_2","nodeEle","Elements","legendSelect","TreeMapSelection","shapeSelectionCollection","legendSelectionCollection","shapeSelect","selection","highlightModule","length_3","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","isVue","isVue3","controlInstance","appendTo","tooltipElementId"],"mappings":"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"}