@syncfusion/ej2-treemap 25.1.35 → 26.1.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +3 -2
- package/dist/ej2-treemap.min.js +2 -2
- package/dist/ej2-treemap.umd.min.js +2 -2
- package/dist/ej2-treemap.umd.min.js.map +1 -1
- package/dist/es6/ej2-treemap.es2015.js +407 -271
- package/dist/es6/ej2-treemap.es2015.js.map +1 -1
- package/dist/es6/ej2-treemap.es5.js +422 -286
- package/dist/es6/ej2-treemap.es5.js.map +1 -1
- package/dist/global/ej2-treemap.min.js +2 -2
- package/dist/global/ej2-treemap.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +10 -10
- package/src/treemap/layout/legend.d.ts +11 -1
- package/src/treemap/layout/legend.js +20 -7
- package/src/treemap/layout/render-panel.js +11 -7
- package/src/treemap/model/base.js +3 -3
- package/src/treemap/model/image-export.js +5 -2
- package/src/treemap/model/interface.d.ts +23 -0
- package/src/treemap/model/interface.js +0 -1
- package/src/treemap/model/pdf-export.js +5 -2
- package/src/treemap/model/print.js +6 -2
- package/src/treemap/model/theme.js +122 -12
- package/src/treemap/treemap.d.ts +4 -0
- package/src/treemap/treemap.js +19 -16
- package/src/treemap/user-interaction/tooltip.d.ts +2 -0
- package/src/treemap/user-interaction/tooltip.js +13 -3
- package/src/treemap/utils/enum.d.ts +8 -1
- package/src/treemap/utils/enum.js +0 -1
- package/src/treemap/utils/helper.d.ts +1 -2
- package/src/treemap/utils/helper.js +1 -2
- package/CHANGELOG.md +0 -80
|
@@ -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, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\n/**\n * Specifies the size parameters.\n */\nvar Size = /** @class */ (function () {\n function Size(width, height) {\n this.width = width;\n this.height = height;\n }\n return Size;\n}());\nexport { Size };\n/**\n *\n * @param {string} value - specifies the text.\n * @param {number} containerSize - specifies the container size value.\n * @returns {number} - Returns the number value which is converted from string.\n */\nexport function stringToNumber(value, containerSize) {\n if (value !== null && value !== undefined) {\n return value.indexOf('%') !== -1 ? (containerSize / 100) * parseInt(value, 10) : parseInt(value, 10);\n }\n return null;\n}\n/**\n * Internal use of type rect\n *\n * @private\n */\nvar Rect = /** @class */ (function () {\n function Rect(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n return Rect;\n}());\nexport { Rect };\n/**\n * Internal use of rectangle options\n *\n * @private\n */\nvar RectOption = /** @class */ (function () {\n function RectOption(id, fill, border, opacity, rect, dashArray) {\n this.y = rect.y;\n this.x = rect.x;\n this.height = rect.height;\n this.width = rect.width;\n this.id = id;\n this.fill = fill;\n this.opacity = opacity;\n this.stroke = border.color;\n this['stroke-width'] = border.width;\n this['stroke-dasharray'] = dashArray;\n }\n return RectOption;\n}());\nexport { RectOption };\nvar PathOption = /** @class */ (function () {\n function PathOption(id, fill, width, color, opacity, dashArray, d) {\n this.id = id;\n this.opacity = opacity;\n this.fill = fill;\n this.stroke = color;\n this['stroke-width'] = width;\n this['stroke-dasharray'] = dashArray;\n this.d = d;\n }\n return PathOption;\n}());\nexport { PathOption };\n/**\n * Function to measure the height and width of the text.\n *\n * @param {string} text - Specifies the text.\n * @param {FontModel} font - Specifies the font.\n * @returns {Size} - Returns the size.\n * @private\n */\nexport function measureText(text, font) {\n var measureObject = document.getElementById('treeMapMeasureText');\n if (measureObject === null) {\n measureObject = createElement('text', { id: 'treeMapMeasureText' });\n document.body.appendChild(measureObject);\n }\n measureObject.innerHTML = SanitizeHtmlHelper.sanitize(text);\n measureObject.style.position = 'absolute';\n measureObject.style.fontSize = font.size;\n measureObject.style.fontWeight = font.fontWeight;\n measureObject.style.fontStyle = font.fontStyle;\n measureObject.style.fontFamily = font.fontFamily;\n measureObject.style.visibility = 'hidden';\n measureObject.style.top = '-100';\n measureObject.style.left = '0';\n measureObject.style.whiteSpace = 'nowrap';\n // For bootstrap line height issue\n measureObject.style.lineHeight = 'normal';\n return new Size(measureObject.clientWidth, measureObject.clientHeight);\n}\n/**\n * Internal use of text options\n *\n * @private\n */\nvar TextOption = /** @class */ (function () {\n function TextOption(id, x, y, anchor, text, transform, baseLine, connectorText) {\n if (transform === void 0) { transform = ''; }\n this.transform = '';\n this.baseLine = 'auto';\n this.id = id;\n this.text = text;\n this.transform = transform;\n this.anchor = anchor;\n this.x = x;\n this.y = y;\n this.baseLine = baseLine;\n this.connectorText = connectorText;\n }\n return TextOption;\n}());\nexport { TextOption };\n/**\n * Trim the title text\n *\n * @param {number} maxWidth - Specifies the maximum width\n * @param {string} text - Specifies the text\n * @param {FontModel} font - Specifies the font\n * @returns {string} - Returns the string\n * @private\n */\nexport function textTrim(maxWidth, text, font) {\n var label = text;\n var size = measureText(text, font).width;\n if (size > maxWidth) {\n var textLength = text.length;\n for (var i = textLength - 1; i >= 0; --i) {\n label = text.substring(0, i) + '...';\n size = measureText(label, font).width;\n if (size <= maxWidth || label.length < 4) {\n if (label.length < 4) {\n label = ' ';\n }\n return label;\n }\n }\n }\n return label;\n}\n/**\n * Specifies the location parameters.\n */\nvar Location = /** @class */ (function () {\n function Location(x, y) {\n this.x = x;\n this.y = y;\n }\n return Location;\n}());\nexport { Location };\n/**\n * Method to calculate x position of title\n *\n * @param {Rect} location - Specifies the location of text.\n * @param {Alignment} alignment - Specifies the alignment of the text.\n * @param {Size} textSize - Specifies the size of the text.\n * @param {type} type - Specifies whether the provided text is title or subtitle.\n * @returns {Location} - Returns the location of text.\n * @private\n */\nexport function findPosition(location, alignment, textSize, type) {\n var x;\n switch (alignment) {\n case 'Near':\n x = location.x;\n break;\n case 'Center':\n x = (type === 'title') ? (location.width / 2 - textSize.width / 2) :\n ((location.x + (location.width / 2)) - textSize.width / 2);\n break;\n case 'Far':\n x = (type === 'title') ? (location.width - location.y - textSize.width) :\n ((location.x + location.width) - textSize.width);\n break;\n }\n var y = (type === 'title') ? location.y + (textSize.height / 2) : ((location.y + location.height / 2) + textSize.height / 2);\n return new Location(x, y);\n}\n/**\n *\n * @param {SvgRenderer} renderer - Specifies the rendering element of the SVG.\n * @param {any} renderOptions - Specifies the settings of the text.\n * @param {string} text - Specifies the text.\n * @returns {HTMLElement} - Returns the HTML element for the text.\n */\nexport function createTextStyle(renderer, renderOptions, text) {\n var htmlObject = renderer.createText(renderOptions, text);\n htmlObject.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n htmlObject.style['user-select'] = 'none';\n htmlObject.style['-moz-user-select'] = 'none';\n htmlObject.style['-webkit-touch-callout'] = 'none';\n htmlObject.style['-webkit-user-select'] = 'none';\n htmlObject.style['-khtml-user-select'] = 'none';\n htmlObject.style['-ms-user-select'] = 'none';\n htmlObject.style['-o-user-select'] = 'none';\n return htmlObject;\n}\n/**\n * Internal rendering of text\n *\n * @param {TextOption} options - Specifies the text option\n * @param {FontModel} font - Specifies the font model\n * @param {string} color - Specifies the color\n * @param {HTMLElement | Element} parent - Specifies the parent element of the text\n * @param {boolean} isMinus - Specifies the boolean value\n * @returns {Element} - Returns the element\n * @private\n */\nexport function renderTextElement(options, font, color, parent, isMinus) {\n if (isMinus === void 0) { isMinus = false; }\n var renderOptions = {\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily,\n 'font-weight': font.fontWeight,\n 'text-anchor': options.anchor,\n 'transform': options.transform,\n 'opacity': font.opacity,\n 'dominant-baseline': options.baseLine,\n 'id': options.id,\n 'x': options.x,\n 'y': options.y,\n 'fill': color\n };\n var text = typeof options.text === 'string' ? options.text : isMinus ? options.text[options.text.length - 1] : options.text[0];\n var tspanElement;\n var renderer = new SvgRenderer('');\n var height;\n var htmlObject;\n var breadCrumbText = !isNullOrUndefined(text) && !isNullOrUndefined(options.connectorText) ?\n (text.search(options.connectorText[1]) >= 0) : false;\n if (breadCrumbText) {\n var drilledLabel = text;\n var spacing = 5;\n var drillLevelText = drilledLabel.split('#');\n for (var z = 0; z < drillLevelText.length; z++) {\n var drillText = (drillLevelText[z].search(options.connectorText) !== -1 &&\n !isNullOrUndefined(options.connectorText)) ?\n options.connectorText : drillLevelText[z];\n renderOptions['id'] = options.id + '_' + z;\n htmlObject = createTextStyle(renderer, renderOptions, drillText);\n if (z % 2 === 0 && z !== 0) {\n var re = /\\s+/g;\n drillText = drillText.replace(re, ' ');\n }\n var size = measureText(drillText, font);\n renderOptions['x'] = z !== 0 ? renderOptions['x'] + size.width : renderOptions['x'] + size.width + spacing;\n parent.appendChild(htmlObject);\n }\n }\n else {\n htmlObject = createTextStyle(renderer, renderOptions, text);\n parent.appendChild(htmlObject);\n }\n if (typeof options.text !== 'string' && options.text.length > 1) {\n for (var i = 1, len = options.text.length; i < len; i++) {\n height = (measureText(options.text[i], font).height);\n tspanElement = renderer.createTSpan({\n 'x': options.x, 'id': options.id,\n 'y': (options.y) + (i * height)\n }, options.text[i]);\n htmlObject.appendChild(tspanElement);\n }\n parent.appendChild(htmlObject);\n }\n return htmlObject;\n}\n/**\n *\n * @param {string} targetId - Specifies the id of the element to which template is to be appended.\n * @param {Element} targetElement - Specifies the element to which template is to be appended.\n * @param {string} contentItemTemplate - Specifies the content to be appended as template.\n * @returns {void}\n */\nexport function setItemTemplateContent(targetId, targetElement, contentItemTemplate) {\n var itemSelect = targetId.split('_RectPath')[0];\n var itemTemplate;\n if (targetId.indexOf('_LabelTemplate') > -1) {\n itemTemplate = targetElement;\n }\n else {\n itemTemplate = document.querySelector('#' + itemSelect + '_LabelTemplate');\n }\n if (!isNullOrUndefined(itemTemplate)) {\n itemTemplate.innerHTML = contentItemTemplate;\n }\n}\n/**\n *\n * @param {string} id - Specifies the id of the element.\n * @returns {Element} - Returns the element.\n */\nexport function getElement(id) {\n return document.getElementById(id);\n}\n/**\n *\n * @param {any} a - Specifies the first order of TreeMap leaf elements.\n * @param {any} b - Specifies the second order of TreeMap leaf elements.\n * @returns {number} - Returns the order of the TreeMap leaf element.\n */\nexport function itemsToOrder(a, b) {\n return a['weight'] === b['weight'] ? 0 : a['weight'] < b['weight'] ? 1 : -1;\n}\n/**\n *\n * @param {string[]} source - Specifies the data from the data source.\n * @param {string} pathName - Specifies the path name in the data source.\n * @param {any} processData - Specifies the data source object.\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @returns {boolean} - Specifies whether data is available in the data source or not.\n */\nexport function isContainsData(source, pathName, processData, treemap) {\n var isExist = false;\n var name = '';\n var path;\n var leaf = treemap.leafItemSettings;\n for (var i = 0; i < source.length; i++) {\n path = treemap.levels[i] ? treemap.levels[i].groupPath : leaf.labelPath ? leaf.labelPath :\n treemap.weightValuePath;\n var data = processData[path] || 'undefined';\n if (source[i] === data) {\n name += data + (i === source.length - 1 ? '' : '#');\n if (name === pathName) {\n isExist = true;\n break;\n }\n }\n }\n return isExist;\n}\n/**\n *\n * @param {any} data - Specifies the data to which the children elements to be found.\n * @returns {any} - Returns the children elements of the TreeMap leaf element.\n */\nexport function findChildren(data) {\n var children;\n if (data) {\n var keys = Object.keys(data);\n children = {};\n for (var i = 0; i < keys.length; i++) {\n if (data[keys[i]] instanceof Array) {\n children['values'] = data[keys[i]];\n children['key'] = keys[i];\n break;\n }\n }\n }\n return children;\n}\n/**\n *\n * @param {any} data - Specifies the data to which highlight must be done.\n * @param {items} items - Specifies the data source items.\n * @param {string} mode - Specifies the mode of highlight.\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @returns {string[]} - Returns the highlighted items.\n */\nexport function findHightLightItems(data, items, mode, treeMap) {\n if (mode === 'Child') {\n items.push(data['levelOrderName']);\n var children = findChildren(data)['values'];\n if (children && children.length > 0) {\n for (var i = 0; i < children.length; i++) {\n if (items.indexOf(children[i]['levelOrderName']) === -1) {\n items.push(children[i]['levelOrderName']);\n }\n }\n for (var j = 0; j < children.length; j++) {\n findHightLightItems(children[j], items, mode, treeMap);\n }\n }\n }\n else if (mode === 'Parent') {\n if (typeof data['levelOrderName'] === 'string' && items.indexOf(data['levelOrderName']) === -1) {\n items.push(data['levelOrderName']);\n findHightLightItems(data['parent'], items, mode, treeMap);\n }\n }\n else if (mode === 'All') {\n var parentName = data['levelOrderName'].split('#')[0];\n var currentItem = void 0;\n for (var i = 0; i < treeMap.layout.renderItems.length; i++) {\n currentItem = treeMap.layout.renderItems[i];\n if ((currentItem['levelOrderName']).indexOf(parentName) > -1 && items.indexOf(currentItem['levelOrderName']) === -1) {\n items.push(currentItem['levelOrderName']);\n }\n }\n }\n else {\n items.push(data['levelOrderName']);\n }\n return items;\n}\n/**\n * Function to compile the template function for maps.\n *\n * @param {string} template - Specifies the template\n * @returns {Function} - Returns the template function\n * @private\n */\nexport function getTemplateFunction(template) {\n var templateFn = null;\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n templateFn = compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n templateFn = compile(template);\n }\n }\n catch (e) {\n templateFn = compile(template);\n }\n return templateFn;\n}\n/**\n * @private\n * @param {HTMLCollection} element - Specifies the element\n * @param {string} labelId - Specifies the label id\n * @param {Object} data - Specifies the data\n * @returns {HTMLElement} - Returns the element\n */\nexport function convertElement(element, labelId, data) {\n var childElement = createElement('div', {\n id: labelId\n });\n childElement.style.cssText = 'position: absolute;pointer-events: auto;';\n var elementLength = element.length;\n while (elementLength > 0) {\n childElement.appendChild(element[0]);\n elementLength--;\n }\n var templateHtml = childElement.innerHTML;\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n var regExp = RegExp;\n templateHtml = templateHtml.replace(new regExp('{{:' + keys[i] + '}}', 'g'), data[keys[i].toString()]);\n }\n childElement.innerHTML = templateHtml;\n return childElement;\n}\n/**\n *\n * @param {Rect} rect - Specifies the area.\n * @param {LabelPosition} position - Specifies the position\n * @param {Size} labelSize - Specifies the label size.\n * @param {string} type - Specifies the type.\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @returns {Location} - Returns the text location.\n */\nexport function findLabelLocation(rect, position, labelSize, type, treemap) {\n var location = new Location(0, 0);\n var padding = 5;\n var paddings = 2;\n var x = (type === 'Template') ? treemap.areaRect.x : 0;\n var y = (type === 'Template') ? treemap.areaRect.y : 0;\n location.x = (Math.abs(x - ((position.indexOf('Left') > -1) ? rect.x + padding : !(position.indexOf('Right') > -1) ?\n rect.x + ((rect.width / 2) - (labelSize.width / 2)) : (rect.x + rect.width) - labelSize.width))) - paddings;\n if (treemap.enableDrillDown && (treemap.renderDirection === 'BottomLeftTopRight'\n || treemap.renderDirection === 'BottomRightTopLeft')) {\n location.y = Math.abs((rect.y + rect.height) - labelSize.height + padding);\n }\n else {\n location.y = Math.abs(y - ((position.indexOf('Top') > -1) ? (type === 'Template' ? rect.y : rect.y + labelSize.height) :\n !(position.indexOf('Bottom') > -1) ? type === 'Template' ? (rect.y + ((rect.height / 2) - (labelSize.height / 2))) :\n (rect.y + (rect.height / 2) + labelSize.height / 4) : (rect.y + rect.height) - labelSize.height));\n }\n return location;\n}\n/**\n *\n * @param {HTMLElement} element - Specifies the element to be measured.\n * @param {HTMLElement} parentElement - Specifies the parent element of the element to be measured.\n * @returns {Size} - Returns the element size.\n */\nexport function measureElement(element, parentElement) {\n var size = new Size(0, 0);\n parentElement.appendChild(element);\n size.height = element.offsetHeight;\n size.width = element.offsetWidth;\n var measureElementId = document.getElementById(element.id);\n measureElementId.parentNode.removeChild(measureElementId);\n return size;\n}\n/**\n *\n * @param {Rect} rect - Specifies the area.\n * @returns {number} - Returns the area width.\n */\nexport function getArea(rect) {\n return (rect.width - rect.x) * (rect.height - rect.y);\n}\n/**\n *\n * @param {Rect} input - Specifies input for the calculation.\n * @returns {number} - Returns the shortest edge.\n */\nexport function getShortestEdge(input) {\n var container = convertToContainer(input);\n var width = container.width;\n var height = container.height;\n var result = Math.min(width, height);\n return result;\n}\n/**\n *\n * @param {Rect} rect - Specifies the rectangle bounds of the container.\n * @returns {Rect} - Returns the rectangle bounds.\n */\nexport function convertToContainer(rect) {\n var x = rect.x;\n var y = rect.y;\n var width = rect.width;\n var height = rect.height;\n return {\n x: x,\n y: y,\n width: width - x,\n height: height - y\n };\n}\n/**\n *\n * @param {Rect} container - Specifies the rectangle bounds of the container.\n * @returns {Rect} - Returns the rectangle bounds.\n */\nexport function convertToRect(container) {\n var xOffset = container.x;\n var yOffset = container.y;\n var width = container.width;\n var height = container.height;\n return {\n x: xOffset,\n y: yOffset,\n width: xOffset + width,\n height: yOffset + height\n };\n}\n/**\n *\n * @param {number} pageX - Specifies the horizontal position of the mouse location.\n * @param {number} pageY - Specifies the vertical position of the mouse location.\n * @param {Element} element - Specifies the element to which the click is done.\n * @returns {Location} - Returns the clicked location.\n */\nexport function getMousePosition(pageX, pageY, element) {\n var elementRect = element.getBoundingClientRect();\n var pageXOffset = element.ownerDocument.defaultView.pageXOffset;\n var pageYOffset = element.ownerDocument.defaultView.pageYOffset;\n var clientTop = element.ownerDocument.documentElement.clientTop;\n var clientLeft = element.ownerDocument.documentElement.clientLeft;\n var positionX = elementRect.left + pageXOffset - clientLeft;\n var positionY = elementRect.top + pageYOffset - clientTop;\n return new Location((pageX - positionX), (pageY - positionY));\n}\n/**\n *\n * @param {ColorMappingModel[]} colorMapping - Specifies the color mapping instance.\n * @param {string} equalValue - Specifies the equal value.\n * @param {number | string} value - Specifies the range value.\n * @returns {any} - Returns the color mapping object.\n * @private\n */\nexport function colorMap(colorMapping, equalValue, value) {\n var fill;\n var paths = [];\n var opacity;\n if (isNullOrUndefined(equalValue) && (isNullOrUndefined(value) && isNaN(value))) {\n return null;\n }\n for (var i = 0; i < colorMapping.length; i++) {\n var isEqualColor = false;\n var dataValue = value;\n if (!isNullOrUndefined(colorMapping[i].from) && !isNullOrUndefined(colorMapping[i].to)\n && !isNullOrUndefined(colorMapping[i].value)) {\n if ((value >= colorMapping[i].from && colorMapping[i].to >= value) &&\n (colorMapping[i].value === equalValue)) {\n isEqualColor = true;\n if (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') {\n fill = !isEqualColor ? colorCollections(colorMapping[i], dataValue) : colorMapping[i].color[0];\n }\n else {\n fill = colorMapping[i].color;\n }\n }\n }\n else if ((!isNullOrUndefined(colorMapping[i].from) && !isNullOrUndefined(colorMapping[i].to))\n || !isNullOrUndefined((colorMapping[i].value))) {\n if ((value >= colorMapping[i].from && colorMapping[i].to >= value)\n || (colorMapping[i].value === equalValue)) {\n if (colorMapping[i].value === equalValue) {\n isEqualColor = true;\n }\n if (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') {\n fill = !isEqualColor ? colorCollections(colorMapping[i], dataValue) : colorMapping[i].color[0];\n }\n else {\n fill = colorMapping[i].color;\n }\n }\n }\n if (((value >= colorMapping[i].from && value <= colorMapping[i].to)\n || (colorMapping[i].value === equalValue))\n && !isNullOrUndefined(colorMapping[i].minOpacity) && !isNullOrUndefined(colorMapping[i].maxOpacity)\n && fill) {\n opacity = deSaturationColor(colorMapping[i], value);\n }\n if ((fill === '' || isNullOrUndefined(fill))\n && isNullOrUndefined(colorMapping[i].from) && isNullOrUndefined(colorMapping[i].to)\n && isNullOrUndefined(colorMapping[i].minOpacity) && isNullOrUndefined(colorMapping[i].maxOpacity)\n && isNullOrUndefined(colorMapping[i].value)) {\n fill = (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') ?\n colorMapping[i].color[0] : colorMapping[i].color;\n }\n opacity = !isNullOrUndefined(opacity) ? opacity : '1';\n paths.push(fill);\n }\n for (var j = paths.length - 1; j >= 0; j--) {\n fill = paths[j];\n j = (fill) ? -1 : j;\n }\n return { fill: fill, opacity: opacity };\n}\n/**\n *\n * @param {ColorMappingModel} colorMapping - Specifies the color mapping object.\n * @param {number} rangeValue - Specifies the range value.\n * @returns {string} - Returns the opacity for the color mapping.\n * @private\n */\nexport function deSaturationColor(colorMapping, rangeValue) {\n var opacity = 1;\n if ((rangeValue >= colorMapping.from && rangeValue <= colorMapping.to)) {\n var ratio = (rangeValue - colorMapping.from) / (colorMapping.to - colorMapping.from);\n opacity = (ratio * (colorMapping.maxOpacity - colorMapping.minOpacity)) + colorMapping.minOpacity;\n }\n return opacity.toString();\n}\n/**\n *\n * @param {ColorMappingModel} colorMap - Specifies the color mapping object.\n * @param {number} value - Specifies the range value.\n * @returns {string} - Returns the fill color.\n */\nexport function colorCollections(colorMap, value) {\n var gradientFill = getColorByValue(colorMap, value);\n return gradientFill;\n}\n/**\n *\n * @param {number} r - Specifies the red color value.\n * @param {number} g - Specifies the green color value.\n * @param {number} b - Specifies the blue color value.\n * @returns {string} - Returns the fill color.\n */\nexport function rgbToHex(r, g, b) {\n return '#' + componentToHex(r) + componentToHex(g) + componentToHex(b);\n}\n/**\n *\n * @param {ColorMappingModel} colorMap - Specifies the color mapping.\n * @param {number} value - Specifies the range value.\n * @returns {string} - Returns the fill color.\n */\nexport function getColorByValue(colorMap, value) {\n var color = '';\n var rbg;\n if (Number(value) === colorMap.from) {\n color = colorMap.color[0];\n }\n else if (Number(value) === colorMap.to) {\n color = colorMap.color[colorMap.color.length - 1];\n }\n else {\n rbg = getGradientColor(Number(value), colorMap);\n color = rgbToHex(rbg.r, rbg.g, rbg.b);\n }\n return color;\n}\n/**\n *\n * @param {number} value - Specifies the range value.\n * @param {ColorMappingModel} colorMap - Specifies the color mapping.\n * @returns {ColorValue} - Returns the color value object.\n */\nexport function getGradientColor(value, colorMap) {\n var previousOffset = colorMap.from;\n var nextOffset = colorMap.to;\n var percent = 0;\n var full = nextOffset - previousOffset;\n var midColor;\n percent = (value - previousOffset) / full;\n var previousColor;\n var nextColor;\n if (colorMap.color.length <= 2) {\n previousColor = colorMap.color[0].charAt(0) === '#' ? colorMap.color[0] : colorNameToHex(colorMap.color[0]);\n nextColor = colorMap.color[colorMap.color.length - 1].charAt(0) === '#' ?\n colorMap.color[colorMap.color.length - 1] : colorNameToHex(colorMap.color[colorMap.color.length - 1]);\n }\n else {\n previousColor = colorMap.color[0].charAt(0) === '#' ? colorMap.color[0] : colorNameToHex(colorMap.color[0]);\n nextColor = colorMap.color[colorMap.color.length - 1].charAt(0) === '#' ?\n colorMap.color[colorMap.color.length - 1] : colorNameToHex(colorMap.color[colorMap.color.length - 1]);\n var a = full / (colorMap.color.length - 1);\n var b = void 0;\n var c = void 0;\n var length_1 = colorMap.color.length - 1;\n var splitColorValueOffset = [];\n var splitColor = {};\n for (var j = 1; j < length_1; j++) {\n c = j * a;\n b = previousOffset + c;\n splitColor = { b: b, color: colorMap.color[j] };\n splitColorValueOffset.push(splitColor);\n }\n for (var i = 0; i < splitColorValueOffset.length; i++) {\n if (previousOffset <= value && value <= splitColorValueOffset[i]['b'] && i === 0) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n nextColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ? 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a)\n : (value - splitColorValueOffset[i]['b']) / a;\n }\n else if (splitColorValueOffset[i]['b'] <= value && value <= nextOffset && i === (splitColorValueOffset.length - 1)) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ?\n 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a) : (value - splitColorValueOffset[i]['b']) / a;\n }\n if (i !== splitColorValueOffset.length - 1 && i < splitColorValueOffset.length) {\n if (splitColorValueOffset[i]['b'] <= value && value <= splitColorValueOffset[i + 1]['b']) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n nextColor = splitColorValueOffset[i + 1]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i + 1]['color'] : colorNameToHex(splitColorValueOffset[i + 1]['color']);\n percent = Math.abs((value - splitColorValueOffset[i + 1]['b'])) / a;\n }\n }\n }\n }\n return getPercentageColor(percent, previousColor, nextColor);\n}\n/**\n *\n * @param {number} percent - Specifies the percentage of the color.\n * @param {number} previous - Specifies the previous color.\n * @param {number} next - Specifies the next color.\n * @returns {ColorValue} - Returns the color value object.\n */\nexport function getPercentageColor(percent, previous, next) {\n var nextColor = next.split('#')[1];\n var prevColor = previous.split('#')[1];\n var r = getPercentage(percent, parseInt(prevColor.substr(0, 2), 16), parseInt(nextColor.substr(0, 2), 16));\n var g = getPercentage(percent, parseInt(prevColor.substr(2, 2), 16), parseInt(nextColor.substr(2, 2), 16));\n var b = getPercentage(percent, parseInt(prevColor.substr(4, 2), 16), parseInt(nextColor.substr(4, 2), 16));\n return new ColorValue(r, g, b);\n}\n/**\n *\n * @param {number} percent - Specifies the percentage of the color.\n * @param {number} previous - Specifies the previous color.\n * @param {number} next - Specifies the next color.\n * @returns {number} - Returns the color value.\n */\nexport function getPercentage(percent, previous, next) {\n var full = next - previous;\n return Math.round((previous + (full * percent)));\n}\n/**\n *\n * @param {number} maximumWidth - Specifies the length of the text.\n * @param {string} dataLabel - Specifies the label.\n * @param {FontModel} font - Specifies the font of the label.\n * @returns {string[]} - Returns the labels.\n */\nexport function wordWrap(maximumWidth, dataLabel, font) {\n var textCollection = dataLabel.split(' ');\n var label = '';\n var labelCollection = [];\n var text;\n for (var i = 0, len = textCollection.length; i < len; i++) {\n text = textCollection[i];\n if (measureText(label.concat(text), font).width < maximumWidth) {\n label = label.concat((label === '' ? '' : ' ') + text);\n }\n else {\n if (label !== '') {\n labelCollection.push(textTrim(maximumWidth, label, font));\n label = text;\n }\n else {\n labelCollection.push(textTrim(maximumWidth, text, font));\n text = '';\n }\n }\n if (label && i === len - 1) {\n labelCollection.push(textTrim(maximumWidth, label, font));\n }\n }\n return labelCollection;\n}\n/**\n *\n * @param {number} maxWidth - Specifies the length of the text.\n * @param {string} label - Specifies the label.\n * @param {FontModel} font - Specifies the font of the label.\n * @returns {string[]} - Returns the labels.\n */\nexport function textWrap(maxWidth, label, font) {\n var resultText = [];\n var currentLength = 0;\n var totalWidth = measureText(label, font).width;\n var totalLength = label.length;\n if (maxWidth >= totalWidth) {\n resultText.push(label);\n return resultText;\n }\n else {\n for (var i = label.length; i > currentLength; i--) {\n var sliceString = label.slice(currentLength, i);\n totalWidth = measureText(sliceString, font).width;\n if (totalWidth <= maxWidth) {\n resultText.push(sliceString);\n currentLength += sliceString.length;\n if (totalLength === currentLength) {\n return resultText;\n }\n i = totalLength + 1;\n }\n }\n }\n return resultText;\n}\n/**\n * hide function\n *\n * @param {number} maxWidth - Specifies the maximum width.\n * @param {number} maxHeight - Specifies the maximum height.\n * @param {string} text - Specifies the text.\n * @param {FontModel} font - Specifies the font.\n * @returns {string} - Returns the hidden text.\n * @private\n */\nexport function hide(maxWidth, maxHeight, text, font) {\n var hideText = text;\n var textSize = measureText(text, font);\n hideText = (textSize.width > maxWidth || textSize.height > maxHeight) ? ' ' : text;\n return hideText;\n}\n/**\n *\n * @param {number} a - Specifies the first value of the leaf.\n * @param {number} b - Specifies the second value of the leaf.\n * @returns {number} - Returns whether values are equal or not.\n */\nexport function orderByArea(a, b) {\n if (a['itemArea'] === b['itemArea']) {\n return 0;\n }\n else if (a['itemArea'] < b['itemArea']) {\n return 1;\n }\n return -1;\n}\n/**\n *\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @param {Element} element - Specifies the selected TreeMap leaf item.\n * @param {string} className -Specifies the selected class name.\n * @returns {void}\n */\nexport function maintainSelection(treemap, element, className) {\n var elementId = treemap.levelSelection;\n if (elementId) {\n for (var index = 0; index < elementId.length; index++) {\n if (element.getAttribute('id') === elementId[index]) {\n if (element.childElementCount > 0) {\n element.children[0].setAttribute('class', className);\n applyOptions(element.childNodes[0], {\n border: treemap.selectionSettings.border, fill: treemap.selectionSettings.fill,\n opacity: treemap.selectionSettings.opacity\n });\n }\n }\n else {\n element.setAttribute('class', '');\n }\n }\n }\n}\n/**\n *\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @param {Element} legendGroup - Specifies the selected element.\n * @returns {void}\n */\nexport function legendMaintain(treemap, legendGroup) {\n var elementId = treemap.legendId;\n if (elementId) {\n for (var i = 0; i < elementId.length; i++) {\n for (var j = 0; j < legendGroup.childElementCount; j++) {\n if (legendGroup.childNodes[j]['id'] === elementId[i]) {\n var treemapSVGRectElement = legendGroup.childNodes[j];\n treemapSVGRectElement.setAttribute('fill', treemap.selectionSettings.fill);\n treemapSVGRectElement.setAttribute('stroke', treemap.selectionSettings.border.color);\n treemapSVGRectElement.setAttribute('stroke-width', (treemap.selectionSettings.border.width).toString());\n treemapSVGRectElement.setAttribute('opacity', treemap.selectionSettings.opacity);\n }\n }\n }\n }\n}\n/**\n *\n * @param {HTMLCollection} elements - Specifies the selected TreeMap element.\n * @param {string} type - Specifies the selection type.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {void}\n */\nexport function removeClassNames(elements, type, treemap) {\n var element;\n var options = {};\n for (var j = 0; j < elements.length; j++) {\n element = isNullOrUndefined(elements[j].childNodes[0]) ? elements[j] :\n elements[j].childNodes[0];\n options = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])]['options'];\n applyOptions(element, options);\n elements[j].classList.remove(type);\n j -= 1;\n }\n}\n/**\n *\n * @param {SVGPathElement} element - Specifies the SVG path element.\n * @param {any} options - Specifies the settings for the SVG path element.\n * @returns {void}\n */\nexport function applyOptions(element, options) {\n element.setAttribute('opacity', options['opacity']);\n if (!isNullOrUndefined(options['fill'])) {\n element.setAttribute('fill', options['fill']);\n }\n element.setAttribute('stroke', options['border']['color']);\n element.setAttribute('stroke-width', options['border']['width']);\n}\n/**\n *\n * @param {string} format - Specifies the format value.\n * @param {any} data - Specifies the data source object.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {string} - Returns the formatted text.\n */\nexport function textFormatter(format, data, treemap) {\n if (isNullOrUndefined(format)) {\n return null;\n }\n var keys = Object.keys(data);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n format = format.split('${' + key + '}').join(formatValue(data[key], treemap).toString());\n }\n return format;\n}\n/**\n *\n * @param {number} value - Specifies the text to be formatted.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {string | number} - Returns the formatted text.\n */\nexport function formatValue(value, treemap) {\n var formatValue;\n var formatFunction;\n if (treemap.format && !isNaN(Number(value))) {\n formatFunction = treemap.intl.getNumberFormat({ format: treemap.format, useGrouping: treemap.useGroupingSeparator });\n formatValue = formatFunction(Number(value));\n }\n else {\n formatValue = value;\n }\n return formatValue ? formatValue : '';\n}\n/**\n * @private\n */\nvar ColorValue = /** @class */ (function () {\n function ColorValue(r, g, b) {\n this.r = r;\n this.g = g;\n this.b = b;\n }\n return ColorValue;\n}());\nexport { ColorValue };\n/**\n * @param {ColorValue} value - Specfies the color value\n * @returns {string} - Returns the string\n * @private\n */\nexport function convertToHexCode(value) {\n return '#' + componentToHex(value.r) + componentToHex(value.g) + componentToHex(value.b);\n}\n/**\n * @param {number} value - Specifies the value\n * @returns {string} - Returns the string\n * @private */\nexport function componentToHex(value) {\n var hex = value.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n}\n/**\n * @param {string} hex - Specifies the hex value\n * @returns {ColorValue} - Returns the color value\n * @private\n */\nexport function convertHexToColor(hex) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? new ColorValue(parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)) :\n new ColorValue(255, 255, 255);\n}\n/**\n * @param {string} color - Specifies the color\n * @returns {string} - Returns the string\n * @private\n */\nexport function colorNameToHex(color) {\n color = color === 'transparent' ? 'white' : color;\n var element = document.getElementById('treeMapMeasureText');\n element.style.color = color;\n color = window.getComputedStyle(element).color;\n var isRGBValue = color.replace(/[()RGBrgba ]/g, '').split(',');\n return convertToHexCode(new ColorValue(parseInt(isRGBValue[0], 10), parseInt(isRGBValue[1], 10), parseInt(isRGBValue[2], 10)));\n}\n/**\n * @param {Location} location - Specifies the location\n * @param {string} shape - Specifies the shape\n * @param {Size} size - Specifies the size\n * @param {string} url - Specifies the url\n * @param {PathOption} options - Specifies the options\n * @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 svgRenderer = new SvgRenderer('');\n var temp = renderLegendShape(location, size, shape, options, url);\n var htmlElement = svgRenderer['draw' + temp.functionName](temp.renderOption);\n return htmlElement;\n}\n/**\n * @param {Location} location - Specifies the location\n * @param {Size} size - Specifies the size\n * @param {string} shape - Specifies the shape\n * @param {PathOption} options - Specifies the path option\n * @param {string} url - Specifies the string\n * @returns {IShapes} - Returns the shapes\n * @private\n */\nexport function renderLegendShape(location, size, shape, options, url) {\n var renderPath;\n var functionName = 'Path';\n var shapeWidth = size.width;\n var shapeHeight = size.height;\n var shapeX = location.x;\n var shapeY = location.y;\n var x = location.x + (-shapeWidth / 2);\n var y = location.y + (-shapeHeight / 2);\n switch (shape) {\n case 'Circle':\n case 'Bubble':\n functionName = 'Ellipse';\n merge(options, { 'rx': shapeWidth / 2, 'ry': shapeHeight / 2, 'cx': shapeX, 'cy': shapeY });\n break;\n case 'VerticalLine':\n renderPath = 'M' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' + 'L' + ' ' + shapeX + ' '\n + (shapeY + (-shapeHeight / 2));\n merge(options, { 'd': renderPath });\n break;\n case 'Diamond':\n renderPath = 'M' + ' ' + x + ' ' + shapeY + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + shapeY + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + shapeY + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Rectangle':\n renderPath = 'M' + ' ' + x + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (-shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Triangle':\n renderPath = 'M' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'InvertedTriangle':\n renderPath = 'M' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX - (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Pentagon':\n // eslint-disable-next-line no-case-declarations\n var eq = 72;\n // eslint-disable-next-line no-case-declarations\n var xValue = void 0;\n // eslint-disable-next-line no-case-declarations\n var yValue = void 0;\n for (var i = 0; i <= 5; i++) {\n xValue = (shapeWidth / 2) * Math.cos((Math.PI / 180) * (i * eq));\n yValue = (shapeWidth / 2) * Math.sin((Math.PI / 180) * (i * eq));\n if (i === 0) {\n renderPath = 'M' + ' ' + (shapeX + xValue) + ' ' + (shapeY + yValue) + ' ';\n }\n else {\n renderPath = renderPath.concat('L' + ' ' + (shapeX + xValue) + ' ' + (shapeY + yValue) + ' ');\n }\n }\n renderPath = renderPath.concat('Z');\n merge(options, { 'd': renderPath });\n break;\n case 'Star':\n renderPath = 'M ' + (location.x + size.width / 3) + ' ' + (location.y - size.height / 2) + ' L ' + (location.x - size.width / 2)\n + ' ' + (location.y + size.height / 6) + ' L ' + (location.x + size.width / 2) + ' ' + (location.y + size.height / 6)\n + ' L ' + (location.x - size.width / 3) + ' ' + (location.y - size.height / 2) + ' L ' + location.x + ' ' +\n (location.y + size.height / 2) + ' L ' + (location.x + size.width / 3) + ' ' + (location.y - size.height / 2) + ' Z';\n merge(options, { 'd': renderPath });\n break;\n case 'Cross':\n renderPath = 'M' + ' ' + x + ' ' + shapeY + ' ' + 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + shapeY + ' ' +\n 'M' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' + 'L' + ' ' + shapeX + ' ' +\n (shapeY + (-shapeHeight / 2));\n merge(options, { 'd': renderPath });\n break;\n case 'Image':\n functionName = 'Image';\n merge(options, { 'href': url, 'height': shapeHeight, 'width': shapeWidth, x: x, y: y });\n break;\n }\n return { renderOption: options, functionName: functionName };\n}\n/**\n *\n * @param {any} data - Specifies the data source object.\n * @param {any} item - Specifies the leaf item.\n * @returns {boolean} - Returns whether the TreeMap item is level item or leaf item.\n */\nexport function isParentItem(data, item) {\n var isParentItem = false;\n for (var j = 0; j < data.length; j++) {\n if (item['levelOrderName'] === data[j]['levelOrderName']) {\n isParentItem = true;\n break;\n }\n }\n return isParentItem;\n}\n/**\n * Specifies the data to be received through Ajax request for treemap.\n */\nvar TreeMapAjax = /** @class */ (function () {\n function TreeMapAjax(options, type, async, contentType, sendData) {\n this.dataOptions = options;\n this.type = type || 'GET';\n this.async = async || true;\n this.contentType = contentType;\n this.sendData = sendData;\n }\n return TreeMapAjax;\n}());\nexport { TreeMapAjax };\n/**\n *\n * @param {any[]} collection - Specifies the legend collection.\n * @returns {void}\n * @private\n */\nexport function removeShape(collection) {\n if (collection.length > 0) {\n for (var i = 0; i < collection.length; i++) {\n var item = collection[i];\n setColor(item['legendEle'], item['oldFill'], item['oldOpacity'], item['oldBorderColor'], item['oldBorderWidth']);\n }\n }\n}\n/**\n *\n * @param {any[]} collection - Specifies the legend collection.\n * @returns {void}\n * @private\n */\nexport function removeLegend(collection) {\n if (collection.length > 0) {\n for (var j = 0; j < collection.length; j++) {\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}\n/**\n *\n * @param {Element} element - Specifies the selected element.\n * @param {string} fill - Specifies the fill color.\n * @param {string} opacity - Specifies the opacity.\n * @param {string} borderColor - Specifies the border color.\n * @param {string} borderWidth - Specifies the border width.\n * @returns {void}\n */\nexport function setColor(element, fill, opacity, borderColor, borderWidth) {\n element.setAttribute('fill', fill);\n element.setAttribute('opacity', opacity);\n element.setAttribute('stroke', borderColor);\n element.setAttribute('stroke-width', borderWidth);\n}\n/**\n *\n * @param {any[]} collection - Specifies the selected item collection.\n * @param {any[]} element - Specifies the selected element collection.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {void}\n */\nexport function removeSelectionWithHighlight(collection, element, treemap) {\n removeShape(collection);\n element = [];\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n}\n/**\n *\n * @param {number} length - Specifies the length of the legend group.\n * @param {any} item - Specifies the legend item.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {number} - Returns the legend index.\n */\nexport function getLegendIndex(length, item, treemap) {\n 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}\n/**\n *\n * @param {any[]} collection - Specifies the legend collection.\n * @param {number} index - Specifies the index of legend.\n * @param {number} number - Specifies the leaf item index.\n * @param {Element} legendElement - Specifies the legend element.\n * @param {Element} shapeElement - Specifies the shape element.\n * @param {any[]} renderItems - Specifies the item index.\n * @param {any[]} legendCollection - Specifies the legend collection.\n * @returns {void}\n */\nexport function pushCollection(collection, index, number, legendElement, shapeElement, renderItems, legendCollection) {\n collection.push({\n legendEle: legendElement, oldFill: legendCollection[index]['legendFill'],\n oldOpacity: legendCollection[index]['opacity'], oldBorderColor: legendCollection[index]['borderColor'],\n oldBorderWidth: legendCollection[index]['borderWidth'],\n shapeElement: shapeElement, shapeOldFill: renderItems[number]['options']['fill'],\n shapeOldOpacity: renderItems[number]['options']['opacity'],\n shapeOldBorderColor: renderItems[number]['options']['border']['color'],\n shapeOldBorderWidth: renderItems[number]['options']['border']['width']\n });\n}\n/**\n * To trigger the download element\n *\n * @param {string} fileName - Specifies the file name\n * @param {ExportType} type - Specifies the type\n * @param {string} url - Specifies the url\n * @param {boolean} isDownload - Specifies the boolean value\n * @returns {void}\n * @private\n */\nexport function triggerDownload(fileName, type, url, isDownload) {\n createElement('a', {\n attrs: {\n 'download': fileName + '.' + type.toLocaleLowerCase(),\n 'href': url\n }\n }).dispatchEvent(new MouseEvent(isDownload ? 'click' : 'move', {\n view: window,\n bubbles: false,\n cancelable: true\n }));\n}\n/**\n *\n * @param {string} id - Specifies the id of the element to be removed.\n * @returns {void}\n */\nexport function removeElement(id) {\n var element = document.getElementById(id);\n return element ? remove(element) : null;\n}\n","/**\n * Maps Themes doc\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Theme;\n(function (Theme) {\n /**\n * @private\n */\n Theme.mapsTitleFont = {\n size: '14px',\n fontWeight: 'Medium',\n color: '#424242',\n fontStyle: 'Medium',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n})(Theme || (Theme = {}));\n/**\n * To get the theme style based on treemap theme.\n *\n * @param {TreeMapTheme} theme Specifies the theme of the treemap control.\n * @returns {IThemeStyle} Returns the theme.\n * @private\n */\nexport function getThemeStyle(theme) {\n var style;\n var color;\n switch (theme.toLowerCase()) {\n case 'materialdark':\n color = '#303030';\n break;\n case 'fabricdark':\n color = '#201F1F';\n break;\n case 'bootstrapdark':\n color = '#1A1A1A';\n break;\n }\n switch (theme.toLowerCase()) {\n case 'bootstrapdark':\n case 'fabricdark':\n case 'materialdark':\n style = {\n backgroundColor: color,\n titleFontColor: '#FFFFFF',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n tooltipFontSize: '13px',\n legendTitleColor: '#DADADA',\n legendTextColor: '#DADADA',\n fontSize: '15px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n break;\n case 'highcontrast':\n style = {\n backgroundColor: '#000000',\n titleFontColor: '#FFFFFF',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n tooltipFontSize: '13px',\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontSize: '15px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n break;\n case 'bootstrap4':\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#212529',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#212529',\n tooltipFillColor: '#000000',\n tooltipFontColor: '#FFFFFF',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 0.9,\n legendTitleColor: '#212529',\n legendTextColor: '#212529',\n fontFamily: 'HelveticaNeue-Medium',\n fontSize: '16px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'HelveticaNeue'\n };\n break;\n case 'tailwind':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#374151',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#374151',\n tooltipFillColor: '#111827',\n tooltipFontColor: '#F9FAFB',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#374151',\n legendTextColor: '#374151',\n fontFamily: 'Inter',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter'\n };\n break;\n case 'tailwinddark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#D1D5DB',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#D1D5DB',\n tooltipFillColor: '#F9FAFB',\n tooltipFontColor: '#1F2937',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#D1D5DB',\n legendTextColor: '#D1D5DB',\n fontFamily: 'Inter',\n fontWeight: 'Normal',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter'\n };\n break;\n case 'bootstrap5':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#212529',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#212529',\n tooltipFillColor: '#212529',\n tooltipFontColor: '#F9FAFB',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#212529',\n legendTextColor: '#212529',\n fontFamily: 'Helvetica Neue',\n fontSize: '14px',\n fontWeight: 'Normal',\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 titleFontWeight: 'Normal',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#E9ECEF',\n tooltipFontColor: '#212529',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontFamily: 'Helvetica Neue',\n fontSize: '14px',\n fontWeight: 'Normal',\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 titleFontWeight: 'Normal',\n subTitleFontColor: '#201F1E',\n tooltipFillColor: '#FFFFFF',\n tooltipFontColor: '#323130',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#201F1E',\n legendTextColor: '#201F1E',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI'\n };\n break;\n case 'fluentdark':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#F3F2F1',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#F3F2F1',\n tooltipFillColor: '#252423',\n tooltipFontColor: '#F3F2F1',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#F3F2F1',\n legendTextColor: '#F3F2F1',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI'\n };\n break;\n case 'material3':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#1C1B1F',\n titleFontWeight: '500',\n subTitleFontColor: '#1C1B1F',\n tooltipFillColor: '#313033',\n tooltipFontColor: '#F4EFF4',\n tooltipFontSize: '14px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#1C1B1F',\n legendTextColor: '#49454E',\n fontFamily: 'Roboto',\n fontSize: '16px',\n fontWeight: '400',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'Roboto'\n };\n break;\n case 'material3dark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#E6E1E5',\n titleFontWeight: '500',\n subTitleFontColor: '#E6E1E5',\n tooltipFillColor: '#E6E1E5',\n tooltipFontColor: '#313033',\n tooltipFontSize: '14px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#E6E1E5',\n legendTextColor: '#CAC4D0',\n fontFamily: 'Roboto',\n fontSize: '16px',\n fontWeight: '400',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'Roboto'\n };\n break;\n default:\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#424242',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#424242',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n tooltipFontSize: '13px',\n legendTitleColor: '#353535',\n legendTextColor: '#353535',\n fontSize: '15px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n break;\n }\n return style;\n}\n","/**\n * TreeMap constants doc\n */\n/**\n * Triggers when the treemap is on load.\n *\n * @private\n */\nexport var load = 'load';\n/**\n * Triggers after treemap rendered.\n *\n * @private\n */\nexport var loaded = 'loaded';\n/**\n * Trigger before call the print method.\n *\n * @private\n */\nexport var beforePrint = 'beforePrint';\n/**\n * Trigger before each treemap item rendered.\n *\n * @private\n */\nexport var itemRendering = 'itemRendering';\n/**\n * Trigger after click on treemap item.\n *\n * @private\n */\nexport var drillStart = 'drillStart';\n/**\n * Trigger after drill start event completed.\n *\n * @private\n */\nexport var drillEnd = 'drillEnd';\n/**\n * Trigger after select the treemap item.\n *\n * @private\n */\nexport var itemSelected = 'itemSelected';\n/**\n * Trigger after hover on the treemap item.\n *\n * @private\n */\nexport var itemHighlight = 'itemHighlight';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport var tooltipRendering = 'tooltipRendering';\n/**\n * Trigger after click on the treemap item.\n *\n * @private\n */\nexport var itemClick = 'itemClick';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport var itemMove = 'itemMove';\n/**\n * Trigger after click on the treemap item.\n *\n * @private\n */\nexport var click = 'click';\n/**\n * Trigger after double click on the treemap item.\n *\n * @private\n */\nexport var doubleClick = 'doubleClick';\n/**\n * Trigger after right click on the treemap item.\n *\n * @private\n */\nexport var rightClick = 'rightClick';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport var mouseMove = 'mouseMove';\n/**\n * Trigger before each treemap item.\n *\n * @private\n */\nexport var legendItemRendering = 'legendItemRendering';\n/**\n * Trigger before legend items.\n *\n * @private\n */\nexport var legendRendering = 'legendRendering';\n/**\n * Trigger after resize the treemap.\n *\n * @private\n */\nexport var resize = 'resize';\n/**\n * Define the font family in treemap.\n *\n * @private\n */\nexport var defaultFont = 'Roboto, Segoe UI, Noto, Sans-serif';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * Maps base doc\n */\nimport { Property, ChildProperty, Complex, Collection } from '@syncfusion/ej2-base';\nimport { defaultFont } from './constants';\n/**\n * Sets and gets the options for customizing the color and width of the border in treemap.\n */\nvar Border = /** @class */ (function (_super) {\n __extends(Border, _super);\n function Border() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('#808080')\n ], Border.prototype, \"color\", void 0);\n __decorate([\n Property(0)\n ], Border.prototype, \"width\", void 0);\n return Border;\n}(ChildProperty));\nexport { Border };\n/**\n * Sets and gets the margin for the treemap.\n */\nvar Margin = /** @class */ (function (_super) {\n __extends(Margin, _super);\n function Margin() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(10)\n ], Margin.prototype, \"left\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"right\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"top\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"bottom\", void 0);\n return Margin;\n}(ChildProperty));\nexport { Margin };\n/**\n * Sets and gets the options to customize the style of the text contents in the treemap.\n */\nvar Font = /** @class */ (function (_super) {\n __extends(Font, _super);\n function Font() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], Font.prototype, \"size\", void 0);\n __decorate([\n Property(null)\n ], Font.prototype, \"color\", void 0);\n __decorate([\n Property(defaultFont)\n ], Font.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('')\n ], Font.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontStyle\", void 0);\n __decorate([\n Property(1)\n ], Font.prototype, \"opacity\", void 0);\n return Font;\n}(ChildProperty));\nexport { Font };\n/**\n * Sets and gets the options for customizing the title of the treemap.\n */\nvar CommonTitleSettings = /** @class */ (function (_super) {\n __extends(CommonTitleSettings, _super);\n function CommonTitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], CommonTitleSettings.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], CommonTitleSettings.prototype, \"description\", void 0);\n return CommonTitleSettings;\n}(ChildProperty));\nexport { CommonTitleSettings };\n/**\n * Sets and gets the options for customizing the subtitle of the treemap.\n */\nvar SubTitleSettings = /** @class */ (function (_super) {\n __extends(SubTitleSettings, _super);\n function SubTitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ fontFamily: null, fontWeight: null }, Font)\n ], SubTitleSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property('Center')\n ], SubTitleSettings.prototype, \"alignment\", void 0);\n return SubTitleSettings;\n}(CommonTitleSettings));\nexport { SubTitleSettings };\n/**\n * Sets and gets the options for customizing the title of the treemap.\n */\nvar TitleSettings = /** @class */ (function (_super) {\n __extends(TitleSettings, _super);\n function TitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ fontFamily: null, fontWeight: null }, Font)\n ], TitleSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property('Center')\n ], TitleSettings.prototype, \"alignment\", void 0);\n __decorate([\n Complex({}, SubTitleSettings)\n ], TitleSettings.prototype, \"subtitleSettings\", void 0);\n return TitleSettings;\n}(CommonTitleSettings));\nexport { TitleSettings };\n/**\n * Sets and gets the options to customize the color-mapping in treemap.\n */\nvar ColorMapping = /** @class */ (function (_super) {\n __extends(ColorMapping, _super);\n function ColorMapping() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"from\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"to\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"color\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"label\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"minOpacity\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"maxOpacity\", void 0);\n __decorate([\n Property(true)\n ], ColorMapping.prototype, \"showLegend\", void 0);\n return ColorMapping;\n}(ChildProperty));\nexport { ColorMapping };\n/**\n * Sets and gets the options for customizing the legend of the treemap.\n */\nvar LegendSettings = /** @class */ (function (_super) {\n __extends(LegendSettings, _super);\n function LegendSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('Default')\n ], LegendSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('transparent')\n ], LegendSettings.prototype, \"background\", void 0);\n __decorate([\n Property('Circle')\n ], LegendSettings.prototype, \"shape\", void 0);\n __decorate([\n Property('')\n ], LegendSettings.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], LegendSettings.prototype, \"height\", void 0);\n __decorate([\n Complex({ size: null, fontFamily: null, fontWeight: null }, Font)\n ], LegendSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], LegendSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(15)\n ], LegendSettings.prototype, \"shapeWidth\", void 0);\n __decorate([\n Property(15)\n ], LegendSettings.prototype, \"shapeHeight\", void 0);\n __decorate([\n Property(10)\n ], LegendSettings.prototype, \"shapePadding\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"imageUrl\", void 0);\n __decorate([\n Complex({ color: '#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: null, fontFamily: null, fontWeight: null }, Font)\n ], LegendSettings.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('Bottom')\n ], LegendSettings.prototype, \"position\", void 0);\n __decorate([\n Property('None')\n ], LegendSettings.prototype, \"orientation\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"invertedPointer\", void 0);\n __decorate([\n Property('After')\n ], LegendSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('None')\n ], LegendSettings.prototype, \"labelDisplayMode\", void 0);\n __decorate([\n Property('Center')\n ], LegendSettings.prototype, \"alignment\", void 0);\n __decorate([\n Property({ x: 0, y: 0 })\n ], LegendSettings.prototype, \"location\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"showLegendPath\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"valuePath\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"removeDuplicateLegend\", void 0);\n return LegendSettings;\n}(ChildProperty));\nexport { LegendSettings };\n/**\n * Sets and gets the settings for drill down to visualize the treemap rendered in the initial state.\n */\nvar InitialDrillSettings = /** @class */ (function (_super) {\n __extends(InitialDrillSettings, _super);\n function InitialDrillSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], InitialDrillSettings.prototype, \"groupIndex\", void 0);\n __decorate([\n Property(null)\n ], InitialDrillSettings.prototype, \"groupName\", void 0);\n return InitialDrillSettings;\n}(ChildProperty));\nexport { InitialDrillSettings };\n/**\n * Sets and gets the options for customizing the leaf item of the treemap.\n */\nvar LeafItemSettings = /** @class */ (function (_super) {\n __extends(LeafItemSettings, _super);\n function LeafItemSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(false)\n ], LeafItemSettings.prototype, \"autoFill\", void 0);\n __decorate([\n Complex({}, Border)\n ], LeafItemSettings.prototype, \"border\", void 0);\n __decorate([\n Property(0)\n ], LeafItemSettings.prototype, \"gap\", void 0);\n __decorate([\n Property(10)\n ], LeafItemSettings.prototype, \"padding\", void 0);\n __decorate([\n Property(1)\n ], LeafItemSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LeafItemSettings.prototype, \"showLabels\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelPath\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelFormat\", void 0);\n __decorate([\n Property('TopLeft')\n ], LeafItemSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Complex({ color: null, size: '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.\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: null, size: null, fontWeight: null }, Font)\n ], TooltipSettings.prototype, \"textStyle\", void 0);\n return TooltipSettings;\n}(ChildProperty));\nexport { TooltipSettings };\n/**\n * Sets and gets the options for customizing the selection of the leaf items in treemap.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], SelectionSettings.prototype, \"fill\", void 0);\n __decorate([\n Property('0.5')\n ], SelectionSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, Border)\n ], SelectionSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Item')\n ], SelectionSettings.prototype, \"mode\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Sets and gets the options for customizing the highlighting of the treemap item,\n * when the mouse hover is performed in it.\n */\nvar HighlightSettings = /** @class */ (function (_super) {\n __extends(HighlightSettings, _super);\n function HighlightSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], HighlightSettings.prototype, \"enable\", void 0);\n __decorate([\n Property('#808080')\n ], HighlightSettings.prototype, \"fill\", void 0);\n __decorate([\n Property('0.5')\n ], HighlightSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, Border)\n ], HighlightSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Item')\n ], HighlightSettings.prototype, \"mode\", void 0);\n return HighlightSettings;\n}(ChildProperty));\nexport { HighlightSettings };\n/**\n * Sets and gets the options for customizing the level leaf items of the treemap.\n */\nvar LevelSettings = /** @class */ (function (_super) {\n __extends(LevelSettings, _super);\n function LevelSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"groupPath\", void 0);\n __decorate([\n Property(0)\n ], LevelSettings.prototype, \"groupGap\", void 0);\n __decorate([\n Property(10)\n ], LevelSettings.prototype, \"groupPadding\", void 0);\n __decorate([\n Complex({}, Border)\n ], LevelSettings.prototype, \"border\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(false)\n ], LevelSettings.prototype, \"autoFill\", void 0);\n __decorate([\n Property(1)\n ], LevelSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LevelSettings.prototype, \"showHeader\", void 0);\n __decorate([\n Property(20)\n ], LevelSettings.prototype, \"headerHeight\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"headerFormat\", void 0);\n __decorate([\n Property('Near')\n ], LevelSettings.prototype, \"headerAlignment\", void 0);\n __decorate([\n Complex({ color: null, size: '13px' }, 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 { findChildren, renderTextElement } from '../utils/helper';\nimport { itemRendering } from '../model/constants';\n/**\n * To calculate and render the shape layer\n */\nvar LayoutPanel = /** @class */ (function () {\n function LayoutPanel(treemap) {\n this.treemap = treemap;\n }\n LayoutPanel.prototype.processLayoutPanel = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data;\n var totalRect;\n if (this.treemap.treemapLevelData.levelsData && this.treemap.treemapLevelData.levelsData.length > 0) {\n data = (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) &&\n !isNullOrUndefined(this.treemap.initialDrillDown.groupName)) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length === 0) ?\n this.getDrilldownData(this.treemap.treemapLevelData.levelsData[0], [])[0] : this.treemap.treemapLevelData.levelsData[0];\n totalRect = extend({}, this.treemap.areaRect, totalRect, false);\n if (!isNullOrUndefined(this.treemap.treeMapLegendModule) && !isNullOrUndefined(this.treemap.totalRect)) {\n if (this.treemap.legendSettings.position !== 'Float') {\n totalRect = this.treemap.totalRect;\n }\n }\n if (!isNullOrUndefined(this.treemap.currentLevel) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? !isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length !== 0)) {\n var count = this.treemap.drilledItems.length - 1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var x = this.treemap.drilledItems[count]['data'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var y = {};\n y[this.treemap.drilledItems[count]['data']['groupName']] = [x];\n if (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) && !this.treemap.enableBreadcrumb) {\n this.treemap.currentLevel = this.treemap.drilledItems[count]['data']['groupIndex'];\n }\n this.calculateLayoutItems(y || this.treemap.treemapLevelData.levelsData[0], totalRect);\n this.renderLayoutItems();\n }\n else {\n if (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length === 0)) {\n this.treemap.currentLevel = this.treemap.initialDrillDown.groupIndex;\n }\n this.calculateLayoutItems(data || this.treemap.treemapLevelData.levelsData[0], totalRect);\n this.renderLayoutItems();\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getDrilldownData = function (data, drillData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var treemap = this.treemap;\n var newData = {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n if (child && child.length > 0 && drillData.length === 0) {\n for (var i = 0; i < child.length; i++) {\n if (child[i]['groupIndex'] === treemap.initialDrillDown.groupIndex &&\n child[i]['name'] === treemap.initialDrillDown.groupName) {\n child[i]['isDrilled'] = true;\n newData[child[i]['groupName']] = [child[i]];\n drillData.push(newData);\n }\n }\n for (var j = 0; j < child.length; j++) {\n this.getDrilldownData(child[j], drillData);\n }\n }\n return drillData;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n LayoutPanel.prototype.calculateLayoutItems = function (data, rect) {\n this.renderItems = [];\n this.parentData = [];\n if (!isNullOrUndefined(this.treemap.weightValuePath)) {\n if (this.treemap.layoutType.indexOf('SliceAndDice') > -1) {\n this.computeSliceAndDiceDimensional(data, rect);\n }\n else {\n rect.height = rect.height + rect.y;\n rect.width = rect.width + rect.x;\n this.computeSquarifyDimensional(data, rect);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeSliceAndDiceDimensional = function (data, coords) {\n var leafItem = this.treemap.leafItemSettings;\n var rect;\n var groups = this.treemap.levels;\n var groupIndex;\n var isLeafItem = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var children = findChildren(data)['values'];\n var gap;\n var headerHeight;\n if (children && children.length > 0) {\n this.sliceAndDiceProcess(children, coords);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < children.length; i++) {\n groupIndex = children[i]['groupIndex'];\n isLeafItem = (groups.length === 0 || groupIndex === groups.length);\n gap = isLeafItem ? leafItem.gap : groups[groupIndex].groupGap;\n headerHeight = groups.length === 0 ? 0 : groups[groupIndex] ? groups[groupIndex].showHeader ?\n groups[groupIndex].headerHeight : 0 : groups[groupIndex - 1].showHeader ?\n groups[groupIndex - 1].headerHeight : 0;\n rect = children[i]['rect'];\n rect = new Rect(rect.x + (gap / 2), rect.y + (headerHeight + (gap / 2)), rect.width - gap, Math.abs(rect.height - (gap + headerHeight)));\n this.computeSliceAndDiceDimensional(children[i], rect);\n }\n }\n }\n return data;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.sliceAndDiceProcess = function (processData, rect) {\n var parentArea = rect.height * rect.width;\n var levels = this.treemap.levels;\n var childValue;\n var alottedValue = 0;\n var totalWeight = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n processData.forEach(function (data) { totalWeight += data['weight']; });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n processData.forEach(function (child) {\n child['weightArea'] = parentArea * child['weight'] / totalWeight;\n });\n var isHorizontal = (this.treemap.layoutType === 'SliceAndDiceAuto') ? (rect.width > rect.height) :\n (this.treemap.layoutType === 'SliceAndDiceHorizontal');\n processData.sort(itemsToOrder);\n for (var i = 0; i < processData.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = processData[i];\n item['isLeafItem'] = (levels.length === 0) || ((this.treemap.isHierarchicalData ||\n isNullOrUndefined(this.treemap.leafItemSettings.labelPath)) ?\n item['groupIndex'] === levels.length - 1 : item['groupIndex'] === this.treemap.levels.length);\n if (isHorizontal) {\n childValue = ((parentArea / totalWeight) * processData[i]['weight']) / rect.height;\n if (alottedValue <= rect.width) {\n processData[i]['rect'] = new Rect(alottedValue + rect.x, rect.y, childValue, rect.height);\n }\n }\n else {\n childValue = ((parentArea / totalWeight) * processData[i]['weight']) / rect.width;\n if (alottedValue <= rect.height) {\n processData[i]['rect'] = new Rect(rect.x, alottedValue + rect.y, rect.width, childValue);\n }\n }\n alottedValue += childValue;\n this.renderItems.push(processData[i]);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeSquarifyDimensional = function (data, coords) {\n var leaf = this.treemap.leafItemSettings;\n var rect;\n var levels = this.treemap.levels;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n var index;\n var padding;\n var headerHeight;\n if (child && child.length > 0) {\n if (this.parentData.length === 0) {\n this.parentData = [];\n this.parentData.push(child);\n }\n this.calculateChildrenLayout(data, child, coords);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < child.length; i++) {\n item = child[i];\n index = item['groupIndex'];\n rect = item['rect'];\n padding = (item['isLeafItem'] ? leaf.padding : levels[index].groupPadding) / 2;\n headerHeight = this.treemap.isHierarchicalData ? index === 0 && item['isLeafItem'] ? 0 : levels[index] ?\n levels[index].showHeader ? levels[index].headerHeight : 0 : 0 :\n (levels.length === 0) ? 0 : levels[index] ?\n levels[index].showHeader ? levels[index].headerHeight : 0 : 0;\n rect = new Rect(rect.x + padding, rect.y + (headerHeight + padding), rect.width - padding, rect.height - padding);\n if (!item['isLeafItem'] && item['weight'] > 0) {\n this.computeSquarifyDimensional(child[i], rect);\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.calculateChildrenLayout = function (parent, children, coords) {\n this.computeTotalArea(children, getArea(coords));\n children.sort(orderByArea);\n this.performRowsLayout(children, [], coords, []);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.performRowsLayout = function (data, currentRow, rect, stack) {\n var dataLength = data.length;\n if (dataLength === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newCoordinates = this.getCoordinates(currentRow, rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newStack = stack.concat(newCoordinates);\n return newStack;\n }\n var width = getShortestEdge(rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var nextDatum = data[0];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var restData = data.slice(1, dataLength);\n if (this.aspectRatio(currentRow, nextDatum, width)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newRow = currentRow.concat(nextDatum);\n return this.performRowsLayout(restData, newRow, rect, stack);\n }\n else {\n var currentRowLength = currentRow.length;\n var valueSum = 0;\n for (var i = 0; i < currentRowLength; i += 1) {\n valueSum += currentRow[i]['itemArea'];\n }\n var newContainer = this.cutArea(rect, valueSum);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newCoordinates = this.getCoordinates(currentRow, rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newStack = stack.concat(newCoordinates);\n return this.performRowsLayout(data, [], newContainer, newStack);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.aspectRatio = function (currentRow, nextDatum, length) {\n if (currentRow.length === 0) {\n return true;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newRow = currentRow.concat(nextDatum);\n var currentMaxAspectRatio = this.findMaxAspectRatio(currentRow, length);\n var newMaxAspectRatio = this.findMaxAspectRatio(newRow, length);\n return (currentMaxAspectRatio >= newMaxAspectRatio);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.findMaxAspectRatio = function (row, length) {\n var rowLength = row.length;\n var minArea = Infinity;\n var maxArea = -Infinity;\n var sumArea = 0;\n for (var i = 0; i < rowLength; i += 1) {\n var area = row[i]['itemArea'];\n if (area < minArea) {\n minArea = area;\n }\n if (area > maxArea) {\n maxArea = area;\n }\n sumArea += area;\n }\n var result = Math.max((Math.pow(length, 2)) * maxArea / (Math.pow(sumArea, 2)), (Math.pow(sumArea, 2)) /\n ((Math.pow(length, 2)) * minArea));\n return result;\n };\n LayoutPanel.prototype.cutArea = function (rect, area) {\n var newContainer = convertToContainer(rect);\n var width = newContainer.width;\n var height = newContainer.height;\n var xOffset = newContainer.x;\n var yOffset = newContainer.y;\n if (width >= height) {\n var areaWidth = area / height;\n var newWidth = width - areaWidth;\n var container = {\n x: xOffset + areaWidth,\n y: yOffset,\n width: newWidth,\n height: height\n };\n return convertToRect(container);\n }\n else {\n var areaHeight = area / width;\n var newHeight = height - areaHeight;\n var container = {\n x: xOffset,\n y: yOffset + areaHeight,\n width: width,\n height: newHeight\n };\n return convertToRect(container);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getCoordinates = function (row, rect) {\n var container = convertToContainer(rect);\n var width = container.width;\n var height = container.height;\n var xOffset = container.x;\n var yOffset = container.y;\n var rowLength = row.length;\n var levels = this.treemap.levels;\n var leaf = this.treemap.leafItemSettings;\n var index;\n var valueSum = 0;\n for (var i = 0; i < rowLength; i += 1) {\n valueSum += row[i]['itemArea'];\n }\n var areaWidth = valueSum / height;\n var areaHeight = valueSum / width;\n var subXOffset = xOffset;\n var subYOffset = yOffset;\n var padding;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var coordinates = [];\n var isParent;\n var parentRect;\n for (var i = 0; i < rowLength; i += 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = row[i];\n index = item['groupIndex'];\n item['isLeafItem'] = (levels.length === 0) || (this.treemap.isHierarchicalData ? index === levels.length :\n isNullOrUndefined(leaf.labelPath) ? false : index === levels.length);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isParent = isParentItem(this.parentData[0], item);\n parentRect = isParent ? this.treemap.areaRect : item['parent'].rect;\n padding = item['isLeafItem'] ? leaf.padding : levels[index].groupPadding;\n if (width >= height) {\n var y1 = subYOffset + item['itemArea'] / areaWidth;\n item['rect'] = {\n x: subXOffset,\n y: subYOffset,\n width: subXOffset + areaWidth,\n height: y1\n };\n subYOffset = y1;\n }\n else {\n var x1 = subXOffset + item['itemArea'] / areaHeight;\n item['rect'] = {\n x: subXOffset,\n y: subYOffset,\n width: x1,\n height: subYOffset + areaHeight\n };\n subXOffset = x1;\n }\n if (item['weight'] > 0 && (isParent || (Math.round(rect.y + (padding / 2)) <=\n Math.round(parentRect.y + (parentRect.height - parentRect.y)) && Math.round(rect.x + (padding / 2)) <=\n Math.round(parentRect.x + (parentRect.width - parentRect.x))))) {\n this.renderItems.push(item);\n coordinates.push(item);\n }\n }\n return coordinates;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeTotalArea = function (data, area) {\n var dataLength = data.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var result = [];\n for (var i = 0; i < dataLength; i += 1) {\n var dataLength_1 = data.length;\n var dataSum = 0;\n for (var i_1 = 0; i_1 < dataLength_1; i_1 += 1) {\n dataSum += data[i_1]['weight'];\n }\n var multiplier = area / dataSum;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var datum = void 0;\n for (var j = 0; j < dataLength_1; j++) {\n datum = data[j];\n datum['itemArea'] = datum['weight'] * multiplier;\n result.push(datum);\n }\n }\n return result;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n LayoutPanel.prototype.onDemandProcess = function (childItems) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentItem = {};\n var totalRect;\n parentItem = childItems[0]['parent'];\n this.treemap.currentLevel = parentItem['isDrilled'] ? parentItem['groupIndex'] : null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentItemGroupname = {};\n if (isNullOrUndefined(parentItem['groupName'])) {\n parentItemGroupname = parentItem;\n }\n else {\n parentItemGroupname[parentItem['groupName']] = [parentItem];\n }\n totalRect = extend({}, this.treemap.areaRect, totalRect, false);\n if (!isNullOrUndefined(this.treemap.treeMapLegendModule) && !isNullOrUndefined(this.treemap.totalRect)) {\n totalRect = this.treemap.totalRect;\n }\n var count = this.treemap.levels.length;\n for (var i = 0; i < count; i++) {\n var levelCount = childItems[0]['groupIndex'];\n if (count === levelCount) {\n this.treemap.levels[count] = this.treemap.levels[i];\n }\n else {\n this.treemap.levels.splice(count - 1, 1);\n }\n }\n this.calculateLayoutItems(parentItemGroupname, totalRect);\n this.renderLayoutItems();\n };\n // eslint-disable-next-line valid-jsdoc\n /** @private */\n LayoutPanel.prototype.renderLayoutItems = function () {\n var _this = this;\n var position;\n var treeMap = this.treemap;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var txtVisible;\n var getItemColor;\n var eventArgs;\n this.renderer = treeMap.renderer;\n var pathOptions;\n var elementID = treeMap.element.id;\n var index;\n var templatePosition;\n var mode = treeMap.layoutType;\n var rect;\n var format;\n var interSectAction = this.treemap.leafItemSettings.interSectAction;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var fill;\n var item;\n var renderText;\n var opacity;\n var rectPath = '';\n var secondaryEle = document.getElementById(treeMap.element.id + '_Secondary_Element');\n var groupId;\n var templateEle;\n var gap;\n var textStyle;\n var levels = treeMap.levels;\n this.layoutGroup = this.renderer.createGroup({ id: elementID + '_TreeMap_' + mode + '_Layout' });\n var itemGroup;\n var template;\n var border;\n var templateGroup = createElement('div', {\n id: treeMap.element.id + '_Label_Template_Group',\n className: 'template'\n });\n templateGroup.style.cssText = 'overflow: hidden; position: absolute;pointer-events: none;' +\n 'top:' + treeMap.areaRect.y + 'px;' +\n 'left:' + treeMap.areaRect.x + 'px;' +\n 'height:' + treeMap.areaRect.height + 'px;' +\n 'width:' + treeMap.areaRect.width + 'px;';\n var isLeafItem = false;\n var leaf = treeMap.leafItemSettings;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childItems;\n var connectorText;\n var _loop_1 = function (i) {\n item = this_1.renderItems[i];\n index = item['groupIndex'];\n if (this_1.treemap.drillDownView && isNullOrUndefined(this_1.treemap.currentLevel)\n && index > 0 || this_1.treemap.drillDownView\n && index > (this_1.treemap.currentLevel + 1)) {\n return \"continue\";\n }\n rect = item['rect'];\n isLeafItem = item['isLeafItem'];\n groupId = elementID + '_Level_Index_' + index + '_Item_Index_' + i;\n itemGroup = this_1.renderer.createGroup({ id: groupId + '_Group' });\n gap = (isLeafItem ? leaf.gap : levels[index].groupGap) / 2;\n var treemapItemRect = this_1.treemap.totalRect ? convertToContainer(this_1.treemap.totalRect) : this_1.treemap.areaRect;\n if (treeMap.layoutType === 'Squarified') {\n rect.width = Math.abs(rect.x - rect.width) - gap;\n rect.height = Math.abs(rect.y - rect.height) - gap;\n }\n if (treeMap.renderDirection === 'TopRightBottomLeft') {\n rect.x = (treemapItemRect.x + treemapItemRect.width) - rect.width - Math.abs(treemapItemRect.x - rect.x);\n }\n else if (treeMap.renderDirection === 'BottomLeftTopRight') {\n rect.y = (treemapItemRect.y + treemapItemRect.height) - rect.height - Math.abs(treemapItemRect.y - rect.y);\n }\n else if (treeMap.renderDirection === 'BottomRightTopLeft') {\n rect.x = (treemapItemRect.x + treemapItemRect.width) - rect.width - Math.abs(treemapItemRect.x - rect.x);\n rect.y = (treemapItemRect.y + treemapItemRect.height) - rect.height - Math.abs(treemapItemRect.y - rect.y);\n }\n getItemColor = this_1.getItemColor(isLeafItem, item);\n fill = getItemColor['fill'];\n opacity = getItemColor['opacity'];\n format = isLeafItem ? leaf.labelFormat : (levels[index]).headerFormat;\n var levelName;\n txtVisible = isLeafItem ? leaf.showLabels : (levels[index]).showHeader;\n if (index === this_1.treemap.currentLevel) {\n if (this_1.treemap.enableBreadcrumb) {\n var re = /#/gi;\n connectorText = '#' + this_1.treemap.breadcrumbConnector + '#';\n levelName = item['levelOrderName'].replace(re, connectorText);\n levelName = index !== 0 ? '#' + levelName : levelName;\n }\n else {\n levelName = item['name'];\n }\n }\n else {\n if (this_1.treemap.enableBreadcrumb) {\n item['isDrilled'] = false;\n }\n levelName = item['name'];\n }\n renderText = textFormatter(format, item['data'], this_1.treemap) || levelName || 'undefined';\n childItems = findChildren(item)['values'];\n renderText = !isLeafItem && childItems && childItems.length > 0 && this_1.treemap.enableDrillDown ?\n !item['isDrilled'] ? treeMap.enableRtl ? renderText + ' [+]' : '[+] ' + renderText :\n treeMap.enableRtl ? renderText + ' [-]' : '[-] ' + renderText : renderText;\n textStyle = (isLeafItem ? leaf.labelStyle : levels[index].headerStyle);\n textStyle.fontFamily = this_1.treemap.themeStyle.labelFontFamily || textStyle.fontFamily;\n textStyle.fontWeight = textStyle.fontWeight || this_1.treemap.themeStyle.fontWeight;\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 if ((_this.treemap.enableDrillDown && isLeafItem) || (_this.treemap.selectionSettings.enable || _this.treemap.highlightSettings.enable)) {\n itemGroup.setAttribute('role', 'button');\n itemGroup.setAttribute('tabindex', _this.treemap.tabIndex.toString());\n itemGroup.style.cursor = _this.treemap.highlightSettings.enable && !_this.treemap.selectionSettings.enable && (_this.treemap.enableDrillDown && item['groupIndex'] == (_this.treemap.levels.length - 1)) ? 'default' :\n _this.treemap.highlightSettings.enable && !_this.treemap.selectionSettings.enable && !_this.treemap.enableDrillDown ? 'default' : 'pointer';\n }\n else {\n itemGroup.setAttribute('role', 'region');\n }\n maintainSelection(_this.treemap, itemGroup, 'treeMapSelection');\n _this.layoutGroup.appendChild(itemGroup);\n }\n });\n };\n var this_1 = this;\n for (var i = 0; i < this.renderItems.length; i++) {\n _loop_1(i);\n }\n if (templateGroup.childNodes.length > 0) {\n secondaryEle.appendChild(templateGroup);\n }\n this.treemap.svgObject.appendChild(this.layoutGroup);\n };\n LayoutPanel.prototype.renderItemText = function (text, parentElement, textStyle, rect, interSectAction, groupId, fill, position, connectorText) {\n var padding = 5;\n var textSize;\n var textCollection = [];\n var customText;\n var tspanText = [];\n var height = 0;\n var textName;\n textCollection = ((text.indexOf('<br>')) !== -1) ? text.split('<br>') : null;\n customText = this.labelInterSectAction(rect, text, textStyle, interSectAction);\n textSize = measureText(textCollection && textCollection[0] || customText[0], textStyle);\n if (this.treemap.enableRtl) {\n var labelSize = measureText(text, textStyle);\n var drillSymbolCount = text.search('[+]') || text.search('[-]');\n if (rect.width < labelSize.width && drillSymbolCount > 0) {\n var label = text.substring(drillSymbolCount - 1, text.length);\n var drillSymbol = '[+]';\n var drillSymbolSize = measureText(drillSymbol, textStyle);\n customText['0'] = textTrim(rect.width - drillSymbolSize.width - padding, customText[0], textStyle) + label;\n }\n }\n var textLocation = findLabelLocation(rect, position, textSize, 'Text', this.treemap);\n if (!isNullOrUndefined(textCollection)) {\n var collection = [];\n var texts = null;\n var maxNumber = [];\n for (var i = 0; i < textCollection.length; i++) {\n texts = textTrim((rect.width - 5), textCollection[i], textStyle);\n textSize = measureText(texts, textStyle);\n height += textSize.height;\n maxNumber.push(textSize.width);\n collection.push(texts);\n }\n customText = collection;\n textSize.width = Math.max.apply(null, maxNumber);\n textSize.height = height;\n }\n if (interSectAction === 'WrapByWord' || interSectAction === 'Wrap' || interSectAction === 'Trim') {\n for (var j = 0; j < customText.length; j++) {\n textSize = measureText(customText[j], textStyle);\n height += textSize.height;\n if ((rect.height - padding) > height) {\n tspanText.push(customText[j]);\n }\n }\n if (interSectAction === 'Wrap' && customText.length !== tspanText.length && tspanText.length) {\n var collectionLength = tspanText.length - 1;\n var stringText = tspanText[collectionLength];\n stringText = stringText.substring(0, (stringText.length - 1)) + '...';\n tspanText.splice(collectionLength);\n if (stringText !== '...') {\n tspanText.push(stringText);\n }\n }\n }\n else {\n textName = customText;\n tspanText.push(textName);\n }\n var textOptions = new TextOption(groupId + '_Text', textLocation.x, textLocation.y, 'start', tspanText, '', '', connectorText);\n renderTextElement(textOptions, textStyle, textStyle.color || this.getSaturatedColor(fill), parentElement);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getItemColor = function (isLeafItem, item) {\n var treemap = this.treemap;\n var itemFill = isLeafItem ? treemap.leafItemSettings.fill : treemap.levels[item['groupIndex']].fill;\n var itemOpacity = isLeafItem ? treemap.leafItemSettings.opacity : treemap.levels[item['groupIndex']].opacity;\n if (!isNullOrUndefined(treemap.treemapLevelData.defaultLevelsData)) {\n if (treemap.treemapLevelData.defaultLevelsData.length > 0) {\n treemap.treemapLevelData.levelsData = treemap.treemapLevelData.defaultLevelsData;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentData = findChildren(treemap.treemapLevelData.levelsData[0])['values'];\n var colorMapping = isLeafItem ? treemap.leafItemSettings.colorMapping :\n treemap.levels[item['groupIndex']].colorMapping;\n if (colorMapping.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var option = colorMap(colorMapping, item['data'][treemap.equalColorValuePath], item['data'][treemap.rangeColorValuePath]);\n 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, max-len\n secondaryEle, groupId, rect, position, template, item, isLeafItem) {\n var templateId = isLeafItem ? groupId + '_LabelTemplate' : groupId + '_HeaderTemplate';\n var baseTemplateId = isLeafItem ? '_LabelTemplate' : '_HeaderTemplate';\n if (isNullOrUndefined(template['prototype']) && typeof template === 'string') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var keys = Object.keys(item['data']);\n for (var i = 0; i < keys.length; i++) {\n var regExp = RegExp;\n template = template.replace(new regExp('{{:' + keys[i] + '}}', 'g'), item['data'][keys[i].toString()]);\n }\n }\n var labelElement;\n if (!isNullOrUndefined(document.getElementById(this.treemap.element.id + '_Secondary_Element'))) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateFn = getTemplateFunction(template);\n var templateElement = templateFn(item['data'], this.treemap, template, this.treemap.element.id + baseTemplateId, false);\n labelElement = convertElement(templateElement, templateId, item['data']);\n var templateSize = measureElement(labelElement, secondaryEle);\n var templateLocation = findLabelLocation(rect, position, templateSize, 'Template', this.treemap);\n labelElement.style.left = templateLocation.x + 'px';\n labelElement.style.top = templateLocation.y + 'px';\n }\n return labelElement;\n };\n LayoutPanel.prototype.labelInterSectAction = function (rect, text, textStyle, alignment) {\n var textValue;\n var maxWidth = rect.width - 10;\n switch (alignment) {\n case 'Hide':\n textValue = [hide(maxWidth, rect.height, text, textStyle)];\n break;\n case 'Trim':\n textValue = [textTrim((maxWidth + 3), text, textStyle)];\n break;\n case 'WrapByWord':\n textValue = wordWrap(maxWidth, text, textStyle);\n break;\n case 'Wrap':\n textValue = textWrap(maxWidth, text, textStyle);\n break;\n }\n return textValue;\n };\n /**\n *\n * @returns {void}\n * @private\n */\n LayoutPanel.prototype.destroy = function () {\n this.treemap = null;\n this.currentRect = null;\n this.layoutGroup = null;\n this.renderer = null;\n this.renderItems = [];\n this.parentData = [];\n };\n return LayoutPanel;\n}());\nexport { LayoutPanel };\n","import { print as printFunction, createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getElement } from '../utils/helper';\nimport { beforePrint } from '../model/constants';\n/**\n * Print module handles the print functionality for treemap.\n *\n * @hidden\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n function Print(control) {\n }\n /**\n * This method is used to perform the print functionality in treemap.\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param { string[] | string | Element} elements - Specifies the element.\n * @returns {void}\n * @private\n */\n Print.prototype.print = function (treeMap, elements) {\n var printWindow = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n printWindow.moveTo(0, 0);\n printWindow.resizeTo(screen.availWidth, screen.availHeight);\n var argsData = {\n cancel: false, htmlContent: this.getHTMLContent(treeMap, elements), name: beforePrint\n };\n treeMap.trigger(beforePrint, argsData, function () {\n if (!argsData.cancel) {\n printFunction(argsData.htmlContent, printWindow);\n }\n });\n };\n /**\n * To get the html string of the Maps\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param {string[] | string | Element} elements - Specifies the element\n * @returns {Element} - Returns the element\n * @private\n */\n Print.prototype.getHTMLContent = function (treeMap, elements) {\n var div = createElement('div');\n if (elements) {\n if (elements instanceof Array) {\n elements.forEach(function (value) {\n div.appendChild(getElement(value).cloneNode(true));\n });\n }\n else if (elements instanceof Element) {\n div.appendChild(elements.cloneNode(true));\n }\n else {\n div.appendChild(getElement(elements).cloneNode(true));\n }\n }\n else {\n var exportElement = treeMap.element.cloneNode(true);\n var backgroundElement = exportElement.getElementsByTagName('svg')[0];\n if (!isNullOrUndefined(backgroundElement)) {\n backgroundElement = backgroundElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n var backgroundColor = backgroundElement.getAttribute('fill');\n if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n backgroundElement.setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n backgroundElement.setAttribute('fill', 'rgba(0, 0, 0, 1)');\n }\n }\n }\n div.appendChild(exportElement);\n }\n return div;\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n Print.prototype.getModuleName = function () {\n // Returns te module name\n return 'Print';\n };\n /**\n * To destroy the Print module.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n Print.prototype.destroy = function () { };\n return Print;\n}());\nexport { Print };\n","import { createElement, Browser, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { triggerDownload } from '../utils/helper';\n/**\n * ImageExport module handles the export to image functionality for treemap.\n *\n * @hidden\n */\nvar ImageExport = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n function ImageExport(control) {\n }\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param {ExportType} type - Specifies the type of the image file.\n * @param {string} fileName - Specifies the file name of the image file.\n * @param {boolean} allowDownload - Specifies whether to download the file or not.\n * @returns {Promise} - Returns the promise string.\n * @private\n */\n ImageExport.prototype.export = function (treeMap, type, fileName, allowDownload) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n var promise = new Promise(function (resolve, reject) {\n var element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'height': treeMap.availableSize.height.toString(),\n 'width': treeMap.availableSize.width.toString()\n }\n });\n var exportElement = treeMap.svgObject.cloneNode(true);\n var backgroundElement = exportElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n var backgroundColor = backgroundElement.getAttribute('fill');\n if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(0, 0, 0, 1)');\n }\n }\n var isDownload = !(Browser.userAgent.toString().indexOf('HeadlessChrome') > -1);\n var svgData = '<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">' +\n exportElement.outerHTML +\n '</svg>';\n var url = window.URL.createObjectURL(new Blob(type === 'SVG' ? [svgData] :\n [(new XMLSerializer()).serializeToString(exportElement)], { type: 'image/svg+xml' }));\n if (type === 'SVG') {\n if (allowDownload) {\n triggerDownload(fileName, type, url, isDownload);\n }\n else {\n resolve(null);\n }\n }\n else {\n var image_1 = new Image();\n var context_1 = element.getContext('2d');\n image_1.onload = (function () {\n context_1.drawImage(image_1, 0, 0);\n window.URL.revokeObjectURL(url);\n if (allowDownload) {\n triggerDownload(fileName, type, element.toDataURL('image/png').replace('image/png', 'image/octet-stream'), isDownload);\n }\n else {\n if (type === 'JPEG') {\n resolve(element.toDataURL('image/jpeg'));\n }\n else if (type === 'PNG') {\n resolve(element.toDataURL('image/png'));\n }\n }\n });\n image_1.src = url;\n }\n });\n return promise;\n };\n ImageExport.prototype.getModuleName = function () {\n // Returns te module name\n return 'ImageExport';\n };\n /**\n * To destroy the ImageExport.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n ImageExport.prototype.destroy = function () { };\n return ImageExport;\n}());\nexport { ImageExport };\n","import { createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { PdfPageOrientation, PdfDocument, PdfBitmap } from '@syncfusion/ej2-pdf-export';\n/**\n * PdfExport module handles the export to pdf functionality for treemap.\n *\n * @hidden\n */\nvar PdfExport = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n function PdfExport(control) {\n }\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param {ExportType} type - Specifies the type of the document.\n * @param {string} fileName - Specifies the name of the document.\n * @param {PdfPageOrientation} orientation - Specifies the orientation of the PDF document to export the treemap.\n * @param {boolean} allowDownload - Specifies whether to download the document or not.\n * @returns {Promise} - Returns the string.\n * @private\n */\n PdfExport.prototype.export = function (treeMap, type, fileName, orientation, allowDownload) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n var promise = new Promise(function (resolve, reject) {\n var element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'width': treeMap.availableSize.width.toString(),\n 'height': treeMap.availableSize.height.toString()\n }\n });\n orientation = isNullOrUndefined(orientation) ? PdfPageOrientation.Landscape : orientation;\n var exportElement = treeMap.svgObject.cloneNode(true);\n var backgroundElement = exportElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n var backgroundColor = backgroundElement.getAttribute('fill');\n if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(0, 0, 0, 1)');\n }\n }\n var url = window.URL.createObjectURL(new Blob([(new XMLSerializer()).serializeToString(exportElement)], { type: 'image/svg+xml' }));\n var image = new Image();\n var context = element.getContext('2d');\n image.onload = (function () {\n context.drawImage(image, 0, 0);\n window.URL.revokeObjectURL(url);\n var document = new PdfDocument();\n var imageString = element.toDataURL('image/jpeg').replace('image/jpeg', 'image/octet-stream');\n document.pageSettings.orientation = orientation;\n imageString = imageString.slice(imageString.indexOf(',') + 1);\n document.pages.add().graphics.drawImage(new PdfBitmap(imageString), 0, 0, (treeMap.availableSize.width - 60), treeMap.availableSize.height);\n if (allowDownload) {\n document.save(fileName + '.pdf');\n document.destroy();\n }\n else {\n resolve(null);\n }\n });\n image.src = url;\n });\n return promise;\n };\n PdfExport.prototype.getModuleName = function () {\n // Returns te module name\n return 'PdfExport';\n };\n /**\n * To destroy the PdfExport.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n PdfExport.prototype.destroy = function () { };\n return PdfExport;\n}());\nexport { PdfExport };\n","/**\n * Tree Map Components\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, NotifyPropertyChanges, Property, extend, Fetch } from '@syncfusion/ej2-base';\nimport { Complex, Collection } from '@syncfusion/ej2-base';\nimport { Event, Internationalization } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\nimport { isNullOrUndefined, createElement, EventHandler, Browser, remove } from '@syncfusion/ej2-base';\nimport { Border, Margin, TitleSettings, LegendSettings, InitialDrillSettings } from './model/base';\nimport { SelectionSettings, TooltipSettings, LevelSettings, LeafItemSettings, HighlightSettings } from './model/base';\nimport { Size, stringToNumber, RectOption, Rect, textTrim, measureText, findChildren, removeElement, setItemTemplateContent } from '../treemap/utils/helper';\nimport { removeClassNames, removeShape, textFormatter } from '../treemap/utils/helper';\nimport { findPosition, TextOption, renderTextElement, isContainsData, TreeMapAjax } from '../treemap/utils/helper';\nimport { load, loaded, drillStart, drillEnd } from '../treemap/model/constants';\nimport { itemClick, itemMove, click, mouseMove, resize, doubleClick, rightClick } from '../treemap/model/constants';\nimport { LayoutPanel } from './layout/render-panel';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { getThemeStyle } from './model/theme';\nimport { Print } from './model/print';\nimport { ImageExport } from './model/image-export';\nimport { PdfExport } from './model/pdf-export';\n/**\n * Represents the treemap control. It is used to visualize both hierarchical and flat data.\n * ```html\n * <div id=\"container\"/>\n * <script>\n * var treemap = new TreeMap();\n * treemap.appendTo(\"#container\");\n * </script>\n * ```\n */\nvar TreeMap = /** @class */ (function (_super) {\n __extends(TreeMap, _super);\n /**\n * Constructor for TreeMap.\n *\n * @param {TreeMapModel} options - Specifies the treemap instance.\n * @param {string | HTMLElement} element - Specifies the treemap element.\n */\n function TreeMap(options, element) {\n var _this = _super.call(this, options, element) || this;\n /**\n * resize the treemap\n */\n _this.isResize = false;\n /** @private */\n _this.orientation = 'Horizontal';\n /** @private */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.drilledItems = [];\n /** @private */\n _this.isHierarchicalData = false;\n /** @private */\n _this.levelSelection = [];\n /** @private */\n _this.legendId = [];\n return _this;\n }\n TreeMap.prototype.preRender = function () {\n var _this = this;\n this.trigger(load, { treemap: this }, function () {\n _this.initPrivateVariable();\n _this.unWireEVents();\n _this.createSvg();\n _this.wireEVents();\n _this.setCulture();\n });\n };\n TreeMap.prototype.render = function () {\n this.renderElements();\n };\n TreeMap.prototype.renderElements = function () {\n this.treemapLevelData = new LevelsData();\n this.treemapLevelData.levelsData = null;\n this.treemapLevelData.defaultLevelsData = null;\n this.treemapLevelData.hierarchyData = null;\n this.createSecondaryElement();\n this.addTabIndex();\n this.themeStyle = getThemeStyle(this.theme);\n this.renderBorder();\n this.renderTitle(this.titleSettings, 'title', null, null);\n if (!isNullOrUndefined(this.treemapLevelData.levelsData)) {\n this.treemapLevelData.defaultLevelsData = this.treemapLevelData.levelsData;\n }\n this.processDataManager();\n };\n TreeMap.prototype.processDataManager = function () {\n var _this = this;\n var dataModule;\n var queryModule;\n var fetchApiModule;\n var localAjax;\n if (this.dataSource instanceof DataManager) {\n dataModule = this.dataSource;\n queryModule = this.query instanceof Query ? this.query : new Query();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataManager = dataModule.executeQuery(queryModule);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataManager.then(function (e) {\n _this.dataSource = e['result'];\n _this.renderTreeMapElements();\n });\n }\n else if (this.dataSource instanceof TreeMapAjax) {\n localAjax = this.dataSource;\n fetchApiModule = new Fetch(localAjax.dataOptions, localAjax.type, localAjax.contentType);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fetchApiModule.onSuccess = function (args) {\n if (!isNullOrUndefined(args.type) && args.type === 'application/octet-stream') {\n var reader_1 = new FileReader();\n var treemap_1 = _this;\n reader_1.onload = function (data) {\n args = JSON.parse(reader_1.result.toString());\n treemap_1.dataSource = args;\n treemap_1.renderTreeMapElements();\n };\n reader_1.readAsText(args);\n }\n else {\n _this.dataSource = args;\n _this.renderTreeMapElements();\n }\n };\n fetchApiModule.send(localAjax.sendData);\n }\n else {\n this.renderTreeMapElements();\n }\n };\n TreeMap.prototype.renderTreeMapElements = function () {\n this.processingData();\n if (this.treeMapLegendModule && this.legendSettings.visible) {\n this.treeMapLegendModule.renderLegend();\n }\n this.layout.processLayoutPanel();\n this.element.appendChild(this.svgObject);\n this.elementChange();\n this.trigger(loaded, { treemap: this, isResized: this.isResize });\n this.isResize = false;\n this.renderComplete();\n };\n TreeMap.prototype.createSvg = function () {\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n if (isNullOrUndefined(this.renderer)) {\n this.renderer = new SvgRenderer(this.element.id);\n }\n if (isNullOrUndefined(this.layout)) {\n this.layout = new LayoutPanel(this);\n }\n this.clearTemplate();\n var containerWidth = this.element.clientWidth;\n var containerHeight = this.element.clientHeight;\n this.availableSize = new Size(stringToNumber(this.width, containerWidth) || containerWidth || 600, stringToNumber(this.height, containerHeight) || containerHeight || 450);\n this.svgObject = this.renderer.createSvg({\n id: this.element.id + '_svg',\n width: this.availableSize.width,\n height: this.availableSize.height\n });\n };\n /**\n * To initilize the private varibales of treemap.\n *\n * @returns {void}\n */\n TreeMap.prototype.initPrivateVariable = function () {\n if (this.element.id === '') {\n var collection = document.getElementsByClassName('e-treemap').length;\n this.element.id = 'treemap_control_' + collection;\n }\n this.renderer = new SvgRenderer(this.element.id);\n this.layout = new LayoutPanel(this);\n };\n TreeMap.prototype.createSecondaryElement = function () {\n var secondaryEle = document.getElementById(this.element.id + '_Secondary_Element');\n if (secondaryEle && secondaryEle.childElementCount > 0) {\n secondaryEle.parentNode.removeChild(secondaryEle);\n }\n if (isNullOrUndefined(document.getElementById(this.element.id + '_Secondary_Element'))) {\n var secondaryElement = createElement('div', {\n id: this.element.id + '_Secondary_Element'\n });\n secondaryElement.style.cssText = 'position: absolute;z-index:1;';\n this.element.appendChild(secondaryElement);\n }\n };\n TreeMap.prototype.elementChange = function () {\n if (this.treeMapLegendModule && this.legendSettings.visible && this.treeMapLegendModule.legendGroup && this.layout.layoutGroup\n && !isNullOrUndefined(this.svgObject) && !isNullOrUndefined(document.getElementById(this.layout.layoutGroup.id))\n && !isNullOrUndefined(document.getElementById(this.treeMapLegendModule.legendGroup.id))) {\n this.svgObject.insertBefore(this.layout.layoutGroup, this.treeMapLegendModule.legendGroup);\n }\n };\n /**\n * Render the treemap border\n *\n * @private\n * @returns {void}\n */\n TreeMap.prototype.renderBorder = function () {\n var width = this.border.width;\n var borderElement = this.svgObject.querySelector('#' + this.element.id + '_TreeMap_Border');\n if ((this.border.width > 0 || (this.background || this.themeStyle.backgroundColor)) && isNullOrUndefined(borderElement)) {\n var borderRect = new RectOption(this.element.id + '_TreeMap_Border', this.background || this.themeStyle.backgroundColor, this.border, 1, new Rect(width / 2, width / 2, this.availableSize.width - width, this.availableSize.height - width));\n this.svgObject.appendChild(this.renderer.drawRectangle(borderRect));\n }\n else if (borderElement) {\n borderElement.setAttribute('fill', this.background || this.themeStyle.backgroundColor);\n }\n };\n TreeMap.prototype.renderTitle = function (title, type, bounds, groupEle) {\n var style = {\n color: title.textStyle.color, size: title.textStyle.size, fontFamily: title.textStyle.fontFamily,\n fontStyle: title.textStyle.fontStyle, fontWeight: title.textStyle.fontWeight, opacity: title.textStyle.opacity\n };\n var height;\n var titlePadding = 10;\n var width = (this.availableSize.width - this.margin.right - this.margin.left);\n style.fontFamily = style.fontFamily || this.themeStyle.fontFamily;\n style.fontWeight = style.fontWeight || this.themeStyle.titleFontWeight;\n style.size = style.size || (type === 'title' ? this.themeStyle.fontSize : this.themeStyle.subtitleFontSize);\n if (title.text) {\n if (isNullOrUndefined(groupEle)) {\n groupEle = this.renderer.createGroup({ id: this.element.id + '_Title_Group' });\n }\n var 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', 'region');\n element.setAttribute('tabindex', this.tabIndex.toString());\n if ((type === 'title' && !title.subtitleSettings.text) || (type === 'subtitle')) {\n height = (this.availableSize.height - titleBounds.y - titlePadding - this.margin.bottom);\n this.areaRect = new Rect(this.margin.left, titleBounds.y + titlePadding, width, height);\n }\n if (type !== 'subtitle' && title.subtitleSettings.text) {\n this.renderTitle(title.subtitleSettings, 'subtitle', titleBounds, groupEle);\n }\n else {\n this.svgObject.appendChild(groupEle);\n }\n }\n else {\n height = (this.availableSize.height - this.margin.top - this.margin.bottom);\n this.areaRect = new Rect(this.margin.left, this.margin.top, width, height);\n }\n };\n TreeMap.prototype.processingData = function () {\n var _this = this;\n var path;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource = this.dataSource;\n if (!isNullOrUndefined(this.dataSource) && this.dataSource.length > 0 && this.weightValuePath) {\n this.treemapLevelData.levelsData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource.map(function (data) {\n data[_this.weightValuePath] = (data[_this.weightValuePath]) ? data[_this.weightValuePath].toString() :\n data[_this.weightValuePath];\n });\n this.leafItemSettings.labelPath = this.leafItemSettings.labelPath || this.weightValuePath;\n this.checkIsHierarchicalData();\n if (this.levels.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data_1 = {};\n data_1['level'] = 0;\n path = this.leafItemSettings.labelPath;\n data_1[path] = [];\n for (var i = 0; i < this.dataSource.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(this.dataSource[i])['values'];\n if (this.isHierarchicalData && child && child.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n child.forEach(function (currentData) {\n if (currentData[path]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data_1[path].push({\n groupIndex: 0, name: currentData[path],\n levelOrderName: currentData[path].toString(),\n data: currentData, weight: currentData[_this.weightValuePath]\n });\n }\n });\n }\n else {\n if (this.dataSource[i][path]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data_1[path].push({\n groupIndex: 0, name: this.dataSource[i][path], levelOrderName: this.dataSource[i][path].toString(), data: this.dataSource[i],\n weight: this.dataSource[i][this.weightValuePath]\n });\n }\n }\n }\n this.treemapLevelData.levelsData.push(data_1);\n }\n else {\n if (this.isHierarchicalData) {\n this.treemapLevelData.hierarchyData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemapLevelData.hierarchyData = extend([], this.dataSource, this.treemapLevelData.hierarchyData, true);\n for (var i = 0; i < this.treemapLevelData.hierarchyData.length; i++) {\n this.processHierarchicalData(this.treemapLevelData.hierarchyData[i], i);\n }\n this.treemapLevelData.levelsData = this.treemapLevelData.hierarchyData;\n }\n else {\n this.processFlatJsonData();\n if (this.treemapLevelData.levelsData.length > 1) {\n this.reOrderLevelData(this.treemapLevelData.levelsData.length - 1);\n }\n }\n path = this.levels[0].groupPath;\n }\n if (!this.isHierarchicalData) {\n this.findTotalWeight(this.treemapLevelData.levelsData[0][path], 'Parent');\n }\n }\n };\n TreeMap.prototype.checkIsHierarchicalData = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child;\n this.dataSource = this.dataSource;\n for (var i = 0; i < this.dataSource.length; i++) {\n child = findChildren(this.dataSource[i])['values'];\n if (child && child.length) {\n this.isHierarchicalData = true;\n break;\n }\n else if (i === this.dataSource.length - 1) {\n this.isHierarchicalData = false;\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.processHierarchicalData = function (data, dataCount) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childData;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newData = {};\n var levelIndex;\n var path = this.leafItemSettings.labelPath ? this.leafItemSettings.labelPath : this.weightValuePath;\n var key;\n newData = findChildren(data);\n childData = newData ? newData['values'] : null;\n if (childData && childData.length > 0) {\n key = newData['key'];\n for (var i = 0; i < this.levels.length; i++) {\n if (key === this.levels[i].groupPath) {\n levelIndex = i;\n }\n }\n for (var j = 0; j < childData.length; j++) {\n childData[j]['name'] = childData[j][path];\n childData[j]['levelOrderName'] = (levelIndex === 0 ? childData[j]['name'] :\n data['levelOrderName'] + '#' + childData[j]['name']) + '';\n var childItemLevel = childData[j]['levelOrderName'];\n var childLevel = void 0;\n if (childItemLevel.search('#') > 0) {\n childLevel = childItemLevel.split('#').length - 1;\n }\n childData[j]['groupIndex'] = isNullOrUndefined(levelIndex) ? childLevel === this.levels.length\n ? this.levels.length : childLevel : levelIndex;\n if (levelIndex !== 0) {\n childData[j]['parent'] = data;\n }\n childData[j]['groupName'] = key;\n childData[j]['data'] = childData[j];\n childData[j]['isDrilled'] = false;\n childData[j]['weight'] = childData[j][this.weightValuePath];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childData.forEach(function (currentData) {\n _this.processHierarchicalData(currentData, dataCount);\n });\n }\n if (dataCount === this.treemapLevelData.hierarchyData.length - 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var mainData_1 = this.treemapLevelData.hierarchyData[0][this.levels[0].groupPath];\n for (var k = 0; k < this.treemapLevelData.hierarchyData.length; k++) {\n childData = findChildren(this.treemapLevelData.hierarchyData[k])['values'];\n if (k !== 0 && childData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childData.forEach(function (currentData) { mainData_1.push(currentData); });\n this.treemapLevelData.hierarchyData.splice(k, 1);\n k -= 1;\n }\n }\n mainData_1 = this.treemapLevelData.hierarchyData[0][this.levels[0].groupPath];\n for (var l = 0; l < mainData_1.length; l++) {\n newData[this.levels[0].groupPath] = mainData_1;\n mainData_1[l]['parent'] = newData;\n }\n }\n };\n /* eslint-disable valid-jsdoc */\n /**\n * This method is used to perform the print functionality in treemap.\n *\n * @param {string[] | string | Element} id - Specifies the element to print the treemap.\n * @returns {void}\n */\n TreeMap.prototype.print = function (id) {\n if (this.allowPrint && this.printModule) {\n this.printModule.print(this, id);\n }\n };\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {ExportType} type - Specifies the extension type of the exported document.\n * @param {string} fileName - Specifies file name for exporting the rendered TreeMap.\n * @param {PdfPageOrientation} orientation - Specifies the orientation of the PDF document.\n * @param {boolean} allowDownload - Specifies whether the exported file should be downloaded or not.\n * @returns {string} - Specifies the base64 string of the exported image which is returned when the allowDownload is set to false.\n */\n TreeMap.prototype.export = function (type, fileName, orientation, allowDownload) {\n var _this = this;\n if (isNullOrUndefined(allowDownload)) {\n allowDownload = true;\n }\n if (type === 'PDF' && this.allowPdfExport && this.pdfExportModule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n resolve(_this.pdfExportModule.export(_this, type, fileName, orientation, allowDownload));\n });\n }\n else if (this.allowImageExport && (type !== 'PDF') && this.imageExportModule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n resolve(_this.imageExportModule.export(_this, type, fileName, allowDownload));\n });\n }\n return null;\n };\n TreeMap.prototype.processFlatJsonData = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource = this.dataSource;\n var groupPath;\n var orderNames = [];\n for (var i = 0; i < this.levels.length + 1; i++) {\n groupPath = this.levels[i] ? this.levels[i].groupPath : this.leafItemSettings.labelPath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var level = {};\n level['level'] = i;\n level[groupPath] = [];\n this.treemapLevelData.levelsData.push(level);\n for (var j = 0; j < this.dataSource.length; j++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = {};\n var childName = '';\n if (!isNullOrUndefined(groupPath)) {\n var name_1 = this.dataSource[j][groupPath];\n if (i !== 0) {\n for (var k = 0; k <= i; k++) {\n var childGroupPath = this.levels[k] ? this.levels[k].groupPath : groupPath;\n childName += (this.dataSource[j][childGroupPath]) + ((k === i) ? '' : '#');\n }\n }\n if (!(orderNames.length > 0 ? orderNames.indexOf(childName ?\n childName : name_1) !== -1 : false)) {\n currentData['name'] = name_1;\n currentData['levelOrderName'] = ((childName) ? childName : name_1) + '';\n currentData['groupIndex'] = i;\n currentData['isDrilled'] = false;\n currentData['groupName'] = groupPath;\n currentData['data'] = this.dataSource[j];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, max-len\n this.treemapLevelData.levelsData[(this.treemapLevelData.levelsData.length - 1)][groupPath].push(currentData);\n orderNames.push((childName) ? childName : name_1);\n }\n }\n }\n }\n };\n /**\n * This method orders the treemap level data.\n *\n * @param {number} start - Specifies the start value of the treemap level.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.reOrderLevelData = function (start) {\n var currentName;\n var currentPath = this.levels[start] ? this.levels[start].groupPath : this.leafItemSettings.labelPath;\n var prevPath = this.levels[start - 1].groupPath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = this.treemapLevelData.levelsData[start][currentPath];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var previousData = this.treemapLevelData.levelsData[start - 1][prevPath];\n for (var i = 0; i < currentData.length; i++) {\n currentName = currentData[i]['levelOrderName'];\n for (var j = 0; j < previousData.length; j++) {\n previousData[j][currentPath] = isNullOrUndefined(previousData[j][currentPath]) ?\n [] : previousData[j][currentPath];\n if (this.IsChildHierarchy(currentName.split('#'), previousData[j]['levelOrderName'].split('#'))) {\n if (isNullOrUndefined(currentData[i]['parent'])) {\n currentData[i]['parent'] = previousData[j];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n previousData[j][currentPath].push(currentData[i]);\n break;\n }\n }\n }\n this.findTotalWeight(this.treemapLevelData.levelsData[this.treemapLevelData.levelsData.length - 1][currentPath], 'Child');\n this.treemapLevelData.levelsData.splice(start, 1);\n if ((start - 1) > 0) {\n this.reOrderLevelData(start - 1);\n }\n };\n TreeMap.prototype.IsChildHierarchy = function (current, previous) {\n var isChild = false;\n for (var i = 0; i < previous.length; i++) {\n if (current.length < i || previous[i] !== current[i]) {\n return false;\n }\n else {\n isChild = true;\n }\n }\n return isChild;\n };\n /**\n * This method finds the weight value of the treemap level.\n *\n * @param {any[]} processData - Specifies the treemap data.\n * @param {string} type - Specifies the type of the data.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.findTotalWeight = function (processData, type) {\n var _this = this;\n var totalWeight;\n var split;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var groupName;\n var groupObj = {};\n var _loop_1 = function (i) {\n totalWeight = 0;\n groupName = processData[i]['groupName'];\n split = processData[i]['levelOrderName'].split('#');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this_1.dataSource.forEach(function (data) {\n if (isContainsData(split, processData[i]['levelOrderName'], data, _this)) {\n totalWeight += parseFloat(data[_this.weightValuePath]);\n }\n });\n if (type === 'Parent') {\n groupObj[groupName] = processData;\n processData[i]['parent'] = groupObj;\n }\n processData[i]['weight'] = totalWeight;\n };\n var this_1 = this;\n for (var i = 0; i < processData.length; i++) {\n _loop_1(i);\n }\n };\n /**\n * To unbind event handlers for treemap.\n *\n * @returns {void}\n * @private\n */\n TreeMap.prototype.unWireEVents = function () {\n EventHandler.remove(this.element, 'click', this.clickOnTreeMap);\n EventHandler.remove(this.element, 'dblclick', this.doubleClickOnTreeMap);\n EventHandler.remove(this.element, 'contextmenu', this.rightClickOnTreeMap);\n EventHandler.remove(this.element, Browser.touchStartEvent, this.mouseDownOnTreeMap);\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.mouseMoveOnTreeMap);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.mouseEndOnTreeMap);\n EventHandler.remove(this.element, 'pointerleave mouseleave', this.mouseLeaveOnTreeMap);\n window.removeEventListener('resize', this.resizeEvent);\n };\n /**\n * To bind event handlers for treemap.\n *\n * @returns {void}\n */\n TreeMap.prototype.wireEVents = function () {\n EventHandler.add(this.element, 'click', this.clickOnTreeMap, this);\n EventHandler.add(this.element, 'dblclick', this.doubleClickOnTreeMap, this);\n EventHandler.add(this.element, 'contextmenu', this.rightClickOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchStartEvent, this.mouseDownOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchMoveEvent, this.mouseMoveOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchEndEvent, this.mouseEndOnTreeMap, this);\n EventHandler.add(this.element, 'pointerleave mouseleave', this.mouseLeaveOnTreeMap, this);\n this.resizeEvent = this.resizeOnTreeMap.bind(this);\n window.addEventListener('resize', this.resizeEvent);\n };\n /**\n * Method to set culture for maps\n *\n * @returns {void}\n */\n TreeMap.prototype.setCulture = function () {\n this.intl = new Internationalization();\n };\n /**\n * To add tab index for treemap element\n *\n * @returns {void}\n */\n TreeMap.prototype.addTabIndex = function () {\n this.element.setAttribute('aria-label', this.description || 'TreeMap Element');\n this.element.setAttribute('role', 'region');\n this.element.setAttribute('tabindex', this.tabIndex.toString());\n };\n /**\n * This method handles the window resize event on treemap.\n *\n * @param {Event} e - Specifies the pointer event.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TreeMap.prototype.resizeOnTreeMap = function (e) {\n var _this = this;\n if (!this.isDestroyed) {\n this.isResize = true;\n var args_1 = {\n name: resize,\n cancel: false,\n previousSize: this.availableSize,\n currentSize: new Size(0, 0),\n treemap: this\n };\n if (this.resizeTo) {\n clearTimeout(this.resizeTo);\n }\n if (!isNullOrUndefined(this.element) && this.element.classList.contains('e-treemap')) {\n this.resizeTo = setTimeout(function () {\n _this.unWireEVents();\n _this.createSvg();\n _this.refreshing = true;\n _this.wireEVents();\n args_1.currentSize = _this.availableSize;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _this.trigger(resize, args_1, function (observedArgs) {\n _this.render();\n _this.refreshing = false;\n });\n }, 500);\n }\n }\n };\n /**\n * This method handles the click event on the treemap.\n *\n * @param {PointerEvent} e - Specifies the mouse click event in the treemap.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.clickOnTreeMap = function (e) {\n var _this = this;\n var targetEle = e.target;\n var targetId = targetEle.id;\n var eventArgs;\n var itemIndex;\n var labelText = targetEle.innerHTML;\n var clickArgs = { cancel: false, name: click, treemap: this, mouseEvent: e };\n this.trigger(click, clickArgs);\n if (targetId.indexOf('_Item_Index') > -1) {\n e.preventDefault();\n itemIndex = parseFloat(targetId.split('_Item_Index_')[1]);\n eventArgs = {\n cancel: false, name: itemClick, treemap: this, item: this.layout.renderItems[itemIndex], mouseEvent: e,\n groupIndex: this.layout.renderItems[itemIndex]['groupIndex'], groupName: this.layout.renderItems[itemIndex]['name'],\n text: labelText, contentItemTemplate: labelText\n };\n this.trigger(itemClick, eventArgs, function (observedArgs) {\n if (observedArgs.text !== labelText || observedArgs.contentItemTemplate !== labelText) {\n if (isNullOrUndefined(_this.leafItemSettings.labelTemplate)) {\n observedArgs.text = textFormatter(observedArgs.text, observedArgs['item']['data'], observedArgs.treemap);\n targetEle.textContent = observedArgs.text;\n }\n else {\n setItemTemplateContent(targetId, targetEle, observedArgs.contentItemTemplate);\n }\n }\n });\n }\n var end = new Date().getMilliseconds();\n var doubleTapTimer1;\n if (!isNullOrUndefined(this.doubleClick)) {\n if (!isNullOrUndefined(doubleTapTimer1) && end - doubleTapTimer1 < 500) {\n this.doubleClickOnTreeMap(e);\n }\n doubleTapTimer1 = end;\n }\n };\n /**\n * This method handles the double click event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n */\n TreeMap.prototype.doubleClickOnTreeMap = function (e) {\n var doubleClickArgs = { cancel: false, name: doubleClick, treemap: this, mouseEvent: e };\n this.trigger(doubleClick, doubleClickArgs);\n //this.notify('dblclick', e);\n };\n /**\n * This method handles the right click event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.rightClickOnTreeMap = function (e) {\n var rightClickArgs = { cancel: false, name: rightClick, treemap: this, mouseEvent: e };\n this.trigger(rightClick, rightClickArgs);\n };\n /**\n * This method handles the mouse down event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.mouseDownOnTreeMap = function (e) {\n if (e.target.id.indexOf('_Item_Index') > -1) {\n this.mouseDown = true;\n }\n this.notify(Browser.touchStartEvent, e);\n };\n /**\n * This method handles the mouse move event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.mouseMoveOnTreeMap = function (e) {\n var targetEle = e.target;\n var targetId = targetEle.id;\n var eventArgs;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n var moveArgs = { cancel: false, name: mouseMove, treemap: this, mouseEvent: e };\n this.trigger(mouseMove, moveArgs);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childItems;\n if (targetId.indexOf('_Item_Index') > -1) {\n item = this.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childItems = findChildren(item)['values'];\n this.element.style.cursor = (!item['isLeafItem'] && childItems && childItems.length > 0 && this.enableDrillDown) ?\n 'pointer' : 'auto';\n eventArgs = { cancel: false, name: itemMove, treemap: this, item: item, mouseEvent: e };\n this.trigger(itemMove, eventArgs);\n }\n else {\n this.element.style.cursor = 'default';\n }\n this.notify(Browser.touchMoveEvent, e);\n };\n /**\n * This method calculates the selected treemap levels.\n *\n * @param {string} labelText - Specifies the label text.\n * @param {any} item - Specifies the treemap item.\n * @returns {any} - Returns label of the drilled level.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n TreeMap.prototype.calculateSelectedTextLevels = function (labelText, item) {\n //to find the levels by clicking the particular text both for drillDownView as true / false.\n var drillLevel;\n var k;\n var text;\n var levelLabels = item['levelOrderName'];\n var levelText = levelLabels.split('#');\n for (var _i = 0, _a = Object.keys(levelText); _i < _a.length; _i++) {\n k = _a[_i];\n if (levelText[k] === labelText) {\n drillLevel = parseInt(k, 10);\n text = labelText;\n }\n }\n return { drillLevel: drillLevel, currentLevelLabel: text, levelText: levelText };\n };\n /**\n * This method calculates the previous level of child items in treemap.\n *\n * @param {any} drillLevelValues - Specifies the values of drill level.\n * @param {any} item - Specifies the treemap item.\n * @param {boolean} directLevel - Specifies the current level.\n * @returns {boolean} - check whether it is previous level or not.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n TreeMap.prototype.calculatePreviousLevelChildItems = function (drillLevelValues, item, directLevel) {\n //By clicking any child items drilldown to the particular level.\n //At the time store all the previous drilled level items in drilledItems\n // This condition satisfies while drilldown View is set as false and the text contains '[+]'\n var text;\n var p = 0;\n var levelItems;\n var text1;\n var drillTextLevel = this.layout.renderItems[0]['levelOrderName'].split('#').length;\n for (var h = 0; h < drillTextLevel; h++) {\n text1 = h === 0 ? drillLevelValues['levelText'][h] : text1 + '#' + drillLevelValues['levelText'][h];\n }\n p = drillTextLevel > 1 ? drillTextLevel : p;\n for (var _i = 0, _a = Object['values'](this.layout.renderItems); _i < _a.length; _i++) {\n levelItems = _a[_i];\n var drillLevelText = levelItems['levelOrderName'].split('#');\n if (drillLevelText[0] === drillLevelValues['levelText'][0]) {\n text = p === 0 ? isNullOrUndefined(text1) ? text1 : drillLevelValues['levelText'][p] :\n directLevel ? text1 : text1 + '#' + drillLevelValues['levelText'][p];\n if (text === levelItems['levelOrderName']) {\n this.drilledItems.push({ name: levelItems['levelOrderName'], data: levelItems });\n p++;\n directLevel = true;\n if (p <= item['groupIndex']) {\n text = text + '#' + drillLevelValues['levelText'][p];\n text1 = text;\n }\n }\n }\n }\n return directLevel;\n };\n /**\n * This method compares the selected labels with the drill down items.\n *\n * @param {any} drillLevelValues - Specifies the values of drill level.\n * @param {any} item - Specifies the treemap item.\n * @param {number} i - Specifies the treemap item.\n * @returns {any} - return the new drill down object.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n TreeMap.prototype.compareSelectedLabelWithDrillDownItems = function (drillLevelValues, item, i) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var drillLevelChild;\n var newDrillItem = {};\n var b = drillLevelValues['drillLevel'] + 1;\n if (b === this.drilledItems[i]['data']['groupIndex']) {\n drillLevelChild = this.drilledItems[i]['data']['parent'];\n drillLevelChild['isDrilled'] = true;\n newDrillItem[drillLevelChild[this.drilledItems[i]['data']['groupName']]]\n = [drillLevelChild];\n // to remove all the items after matched drilled items\n this.drilledItems.splice(i, this.drilledItems.length);\n }\n else if (drillLevelValues['drillLevel'] === (this.drilledItems.length - 1)\n || drillLevelValues['drillLevel'] === item['groupIndex']) {\n newDrillItem[item['groupName']] = [item];\n }\n return newDrillItem;\n };\n /**\n * This method handles mouse end event in treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.mouseEndOnTreeMap = function (e) {\n var _this = this;\n var targetEle = e.target;\n var targetId = targetEle.id;\n var totalRect;\n var startEvent;\n var endEvent;\n var directLevel = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var index;\n var newDrillItem = {};\n var item;\n var process = true;\n var layoutID = this.element.id + '_TreeMap_' + this.layoutType + '_Layout';\n var drillLevel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateID = this.element.id + '_Label_Template_Group';\n var drillLevelValues;\n if (targetId.indexOf('_Item_Index') > -1 && this.enableDrillDown && !this.drillMouseMove) {\n if (e.cancelable) {\n e.preventDefault();\n }\n index = parseFloat(targetId.split('_Item_Index_')[1]);\n item = this.layout.renderItems[index];\n var labelText = targetEle.textContent;\n if (this.enableBreadcrumb) {\n drillLevelValues = this.calculateSelectedTextLevels(labelText, item);\n drillLevel = drillLevelValues['drillLevel'];\n if (!this.drillDownView && labelText.search('[+]') !== -1) {\n directLevel = this.calculatePreviousLevelChildItems(drillLevelValues, item, directLevel);\n }\n }\n if (this.levels.length !== 0 && !item['isLeafItem'] && findChildren(item)['values'] &&\n findChildren(item)['values'].length > 0) {\n if (this.drilledItems.length > 0) {\n item = directLevel ? this.drilledItems[this.drilledItems.length - 1]['data'] : item;\n for (var i = 0; i < this.drilledItems.length; i++) {\n if (!isNullOrUndefined(drillLevel)) { //Compare the selected text level with drilled items\n var drillLength = this.drilledItems.length;\n newDrillItem = this.compareSelectedLabelWithDrillDownItems(drillLevelValues, item, i);\n if (drillLength !== this.drilledItems.length) {\n i -= 1;\n break;\n }\n } //when clicking the levels drill back to the previous level process takes place\n if (item['levelOrderName'] === this.drilledItems[i]['name'] && !directLevel && isNullOrUndefined(drillLevel)) {\n if (item['groupIndex'] === 0 && item['parent'][item['groupName']] instanceof Array) {\n item['isDrilled'] = !(item['isDrilled']);\n if (!item['isDrilled']) {\n newDrillItem = item['parent'];\n }\n else {\n newDrillItem[item['groupName']] = [item];\n }\n }\n else {\n item['isDrilled'] = false;\n item['parent']['isDrilled'] = true;\n item = item['parent'];\n newDrillItem[item['groupName']] = [item];\n }\n this.drilledItems.splice(i, 1);\n i -= 1;\n break;\n }\n else if (i === this.drilledItems.length - 1 && isNullOrUndefined(drillLevel)) {\n item['isDrilled'] = true; // click the items move to next level.\n newDrillItem[item['groupName']] = [item];\n }\n }\n }\n else {\n item['isDrilled'] = true;\n newDrillItem[item['groupName']] = [item];\n }\n startEvent = {\n cancel: false, name: drillStart, treemap: this,\n element: targetEle, groupIndex: this.enableBreadcrumb &&\n this.drilledItems.length !== 0 && !isNullOrUndefined(drillLevel) ?\n this.drilledItems[this.drilledItems.length - 1]['data']['groupIndex'] : item['groupIndex'],\n groupName: this.enableBreadcrumb && this.drilledItems.length !== 0 && !isNullOrUndefined(drillLevel) ?\n this.drilledItems[this.drilledItems.length - 1]['data']['name'] : item['name'],\n rightClick: e.which === 3 ? true : false, childItems: null, item: newDrillItem\n };\n this.trigger(drillStart, startEvent, function (observedArgs) {\n _this.currentLevel = item['isDrilled'] && isNullOrUndefined(drillLevel) ? item['groupIndex'] :\n (!isNullOrUndefined(drillLevel) && _this.enableBreadcrumb && item['isDrilled']) ? drillLevel : null;\n if (!observedArgs.cancel) {\n if (document.getElementById(layoutID)) {\n var layerElementId = document.getElementById(layoutID);\n layerElementId.parentNode.removeChild(layerElementId);\n }\n totalRect = extend({}, _this.areaRect, totalRect, true);\n if (_this.legendSettings.visible && !isNullOrUndefined(_this.treeMapLegendModule)) {\n if (!isNullOrUndefined(newDrillItem)) {\n _this.treeMapLegendModule.legendGroup.textContent = '';\n _this.treeMapLegendModule.legendGroup = null;\n _this.treeMapLegendModule.widthIncrement = 0;\n _this.treeMapLegendModule.heightIncrement = 0;\n if (_this.enableBreadcrumb && !isNullOrUndefined(drillLevel)) {\n _this.drilledLegendItems = {\n name: _this.drilledItems[_this.drilledItems.length - 1]['data']['levelOrderName'],\n data: _this.drilledItems[_this.drilledItems.length - 1]['data']\n };\n }\n else {\n _this.drilledLegendItems = { name: item['levelOrderName'], data: item };\n }\n _this.treeMapLegendModule.renderLegend();\n }\n totalRect = !isNullOrUndefined(_this.totalRect) ? _this.totalRect : totalRect;\n }\n if (document.getElementById(templateID)) {\n var drillElementId = document.getElementById(templateID);\n drillElementId.parentNode.removeChild(drillElementId);\n }\n if (!isNullOrUndefined(observedArgs.childItems) && !observedArgs.cancel) {\n _this.layout.onDemandProcess(observedArgs.childItems);\n }\n else {\n _this.layout.calculateLayoutItems(newDrillItem, totalRect);\n _this.layout.renderLayoutItems();\n }\n }\n });\n endEvent = { cancel: false, name: drillEnd, treemap: this, renderItems: this.layout.renderItems };\n this.trigger(drillEnd, endEvent);\n if (process) {\n if (!directLevel && isNullOrUndefined(drillLevel)) {\n this.drilledItems.push({ name: item['levelOrderName'], data: item });\n }\n }\n }\n }\n this.mouseDown = false;\n this.notify(Browser.touchEndEvent, e);\n };\n /**\n * This method handles mouse leave event in treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse.\n * @return {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TreeMap.prototype.mouseLeaveOnTreeMap = function (e) {\n if (this.treeMapTooltipModule) {\n this.treeMapTooltipModule.removeTooltip();\n }\n if (this.treeMapLegendModule) {\n this.treeMapLegendModule.removeInteractivePointer();\n }\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', this);\n if (this.treeMapHighlightModule) {\n removeShape(this.treeMapHighlightModule.shapeHighlightCollection);\n this.treeMapHighlightModule.highLightId = '';\n }\n };\n /**\n * This method is used to select or remove the selection of treemap item based on the provided selection settings.\n *\n * @param {string[]} levelOrder - Specifies the order of the level.\n * @param {boolean} isSelected - Specifies whether the treemap item should be selected or the selection should be removed.\n * @return {void}\n */\n TreeMap.prototype.selectItem = function (levelOrder, isSelected) {\n if (isNullOrUndefined(isSelected)) {\n isSelected = true;\n }\n var levelOrderName = '';\n for (var i = 0; i < levelOrder.length; i++) {\n if (i !== levelOrder.length - 1) {\n levelOrderName += levelOrder[i] + '#';\n }\n else {\n levelOrderName += levelOrder[i];\n }\n }\n if (this.treeMapSelectionModule && this.selectionSettings.enable) {\n this.treeMapSelectionModule.selectTreemapItem(levelOrderName, isSelected);\n }\n };\n /**\n * To provide the array of modules needed for maps rendering\n *\n * @returns {ModuleDeclaration[]} Returns the modules\n * @private\n */\n TreeMap.prototype.requiredModules = function () {\n var modules = [];\n if (this.tooltipSettings.visible) {\n modules.push({\n member: 'treeMapTooltip',\n args: [this],\n name: 'TreeMapTooltip'\n });\n }\n if (this.highlightSettings.enable) {\n modules.push({\n member: 'treeMapHighlight',\n args: [this],\n name: 'TreeMapHighlight'\n });\n }\n if (this.selectionSettings.enable) {\n modules.push({\n member: 'treeMapSelection',\n args: [this],\n name: 'TreeMapSelection'\n });\n }\n if (this.legendSettings.visible) {\n modules.push({\n member: 'treeMapLegend',\n args: [this],\n name: 'TreeMapLegend'\n });\n }\n if (this.allowPrint) {\n modules.push({\n member: 'Print',\n args: [this, Print],\n name: 'Print'\n });\n }\n if (this.allowImageExport) {\n modules.push({\n member: 'ImageExport',\n args: [this, ImageExport],\n name: 'ImageExport'\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this, PdfExport],\n name: 'PdfExport'\n });\n }\n return modules;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TreeMapModel} newProp - Specifies the new property\n * @param {TreeMapModel} oldProp - Specifies the old property\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TreeMap.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.isDestroyed) {\n var render = false;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'background':\n this.renderBorder();\n break;\n case 'height':\n case 'width':\n case 'layoutType':\n case 'levels':\n case 'drillDownView':\n case 'renderDirection':\n case 'leafItemSettings':\n case 'legendSettings':\n case 'dataSource':\n render = true;\n break;\n }\n }\n if (render) {\n this.createSvg();\n this.renderElements();\n }\n }\n };\n /**\n * Gets component name.\n *\n * @returns {string} - return the treemap instance.\n * @private\n */\n TreeMap.prototype.getModuleName = function () {\n return 'treemap';\n };\n /**\n * This method destroys the treemap. This method removes the events associated with the treemap and disposes the objects created for rendering and updating the treemap.\n */\n TreeMap.prototype.destroy = function () {\n this.unWireEVents();\n removeElement('treeMapMeasureText');\n this.drilledItems = [];\n this.levelSelection = [];\n this.legendId = [];\n this.removeSvg();\n _super.prototype.destroy.call(this);\n this.areaRect = null;\n this.themeStyle = null;\n this.totalRect = null;\n this.drilledLegendItems = null;\n this.doubleTapTimer = null;\n this.treemapLevelData = null;\n this.resizeEvent = null;\n this.availableSize = null;\n this.intl = null;\n if (!isNullOrUndefined(this.layout)) {\n this.layout.destroy();\n }\n this.layout = null;\n this.renderer = null;\n };\n TreeMap.prototype.removeSvg = function () {\n removeElement(this.element.id + '_Secondary_Element');\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Returns the string value.\n * @private\n */\n TreeMap.prototype.getPersistData = function () {\n return '';\n };\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowPrint\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowImageExport\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"height\", void 0);\n __decorate([\n Complex({}, Border)\n ], TreeMap.prototype, \"border\", void 0);\n __decorate([\n Complex({}, Margin)\n ], TreeMap.prototype, \"margin\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"background\", void 0);\n __decorate([\n Property('Material')\n ], TreeMap.prototype, \"theme\", void 0);\n __decorate([\n Complex({}, TitleSettings)\n ], TreeMap.prototype, \"titleSettings\", void 0);\n __decorate([\n Property('Squarified')\n ], TreeMap.prototype, \"layoutType\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"weightValuePath\", void 0);\n __decorate([\n Property('')\n ], TreeMap.prototype, \"rangeColorValuePath\", void 0);\n __decorate([\n Property('')\n ], TreeMap.prototype, \"equalColorValuePath\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"colorValuePath\", void 0);\n __decorate([\n Property([])\n ], TreeMap.prototype, \"palette\", void 0);\n __decorate([\n Property('TopLeftBottomRight')\n ], TreeMap.prototype, \"renderDirection\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"enableDrillDown\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"enableBreadcrumb\", void 0);\n __decorate([\n Property(' - ')\n ], TreeMap.prototype, \"breadcrumbConnector\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"drillDownView\", void 0);\n __decorate([\n Complex({}, InitialDrillSettings)\n ], TreeMap.prototype, \"initialDrillDown\", void 0);\n __decorate([\n Complex({}, LeafItemSettings)\n ], TreeMap.prototype, \"leafItemSettings\", void 0);\n __decorate([\n Collection([], LevelSettings)\n ], TreeMap.prototype, \"levels\", void 0);\n __decorate([\n Complex({}, HighlightSettings)\n ], TreeMap.prototype, \"highlightSettings\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], TreeMap.prototype, \"selectionSettings\", void 0);\n __decorate([\n Complex({}, TooltipSettings)\n ], TreeMap.prototype, \"tooltipSettings\", void 0);\n __decorate([\n Complex({}, LegendSettings)\n ], TreeMap.prototype, \"legendSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"useGroupingSeparator\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"description\", void 0);\n __decorate([\n Property(0)\n ], TreeMap.prototype, \"tabIndex\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"format\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"drillStart\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"drillEnd\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemSelected\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemHighlight\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"tooltipRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemMove\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"doubleClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"rightClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"mouseMove\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"resize\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"legendItemRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"legendRendering\", void 0);\n TreeMap = __decorate([\n NotifyPropertyChanges\n ], TreeMap);\n return TreeMap;\n}(Component));\nexport { TreeMap };\n/**\n * @private\n */\nvar LevelsData = /** @class */ (function () {\n function LevelsData() {\n }\n return LevelsData;\n}());\nexport { LevelsData };\n","import { findChildren, Location, Rect, Size, measureText, TextOption, PathOption, RectOption, drawSymbol, orderByArea, legendMaintain } from '../utils/helper';\nimport { Browser, isNullOrUndefined, EventHandler, extend } from '@syncfusion/ej2-base';\nimport { renderTextElement, textTrim } from '../utils/helper';\nimport { legendItemRendering, legendRendering } from '../model/constants';\n/**\n * Legend module class\n */\nvar TreeMapLegend = /** @class */ (function () {\n function TreeMapLegend(treemap) {\n this.page = 0;\n /** @private */\n this.legendBorderRect = new Rect(0, 0, 0, 0);\n this.currentPage = 0;\n /** @private */\n this.heightIncrement = 0;\n /** @private */\n this.widthIncrement = 0;\n this.textMaxWidth = 0;\n this.legendInteractiveGradient = [];\n this.legendItemRect = new Rect(0, 0, 0, 0);\n this.treemap = treemap;\n this.addEventListener();\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * method for legend\n * @private\n */\n TreeMapLegend.prototype.renderLegend = function () {\n var _this = this;\n this.page = 0;\n this.legendRenderingCollections = [];\n this.legendCollections = [];\n this.legendNames = [];\n this.totalPages = [];\n this.gradientCount = 1;\n this.widthIncrement = 0;\n this.heightIncrement = 0;\n this.defsElement = this.treemap.renderer.createDefs();\n this.treemap.svgObject.appendChild(this.defsElement);\n var eventArgs = {\n cancel: false, name: legendRendering, treemap: this.treemap, _changePosition: this.treemap.legendSettings.position,\n position: this.treemap.legendSettings.position\n };\n this.treemap.trigger(legendRendering, eventArgs, function (observedArgs) {\n if (!observedArgs.cancel && observedArgs._changePosition !== _this.treemap.legendSettings.position) {\n _this.treemap.legendSettings.position = observedArgs._changePosition;\n }\n _this.calculateLegendBounds();\n if (_this.legendCollections.length > 0) {\n _this.drawLegend();\n }\n });\n };\n // eslint-disable-next-line valid-jsdoc\n /** @private */\n TreeMapLegend.prototype.calculateLegendBounds = function () {\n var _this = this;\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n this.findColorMappingLegendItems(treemap.treemapLevelData.levelsData[0]);\n if ((this.treemap.palette.length > 0 || !isNullOrUndefined(treemap.colorValuePath))\n && this.legendCollections.length === 0) {\n this.findPaletteLegendItems(treemap.treemapLevelData.levelsData[0]);\n }\n if (this.legendCollections.length > 0) {\n // eslint-disable-next-line @typescript-eslint/tslint/config\n this.legendCollections.sort(function (firstItem, nextItem) { return (firstItem.levelIndex > nextItem.levelIndex) ? 1 :\n (firstItem.levelIndex < nextItem.levelIndex) ? -1 : 0; });\n // eslint-disable-next-line @typescript-eslint/tslint/config\n this.legendCollections.sort(function (firstItem, nextItem) { return (firstItem.groupIndex > nextItem.groupIndex) ? 1 :\n (firstItem.groupIndex < nextItem.groupIndex) ? -1 : 0; });\n // eslint-disable-next-line @typescript-eslint/tslint/config\n this.legendCollections.sort(function (firstItem, nextItem) { return (firstItem.leafIndex > nextItem.leafIndex) ? 1 :\n (firstItem.leafIndex < nextItem.leafIndex) ? -1 : 0; });\n var defaultSize = 25;\n var textPadding = 10;\n var position = legend.position;\n var legendTitle = legend.title.text;\n var titleTextStyle = legend.titleStyle;\n var legendMode = legend.mode;\n var shapeX = 0;\n var shapeY = 0;\n var textX = 0;\n var textY = 0;\n var shapeHeight = legend.shapeHeight;\n var shapeWidth = legend.shapeWidth;\n var shapeLocation = [];\n var textLocation = [];\n var orientation_1 = (legend.orientation === 'None') ? ((position === 'Top' || position === 'Bottom'\n || (position === 'Auto' && treemap.availableSize.width <= treemap.availableSize.height))\n ? 'Horizontal' : 'Vertical') : legend.orientation;\n var leftPadding = 10;\n var topPadding = 10;\n var spacing = 10;\n var legendWidth = (legend.width.length > 1) ? (legend.width.indexOf('%') > -1) ? (treemap.availableSize.width / 100)\n * parseFloat(legend.width) : parseFloat(legend.width) : null;\n var legendHeight = (legend.height.length > 1) ? (legend.height.indexOf('%') > -1) ?\n (treemap.availableSize.height / 100) * parseFloat(legend.height) : parseFloat(legend.height) : null;\n titleTextStyle.fontFamily = titleTextStyle.fontFamily || treemap.themeStyle.fontFamily;\n titleTextStyle.fontWeight = titleTextStyle.fontWeight || treemap.themeStyle.titleFontWeight;\n titleTextStyle.size = titleTextStyle.size || treemap.themeStyle.legendFontSize;\n var legendTitleSize = measureText(legendTitle, titleTextStyle);\n var startX_1 = 0;\n var startY_1 = 0;\n var shapePadding = legend.shapePadding;\n var itemTextStyle = legend.textStyle;\n itemTextStyle.size = itemTextStyle.size || treemap.themeStyle.legendFontSize;\n itemTextStyle.fontFamily = itemTextStyle.fontFamily || treemap.themeStyle.fontFamily;\n itemTextStyle.fontWeight = itemTextStyle.fontWeight || treemap.themeStyle.fontWeight;\n if (legendMode === 'Default') {\n legendWidth = (isNullOrUndefined(legendWidth)) ? treemap.areaRect.width : legendWidth;\n legendHeight = (isNullOrUndefined(legendHeight)) ? treemap.areaRect.height : legendHeight;\n var j = 0;\n for (var i = 0; i < this.legendCollections.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var legendItem = this.legendCollections[i];\n if (isNullOrUndefined(this.totalPages[this.page])) {\n this.totalPages[this.page] = { Page: (this.page + 1), Collection: [] };\n }\n var legendTextSize = measureText(legendItem['legendName'], itemTextStyle);\n this.textMaxWidth = Math.max(this.textMaxWidth, legendTextSize.width);\n if (i === 0) {\n startX_1 = shapeX = (leftPadding + (shapeWidth / 2));\n startY_1 = shapeY = topPadding + legendTitleSize.height + (shapeHeight > legendTextSize.height ? shapeHeight / 2\n : (legendTextSize.height / 4));\n }\n else {\n var maxSize = (legendTextSize.height > shapeHeight) ? legendTextSize.height : shapeHeight;\n if (orientation_1 === 'Horizontal') {\n var prvePositionX = (textLocation[j - 1].x + textLocation[j - 1].width) + textPadding + shapeWidth;\n if ((prvePositionX + shapePadding + legendTextSize.width) > legendWidth) {\n var nextPositionY = (textLocation[j - 1].y > (shapeLocation[j - 1].y + (shapeHeight / 2)) ?\n textLocation[j - 1].y : (shapeLocation[j - 1].y + (shapeHeight / 2))) + topPadding;\n if ((nextPositionY + maxSize) > legendHeight) {\n this.getPageChanged();\n j = 0;\n shapeLocation = [];\n textLocation = [];\n shapeX = startX_1;\n shapeY = startY_1;\n }\n else {\n shapeX = (shapeLocation[0].x);\n shapeY = (nextPositionY + (maxSize / 2));\n }\n }\n else {\n shapeX = (prvePositionX - (shapeWidth / 2));\n shapeY = (shapeLocation[j - 1]).y;\n }\n }\n else {\n var prevPositionY = textLocation[j - 1].y > shapeLocation[j - 1].y + (shapeHeight / 2) ?\n textLocation[j - 1].y : shapeLocation[j - 1].y + (shapeHeight / 2);\n if ((prevPositionY + topPadding + maxSize) > legendHeight) {\n var nextPositionX = (textLocation[j - 1].x + this.textMaxWidth + textPadding);\n if ((nextPositionX + shapePadding + legendTextSize.width) > legendWidth) {\n shapeX = startX_1;\n shapeY = startY_1;\n textLocation = [];\n shapeLocation = [];\n this.getPageChanged();\n j = 0;\n }\n else {\n shapeX = nextPositionX + (shapeWidth / 2);\n shapeY = (shapeLocation[0].y);\n }\n }\n else {\n shapeX = shapeLocation[j - 1].x;\n shapeY = prevPositionY + topPadding + (shapeHeight / 2);\n }\n }\n }\n textX = shapeX + (shapeWidth / 2) + shapePadding;\n textY = shapeY + (legendTextSize.height / 4);\n shapeLocation.push({ x: shapeX, y: shapeY });\n textLocation.push({ x: textX, y: textY, width: legendTextSize.width, height: (legendTextSize.height / 2) });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalPages[this.page]['Collection'].push({\n DisplayText: legendItem['legendName'], element: legendItem['gradientElement'],\n Shape: { x: shapeX, y: shapeY },\n Text: { x: textX, y: textY },\n Fill: legendItem['legendFill'],\n Data: legendItem['legendData'],\n Rect: {\n x: shapeLocation[j].x - (shapeWidth / 2),\n y: (shapeLocation[j].y - (shapeHeight / 2)) < (textY - legendTextSize.height) ?\n (shapeLocation[j].y - (shapeHeight / 2)) : (textY - legendTextSize.height),\n width: Math.abs((shapeLocation[j].x - (shapeWidth / 2)) - (textX + legendTextSize.width)),\n height: ((shapeHeight > legendTextSize.height) ? shapeHeight : legendTextSize.height)\n }\n });\n j++;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.totalPages[0]['Collection'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n collection.forEach(function (legendObj, index) {\n var legendRect = new Rect(legendObj['Rect']['x'], legendObj['Rect']['y'], legendObj['Rect']['width'], legendObj['Rect']['height']);\n if (index === 0) {\n startX_1 = legendRect.x;\n startY_1 = legendRect.y;\n }\n _this.widthIncrement = Math.max(_this.widthIncrement, Math.abs(startX_1 - (legendRect.x + legendRect.width)));\n _this.heightIncrement = Math.max(_this.heightIncrement, Math.abs(startY_1 - (legendRect.y + legendRect.height)));\n });\n legendWidth = ((this.widthIncrement < legendWidth) ? this.widthIncrement : legendWidth);\n legendHeight = ((this.heightIncrement < legendHeight) ? this.heightIncrement : legendHeight);\n this.legendItemRect = {\n x: collection[0]['Rect']['x'], y: collection[0]['Rect']['y'],\n width: legendWidth, height: legendHeight\n };\n }\n else {\n var legendLength = this.legendCollections.length;\n var rectWidth = (orientation_1 === 'Horizontal') ? (isNullOrUndefined(legendWidth)) ? (treemap.areaRect.width / legendLength) :\n (legendWidth / legendLength) : (isNullOrUndefined(legendWidth)) ? defaultSize : legendWidth;\n var rectHeight = (orientation_1 === 'Horizontal') ? (isNullOrUndefined(legendHeight)) ? defaultSize : legendHeight :\n (isNullOrUndefined(legendHeight)) ? (treemap.areaRect.height / legendLength) : (legendHeight / legendLength);\n startX_1 = 0;\n startY_1 = legendTitleSize.height + spacing;\n var textPadding_1 = 10;\n var placement = legend.labelPosition;\n var itemStartX = 0;\n var itemStartY = 0;\n var labelAction = legend.labelDisplayMode;\n var maxTextHeight = 0;\n var maxTextWidth = 0;\n for (var i = 0; i < this.legendCollections.length; i++) {\n startX_1 = (orientation_1 === 'Horizontal') ? (startX_1 + rectWidth) : startX_1;\n startY_1 = (orientation_1 === 'Horizontal') ? startY_1 : (startY_1 + rectHeight);\n var legendText = this.legendCollections[i]['legendName'];\n var itemTextSize = new Size(0, 0);\n if (labelAction === 'None') {\n itemTextSize = measureText(legendText, itemTextStyle);\n }\n else if (labelAction === 'Trim') {\n legendText = textTrim((orientation_1 === 'Horizontal' ? rectWidth : rectHeight), legendText, itemTextStyle);\n itemTextSize = measureText(legendText, itemTextStyle);\n }\n else {\n legendText = '';\n }\n maxTextHeight = Math.max(maxTextHeight, itemTextSize.height);\n maxTextWidth = Math.max(maxTextWidth, itemTextSize.width);\n if (itemTextSize.width > 0 && itemTextSize.height > 0) {\n if (orientation_1 === 'Horizontal') {\n textX = startX_1 + (rectWidth / 2);\n textY = (placement === 'After') ? (startY_1 + rectHeight + (itemTextSize.height / 2)) + textPadding_1 :\n (startY_1 - textPadding_1);\n }\n else {\n textX = (placement === 'After') ? startX_1 - (itemTextSize.width / 2) - textPadding_1\n : (startX_1 + rectWidth + itemTextSize.width / 2) + textPadding_1;\n textY = startY_1 + (rectHeight / 2) + (itemTextSize.height / 4);\n }\n }\n if (i === 0) {\n itemStartX = (orientation_1 === 'Horizontal') ? startX_1 : (placement === 'After') ?\n textX - (itemTextSize.width / 2) : startX_1;\n itemStartY = (orientation_1 === 'Horizontal') ? (placement === 'After') ? startY_1 :\n textY - (itemTextSize.height / 2) : startY_1;\n }\n if (i === legendLength - 1) {\n legendWidth = (orientation_1 === 'Horizontal') ? Math.abs((startX_1 + rectWidth) - itemStartX) :\n (rectWidth + maxTextWidth + textPadding_1);\n legendHeight = (orientation_1 === 'Horizontal') ? (rectHeight + (maxTextHeight / 2) + textPadding_1) :\n Math.abs((startY_1 + rectHeight) - itemStartY);\n }\n this.legendRenderingCollections.push({\n fill: this.legendCollections[i]['legendFill'], x: startX_1, y: startY_1,\n width: rectWidth, height: rectHeight, element: this.legendCollections[i]['gradientElement'],\n text: legendText, textX: textX, textY: textY,\n textWidth: itemTextSize.width, textHeight: itemTextSize.height,\n data: this.legendCollections[i]['legendData']\n });\n }\n this.legendItemRect = { x: itemStartX, y: itemStartY, width: legendWidth, height: legendHeight };\n }\n }\n };\n TreeMapLegend.prototype.getPageChanged = function () {\n this.page++;\n if (isNullOrUndefined(this.totalPages[this.page])) {\n this.totalPages[this.page] = { Page: (this.page + 1), Collection: [] };\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.findColorMappingLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n if (child && child.length > 0) {\n this.calculateLegendItems(child);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < child.length; i++) {\n this.findColorMappingLegendItems(child[i]);\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.findPaletteLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child;\n var legendFillColor;\n if (!isNullOrUndefined(this.treemap.drilledItems)) {\n if (this.treemap.drilledItems.length === 0 && !isNullOrUndefined(this.treemap.initialDrillDown.groupName)\n && isNullOrUndefined(this.treemap.drilledLegendItems)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var items = findChildren(data)['values'];\n for (var k = 0; k < items.length; k++) {\n if (items[k]['Name'] === this.treemap.initialDrillDown.groupName) {\n items[k]['isDrilled'] = !items[k]['isDrilled'];\n data = items[k];\n this.treemap.currentLevel = this.treemap.initialDrillDown.groupIndex;\n legendFillColor = this.treemap.palette.length > 0 ? this.treemap.palette[k % this.treemap.palette.length] :\n items[k]['data'][this.treemap.colorValuePath];\n break;\n }\n }\n }\n }\n if (this.treemap.enableDrillDown && !isNullOrUndefined(this.treemap.drilledLegendItems)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childElement = this.treemap.drilledLegendItems;\n 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 isLeafItem;\n var colorMapProcess = false;\n var colorMapping;\n var groupIndex;\n var leaf = this.treemap.leafItemSettings;\n var levels = this.treemap.levels;\n var equalValue;\n var position = this.treemap.legendSettings.position;\n var gradientElement;\n var x2;\n var y2;\n var actualValue;\n var isDuplicate;\n var isEqualColor;\n var isRange;\n var isDesaturation = false;\n var legendIndex = 0;\n var outfill;\n var labelLegend;\n var otherIndex;\n this.outOfRangeLegend = null;\n for (var i = 0; i < data.length; i++) {\n fill = '';\n isEqualColor = false;\n isRange = false;\n isDesaturation = false;\n currentData = data[i]['data'];\n groupIndex = data[i]['groupIndex'];\n isLeafItem = (this.treemap.levels.length === 0 || groupIndex === this.treemap.levels.length);\n colorMapping = isLeafItem ? leaf.colorMapping : levels[groupIndex].colorMapping;\n for (var j = 0; j < colorMapping.length; j++) {\n var colorMap = colorMapping[j];\n gradientElement = null;\n rangeValue = Number(currentData[this.treemap.rangeColorValuePath]);\n equalValue = currentData[this.treemap.equalColorValuePath];\n colorMap.value = !isNullOrUndefined(colorMap.value) ? colorMap.value.toString() : colorMap.value;\n if (!isNullOrUndefined(colorMap.from) && !isNullOrUndefined(colorMap.to) &&\n rangeValue >= colorMap.from && rangeValue <= colorMap.to && colorMap.showLegend) {\n colorMapProcess = true;\n isRange = true;\n actualValue = colorMap.from + ' - ' + colorMap.to;\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : colorMap.from + ' - ' + colorMap.to;\n fill = isNullOrUndefined(colorMap.color) ? fill : colorMap.color;\n isAddData = this.isAddNewLegendData(actualValue);\n }\n else if (!isNullOrUndefined(colorMap.value) && equalValue === colorMap.value && colorMap.showLegend) {\n colorMapProcess = true;\n isEqualColor = true;\n actualValue = colorMap.value.toString();\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : colorMap.value.toString();\n fill = isNullOrUndefined(colorMap.color) ? fill :\n Object.prototype.toString.call(colorMap.color) === '[object Array]' ? colorMap.color[0] : colorMap.color;\n isAddData = this.isAddNewLegendData(actualValue);\n }\n if (colorMapProcess && isNullOrUndefined(colorMap.value) && colorMap.maxOpacity && colorMap.minOpacity\n && this.treemap.legendSettings.mode === 'Interactive') {\n var colors = [];\n isDesaturation = true;\n if (Object.prototype.toString.call(colorMap.color) === '[object Array]') {\n for (var q = 0; q < colorMap.color.length; q++) {\n var offsetColor = 100 / (colorMap.color.length - 1);\n var offsetValue = q * offsetColor + '%';\n var stop1Color = { colorStop: offsetValue.toString(), color: colorMap.color[q] };\n colors.push(stop1Color);\n }\n }\n else {\n var stop1Color = { colorStop: '0%', color: fill };\n var stop2Color = { colorStop: '100%', color: fill };\n colors.push(stop1Color);\n colors.push(stop2Color);\n }\n x2 = position === 'Top' || position === 'Bottom' ? '100%' : '0%';\n y2 = position === 'Top' || position === 'Bottom' ? '0%' : '100%';\n var gradient = {\n id: 'groupIndex_' + groupIndex + '_colorIndex_' + this.gradientCount, x1: '0%', y1: '0%', x2: x2, y2: y2\n };\n gradientElement = this.treemap.renderer.drawGradient('linearGradient', gradient, colors).childNodes[0];\n if (Object.prototype.toString.call(colorMap.color) !== '[object Array]') {\n gradientElement.childNodes[0].setAttribute('stop-opacity', colorMap.minOpacity.toString());\n gradientElement.childNodes[1].setAttribute('stop-opacity', colorMap.maxOpacity.toString());\n }\n this.defsElement.appendChild(gradientElement);\n this.gradientCount++;\n }\n isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, legendText) : false;\n if (isAddData && isAddData['process'] && colorMapProcess && !isDuplicate) {\n colorMapProcess = false;\n fill = ((Object.prototype.toString.call(colorMap.color) === '[object Array]')) && isNullOrUndefined(gradientElement)\n && isNullOrUndefined(colorMap.value) ? this.legendGradientColor(colorMap, legendIndex) : fill;\n this.legendCollections.push({\n actualValue: actualValue, levelIndex: !isLeafItem ? j : -1, leafIndex: isLeafItem ? j : -1,\n legendName: legendText, legendFill: fill, legendData: [], groupIndex: !isLeafItem ? groupIndex : -1,\n gradientElement: !isNullOrUndefined(gradientElement) ? gradientElement : isNullOrUndefined(colorMap.value)\n ? this.legendLinearGradient : null, name: data[i]['name'],\n opacity: this.treemap.legendSettings.opacity, borderColor: this.treemap.legendSettings.border.color,\n borderWidth: this.treemap.legendSettings.border.width\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[this.legendCollections.length - 1]['legendData'].push(data[i]);\n legendIndex++;\n }\n else if (colorMapProcess && !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 * @private\n */\n TreeMapLegend.prototype.drawLegend = function () {\n var legend = this.treemap.legendSettings;\n var render = this.treemap.renderer;\n var fill;\n var textOptions;\n var gradientElement;\n var textFont = legend.textStyle;\n this.legendGroup = render.createGroup({ id: this.treemap.element.id + '_Legend_Group' });\n this.renderLegendBorder();\n this.renderLegendTitle();\n if (legend.mode === 'Default') {\n this.drawLegendItem(this.currentPage);\n }\n else {\n for (var i = 0; i < this.legendRenderingCollections.length; i++) {\n var itemId = this.treemap.element.id + '_Legend_Index_' + i;\n var textId = this.treemap.element.id + '_Legend_Index_' + i + '_Text';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = this.legendRenderingCollections[i];\n gradientElement = item['element'];\n fill = gradientElement ? 'url(#' + gradientElement.id + ')' : item['fill'];\n var bounds = new Rect(item['x'], item['y'], item['width'], item['height']);\n var textLocation = new Location(item['textX'], item['textY']);\n var rectOptions = new RectOption(itemId, fill, legend.shapeBorder, legend.opacity, bounds);\n if (this.treemap.enableRtl) {\n if (this.treemap.legendSettings.position === 'Left' || this.treemap.legendSettings.position === 'Right'\n || (this.treemap.legendSettings.position === 'Auto'\n && this.treemap.availableSize.width >= this.treemap.availableSize.height)) {\n rectOptions.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - (this.translate.y + rectOptions.height) - Math.abs(this.legendBorderRect.y - rectOptions.y);\n textLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - (this.translate.y) + (item['textHeight'] / 2)\n - Math.abs(this.legendBorderRect.y - textLocation.y);\n }\n else {\n rectOptions.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + rectOptions.width)\n - Math.abs(this.legendBorderRect.x - rectOptions.x);\n textLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - this.translate.x - Math.abs(this.legendBorderRect.x - textLocation.x);\n }\n }\n 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 render = treemap.renderer;\n var shapeBorder = legend.shapeBorder;\n var eventArgs;\n if (page >= 0 && page < this.totalPages.length) {\n if (document.getElementById(this.legendGroup.id)) {\n document.getElementById(this.legendGroup.id).remove();\n }\n var isLineShape_1 = (legend.shape === 'HorizontalLine' || legend.shape === 'VerticalLine' || legend.shape === 'Cross');\n var strokeColor_1 = isLineShape_1 ? isNullOrUndefined(legend.fill) ? '#000000' : legend.fill : shapeBorder.color;\n var strokeWidth_1 = isLineShape_1 ? (shapeBorder.width === 0) ? 1 : shapeBorder.width : shapeBorder.width;\n var _loop_1 = function (i) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this_1.totalPages[page]['Collection'][i];\n var legendText = collection['DisplayText'];\n var legendElement = render.createGroup({ id: treemap.element.id + '_Legend_Index_' + i });\n legendElement.setAttribute('aria-label', legendText + ' Legend');\n legendElement.setAttribute('role', 'region');\n var shapeId = treemap.element.id + '_Legend_Shape_Index_' + i;\n var textId = treemap.element.id + '_Legend_Text_Index_' + i;\n var shapeLocation = collection['Shape'];\n var textLocation = collection['Text'];\n if (treemap.enableRtl) {\n legendRtlLocation = this_1.defaultLegendRtlLocation(collection, spacing, treemap, legend);\n shapeLocation = legendRtlLocation['shapeLocation'];\n textLocation = legendRtlLocation['textLocation'];\n }\n eventArgs = {\n cancel: false, name: legendItemRendering, treemap: treemap, fill: collection['Fill'],\n shape: legend.shape, imageUrl: legend.imageUrl\n };\n treemap.trigger(legendItemRendering, eventArgs, function (observedArgs) {\n var renderOptions = new PathOption(shapeId, observedArgs.fill, strokeWidth_1, isLineShape_1 ? collection['Fill'] : strokeColor_1, legend.opacity, '');\n legendElement.appendChild(drawSymbol(shapeLocation, observedArgs.shape, shapeSize, observedArgs.imageUrl, renderOptions, legendText));\n textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'start', legendText, '', '');\n renderTextElement(textOptions, legend.textStyle, legend.textStyle.color || treemap.themeStyle.legendTextColor, legendElement);\n _this.legendGroup.appendChild(legendElement);\n });\n };\n var this_1 = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (var i = 0; i < this.totalPages[page]['Collection'].length; i++) {\n _loop_1(i);\n }\n var pagingGroup = void 0;\n var width = spacing;\n var height = (spacing / 2);\n if (this.page !== 0) {\n var pagingText = (page + 1) + '/' + this.totalPages.length;\n var pagingFont = legend.textStyle;\n var pagingTextSize = measureText(pagingText, pagingFont);\n var leftPageX = (this.legendItemRect.x + this.legendItemRect.width) - pagingTextSize.width -\n (width * 2) - spacing;\n var rightPageX = (this.legendItemRect.x + this.legendItemRect.width);\n var locY = (this.legendItemRect.y + this.legendItemRect.height) + (height / 2) + spacing;\n var pageTextX = rightPageX - width - (pagingTextSize.width / 2) - (spacing / 2);\n pagingGroup = render.createGroup({ id: treemap.element.id + '_Legend_Paging_Group' });\n var leftPageElement = render.createGroup({ id: treemap.element.id + '_Legend_Left_Paging_Group' });\n var rightPageElement = render.createGroup({ id: treemap.element.id + '_Legend_Right_Paging_Group' });\n var rightPath = ' M ' + rightPageX + ' ' + locY + ' L ' + (rightPageX - width) + ' ' + (locY - height) +\n ' L ' + (rightPageX - width) + ' ' + (locY + height) + ' z ';\n var leftPath = ' M ' + leftPageX + ' ' + locY + ' L ' + (leftPageX + width) + ' ' + (locY - height) +\n ' L ' + (leftPageX + width) + ' ' + (locY + height) + ' z ';\n var leftPageOptions = new PathOption(treemap.element.id + '_Left_Page', '#a6a6a6', 0, '#a6a6a6', 1, '', leftPath);\n leftPageElement.appendChild(render.drawPath(leftPageOptions));\n var leftRectPageOptions = new RectOption(treemap.element.id + '_Left_Page_Rect', 'transparent', {}, 1, new Rect(leftPageX - (width / 2), (locY - (height * 2)), width * 2, spacing * 2), '');\n leftPageElement.appendChild(render.drawRectangle(leftRectPageOptions));\n this.wireEvents(leftPageElement);\n var rightPageOptions = new PathOption(treemap.element.id + '_Right_Page', '#a6a6a6', 0, '#a6a6a6', 1, '', rightPath);\n rightPageElement.appendChild(render.drawPath(rightPageOptions));\n var rightRectPageOptions = new RectOption(treemap.element.id + '_Right_Page_Rect', 'transparent', {}, 1, new Rect((rightPageX - width), (locY - height), width, spacing), '');\n rightPageElement.appendChild(render.drawRectangle(rightRectPageOptions));\n this.wireEvents(rightPageElement);\n pagingGroup.appendChild(leftPageElement);\n pagingGroup.appendChild(rightPageElement);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var pageTextOptions = {\n 'id': treemap.element.id + '_Paging_Text',\n 'x': pageTextX,\n 'y': locY + (pagingTextSize.height / 4),\n 'fill': '#a6a6a6',\n 'font-size': '14px',\n 'font-style': pagingFont.fontStyle,\n 'font-family': pagingFont.fontFamily,\n 'font-weight': pagingFont.fontWeight,\n 'text-anchor': 'middle',\n 'transform': '',\n 'opacity': 1,\n 'dominant-baseline': '',\n 'role': 'region',\n 'aria-label': pagingText\n };\n pagingGroup.appendChild(render.createText(pageTextOptions, pagingText));\n this.legendGroup.appendChild(pagingGroup);\n }\n }\n };\n TreeMapLegend.prototype.renderLegendBorder = function () {\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n var legendTitle = legend.title.text;\n var spacing = 10;\n var textStyle = legend.titleStyle;\n var title = textTrim((this.legendItemRect.width + (spacing * 2)), legendTitle, textStyle);\n var textSize = measureText(title, textStyle);\n this.legendBorderRect = new Rect((this.legendItemRect.x - spacing), (this.legendItemRect.y - spacing - textSize.height), (this.legendItemRect.width) + (spacing * 2), (this.legendItemRect.height) + (spacing * 2) + textSize.height +\n (legend.mode === 'Interactive' ? 0 : (this.page !== 0) ? spacing : 0));\n var 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 legend = this.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(this.treemap.element.id + '_LegendTitle', (this.legendItemRect.x) + (this.legendItemRect.width / 2), this.legendItemRect.y - (textSize.height / 2) - (spacing / 2), 'middle', trimTitle, '');\n var textElement = renderTextElement(textOptions, textStyle, textStyle.color || this.treemap.themeStyle.legendTitleColor, this.legendGroup);\n textElement.setAttribute('role', 'region');\n textElement.setAttribute('aria-label', legendTitle);\n }\n };\n /**\n * To rendered the interactive pointer\n *\n * @param {PointerEvent | TouchEvent} e - Specifies the pointer argument.\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.renderInteractivePointer = function (e) {\n var treemap = this.treemap;\n var target = e.target;\n var interactiveId = treemap.element.id + '_Interactive_Legend';\n target = !(e.type.indexOf('touch') > -1) ? target :\n document.elementFromPoint(e.changedTouches[0].clientX, e.changedTouches[0].clientY);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetItem;\n var legend = treemap.legendSettings;\n if (target.id.indexOf('_Item_Index') > -1 && legend.visible && this.legendRenderingCollections.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = void 0;\n var legendRect = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data = void 0;\n var fill = void 0;\n var stroke = void 0;\n var strokeWidth = void 0;\n var legendElement = void 0;\n targetItem = treemap.layout.renderItems[parseFloat(target.id.split('_Item_Index_')[1])];\n var svgRect = treemap.svgObject.getBoundingClientRect();\n for (var i = 0; i < this.legendCollections.length; i++) {\n currentData = this.legendCollections[i];\n legendElement = document.getElementById(treemap.element.id + '_Legend_Index_' + i);\n legendRect = legendElement.getBoundingClientRect();\n var rect = new Rect(Math.abs(legendRect.left - svgRect.left), Math.abs(legendRect.top - svgRect.top), legendRect.width, legendRect.height);\n fill = legendElement.getAttribute('fill');\n stroke = legend.shapeBorder.color;\n strokeWidth = legend.shapeBorder.width;\n if (!isNullOrUndefined(currentData['legendData'])) {\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);\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 // eslint-disable-next-line valid-jsdoc\n /** @private */\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 * @private\n */\n TreeMapLegend.prototype.removeInteractivePointer = function () {\n if (document.getElementById(this.treemap.element.id + '_Interactive_Legend')) {\n var legendElementId = document.getElementById(this.treemap.element.id + '_Interactive_Legend');\n legendElementId.parentNode.removeChild(legendElementId);\n }\n };\n /**\n * To change the next page\n *\n * @param {PointerEvent} e - Specifies the pointer event argument.\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.changeNextPage = function (e) {\n this.currentPage = (e.target.id.indexOf('_Left_Page_') > -1) ? (this.currentPage - 1) :\n (this.currentPage + 1);\n if (this.currentPage >= 0 && this.currentPage < this.totalPages.length) {\n this.drawLegend();\n }\n else {\n this.currentPage = (e.target.id.indexOf('_Left_Page_') > -1) ? 0 : this.totalPages.length - 1;\n }\n };\n /**\n * Wire events for event handler\n *\n * @param {Element} element - Specifies the element.\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.wireEvents = function (element) {\n EventHandler.add(element, Browser.touchStartEvent, this.changeNextPage, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To add the event listener\n * @private\n */\n TreeMapLegend.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.renderInteractivePointer, this);\n this.treemap.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To remove the event listener\n * @private\n */\n TreeMapLegend.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.renderInteractivePointer);\n this.treemap.off(Browser.touchEndEvent, this.mouseUpHandler);\n };\n /**\n * Get module name.\n *\n * @returns {string} Returns the legend module name.\n */\n TreeMapLegend.prototype.getModuleName = function () {\n return 'treeMapLegend';\n };\n /**\n * To destroy the legend.\n *\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.destroy = function () {\n clearTimeout(this.clearTimeout);\n this.clearTimeout = null;\n this.legendRenderingCollections = [];\n this.legendCollections = [];\n this.outOfRangeLegend = null;\n this.totalPages = [];\n this.translate = null;\n this.legendBorderRect = null;\n this.legendGroup = null;\n this.legendNames = [];\n this.defsElement = null;\n this.legendLinearGradient = null;\n this.legendInteractiveGradient = [];\n this.legendItemRect = null;\n this.removeEventListener();\n this.treemap = null;\n };\n /**\n * Get the gradient color for interactive legend.\n *\n * @param {ColorMappingModel} colorMap - Specifies the color mapping instance.\n * @param {number} legendIndex - Specifies the index of legend.\n * @returns {string} - Returns the legend color.\n * @private\n */\n TreeMapLegend.prototype.legendGradientColor = function (colorMap, legendIndex) {\n var legendFillColor;\n var xmlns = 'http://www.w3.org/2000/svg';\n if (!isNullOrUndefined(colorMap.color) && Object.prototype.toString.call(colorMap.color) === '[object Array]') {\n var defElement = this.treemap.renderer.createDefs();\n var linerGradientEle = document.createElementNS(xmlns, 'linearGradient');\n var opacity = 1;\n var position = this.treemap.legendSettings.position;\n var x2 = position === 'Top' || position === 'Bottom' ? '100' : '0';\n var y2 = position === 'Top' || position === 'Bottom' ? '0' : '100';\n linerGradientEle.setAttribute('id', 'linear_' + legendIndex);\n linerGradientEle.setAttribute('x1', 0 + '%');\n linerGradientEle.setAttribute('y1', 0 + '%');\n linerGradientEle.setAttribute('x2', x2 + '%');\n linerGradientEle.setAttribute('y2', y2 + '%');\n for (var b = 0; b < colorMap.color.length; b++) {\n var offsetColor = 100 / (colorMap.color.length - 1);\n var stopEle = document.createElementNS(xmlns, 'stop');\n stopEle.setAttribute('offset', b * offsetColor + '%');\n stopEle.setAttribute('stop-color', colorMap.color[b]);\n stopEle.setAttribute('stop-opacity', opacity.toString());\n linerGradientEle.appendChild(stopEle);\n }\n defElement.appendChild(linerGradientEle);\n this.legendLinearGradient = linerGradientEle;\n var color = 'url(' + '#linear_' + legendIndex + ')';\n this.defsElement.appendChild(linerGradientEle);\n legendFillColor = color;\n }\n return legendFillColor;\n };\n return TreeMapLegend;\n}());\nexport { TreeMapLegend };\n","import { Browser } from '@syncfusion/ej2-base';\nimport { itemHighlight, itemSelected } from '../model/constants';\nimport { findHightLightItems, removeClassNames, applyOptions, removeShape, removeLegend, removeSelectionWithHighlight, setColor, getLegendIndex, pushCollection, setItemTemplateContent } from '../utils/helper';\n/**\n * Performing treemap highlight\n */\nvar TreeMapHighlight = /** @class */ (function () {\n function TreeMapHighlight(treeMap) {\n this.target = 'highlight';\n this.shapeTarget = 'highlight';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.shapeHighlightCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendHighlightCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentElement = [];\n this.treemap = treeMap;\n this.addEventListener();\n }\n /**\n * Mouse down event in highlight\n *\n * @param {PointerEvent} e - Specifies the pointer argument.\n * @returns {boolean} - return the highlight process is true or false.\n * @private\n */\n TreeMapHighlight.prototype.mouseMove = function (e) {\n var treemap = this.treemap;\n var processHighlight;\n var targetId = e.target.id;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var eventArgs;\n var items = [];\n var highlight = this.treemap.highlightSettings;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n var highLightElements = [];\n var process;\n var treeMapElement;\n var element;\n var orders;\n var selectionModule = this.treemap.treeMapSelectionModule;\n 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);\n this.shapeHighlightCollection.push({ legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n setColor(this.shapeElement, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n this.target = 'highlight';\n }\n else if (this.currentElement.length > 0 && this.currentElement[this.currentElement.length - 1]['currentElement'] !== this.shapeElement) {\n removeSelectionWithHighlight(this.shapeHighlightCollection, this.currentElement, treemap);\n this.highLightId = '';\n }\n }\n else if (this.currentElement.length > 0 && this.currentElement[this.currentElement.length - 1]['currentElement'] !== this.shapeElement) {\n removeSelectionWithHighlight(this.shapeHighlightCollection, this.currentElement, treemap);\n this.highLightId = '';\n }\n }\n orders = findHightLightItems(item, [], highlight.mode, treemap);\n if (this.treemap.legendSettings.visible ? selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true : true) {\n if (this.treemap.legendSettings.visible ? selectionModule ?\n this.shapeElement !== selectionModule.shapeElement : true : true) {\n for (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)\n && (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);\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 ?\n selectionModule.legendSelect : true) {\n removeShape(this.shapeHighlightCollection);\n this.shapeHighlightCollection = [];\n }\n }\n }\n if (this.shapeTarget === 'highlight' && this.treemap.legendSettings.visible) {\n removeLegend(this.legendHighlightCollection);\n }\n this.highLightId = '';\n processHighlight = false;\n }\n return processHighlight;\n };\n /**\n * To bind events for highlight\n *\n * @returns {void}\n */\n TreeMapHighlight.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.mouseMove, this);\n };\n /**\n * To unbind events for highlight\n *\n * @returns {void}\n */\n TreeMapHighlight.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.mouseMove);\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name\n */\n TreeMapHighlight.prototype.getModuleName = function () {\n return 'treeMapHighlight';\n };\n /**\n * To destroy the hightlight.\n *\n * @returns {void}\n * @private\n */\n TreeMapHighlight.prototype.destroy = function () {\n this.shapeElement = null;\n this.shapeHighlightCollection = [];\n this.legendHighlightCollection = [];\n this.currentElement = [];\n this.removeEventListener();\n this.treemap = null;\n };\n return TreeMapHighlight;\n}());\nexport { TreeMapHighlight };\n/**\n * Performing treemap selection\n */\nvar TreeMapSelection = /** @class */ (function () {\n function TreeMapSelection(treeMap) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.shapeSelectionCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendSelectionCollection = [];\n this.shapeSelect = true;\n this.legendSelect = true;\n this.treemap = treeMap;\n this.addEventListener();\n }\n /**\n * Mouse down event in selection\n *\n * @param {PointerEvent} e - Specifies the pointer argument.\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.mouseDown = function (e) {\n var targetEle = e.target;\n var eventArgs;\n var treemap = this.treemap;\n 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 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);\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);\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);\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);\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);\n index = getLegendIndex(length_5, items[m], this.treemap);\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index) : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index);\n if (this.shapeElement !== null) {\n this.shapeSelectId = this.shapeElement.getAttribute('id');\n this.treemap.legendId.push(this.shapeSelectId);\n this.shapeSelectionCollection.push({\n legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n setColor(this.shapeElement, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n }\n }\n }\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', this.treemap);\n var selectionElement = document.getElementById(this.treemap.levelSelection[0]);\n this.treemap.selectionId = selectionElement.childNodes[0]['id'];\n var highLightElements = document.getElementsByClassName('treeMapHighLight');\n for (var k = 0; k < selectionElements.length; k++) {\n element = selectionElements[k];\n if (highLightElements.length > 0) {\n for (var j = 0; j < highLightElements.length; j++) {\n if (highLightElements[j].id === element.id) {\n highLightElements[j].classList.remove('treeMapHighLight');\n }\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n else {\n selection.fill = selection.fill === 'null' ?\n this.treemap.layout.renderItems[parseInt(element.id.split('Item_Index_')[1], 10)]['options']['fill']\n : selection.fill;\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n }\n else {\n removeShape(this.shapeSelectionCollection);\n this.shapeElement = undefined;\n this.treemap.levelSelection = [];\n this.shapeSelect = true;\n this.shapeSelectId = '';\n this.treemap.legendId = [];\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', this.treemap);\n this.treemap.selectionId = '';\n }\n };\n /**\n * To bind events for selection\n *\n * @returns {void}\n */\n TreeMapSelection.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchStartEvent, this.mouseDown, this);\n };\n /**\n * To unbind events for selection\n *\n * @returns {void}\n */\n TreeMapSelection.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchStartEvent, this.mouseDown);\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n TreeMapSelection.prototype.getModuleName = function () {\n return 'treeMapSelection';\n };\n /**\n * To destroy the selection.\n *\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.destroy = function () {\n this.shapeElement = null;\n this.shapeSelectionCollection = [];\n this.legendSelectionCollection = [];\n this.removeEventListener();\n this.treemap = null;\n };\n return TreeMapSelection;\n}());\nexport { TreeMapSelection };\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport { Tooltip } from '@syncfusion/ej2-svg-base';\nimport { Browser, createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getMousePosition, textFormatter, formatValue } from '../utils/helper';\nimport { tooltipRendering } from '../model/constants';\n/**\n * Render Tooltip\n */\nvar TreeMapTooltip = /** @class */ (function () {\n function TreeMapTooltip(treeMap) {\n this.treemap = treeMap;\n this.tooltipSettings = this.treemap.tooltipSettings;\n this.tooltipId = this.treemap.element.id + '_TreeMapTooltip';\n this.addEventListener();\n }\n TreeMapTooltip.prototype.renderTooltip = function (e) {\n var _this = this;\n var pageX;\n var pageY;\n var target;\n var touchArg;\n var tootipArgs;\n if (e.type.indexOf('touch') !== -1) {\n this.isTouch = true;\n touchArg = e;\n pageX = touchArg.changedTouches[0].pageX;\n pageY = touchArg.changedTouches[0].pageY;\n target = touchArg.target;\n }\n else {\n this.isTouch = e.pointerType === 'touch';\n pageX = e.pageX;\n pageY = e.pageY;\n target = e.target;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value;\n var targetId = target.id;\n var item = {};\n var tooltipEle;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var location;\n var toolTipData = {};\n var tooltipContent = [];\n var markerFill;\n if (targetId.indexOf('_Item_Index') > -1) {\n item = this.treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n if (!isNullOrUndefined(item)) {\n value = item['weight'];\n toolTipData = item['data'];\n if (!isNullOrUndefined(item['options'])) {\n markerFill = item['options']['fill'];\n }\n if (this.treemap.enableRtl) {\n tooltipContent = [(!isNullOrUndefined(this.tooltipSettings.format) ? textFormatter(this.tooltipSettings.format, toolTipData, this.treemap) : null)\n || formatValue(value, this.treemap) + ' : ' + this.treemap.weightValuePath.toString()];\n }\n else {\n tooltipContent = [(!isNullOrUndefined(this.tooltipSettings.format) ? textFormatter(this.tooltipSettings.format, toolTipData, this.treemap) : null)\n || this.treemap.weightValuePath.toString() + ' : ' + formatValue(value, this.treemap)];\n }\n if (document.getElementById(this.tooltipId)) {\n tooltipEle = document.getElementById(this.tooltipId);\n }\n else {\n tooltipEle = createElement('div', {\n id: this.treemap.element.id + '_TreeMapTooltip',\n className: 'EJ2-TreeMap-Tooltip'\n });\n tooltipEle.style.cssText = 'position: absolute;pointer-events:none;';\n document.getElementById(this.treemap.element.id + '_Secondary_Element').appendChild(tooltipEle);\n }\n location = getMousePosition(pageX, pageY, this.treemap.svgObject);\n location.y = (this.tooltipSettings.template) ? location.y + 10 : location.y;\n this.tooltipSettings.textStyle.size = this.tooltipSettings.textStyle.size || this.treemap.themeStyle.tooltipFontSize;\n this.tooltipSettings.textStyle.fontFamily = this.tooltipSettings.textStyle.fontFamily || this.treemap.themeStyle.fontFamily;\n this.tooltipSettings.textStyle.fontStyle = !isNullOrUndefined(this.tooltipSettings.textStyle.fontStyle) ? this.tooltipSettings.textStyle.fontStyle : 'Normal';\n this.tooltipSettings.textStyle.fontWeight = this.tooltipSettings.textStyle.fontWeight || this.treemap.themeStyle.fontWeight;\n this.tooltipSettings.textStyle.color = this.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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.treemap.trigger(tooltipRendering, tootipArgs, function (args) {\n _this.addTooltip(tootipArgs, markerFill, tooltipEle);\n });\n }\n }\n else {\n this.removeTooltip();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.clearTemplate();\n }\n };\n TreeMapTooltip.prototype.addTooltip = function (tootipArgs, markerFill, tooltipEle, eventArgs) {\n var cancel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var args;\n if (!isNullOrUndefined(tootipArgs)) {\n var c = tootipArgs.cancel, otherArgs = __rest(tootipArgs, [\"cancel\"]);\n cancel = c;\n args = otherArgs.options;\n }\n else {\n cancel = eventArgs.cancel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args = eventArgs;\n }\n if (!cancel) {\n this.svgTooltip = new Tooltip({\n enable: true,\n header: '',\n data: args['data'],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n template: args['template'],\n content: args['text'],\n shapes: [],\n location: args['location'],\n palette: [markerFill],\n areaBounds: this.treemap.areaRect,\n textStyle: args['textStyle'],\n fill: this.treemap.tooltipSettings.fill ? this.treemap.tooltipSettings.fill : this.treemap.themeStyle.tooltipFillColor,\n enableShadow: true\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.treemap.isVue || this.treemap.isVue3) {\n this.svgTooltip.controlInstance = this.treemap;\n }\n this.svgTooltip.opacity = this.treemap.themeStyle.tooltipFillOpacity || this.svgTooltip.opacity;\n this.svgTooltip.appendTo(tooltipEle);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.renderReactTemplates();\n }\n else {\n this.removeTooltip();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.clearTemplate();\n }\n };\n TreeMapTooltip.prototype.mouseUpHandler = function (e) {\n this.renderTooltip(e);\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeTooltip.bind(this), 2000);\n };\n TreeMapTooltip.prototype.removeTooltip = function () {\n if (document.getElementsByClassName('EJ2-TreeMap-Tooltip').length > 0) {\n var tooltipElementId = document.getElementsByClassName('EJ2-TreeMap-Tooltip')[0];\n tooltipElementId.parentNode.removeChild(tooltipElementId);\n }\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To bind events for tooltip module\n * @private\n */\n TreeMapTooltip.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.renderTooltip, this);\n this.treemap.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To unbind events for tooltip module\n * @private\n */\n TreeMapTooltip.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.renderTooltip);\n this.treemap.off(Browser.touchEndEvent, this.mouseUpHandler);\n };\n /**\n * Get module name.\n *\n * @returns {string} returns string\n */\n TreeMapTooltip.prototype.getModuleName = function () {\n return 'treeMapTooltip';\n };\n /**\n * To destroy the tooltip.\n *\n * @returns {void}\n * @private\n */\n TreeMapTooltip.prototype.destroy = function () {\n if (!isNullOrUndefined(this.svgTooltip)) {\n this.svgTooltip.destroy();\n }\n this.svgTooltip = null;\n this.tooltipSettings = null;\n this.removeEventListener();\n this.treemap = null;\n };\n return TreeMapTooltip;\n}());\nexport { TreeMapTooltip };\n"],"names":["stringToNumber","value","containerSize","undefined","indexOf","parseInt","measureText","text","font","measureObject","document","getElementById","createElement","id","body","appendChild","innerHTML","SanitizeHtmlHelper","sanitize","style","position","fontSize","size","fontWeight","fontStyle","fontFamily","visibility","top","left","whiteSpace","lineHeight","Size","clientWidth","clientHeight","textTrim","maxWidth","label","width","i","length","substring","findPosition","location","alignment","textSize","type","x","y","height","Location","createTextStyle","renderer","renderOptions","htmlObject","createText","setAttributeNS","renderTextElement","options","color","parent","isMinus","tspanElement","font-size","font-style","font-family","font-weight","text-anchor","anchor","transform","opacity","dominant-baseline","baseLine","fill","SvgRenderer","isNullOrUndefined","connectorText","search","drillLevelText","split","z","drillText","replace","len","createTSpan","setItemTemplateContent","targetId","targetElement","contentItemTemplate","itemTemplate","itemSelect","querySelector","getElement","itemsToOrder","a","b","isContainsData","source","pathName","processData","treemap","isExist","name","leaf","leafItemSettings","data","levels","groupPath","labelPath","weightValuePath","findChildren","children","keys","Object","Array","findHightLightItems","items","mode","treeMap","push","j","parentName","currentItem","layout","renderItems","getTemplateFunction","template","templateFn","querySelectorAll","compile","trim","e","convertElement","element","labelId","childElement","cssText","elementLength","templateHtml","regExp","RegExp","toString","findLabelLocation","rect","labelSize","areaRect","Math","abs","enableDrillDown","renderDirection","measureElement","parentElement","offsetHeight","offsetWidth","measureElementId","parentNode","removeChild","getArea","getShortestEdge","input","container","convertToContainer","min","convertToRect","xOffset","yOffset","getMousePosition","pageX","pageY","elementRect","getBoundingClientRect","pageXOffset","ownerDocument","defaultView","pageYOffset","clientTop","documentElement","clientLeft","positionX","positionY","colorMap","colorMapping","equalValue","paths","isNaN","isEqualColor","dataValue","from","to","prototype","call","colorCollections","minOpacity","maxOpacity","deSaturationColor","rangeValue","getColorByValue","rgbToHex","r","g","componentToHex","rbg","Number","getGradientColor","previousOffset","nextOffset","percent","full","previousColor","nextColor","charAt","colorNameToHex","length_1","splitColorValueOffset","splitColor","getPercentageColor","previous","next","prevColor","getPercentage","substr","ColorValue","round","wordWrap","maximumWidth","dataLabel","textCollection","labelCollection","concat","textWrap","resultText","currentLength","totalWidth","totalLength","sliceString","slice","hide","maxHeight","orderByArea","maintainSelection","className","elementId","levelSelection","index","getAttribute","childElementCount","setAttribute","applyOptions","childNodes","border","selectionSettings","legendMaintain","legendGroup","legendId","treemapSVGRectElement","removeClassNames","elements","parseFloat","classList","remove","textFormatter","format","_i","keys_1","key","join","formatValue","intl","getNumberFormat","useGrouping","useGroupingSeparator","formatFunction","convertToHexCode","hex","convertHexToColor","result","exec","isRGBValue","window","getComputedStyle","drawSymbol","shape","url","svgRenderer","temp","renderLegendShape","functionName","renderOption","renderPath","shapeWidth","shapeHeight","shapeX","shapeY","merge","rx","ry","cx","cy","d","xValue","yValue","cos","PI","sin","href","isParentItem","item","removeShape","collection","setColor","removeLegend","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","titleFontWeight","subTitleFontColor","tooltipFillColor","tooltipFontColor","tooltipFontSize","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","treemapLevelData","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","i_1","multiplier","datum","onDemandProcess","childItems","parentItem","parentItemGroupname","splice","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","enable","highlightSettings","tabIndex","cursor","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","exportElement","backgroundElement","getElementsByTagName","getModuleName","ImageExport","export","allowDownload","Promise","resolve","reject","availableSize","Browser","userAgent","svgData","outerHTML","URL","createObjectURL","Blob","XMLSerializer","serializeToString","image_1","Image","context_1","getContext","onload","drawImage","revokeObjectURL","toDataURL","src","PdfExport","orientation","PdfPageOrientation","Landscape","image","context","PdfDocument","imageString","pageSettings","pages","add","graphics","PdfBitmap","save","TreeMap","isResize","preRender","initPrivateVariable","unWireEVents","createSvg","wireEVents","setCulture","render","renderElements","LevelsData","hierarchyData","createSecondaryElement","addTabIndex","renderBorder","renderTitle","titleSettings","processDataManager","dataModule","queryModule","fetchApiModule","localAjax","dataSource","DataManager","query","Query","executeQuery","then","renderTreeMapElements","Fetch","onSuccess","args","reader_1","FileReader","treemap_1","JSON","parse","readAsText","send","processingData","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","levelOrderName","weight","processHierarchicalData","processFlatJsonData","reOrderLevelData","findTotalWeight","childData","levelIndex","childItemLevel","childLevel","mainData_1","l","allowPrint","printModule","allowPdfExport","pdfExportModule","allowImageExport","imageExportModule","orderNames","level","childName","name_1","childGroupPath","start","currentName","currentPath","prevPath","previousData","IsChildHierarchy","current","isChild","groupObj","EventHandler","clickOnTreeMap","doubleClickOnTreeMap","rightClickOnTreeMap","touchStartEvent","mouseDownOnTreeMap","touchMoveEvent","mouseMoveOnTreeMap","touchEndEvent","mouseEndOnTreeMap","mouseLeaveOnTreeMap","removeEventListener","resizeEvent","resizeOnTreeMap","bind","addEventListener","Internationalization","isDestroyed","args_1","previousSize","currentSize","clearTimeout","contains","setTimeout","refreshing","itemIndex","targetEle","labelText","clickArgs","mouseEvent","preventDefault","textContent","doubleTapTimer1","end","Date","getMilliseconds","doubleClickArgs","rightClickArgs","mouseDown","notify","moveArgs","calculateSelectedTextLevels","drillLevel","levelText","_a","currentLevelLabel","calculatePreviousLevelChildItems","drillLevelValues","directLevel","levelItems","text1","drillTextLevel","h","compareSelectedLabelWithDrillDownItems","drillLevelChild","newDrillItem","startEvent","endEvent","layoutID","templateID","drillMouseMove","drillLength","which","layerElementId","widthIncrement","heightIncrement","drilledLegendItems","drillElementId","treeMapTooltipModule","removeTooltip","removeInteractivePointer","treeMapHighlightModule","shapeHighlightCollection","highLightId","selectItem","levelOrder","isSelected","treeMapSelectionModule","selectTreemapItem","requiredModules","modules","tooltipSettings","member","onPropertyChanged","newProp","oldProp","removeSvg","doubleTapTimer","getPersistData","Event","NotifyPropertyChanges","Component","TreeMapLegend","page","legendBorderRect","currentPage","textMaxWidth","legendInteractiveGradient","legendItemRect","legendRenderingCollections","legendNames","totalPages","gradientCount","defsElement","createDefs","_changePosition","calculateLegendBounds","drawLegend","legend","findColorMappingLegendItems","findPaletteLegendItems","firstItem","nextItem","leafIndex","legendTitle","titleTextStyle","titleStyle","legendMode","textX","textY","shapeLocation","orientation_1","legendWidth","legendHeight","legendTitleSize","startX_1","startY_1","shapePadding","itemTextStyle","legendItem","Page","legendTextSize","maxSize","prvePositionX","nextPositionY","getPageChanged","prevPositionY","nextPositionX","DisplayText","Shape","Text","Fill","Data","legendObj","legendRect","legendLength","rectWidth","rectHeight","placement","itemStartX","itemStartY","labelAction","labelDisplayMode","maxTextHeight","maxTextWidth","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","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","role","aria-label","legendBorder","pointerEvents","getLegendAlignment","trimTitle","textElement","renderInteractivePointer","interactiveId","elementFromPoint","changedTouches","clientX","clientY","targetItem","strokeWidth","svgRect","drawInteractivePointer","locX","invertedPointer","areaX","areaY","totalHeight","mouseUpHandler","legendElementId","changeNextPage","on","off","xmlns","defElement","linerGradientEle","createElementNS","offsetColor","stopEle","TreeMapHighlight","shapeTarget","legendHighlightCollection","currentElement","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","enableShadow","isVue","isVue3","controlInstance","appendTo","tooltipElementId"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ej2-treemap.umd.min.js","sources":["../src/treemap/model/base.js","../src/treemap/model/constants.js","../src/treemap/utils/helper.js","../src/treemap/layout/render-panel.js","../src/treemap/model/theme.js","../src/treemap/model/print.js","../src/treemap/model/image-export.js","../src/treemap/model/pdf-export.js","../src/treemap/treemap.js","../src/treemap/layout/legend.js","../src/treemap/user-interaction/highlight-selection.js","../src/treemap/user-interaction/tooltip.js"],"sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * Maps base doc\n */\nimport { Property, ChildProperty, Complex, Collection } from '@syncfusion/ej2-base';\nimport { defaultFont } from './constants';\n/**\n * Sets and gets the options for customizing the color and width of the border in treemap.\n */\nvar Border = /** @class */ (function (_super) {\n __extends(Border, _super);\n function Border() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('#808080')\n ], Border.prototype, \"color\", void 0);\n __decorate([\n Property(0)\n ], Border.prototype, \"width\", void 0);\n return Border;\n}(ChildProperty));\nexport { Border };\n/**\n * Sets and gets the margin for the treemap.\n */\nvar Margin = /** @class */ (function (_super) {\n __extends(Margin, _super);\n function Margin() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(10)\n ], Margin.prototype, \"left\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"right\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"top\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"bottom\", void 0);\n return Margin;\n}(ChildProperty));\nexport { Margin };\n/**\n * Sets and gets the options to customize the style of the text contents in the treemap.\n */\nvar Font = /** @class */ (function (_super) {\n __extends(Font, _super);\n function Font() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], Font.prototype, \"size\", void 0);\n __decorate([\n Property(null)\n ], Font.prototype, \"color\", void 0);\n __decorate([\n Property(defaultFont)\n ], Font.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('')\n ], Font.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontStyle\", void 0);\n __decorate([\n Property(1)\n ], Font.prototype, \"opacity\", void 0);\n return Font;\n}(ChildProperty));\nexport { Font };\n/**\n * Sets and gets the options for customizing the title of the treemap.\n */\nvar CommonTitleSettings = /** @class */ (function (_super) {\n __extends(CommonTitleSettings, _super);\n function CommonTitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], CommonTitleSettings.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], CommonTitleSettings.prototype, \"description\", void 0);\n return CommonTitleSettings;\n}(ChildProperty));\nexport { CommonTitleSettings };\n/**\n * Sets and gets the options for customizing the subtitle of the treemap.\n */\nvar SubTitleSettings = /** @class */ (function (_super) {\n __extends(SubTitleSettings, _super);\n function SubTitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ fontFamily: null, fontWeight: null }, Font)\n ], SubTitleSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property('Center')\n ], SubTitleSettings.prototype, \"alignment\", void 0);\n return SubTitleSettings;\n}(CommonTitleSettings));\nexport { SubTitleSettings };\n/**\n * Sets and gets the options for customizing the title of the treemap.\n */\nvar TitleSettings = /** @class */ (function (_super) {\n __extends(TitleSettings, _super);\n function TitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ fontFamily: null, fontWeight: null }, Font)\n ], TitleSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property('Center')\n ], TitleSettings.prototype, \"alignment\", void 0);\n __decorate([\n Complex({}, SubTitleSettings)\n ], TitleSettings.prototype, \"subtitleSettings\", void 0);\n return TitleSettings;\n}(CommonTitleSettings));\nexport { TitleSettings };\n/**\n * Sets and gets the options to customize the color-mapping in treemap.\n */\nvar ColorMapping = /** @class */ (function (_super) {\n __extends(ColorMapping, _super);\n function ColorMapping() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"from\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"to\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"color\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"label\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"minOpacity\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"maxOpacity\", void 0);\n __decorate([\n Property(true)\n ], ColorMapping.prototype, \"showLegend\", void 0);\n return ColorMapping;\n}(ChildProperty));\nexport { ColorMapping };\n/**\n * Sets and gets the options for customizing the legend of the treemap.\n */\nvar LegendSettings = /** @class */ (function (_super) {\n __extends(LegendSettings, _super);\n function LegendSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('Default')\n ], LegendSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('transparent')\n ], LegendSettings.prototype, \"background\", void 0);\n __decorate([\n Property('Circle')\n ], LegendSettings.prototype, \"shape\", void 0);\n __decorate([\n Property('')\n ], LegendSettings.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], LegendSettings.prototype, \"height\", void 0);\n __decorate([\n Complex({ size: null, fontFamily: null, fontWeight: null }, Font)\n ], LegendSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], LegendSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(15)\n ], LegendSettings.prototype, \"shapeWidth\", void 0);\n __decorate([\n Property(15)\n ], LegendSettings.prototype, \"shapeHeight\", void 0);\n __decorate([\n Property(10)\n ], LegendSettings.prototype, \"shapePadding\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"imageUrl\", void 0);\n __decorate([\n Complex({ color: null, width: null }, Border)\n ], LegendSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ color: '#000000', width: 0 }, Border)\n ], LegendSettings.prototype, \"shapeBorder\", void 0);\n __decorate([\n Complex({}, CommonTitleSettings)\n ], LegendSettings.prototype, \"title\", void 0);\n __decorate([\n Complex({ size: null, fontFamily: null, fontWeight: null }, Font)\n ], LegendSettings.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('Bottom')\n ], LegendSettings.prototype, \"position\", void 0);\n __decorate([\n Property('None')\n ], LegendSettings.prototype, \"orientation\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"invertedPointer\", void 0);\n __decorate([\n Property('After')\n ], LegendSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('None')\n ], LegendSettings.prototype, \"labelDisplayMode\", void 0);\n __decorate([\n Property('Center')\n ], LegendSettings.prototype, \"alignment\", void 0);\n __decorate([\n Property({ x: 0, y: 0 })\n ], LegendSettings.prototype, \"location\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"showLegendPath\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"valuePath\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"removeDuplicateLegend\", void 0);\n return LegendSettings;\n}(ChildProperty));\nexport { LegendSettings };\n/**\n * Sets and gets the settings for drill down to visualize the treemap rendered in the initial state.\n */\nvar InitialDrillSettings = /** @class */ (function (_super) {\n __extends(InitialDrillSettings, _super);\n function InitialDrillSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], InitialDrillSettings.prototype, \"groupIndex\", void 0);\n __decorate([\n Property(null)\n ], InitialDrillSettings.prototype, \"groupName\", void 0);\n return InitialDrillSettings;\n}(ChildProperty));\nexport { InitialDrillSettings };\n/**\n * Sets and gets the options for customizing the leaf item of the treemap.\n */\nvar LeafItemSettings = /** @class */ (function (_super) {\n __extends(LeafItemSettings, _super);\n function LeafItemSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(false)\n ], LeafItemSettings.prototype, \"autoFill\", void 0);\n __decorate([\n Complex({}, Border)\n ], LeafItemSettings.prototype, \"border\", void 0);\n __decorate([\n Property(0)\n ], LeafItemSettings.prototype, \"gap\", void 0);\n __decorate([\n Property(10)\n ], LeafItemSettings.prototype, \"padding\", void 0);\n __decorate([\n Property(1)\n ], LeafItemSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LeafItemSettings.prototype, \"showLabels\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelPath\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelFormat\", void 0);\n __decorate([\n Property('TopLeft')\n ], LeafItemSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Complex({ color: null, size: null }, Font)\n ], LeafItemSettings.prototype, \"labelStyle\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelTemplate\", void 0);\n __decorate([\n Property('Center')\n ], LeafItemSettings.prototype, \"templatePosition\", void 0);\n __decorate([\n Property('Trim')\n ], LeafItemSettings.prototype, \"interSectAction\", void 0);\n __decorate([\n Collection([], ColorMapping)\n ], LeafItemSettings.prototype, \"colorMapping\", void 0);\n return LeafItemSettings;\n}(ChildProperty));\nexport { LeafItemSettings };\n/**\n * Sets and gets the options for customizing the tooltip of the treemap.\n */\nvar TooltipSettings = /** @class */ (function (_super) {\n __extends(TooltipSettings, _super);\n function TooltipSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('')\n ], TooltipSettings.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(0.75)\n ], TooltipSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(['Circle'])\n ], TooltipSettings.prototype, \"markerShapes\", void 0);\n __decorate([\n Complex({ width: null, color: null }, Border)\n ], TooltipSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: null, fontWeight: null }, Font)\n ], TooltipSettings.prototype, \"textStyle\", void 0);\n return TooltipSettings;\n}(ChildProperty));\nexport { TooltipSettings };\n/**\n * Sets and gets the options for customizing the selection of the leaf items in treemap.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], SelectionSettings.prototype, \"fill\", void 0);\n __decorate([\n Property('0.5')\n ], SelectionSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, Border)\n ], SelectionSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Item')\n ], SelectionSettings.prototype, \"mode\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Sets and gets the options for customizing the highlighting of the treemap item,\n * when the mouse hover is performed in it.\n */\nvar HighlightSettings = /** @class */ (function (_super) {\n __extends(HighlightSettings, _super);\n function HighlightSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], HighlightSettings.prototype, \"enable\", void 0);\n __decorate([\n Property('#808080')\n ], HighlightSettings.prototype, \"fill\", void 0);\n __decorate([\n Property('0.5')\n ], HighlightSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, Border)\n ], HighlightSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Item')\n ], HighlightSettings.prototype, \"mode\", void 0);\n return HighlightSettings;\n}(ChildProperty));\nexport { HighlightSettings };\n/**\n * Sets and gets the options for customizing the level leaf items of the treemap.\n */\nvar LevelSettings = /** @class */ (function (_super) {\n __extends(LevelSettings, _super);\n function LevelSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"groupPath\", void 0);\n __decorate([\n Property(0)\n ], LevelSettings.prototype, \"groupGap\", void 0);\n __decorate([\n Property(10)\n ], LevelSettings.prototype, \"groupPadding\", void 0);\n __decorate([\n Complex({}, Border)\n ], LevelSettings.prototype, \"border\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(false)\n ], LevelSettings.prototype, \"autoFill\", void 0);\n __decorate([\n Property(1)\n ], LevelSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LevelSettings.prototype, \"showHeader\", void 0);\n __decorate([\n Property(20)\n ], LevelSettings.prototype, \"headerHeight\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"headerFormat\", void 0);\n __decorate([\n Property('Near')\n ], LevelSettings.prototype, \"headerAlignment\", void 0);\n __decorate([\n Complex({ color: null, size: '13px' }, Font)\n ], LevelSettings.prototype, \"headerStyle\", void 0);\n __decorate([\n Property('TopLeft')\n ], LevelSettings.prototype, \"templatePosition\", void 0);\n __decorate([\n Collection([], ColorMapping)\n ], LevelSettings.prototype, \"colorMapping\", void 0);\n return LevelSettings;\n}(ChildProperty));\nexport { LevelSettings };\n","/**\n * TreeMap constants doc\n */\n/**\n * Triggers when the treemap is on load.\n *\n * @private\n */\nexport var load = 'load';\n/**\n * Triggers after treemap rendered.\n *\n * @private\n */\nexport var loaded = 'loaded';\n/**\n * Trigger before call the print method.\n *\n * @private\n */\nexport var beforePrint = 'beforePrint';\n/**\n * Trigger before each treemap item rendered.\n *\n * @private\n */\nexport var itemRendering = 'itemRendering';\n/**\n * Trigger after click on treemap item.\n *\n * @private\n */\nexport var drillStart = 'drillStart';\n/**\n * Trigger after drill start event completed.\n *\n * @private\n */\nexport var drillEnd = 'drillEnd';\n/**\n * Trigger after select the treemap item.\n *\n * @private\n */\nexport var itemSelected = 'itemSelected';\n/**\n * Trigger after hover on the treemap item.\n *\n * @private\n */\nexport var itemHighlight = 'itemHighlight';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport var tooltipRendering = 'tooltipRendering';\n/**\n * Trigger after click on the treemap item.\n *\n * @private\n */\nexport var itemClick = 'itemClick';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport var itemMove = 'itemMove';\n/**\n * Trigger after click on the treemap item.\n *\n * @private\n */\nexport var click = 'click';\n/**\n * Trigger after double click on the treemap item.\n *\n * @private\n */\nexport var doubleClick = 'doubleClick';\n/**\n * Trigger after right click on the treemap item.\n *\n * @private\n */\nexport var rightClick = 'rightClick';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport var mouseMove = 'mouseMove';\n/**\n * Trigger before each treemap item.\n *\n * @private\n */\nexport var legendItemRendering = 'legendItemRendering';\n/**\n * Trigger before legend items.\n *\n * @private\n */\nexport var legendRendering = 'legendRendering';\n/**\n * Trigger after resize the treemap.\n *\n * @private\n */\nexport var resize = 'resize';\n/**\n * Define the font family in treemap.\n *\n * @private\n */\nexport var defaultFont = 'Roboto, Segoe UI, Noto, Sans-serif';\n","import { createElement, compile, merge, isNullOrUndefined, remove, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\n/**\n * Specifies the size parameters.\n */\nvar Size = /** @class */ (function () {\n function Size(width, height) {\n this.width = width;\n this.height = height;\n }\n return Size;\n}());\nexport { Size };\n/**\n *\n * @param {string} value - specifies the text.\n * @param {number} containerSize - specifies the container size value.\n * @returns {number} - Returns the number value which is converted from string.\n */\nexport function stringToNumber(value, containerSize) {\n if (value !== null && value !== undefined) {\n return value.indexOf('%') !== -1 ? (containerSize / 100) * parseInt(value, 10) : parseInt(value, 10);\n }\n return null;\n}\n/**\n * Internal use of type rect\n *\n * @private\n */\nvar Rect = /** @class */ (function () {\n function Rect(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n return Rect;\n}());\nexport { Rect };\n/**\n * Internal use of rectangle options\n *\n * @private\n */\nvar RectOption = /** @class */ (function () {\n function RectOption(id, fill, border, opacity, rect, dashArray) {\n this.y = rect.y;\n this.x = rect.x;\n this.height = rect.height;\n this.width = rect.width;\n this.id = id;\n this.fill = fill;\n this.opacity = opacity;\n this.stroke = border.color;\n this['stroke-width'] = border.width;\n this['stroke-dasharray'] = dashArray;\n }\n return RectOption;\n}());\nexport { RectOption };\nvar PathOption = /** @class */ (function () {\n function PathOption(id, fill, width, color, opacity, dashArray, d) {\n this.id = id;\n this.opacity = opacity;\n this.fill = fill;\n this.stroke = color;\n this['stroke-width'] = width;\n this['stroke-dasharray'] = dashArray;\n this.d = d;\n }\n return PathOption;\n}());\nexport { PathOption };\n/**\n * Function to measure the height and width of the text.\n *\n * @param {string} text - Specifies the text.\n * @param {FontModel} font - Specifies the font.\n * @returns {Size} - Returns the size.\n * @private\n */\nexport function measureText(text, font) {\n var measureObject = document.getElementById('treeMapMeasureText');\n if (measureObject === null) {\n measureObject = createElement('text', { id: 'treeMapMeasureText' });\n document.body.appendChild(measureObject);\n }\n measureObject.innerHTML = SanitizeHtmlHelper.sanitize(text);\n measureObject.style.position = 'absolute';\n measureObject.style.fontSize = font.size;\n measureObject.style.fontWeight = font.fontWeight;\n measureObject.style.fontStyle = font.fontStyle;\n measureObject.style.fontFamily = font.fontFamily;\n measureObject.style.visibility = 'hidden';\n measureObject.style.top = '-100';\n measureObject.style.left = '0';\n measureObject.style.whiteSpace = 'nowrap';\n // For bootstrap line height issue\n measureObject.style.lineHeight = 'normal';\n return new Size(measureObject.clientWidth, measureObject.clientHeight);\n}\n/**\n * Internal use of text options\n *\n * @private\n */\nvar TextOption = /** @class */ (function () {\n function TextOption(id, x, y, anchor, text, transform, baseLine, connectorText) {\n if (transform === void 0) { transform = ''; }\n this.transform = '';\n this.baseLine = 'auto';\n this.id = id;\n this.text = text;\n this.transform = transform;\n this.anchor = anchor;\n this.x = x;\n this.y = y;\n this.baseLine = baseLine;\n this.connectorText = connectorText;\n }\n return TextOption;\n}());\nexport { TextOption };\n/**\n * Trim the title text\n *\n * @param {number} maxWidth - Specifies the maximum width\n * @param {string} text - Specifies the text\n * @param {FontModel} font - Specifies the font\n * @returns {string} - Returns the string\n * @private\n */\nexport function textTrim(maxWidth, text, font) {\n var label = text;\n var size = measureText(text, font).width;\n if (size > maxWidth) {\n var textLength = text.length;\n for (var i = textLength - 1; i >= 0; --i) {\n label = text.substring(0, i) + '...';\n size = measureText(label, font).width;\n if (size <= maxWidth || label.length < 4) {\n if (label.length < 4) {\n label = ' ';\n }\n return label;\n }\n }\n }\n return label;\n}\n/**\n * Specifies the location parameters.\n */\nvar Location = /** @class */ (function () {\n function Location(x, y) {\n this.x = x;\n this.y = y;\n }\n return Location;\n}());\nexport { Location };\n/**\n * Method to calculate x position of title\n *\n * @param {Rect} location - Specifies the location of text.\n * @param {Alignment} alignment - Specifies the alignment of the text.\n * @param {Size} textSize - Specifies the size of the text.\n * @param {type} type - Specifies whether the provided text is title or subtitle.\n * @returns {Location} - Returns the location of text.\n * @private\n */\nexport function findPosition(location, alignment, textSize, type) {\n var x;\n switch (alignment) {\n case 'Near':\n x = location.x;\n break;\n case 'Center':\n x = (type === 'title') ? (location.width / 2 - textSize.width / 2) :\n ((location.x + (location.width / 2)) - textSize.width / 2);\n break;\n case 'Far':\n x = (type === 'title') ? (location.width - location.y - textSize.width) :\n ((location.x + location.width) - textSize.width);\n break;\n }\n var y = (type === 'title') ? location.y + (textSize.height / 2) : ((location.y + location.height / 2) + textSize.height / 2);\n return new Location(x, y);\n}\n/**\n *\n * @param {SvgRenderer} renderer - Specifies the rendering element of the SVG.\n * @param {any} renderOptions - Specifies the settings of the text.\n * @param {string} text - Specifies the text.\n * @returns {HTMLElement} - Returns the HTML element for the text.\n */\nexport function createTextStyle(renderer, renderOptions, text) {\n var htmlObject = renderer.createText(renderOptions, text);\n htmlObject.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n htmlObject.style['user-select'] = 'none';\n htmlObject.style['-moz-user-select'] = 'none';\n htmlObject.style['-webkit-touch-callout'] = 'none';\n htmlObject.style['-webkit-user-select'] = 'none';\n htmlObject.style['-khtml-user-select'] = 'none';\n htmlObject.style['-ms-user-select'] = 'none';\n htmlObject.style['-o-user-select'] = 'none';\n return htmlObject;\n}\n/**\n * Internal rendering of text\n *\n * @param {TextOption} options - Specifies the text option\n * @param {FontModel} font - Specifies the font model\n * @param {string} color - Specifies the color\n * @param {HTMLElement | Element} parent - Specifies the parent element of the text\n * @param {boolean} isMinus - Specifies the boolean value\n * @returns {Element} - Returns the element\n * @private\n */\nexport function renderTextElement(options, font, color, parent, isMinus) {\n if (isMinus === void 0) { isMinus = false; }\n var renderOptions = {\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily,\n 'font-weight': font.fontWeight,\n 'text-anchor': options.anchor,\n 'transform': options.transform,\n 'opacity': font.opacity,\n 'dominant-baseline': options.baseLine,\n 'id': options.id,\n 'x': options.x,\n 'y': options.y,\n 'fill': color\n };\n var text = typeof options.text === 'string' ? options.text : isMinus ? options.text[options.text.length - 1] : options.text[0];\n var tspanElement;\n var renderer = new SvgRenderer('');\n var height;\n var htmlObject;\n var breadCrumbText = !isNullOrUndefined(text) && !isNullOrUndefined(options.connectorText) ?\n (text.search(options.connectorText[1]) >= 0) : false;\n if (breadCrumbText) {\n var drilledLabel = text;\n var spacing = 5;\n var drillLevelText = drilledLabel.split('#');\n for (var z = 0; z < drillLevelText.length; z++) {\n var drillText = (drillLevelText[z].search(options.connectorText) !== -1 &&\n !isNullOrUndefined(options.connectorText)) ?\n options.connectorText : drillLevelText[z];\n renderOptions['id'] = options.id + '_' + z;\n htmlObject = createTextStyle(renderer, renderOptions, drillText);\n if (z % 2 === 0 && z !== 0) {\n var re = /\\s+/g;\n drillText = drillText.replace(re, ' ');\n }\n var size = measureText(drillText, font);\n renderOptions['x'] = z !== 0 ? renderOptions['x'] + size.width : renderOptions['x'] + size.width + spacing;\n parent.appendChild(htmlObject);\n }\n }\n else {\n htmlObject = createTextStyle(renderer, renderOptions, text);\n parent.appendChild(htmlObject);\n }\n if (typeof options.text !== 'string' && options.text.length > 1) {\n for (var i = 1, len = options.text.length; i < len; i++) {\n height = (measureText(options.text[i], font).height);\n tspanElement = renderer.createTSpan({\n 'x': options.x, 'id': options.id,\n 'y': (options.y) + (i * height)\n }, options.text[i]);\n htmlObject.appendChild(tspanElement);\n }\n parent.appendChild(htmlObject);\n }\n return htmlObject;\n}\n/**\n *\n * @param {string} targetId - Specifies the id of the element to which template is to be appended.\n * @param {Element} targetElement - Specifies the element to which template is to be appended.\n * @param {string} contentItemTemplate - Specifies the content to be appended as template.\n * @returns {void}\n */\nexport function setItemTemplateContent(targetId, targetElement, contentItemTemplate) {\n var itemSelect = targetId.split('_RectPath')[0];\n var itemTemplate;\n if (targetId.indexOf('_LabelTemplate') > -1) {\n itemTemplate = targetElement;\n }\n else {\n itemTemplate = document.querySelector('#' + itemSelect + '_LabelTemplate');\n }\n if (!isNullOrUndefined(itemTemplate)) {\n itemTemplate.innerHTML = contentItemTemplate;\n }\n}\n/**\n *\n * @param {string} id - Specifies the id of the element.\n * @returns {Element} - Returns the element.\n */\nexport function getElement(id) {\n return document.getElementById(id);\n}\n/**\n *\n * @param {any} a - Specifies the first order of TreeMap leaf elements.\n * @param {any} b - Specifies the second order of TreeMap leaf elements.\n * @returns {number} - Returns the order of the TreeMap leaf element.\n */\nexport function itemsToOrder(a, b) {\n return a['weight'] === b['weight'] ? 0 : a['weight'] < b['weight'] ? 1 : -1;\n}\n/**\n *\n * @param {string[]} source - Specifies the data from the data source.\n * @param {string} pathName - Specifies the path name in the data source.\n * @param {any} processData - Specifies the data source object.\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @returns {boolean} - Specifies whether data is available in the data source or not.\n */\nexport function isContainsData(source, pathName, processData, treemap) {\n var isExist = false;\n var name = '';\n var path;\n var leaf = treemap.leafItemSettings;\n for (var i = 0; i < source.length; i++) {\n path = treemap.levels[i] ? treemap.levels[i].groupPath : leaf.labelPath ? leaf.labelPath :\n treemap.weightValuePath;\n var data = processData[path] || 'undefined';\n if (source[i] === data) {\n name += data + (i === source.length - 1 ? '' : '#');\n if (name === pathName) {\n isExist = true;\n break;\n }\n }\n }\n return isExist;\n}\n/**\n *\n * @param {any} data - Specifies the data to which the children elements to be found.\n * @returns {any} - Returns the children elements of the TreeMap leaf element.\n */\nexport function findChildren(data) {\n var children;\n if (data) {\n var keys = Object.keys(data);\n children = {};\n for (var i = 0; i < keys.length; i++) {\n if (data[keys[i]] instanceof Array) {\n children['values'] = data[keys[i]];\n children['key'] = keys[i];\n break;\n }\n }\n }\n return children;\n}\n/**\n *\n * @param {any} data - Specifies the data to which highlight must be done.\n * @param {items} items - Specifies the data source items.\n * @param {string} mode - Specifies the mode of highlight.\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @returns {string[]} - Returns the highlighted items.\n */\nexport function findHightLightItems(data, items, mode, treeMap) {\n if (mode === 'Child') {\n items.push(data['levelOrderName']);\n var children = findChildren(data)['values'];\n if (children && children.length > 0) {\n for (var i = 0; i < children.length; i++) {\n if (items.indexOf(children[i]['levelOrderName']) === -1) {\n items.push(children[i]['levelOrderName']);\n }\n }\n for (var j = 0; j < children.length; j++) {\n findHightLightItems(children[j], items, mode, treeMap);\n }\n }\n }\n else if (mode === 'Parent') {\n if (typeof data['levelOrderName'] === 'string' && items.indexOf(data['levelOrderName']) === -1) {\n items.push(data['levelOrderName']);\n findHightLightItems(data['parent'], items, mode, treeMap);\n }\n }\n else if (mode === 'All') {\n var parentName = data['levelOrderName'].split('#')[0];\n var currentItem = void 0;\n for (var i = 0; i < treeMap.layout.renderItems.length; i++) {\n currentItem = treeMap.layout.renderItems[i];\n if ((currentItem['levelOrderName']).indexOf(parentName) > -1 && items.indexOf(currentItem['levelOrderName']) === -1) {\n items.push(currentItem['levelOrderName']);\n }\n }\n }\n else {\n items.push(data['levelOrderName']);\n }\n return items;\n}\n/**\n * Function to compile the template function for maps.\n *\n * @param {string} template - Specifies the template\n * @returns {Function} - Returns the template function\n * @private\n */\nexport function getTemplateFunction(template) {\n var templateFn = null;\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n templateFn = compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n templateFn = compile(template);\n }\n }\n catch (e) {\n templateFn = compile(template);\n }\n return templateFn;\n}\n/**\n * @private\n * @param {HTMLCollection} element - Specifies the element\n * @param {string} labelId - Specifies the label id\n * @param {Object} data - Specifies the data\n * @returns {HTMLElement} - Returns the element\n */\nexport function convertElement(element, labelId, data) {\n var childElement = createElement('div', {\n id: labelId\n });\n childElement.style.cssText = 'position: absolute;pointer-events: auto;';\n var elementLength = element.length;\n while (elementLength > 0) {\n childElement.appendChild(element[0]);\n elementLength--;\n }\n var templateHtml = childElement.innerHTML;\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n var regExp = RegExp;\n templateHtml = templateHtml.replace(new regExp('{{:' + keys[i] + '}}', 'g'), data[keys[i].toString()]);\n }\n childElement.innerHTML = templateHtml;\n return childElement;\n}\n/**\n *\n * @param {Rect} rect - Specifies the area.\n * @param {LabelPosition} position - Specifies the position\n * @param {Size} labelSize - Specifies the label size.\n * @param {string} type - Specifies the type.\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @returns {Location} - Returns the text location.\n */\nexport function findLabelLocation(rect, position, labelSize, type, treemap) {\n var location = new Location(0, 0);\n var padding = 5;\n var paddings = 2;\n var x = (type === 'Template') ? treemap.areaRect.x : 0;\n var y = (type === 'Template') ? treemap.areaRect.y : 0;\n location.x = (Math.abs(x - ((position.indexOf('Left') > -1) ? rect.x + padding : !(position.indexOf('Right') > -1) ?\n rect.x + ((rect.width / 2) - (labelSize.width / 2)) : (rect.x + rect.width) - labelSize.width))) - paddings;\n if (treemap.enableDrillDown && (treemap.renderDirection === 'BottomLeftTopRight'\n || treemap.renderDirection === 'BottomRightTopLeft')) {\n location.y = Math.abs((rect.y + rect.height) - labelSize.height + padding);\n }\n else {\n location.y = Math.abs(y - ((position.indexOf('Top') > -1) ? (type === 'Template' ? rect.y : rect.y + labelSize.height) :\n !(position.indexOf('Bottom') > -1) ? type === 'Template' ? (rect.y + ((rect.height / 2) - (labelSize.height / 2))) :\n (rect.y + (rect.height / 2) + labelSize.height / 4) : (rect.y + rect.height) - labelSize.height));\n }\n return location;\n}\n/**\n *\n * @param {HTMLElement} element - Specifies the element to be measured.\n * @param {HTMLElement} parentElement - Specifies the parent element of the element to be measured.\n * @returns {Size} - Returns the element size.\n */\nexport function measureElement(element, parentElement) {\n var size = new Size(0, 0);\n parentElement.appendChild(element);\n size.height = element.offsetHeight;\n size.width = element.offsetWidth;\n var measureElementId = document.getElementById(element.id);\n measureElementId.parentNode.removeChild(measureElementId);\n return size;\n}\n/**\n *\n * @param {Rect} rect - Specifies the area.\n * @returns {number} - Returns the area width.\n */\nexport function getArea(rect) {\n return (rect.width - rect.x) * (rect.height - rect.y);\n}\n/**\n *\n * @param {Rect} input - Specifies input for the calculation.\n * @returns {number} - Returns the shortest edge.\n */\nexport function getShortestEdge(input) {\n var container = convertToContainer(input);\n var width = container.width;\n var height = container.height;\n var result = Math.min(width, height);\n return result;\n}\n/**\n *\n * @param {Rect} rect - Specifies the rectangle bounds of the container.\n * @returns {Rect} - Returns the rectangle bounds.\n */\nexport function convertToContainer(rect) {\n var x = rect.x;\n var y = rect.y;\n var width = rect.width;\n var height = rect.height;\n return {\n x: x,\n y: y,\n width: width - x,\n height: height - y\n };\n}\n/**\n *\n * @param {Rect} container - Specifies the rectangle bounds of the container.\n * @returns {Rect} - Returns the rectangle bounds.\n */\nexport function convertToRect(container) {\n var xOffset = container.x;\n var yOffset = container.y;\n var width = container.width;\n var height = container.height;\n return {\n x: xOffset,\n y: yOffset,\n width: xOffset + width,\n height: yOffset + height\n };\n}\n/**\n *\n * @param {number} pageX - Specifies the horizontal position of the mouse location.\n * @param {number} pageY - Specifies the vertical position of the mouse location.\n * @param {Element} element - Specifies the element to which the click is done.\n * @returns {Location} - Returns the clicked location.\n */\nexport function getMousePosition(pageX, pageY, element) {\n var elementRect = element.getBoundingClientRect();\n var pageXOffset = element.ownerDocument.defaultView.pageXOffset;\n var pageYOffset = element.ownerDocument.defaultView.pageYOffset;\n var clientTop = element.ownerDocument.documentElement.clientTop;\n var clientLeft = element.ownerDocument.documentElement.clientLeft;\n var positionX = elementRect.left + pageXOffset - clientLeft;\n var positionY = elementRect.top + pageYOffset - clientTop;\n return new Location((pageX - positionX), (pageY - positionY));\n}\n/**\n *\n * @param {ColorMappingModel[]} colorMapping - Specifies the color mapping instance.\n * @param {string} equalValue - Specifies the equal value.\n * @param {number | string} value - Specifies the range value.\n * @returns {any} - Returns the color mapping object.\n * @private\n */\nexport function colorMap(colorMapping, equalValue, value) {\n var fill;\n var paths = [];\n var opacity;\n if (isNullOrUndefined(equalValue) && (isNullOrUndefined(value) && isNaN(value))) {\n return null;\n }\n for (var i = 0; i < colorMapping.length; i++) {\n var isEqualColor = false;\n var dataValue = value;\n if (!isNullOrUndefined(colorMapping[i].from) && !isNullOrUndefined(colorMapping[i].to)\n && !isNullOrUndefined(colorMapping[i].value)) {\n if ((value >= colorMapping[i].from && colorMapping[i].to >= value) &&\n (colorMapping[i].value === equalValue)) {\n isEqualColor = true;\n if (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') {\n fill = !isEqualColor ? colorCollections(colorMapping[i], dataValue) : colorMapping[i].color[0];\n }\n else {\n fill = colorMapping[i].color;\n }\n }\n }\n else if ((!isNullOrUndefined(colorMapping[i].from) && !isNullOrUndefined(colorMapping[i].to))\n || !isNullOrUndefined((colorMapping[i].value))) {\n if ((value >= colorMapping[i].from && colorMapping[i].to >= value)\n || (colorMapping[i].value === equalValue)) {\n if (colorMapping[i].value === equalValue) {\n isEqualColor = true;\n }\n if (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') {\n fill = !isEqualColor ? colorCollections(colorMapping[i], dataValue) : colorMapping[i].color[0];\n }\n else {\n fill = colorMapping[i].color;\n }\n }\n }\n if (((value >= colorMapping[i].from && value <= colorMapping[i].to)\n || (colorMapping[i].value === equalValue))\n && !isNullOrUndefined(colorMapping[i].minOpacity) && !isNullOrUndefined(colorMapping[i].maxOpacity)\n && fill) {\n opacity = deSaturationColor(colorMapping[i], value);\n }\n if ((fill === '' || isNullOrUndefined(fill))\n && isNullOrUndefined(colorMapping[i].from) && isNullOrUndefined(colorMapping[i].to)\n && isNullOrUndefined(colorMapping[i].minOpacity) && isNullOrUndefined(colorMapping[i].maxOpacity)\n && isNullOrUndefined(colorMapping[i].value)) {\n fill = (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') ?\n colorMapping[i].color[0] : colorMapping[i].color;\n }\n opacity = !isNullOrUndefined(opacity) ? opacity : '1';\n paths.push(fill);\n }\n for (var j = paths.length - 1; j >= 0; j--) {\n fill = paths[j];\n j = (fill) ? -1 : j;\n }\n return { fill: fill, opacity: opacity };\n}\n/**\n *\n * @param {ColorMappingModel} colorMapping - Specifies the color mapping object.\n * @param {number} rangeValue - Specifies the range value.\n * @returns {string} - Returns the opacity for the color mapping.\n * @private\n */\nexport function deSaturationColor(colorMapping, rangeValue) {\n var opacity = 1;\n if ((rangeValue >= colorMapping.from && rangeValue <= colorMapping.to)) {\n var ratio = (rangeValue - colorMapping.from) / (colorMapping.to - colorMapping.from);\n opacity = (ratio * (colorMapping.maxOpacity - colorMapping.minOpacity)) + colorMapping.minOpacity;\n }\n return opacity.toString();\n}\n/**\n *\n * @param {ColorMappingModel} colorMap - Specifies the color mapping object.\n * @param {number} value - Specifies the range value.\n * @returns {string} - Returns the fill color.\n */\nexport function colorCollections(colorMap, value) {\n var gradientFill = getColorByValue(colorMap, value);\n return gradientFill;\n}\n/**\n *\n * @param {number} r - Specifies the red color value.\n * @param {number} g - Specifies the green color value.\n * @param {number} b - Specifies the blue color value.\n * @returns {string} - Returns the fill color.\n */\nexport function rgbToHex(r, g, b) {\n return '#' + componentToHex(r) + componentToHex(g) + componentToHex(b);\n}\n/**\n *\n * @param {ColorMappingModel} colorMap - Specifies the color mapping.\n * @param {number} value - Specifies the range value.\n * @returns {string} - Returns the fill color.\n */\nexport function getColorByValue(colorMap, value) {\n var color = '';\n var rbg;\n if (Number(value) === colorMap.from) {\n color = colorMap.color[0];\n }\n else if (Number(value) === colorMap.to) {\n color = colorMap.color[colorMap.color.length - 1];\n }\n else {\n rbg = getGradientColor(Number(value), colorMap);\n color = rgbToHex(rbg.r, rbg.g, rbg.b);\n }\n return color;\n}\n/**\n *\n * @param {number} value - Specifies the range value.\n * @param {ColorMappingModel} colorMap - Specifies the color mapping.\n * @returns {ColorValue} - Returns the color value object.\n */\nexport function getGradientColor(value, colorMap) {\n var previousOffset = colorMap.from;\n var nextOffset = colorMap.to;\n var percent = 0;\n var full = nextOffset - previousOffset;\n var midColor;\n percent = (value - previousOffset) / full;\n var previousColor;\n var nextColor;\n if (colorMap.color.length <= 2) {\n previousColor = colorMap.color[0].charAt(0) === '#' ? colorMap.color[0] : colorNameToHex(colorMap.color[0]);\n nextColor = colorMap.color[colorMap.color.length - 1].charAt(0) === '#' ?\n colorMap.color[colorMap.color.length - 1] : colorNameToHex(colorMap.color[colorMap.color.length - 1]);\n }\n else {\n previousColor = colorMap.color[0].charAt(0) === '#' ? colorMap.color[0] : colorNameToHex(colorMap.color[0]);\n nextColor = colorMap.color[colorMap.color.length - 1].charAt(0) === '#' ?\n colorMap.color[colorMap.color.length - 1] : colorNameToHex(colorMap.color[colorMap.color.length - 1]);\n var a = full / (colorMap.color.length - 1);\n var b = void 0;\n var c = void 0;\n var length_1 = colorMap.color.length - 1;\n var splitColorValueOffset = [];\n var splitColor = {};\n for (var j = 1; j < length_1; j++) {\n c = j * a;\n b = previousOffset + c;\n splitColor = { b: b, color: colorMap.color[j] };\n splitColorValueOffset.push(splitColor);\n }\n for (var i = 0; i < splitColorValueOffset.length; i++) {\n if (previousOffset <= value && value <= splitColorValueOffset[i]['b'] && i === 0) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n nextColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ? 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a)\n : (value - splitColorValueOffset[i]['b']) / a;\n }\n else if (splitColorValueOffset[i]['b'] <= value && value <= nextOffset && i === (splitColorValueOffset.length - 1)) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ?\n 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a) : (value - splitColorValueOffset[i]['b']) / a;\n }\n if (i !== splitColorValueOffset.length - 1 && i < splitColorValueOffset.length) {\n if (splitColorValueOffset[i]['b'] <= value && value <= splitColorValueOffset[i + 1]['b']) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n nextColor = splitColorValueOffset[i + 1]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i + 1]['color'] : colorNameToHex(splitColorValueOffset[i + 1]['color']);\n percent = Math.abs((value - splitColorValueOffset[i + 1]['b'])) / a;\n }\n }\n }\n }\n return getPercentageColor(percent, previousColor, nextColor);\n}\n/**\n *\n * @param {number} percent - Specifies the percentage of the color.\n * @param {number} previous - Specifies the previous color.\n * @param {number} next - Specifies the next color.\n * @returns {ColorValue} - Returns the color value object.\n */\nexport function getPercentageColor(percent, previous, next) {\n var nextColor = next.split('#')[1];\n var prevColor = previous.split('#')[1];\n var r = getPercentage(percent, parseInt(prevColor.substr(0, 2), 16), parseInt(nextColor.substr(0, 2), 16));\n var g = getPercentage(percent, parseInt(prevColor.substr(2, 2), 16), parseInt(nextColor.substr(2, 2), 16));\n var b = getPercentage(percent, parseInt(prevColor.substr(4, 2), 16), parseInt(nextColor.substr(4, 2), 16));\n return new ColorValue(r, g, b);\n}\n/**\n *\n * @param {number} percent - Specifies the percentage of the color.\n * @param {number} previous - Specifies the previous color.\n * @param {number} next - Specifies the next color.\n * @returns {number} - Returns the color value.\n */\nexport function getPercentage(percent, previous, next) {\n var full = next - previous;\n return Math.round((previous + (full * percent)));\n}\n/**\n *\n * @param {number} maximumWidth - Specifies the length of the text.\n * @param {string} dataLabel - Specifies the label.\n * @param {FontModel} font - Specifies the font of the label.\n * @returns {string[]} - Returns the labels.\n */\nexport function wordWrap(maximumWidth, dataLabel, font) {\n var textCollection = dataLabel.split(' ');\n var label = '';\n var labelCollection = [];\n var text;\n for (var i = 0, len = textCollection.length; i < len; i++) {\n text = textCollection[i];\n if (measureText(label.concat(text), font).width < maximumWidth) {\n label = label.concat((label === '' ? '' : ' ') + text);\n }\n else {\n if (label !== '') {\n labelCollection.push(textTrim(maximumWidth, label, font));\n label = text;\n }\n else {\n labelCollection.push(textTrim(maximumWidth, text, font));\n text = '';\n }\n }\n if (label && i === len - 1) {\n labelCollection.push(textTrim(maximumWidth, label, font));\n }\n }\n return labelCollection;\n}\n/**\n *\n * @param {number} maxWidth - Specifies the length of the text.\n * @param {string} label - Specifies the label.\n * @param {FontModel} font - Specifies the font of the label.\n * @returns {string[]} - Returns the labels.\n */\nexport function textWrap(maxWidth, label, font) {\n var resultText = [];\n var currentLength = 0;\n var totalWidth = measureText(label, font).width;\n var totalLength = label.length;\n if (maxWidth >= totalWidth) {\n resultText.push(label);\n return resultText;\n }\n else {\n for (var i = label.length; i > currentLength; i--) {\n var sliceString = label.slice(currentLength, i);\n totalWidth = measureText(sliceString, font).width;\n if (totalWidth <= maxWidth) {\n resultText.push(sliceString);\n currentLength += sliceString.length;\n if (totalLength === currentLength) {\n return resultText;\n }\n i = totalLength + 1;\n }\n }\n }\n return resultText;\n}\n/**\n * hide function\n *\n * @param {number} maxWidth - Specifies the maximum width.\n * @param {number} maxHeight - Specifies the maximum height.\n * @param {string} text - Specifies the text.\n * @param {FontModel} font - Specifies the font.\n * @returns {string} - Returns the hidden text.\n * @private\n */\nexport function hide(maxWidth, maxHeight, text, font) {\n var hideText = text;\n var textSize = measureText(text, font);\n hideText = (textSize.width > maxWidth || textSize.height > maxHeight) ? ' ' : text;\n return hideText;\n}\n/**\n *\n * @param {number} a - Specifies the first value of the leaf.\n * @param {number} b - Specifies the second value of the leaf.\n * @returns {number} - Returns whether values are equal or not.\n */\nexport function orderByArea(a, b) {\n if (a['itemArea'] === b['itemArea']) {\n return 0;\n }\n else if (a['itemArea'] < b['itemArea']) {\n return 1;\n }\n return -1;\n}\n/**\n *\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @param {Element} element - Specifies the selected TreeMap leaf item.\n * @param {string} className -Specifies the selected class name.\n * @returns {void}\n */\nexport function maintainSelection(treemap, element, className) {\n var elementId = treemap.levelSelection;\n if (elementId) {\n for (var index = 0; index < elementId.length; index++) {\n if (element.getAttribute('id') === elementId[index]) {\n if (element.childElementCount > 0) {\n element.children[0].setAttribute('class', className);\n applyOptions(element.childNodes[0], {\n border: treemap.selectionSettings.border, fill: treemap.selectionSettings.fill,\n opacity: treemap.selectionSettings.opacity\n });\n }\n }\n else {\n element.setAttribute('class', '');\n }\n }\n }\n}\n/**\n *\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @param {Element} legendGroup - Specifies the selected element.\n * @returns {void}\n */\nexport function legendMaintain(treemap, legendGroup) {\n var elementId = treemap.legendId;\n if (elementId) {\n for (var i = 0; i < elementId.length; i++) {\n for (var j = 0; j < legendGroup.childElementCount; j++) {\n if (legendGroup.childNodes[j]['id'] === elementId[i]) {\n var treemapSVGRectElement = legendGroup.childNodes[j];\n treemapSVGRectElement.setAttribute('fill', treemap.selectionSettings.fill);\n treemapSVGRectElement.setAttribute('stroke', treemap.selectionSettings.border.color);\n treemapSVGRectElement.setAttribute('stroke-width', (treemap.selectionSettings.border.width).toString());\n treemapSVGRectElement.setAttribute('opacity', treemap.selectionSettings.opacity);\n }\n }\n }\n }\n}\n/**\n *\n * @param {HTMLCollection} elements - Specifies the selected TreeMap element.\n * @param {string} type - Specifies the selection type.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {void}\n */\nexport function removeClassNames(elements, type, treemap) {\n var element;\n var options = {};\n for (var j = 0; j < elements.length; j++) {\n element = isNullOrUndefined(elements[j].childNodes[0]) ? elements[j] :\n elements[j].childNodes[0];\n options = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])]['options'];\n applyOptions(element, options);\n elements[j].classList.remove(type);\n j -= 1;\n }\n}\n/**\n *\n * @param {SVGPathElement} element - Specifies the SVG path element.\n * @param {any} options - Specifies the settings for the SVG path element.\n * @returns {void}\n */\nexport function applyOptions(element, options) {\n element.setAttribute('opacity', options['opacity']);\n if (!isNullOrUndefined(options['fill'])) {\n element.setAttribute('fill', options['fill']);\n }\n element.setAttribute('stroke', options['border']['color']);\n element.setAttribute('stroke-width', options['border']['width']);\n}\n/**\n *\n * @param {string} format - Specifies the format value.\n * @param {any} data - Specifies the data source object.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {string} - Returns the formatted text.\n */\nexport function textFormatter(format, data, treemap) {\n if (isNullOrUndefined(format)) {\n return null;\n }\n var keys = Object.keys(data);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n format = format.split('${' + key + '}').join(formatValue(data[key], treemap).toString());\n }\n return format;\n}\n/**\n *\n * @param {number} value - Specifies the text to be formatted.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {string | number} - Returns the formatted text.\n */\nexport function formatValue(value, treemap) {\n var formatValue;\n var formatFunction;\n if (treemap.format && !isNaN(Number(value))) {\n formatFunction = treemap.intl.getNumberFormat({ format: treemap.format, useGrouping: treemap.useGroupingSeparator });\n formatValue = formatFunction(Number(value));\n }\n else {\n formatValue = value;\n }\n return formatValue ? formatValue : '';\n}\n/**\n * @private\n */\nvar ColorValue = /** @class */ (function () {\n function ColorValue(r, g, b) {\n this.r = r;\n this.g = g;\n this.b = b;\n }\n return ColorValue;\n}());\nexport { ColorValue };\n/**\n * @param {ColorValue} value - Specfies the color value\n * @returns {string} - Returns the string\n * @private\n */\nexport function convertToHexCode(value) {\n return '#' + componentToHex(value.r) + componentToHex(value.g) + componentToHex(value.b);\n}\n/**\n * @param {number} value - Specifies the value\n * @returns {string} - Returns the string\n * @private */\nexport function componentToHex(value) {\n var hex = value.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n}\n/**\n * @param {string} hex - Specifies the hex value\n * @returns {ColorValue} - Returns the color value\n * @private\n */\nexport function convertHexToColor(hex) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? new ColorValue(parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)) :\n new ColorValue(255, 255, 255);\n}\n/**\n * @param {string} color - Specifies the color\n * @returns {string} - Returns the string\n * @private\n */\nexport function colorNameToHex(color) {\n color = color === 'transparent' ? 'white' : color;\n var element = document.getElementById('treeMapMeasureText');\n element.style.color = color;\n color = window.getComputedStyle(element).color;\n var isRGBValue = color.replace(/[()RGBrgba ]/g, '').split(',');\n return convertToHexCode(new ColorValue(parseInt(isRGBValue[0], 10), parseInt(isRGBValue[1], 10), parseInt(isRGBValue[2], 10)));\n}\n/**\n * @param {Location} location - Specifies the location\n * @param {string} shape - Specifies the shape\n * @param {Size} size - Specifies the size\n * @param {string} url - Specifies the url\n * @param {PathOption} options - Specifies the options\n * @returns {Element} - Returns the element\n * @private\n */\nexport function drawSymbol(location, shape, size, url, options) {\n var svgRenderer = new SvgRenderer('');\n var temp = renderLegendShape(location, size, shape, options, url);\n var htmlElement = svgRenderer['draw' + temp.functionName](temp.renderOption);\n return htmlElement;\n}\n/**\n * @param {Location} location - Specifies the location\n * @param {Size} size - Specifies the size\n * @param {string} shape - Specifies the shape\n * @param {PathOption} options - Specifies the path option\n * @param {string} url - Specifies the string\n * @returns {IShapes} - Returns the shapes\n * @private\n */\nexport function renderLegendShape(location, size, shape, options, url) {\n var renderPath;\n var functionName = 'Path';\n var shapeWidth = size.width;\n var shapeHeight = size.height;\n var shapeX = location.x;\n var shapeY = location.y;\n var x = location.x + (-shapeWidth / 2);\n var y = location.y + (-shapeHeight / 2);\n switch (shape) {\n case 'Circle':\n case 'Bubble':\n functionName = 'Ellipse';\n merge(options, { 'rx': shapeWidth / 2, 'ry': shapeHeight / 2, 'cx': shapeX, 'cy': shapeY });\n break;\n case 'VerticalLine':\n renderPath = 'M' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' + 'L' + ' ' + shapeX + ' '\n + (shapeY + (-shapeHeight / 2));\n merge(options, { 'd': renderPath });\n break;\n case 'Diamond':\n renderPath = 'M' + ' ' + x + ' ' + shapeY + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + shapeY + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + shapeY + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Rectangle':\n renderPath = 'M' + ' ' + x + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (-shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Triangle':\n renderPath = 'M' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'InvertedTriangle':\n renderPath = 'M' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX - (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Pentagon':\n // eslint-disable-next-line no-case-declarations\n var eq = 72;\n // eslint-disable-next-line no-case-declarations\n var xValue = void 0;\n // eslint-disable-next-line no-case-declarations\n var yValue = void 0;\n for (var i = 0; i <= 5; i++) {\n xValue = (shapeWidth / 2) * Math.cos((Math.PI / 180) * (i * eq));\n yValue = (shapeWidth / 2) * Math.sin((Math.PI / 180) * (i * eq));\n if (i === 0) {\n renderPath = 'M' + ' ' + (shapeX + xValue) + ' ' + (shapeY + yValue) + ' ';\n }\n else {\n renderPath = renderPath.concat('L' + ' ' + (shapeX + xValue) + ' ' + (shapeY + yValue) + ' ');\n }\n }\n renderPath = renderPath.concat('Z');\n merge(options, { 'd': renderPath });\n break;\n case 'Star':\n renderPath = 'M ' + (location.x + size.width / 3) + ' ' + (location.y - size.height / 2) + ' L ' + (location.x - size.width / 2)\n + ' ' + (location.y + size.height / 6) + ' L ' + (location.x + size.width / 2) + ' ' + (location.y + size.height / 6)\n + ' L ' + (location.x - size.width / 3) + ' ' + (location.y - size.height / 2) + ' L ' + location.x + ' ' +\n (location.y + size.height / 2) + ' L ' + (location.x + size.width / 3) + ' ' + (location.y - size.height / 2) + ' Z';\n merge(options, { 'd': renderPath });\n break;\n case 'Cross':\n renderPath = 'M' + ' ' + x + ' ' + shapeY + ' ' + 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + shapeY + ' ' +\n 'M' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' + 'L' + ' ' + shapeX + ' ' +\n (shapeY + (-shapeHeight / 2));\n merge(options, { 'd': renderPath });\n break;\n case 'Image':\n functionName = 'Image';\n merge(options, { 'href': url, 'height': shapeHeight, 'width': shapeWidth, x: x, y: y });\n break;\n }\n return { renderOption: options, functionName: functionName };\n}\n/**\n *\n * @param {any} data - Specifies the data source object.\n * @param {any} item - Specifies the leaf item.\n * @returns {boolean} - Returns whether the TreeMap item is level item or leaf item.\n */\nexport function isParentItem(data, item) {\n var isParentItem = false;\n for (var j = 0; j < data.length; j++) {\n if (item['levelOrderName'] === data[j]['levelOrderName']) {\n isParentItem = true;\n break;\n }\n }\n return isParentItem;\n}\n/**\n * Specifies the data to be received through Ajax request for treemap.\n */\nvar TreeMapAjax = /** @class */ (function () {\n function TreeMapAjax(options, type, async, contentType, sendData) {\n this.dataOptions = options;\n this.type = type || 'GET';\n this.async = async || true;\n this.contentType = contentType;\n this.sendData = sendData;\n }\n return TreeMapAjax;\n}());\nexport { TreeMapAjax };\n/**\n *\n * @param {any[]} collection - Specifies the legend collection.\n * @returns {void}\n * @private\n */\nexport function removeShape(collection) {\n if (collection.length > 0) {\n for (var i = 0; i < collection.length; i++) {\n var item = collection[i];\n setColor(item['legendEle'], item['oldFill'], item['oldOpacity'], item['oldBorderColor'], item['oldBorderWidth']);\n }\n }\n}\n/**\n *\n * @param {any[]} collection - Specifies the legend collection.\n * @returns {void}\n * @private\n */\nexport function removeLegend(collection) {\n if (collection.length > 0) {\n for (var j = 0; j < collection.length; j++) {\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}\n/**\n *\n * @param {Element} element - Specifies the selected element.\n * @param {string} fill - Specifies the fill color.\n * @param {string} opacity - Specifies the opacity.\n * @param {string} borderColor - Specifies the border color.\n * @param {string} borderWidth - Specifies the border width.\n * @returns {void}\n */\nexport function setColor(element, fill, opacity, borderColor, borderWidth) {\n element.setAttribute('fill', fill);\n element.setAttribute('opacity', opacity);\n element.setAttribute('stroke', borderColor);\n element.setAttribute('stroke-width', borderWidth);\n}\n/**\n *\n * @param {any[]} collection - Specifies the selected item collection.\n * @param {any[]} element - Specifies the selected element collection.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {void}\n */\nexport function removeSelectionWithHighlight(collection, element, treemap) {\n removeShape(collection);\n element = [];\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n}\n/**\n *\n * @param {number} length - Specifies the length of the legend group.\n * @param {any} item - Specifies the legend item.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {number} - Returns the legend index.\n */\nexport function getLegendIndex(length, item, treemap) {\n 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}\n/**\n *\n * @param {any[]} collection - Specifies the legend collection.\n * @param {number} index - Specifies the index of legend.\n * @param {number} number - Specifies the leaf item index.\n * @param {Element} legendElement - Specifies the legend element.\n * @param {Element} shapeElement - Specifies the shape element.\n * @param {any[]} renderItems - Specifies the item index.\n * @param {any[]} legendCollection - Specifies the legend collection.\n * @returns {void}\n */\nexport function pushCollection(collection, index, number, legendElement, shapeElement, renderItems, legendCollection) {\n collection.push({\n legendEle: legendElement, oldFill: legendCollection[index]['legendFill'],\n oldOpacity: legendCollection[index]['opacity'], oldBorderColor: legendCollection[index]['borderColor'],\n oldBorderWidth: legendCollection[index]['borderWidth'],\n shapeElement: shapeElement, shapeOldFill: renderItems[number]['options']['fill'],\n shapeOldOpacity: renderItems[number]['options']['opacity'],\n shapeOldBorderColor: renderItems[number]['options']['border']['color'],\n shapeOldBorderWidth: renderItems[number]['options']['border']['width']\n });\n}\n/**\n * To trigger the download element\n *\n * @param {string} fileName - Specifies the file name\n * @param {ExportType} type - Specifies the type\n * @param {string} url - Specifies the url\n * @param {boolean} isDownload - Specifies the boolean value\n * @returns {void}\n * @private\n */\nexport function triggerDownload(fileName, type, url, isDownload) {\n createElement('a', {\n attrs: {\n 'download': fileName + '.' + type.toLocaleLowerCase(),\n 'href': url\n }\n }).dispatchEvent(new MouseEvent(isDownload ? 'click' : 'move', {\n view: window,\n bubbles: false,\n cancelable: true\n }));\n}\n/**\n *\n * @param {string} id - Specifies the id of the element to be removed.\n * @returns {void}\n */\nexport function removeElement(id) {\n var element = document.getElementById(id);\n return element ? remove(element) : null;\n}\n","import { Rect, itemsToOrder, TextOption, measureText, textTrim, hide, wordWrap, textWrap, getTemplateFunction, convertElement, findLabelLocation, PathOption, textFormatter, colorNameToHex, convertHexToColor, colorMap, measureElement, convertToContainer, convertToRect, getShortestEdge, getArea, orderByArea, isParentItem, maintainSelection } from '../utils/helper';\nimport { isNullOrUndefined, createElement, extend } from '@syncfusion/ej2-base';\nimport { findChildren, renderTextElement } from '../utils/helper';\nimport { itemRendering } from '../model/constants';\n/**\n * To calculate and render the shape layer\n */\nvar LayoutPanel = /** @class */ (function () {\n function LayoutPanel(treemap) {\n this.treemap = treemap;\n }\n LayoutPanel.prototype.processLayoutPanel = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data;\n var totalRect;\n if (this.treemap.treemapLevelData.levelsData && this.treemap.treemapLevelData.levelsData.length > 0) {\n data = (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) &&\n !isNullOrUndefined(this.treemap.initialDrillDown.groupName)) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length === 0) ?\n this.getDrilldownData(this.treemap.treemapLevelData.levelsData[0], [])[0] : this.treemap.treemapLevelData.levelsData[0];\n totalRect = extend({}, this.treemap.areaRect, totalRect, false);\n if (!isNullOrUndefined(this.treemap.treeMapLegendModule) && !isNullOrUndefined(this.treemap.totalRect)) {\n if (this.treemap.legendSettings.position !== 'Float') {\n totalRect = this.treemap.totalRect;\n }\n }\n if (!isNullOrUndefined(this.treemap.currentLevel) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? !isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length !== 0)) {\n var count = this.treemap.drilledItems.length - 1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var x = this.treemap.drilledItems[count]['data'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var y = {};\n y[this.treemap.drilledItems[count]['data']['groupName']] = [x];\n if (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) && !this.treemap.enableBreadcrumb) {\n this.treemap.currentLevel = this.treemap.drilledItems[count]['data']['groupIndex'];\n }\n this.calculateLayoutItems(y || this.treemap.treemapLevelData.levelsData[0], totalRect);\n this.renderLayoutItems();\n }\n else {\n if (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length === 0)) {\n this.treemap.currentLevel = this.treemap.initialDrillDown.groupIndex;\n }\n this.calculateLayoutItems(data || this.treemap.treemapLevelData.levelsData[0], totalRect);\n this.renderLayoutItems();\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getDrilldownData = function (data, drillData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var treemap = this.treemap;\n var newData = {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n if (child && child.length > 0 && drillData.length === 0) {\n for (var i = 0; i < child.length; i++) {\n if (child[i]['groupIndex'] === treemap.initialDrillDown.groupIndex &&\n child[i]['name'] === treemap.initialDrillDown.groupName) {\n child[i]['isDrilled'] = true;\n newData[child[i]['groupName']] = [child[i]];\n drillData.push(newData);\n }\n }\n for (var j = 0; j < child.length; j++) {\n this.getDrilldownData(child[j], drillData);\n }\n }\n return drillData;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.calculateLayoutItems = function (data, rect) {\n this.renderItems = [];\n this.parentData = [];\n if (!isNullOrUndefined(this.treemap.weightValuePath)) {\n if (this.treemap.layoutType.indexOf('SliceAndDice') > -1) {\n this.computeSliceAndDiceDimensional(data, rect);\n }\n else {\n rect.height = rect.height + rect.y;\n rect.width = rect.width + rect.x;\n this.computeSquarifyDimensional(data, rect);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeSliceAndDiceDimensional = function (data, coords) {\n var leafItem = this.treemap.leafItemSettings;\n var rect;\n var groups = this.treemap.levels;\n var groupIndex;\n var isLeafItem = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var children = findChildren(data)['values'];\n var gap;\n var headerHeight;\n if (children && children.length > 0) {\n this.sliceAndDiceProcess(children, coords);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < children.length; i++) {\n groupIndex = children[i]['groupIndex'];\n isLeafItem = (groups.length === 0 || groupIndex === groups.length);\n gap = isLeafItem ? leafItem.gap : groups[groupIndex].groupGap;\n headerHeight = groups.length === 0 ? 0 : groups[groupIndex] ? groups[groupIndex].showHeader ?\n groups[groupIndex].headerHeight : 0 : groups[groupIndex - 1].showHeader ?\n groups[groupIndex - 1].headerHeight : 0;\n rect = children[i]['rect'];\n rect = new Rect(rect.x + (gap / 2), rect.y + (headerHeight + (gap / 2)), rect.width - gap, Math.abs(rect.height - (gap + headerHeight)));\n this.computeSliceAndDiceDimensional(children[i], rect);\n }\n }\n }\n return data;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.sliceAndDiceProcess = function (processData, rect) {\n var parentArea = rect.height * rect.width;\n var levels = this.treemap.levels;\n var childValue;\n var alottedValue = 0;\n var totalWeight = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n processData.forEach(function (data) { totalWeight += data['weight']; });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n processData.forEach(function (child) {\n child['weightArea'] = parentArea * child['weight'] / totalWeight;\n });\n var isHorizontal = (this.treemap.layoutType === 'SliceAndDiceAuto') ? (rect.width > rect.height) :\n (this.treemap.layoutType === 'SliceAndDiceHorizontal');\n processData.sort(itemsToOrder);\n for (var i = 0; i < processData.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = processData[i];\n item['isLeafItem'] = (levels.length === 0) || ((this.treemap.isHierarchicalData ||\n isNullOrUndefined(this.treemap.leafItemSettings.labelPath)) ?\n item['groupIndex'] === levels.length - 1 : item['groupIndex'] === this.treemap.levels.length);\n if (isHorizontal) {\n childValue = ((parentArea / totalWeight) * processData[i]['weight']) / rect.height;\n if (alottedValue <= rect.width) {\n processData[i]['rect'] = new Rect(alottedValue + rect.x, rect.y, childValue, rect.height);\n }\n }\n else {\n childValue = ((parentArea / totalWeight) * processData[i]['weight']) / rect.width;\n if (alottedValue <= rect.height) {\n processData[i]['rect'] = new Rect(rect.x, alottedValue + rect.y, rect.width, childValue);\n }\n }\n alottedValue += childValue;\n this.renderItems.push(processData[i]);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeSquarifyDimensional = function (data, coords) {\n var leaf = this.treemap.leafItemSettings;\n var rect;\n var levels = this.treemap.levels;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n var index;\n var padding;\n var headerHeight;\n if (child && child.length > 0) {\n if (this.parentData.length === 0) {\n this.parentData = [];\n this.parentData.push(child);\n }\n this.calculateChildrenLayout(data, child, coords);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < child.length; i++) {\n item = child[i];\n index = item['groupIndex'];\n rect = item['rect'];\n padding = (item['isLeafItem'] ? leaf.padding : levels[index].groupPadding) / 2;\n headerHeight = this.treemap.isHierarchicalData ? index === 0 && item['isLeafItem'] ? 0 : levels[index] ?\n levels[index].showHeader ? levels[index].headerHeight : 0 : 0 :\n (levels.length === 0) ? 0 : levels[index] ?\n levels[index].showHeader ? levels[index].headerHeight : 0 : 0;\n rect = new Rect(rect.x + padding, rect.y + (headerHeight + padding), rect.width - padding, rect.height - padding);\n if (!item['isLeafItem'] && item['weight'] > 0) {\n this.computeSquarifyDimensional(child[i], rect);\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.calculateChildrenLayout = function (parent, children, coords) {\n this.computeTotalArea(children, getArea(coords));\n children.sort(orderByArea);\n this.performRowsLayout(children, [], coords, []);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.performRowsLayout = function (data, currentRow, rect, stack) {\n var dataLength = data.length;\n if (dataLength === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newCoordinates = this.getCoordinates(currentRow, rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newStack = stack.concat(newCoordinates);\n return newStack;\n }\n var width = getShortestEdge(rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var nextDatum = data[0];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var restData = data.slice(1, dataLength);\n if (this.aspectRatio(currentRow, nextDatum, width)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newRow = currentRow.concat(nextDatum);\n return this.performRowsLayout(restData, newRow, rect, stack);\n }\n else {\n var currentRowLength = currentRow.length;\n var valueSum = 0;\n for (var i = 0; i < currentRowLength; i += 1) {\n valueSum += currentRow[i]['itemArea'];\n }\n var newContainer = this.cutArea(rect, valueSum);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newCoordinates = this.getCoordinates(currentRow, rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newStack = stack.concat(newCoordinates);\n return this.performRowsLayout(data, [], newContainer, newStack);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.aspectRatio = function (currentRow, nextDatum, length) {\n if (currentRow.length === 0) {\n return true;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newRow = currentRow.concat(nextDatum);\n var currentMaxAspectRatio = this.findMaxAspectRatio(currentRow, length);\n var newMaxAspectRatio = this.findMaxAspectRatio(newRow, length);\n return (currentMaxAspectRatio >= newMaxAspectRatio);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.findMaxAspectRatio = function (row, length) {\n var rowLength = row.length;\n var minArea = Infinity;\n var maxArea = -Infinity;\n var sumArea = 0;\n for (var i = 0; i < rowLength; i += 1) {\n var area = row[i]['itemArea'];\n if (area < minArea) {\n minArea = area;\n }\n if (area > maxArea) {\n maxArea = area;\n }\n sumArea += area;\n }\n var result = Math.max((Math.pow(length, 2)) * maxArea / (Math.pow(sumArea, 2)), (Math.pow(sumArea, 2)) /\n ((Math.pow(length, 2)) * minArea));\n return result;\n };\n LayoutPanel.prototype.cutArea = function (rect, area) {\n var newContainer = convertToContainer(rect);\n var width = newContainer.width;\n var height = newContainer.height;\n var xOffset = newContainer.x;\n var yOffset = newContainer.y;\n if (width >= height) {\n var areaWidth = area / height;\n var newWidth = width - areaWidth;\n var container = {\n x: xOffset + areaWidth,\n y: yOffset,\n width: newWidth,\n height: height\n };\n return convertToRect(container);\n }\n else {\n var areaHeight = area / width;\n var newHeight = height - areaHeight;\n var container = {\n x: xOffset,\n y: yOffset + areaHeight,\n width: width,\n height: newHeight\n };\n return convertToRect(container);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getCoordinates = function (row, rect) {\n var container = convertToContainer(rect);\n var width = container.width;\n var height = container.height;\n var xOffset = container.x;\n var yOffset = container.y;\n var rowLength = row.length;\n var levels = this.treemap.levels;\n var leaf = this.treemap.leafItemSettings;\n var index;\n var valueSum = 0;\n for (var i = 0; i < rowLength; i += 1) {\n valueSum += row[i]['itemArea'];\n }\n var areaWidth = valueSum / height;\n var areaHeight = valueSum / width;\n var subXOffset = xOffset;\n var subYOffset = yOffset;\n var padding;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var coordinates = [];\n var isParent;\n var parentRect;\n for (var i = 0; i < rowLength; i += 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = row[i];\n index = item['groupIndex'];\n item['isLeafItem'] = (levels.length === 0) || (this.treemap.isHierarchicalData ? index === levels.length :\n isNullOrUndefined(leaf.labelPath) ? false : index === levels.length);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isParent = isParentItem(this.parentData[0], item);\n parentRect = isParent ? this.treemap.areaRect : item['parent'].rect;\n padding = item['isLeafItem'] ? leaf.padding : levels[index].groupPadding;\n if (width >= height) {\n var y1 = subYOffset + item['itemArea'] / areaWidth;\n item['rect'] = {\n x: subXOffset,\n y: subYOffset,\n width: subXOffset + areaWidth,\n height: y1\n };\n subYOffset = y1;\n }\n else {\n var x1 = subXOffset + item['itemArea'] / areaHeight;\n item['rect'] = {\n x: subXOffset,\n y: subYOffset,\n width: x1,\n height: subYOffset + areaHeight\n };\n subXOffset = x1;\n }\n if (item['weight'] > 0 && (isParent || (Math.round(rect.y + (padding / 2)) <=\n Math.round(parentRect.y + (parentRect.height - parentRect.y)) && Math.round(rect.x + (padding / 2)) <=\n Math.round(parentRect.x + (parentRect.width - parentRect.x))))) {\n this.renderItems.push(item);\n coordinates.push(item);\n }\n }\n return coordinates;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeTotalArea = function (data, area) {\n var dataLength = data.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var result = [];\n for (var i = 0; i < dataLength; i += 1) {\n var dataLength_1 = data.length;\n var dataSum = 0;\n for (var i_1 = 0; i_1 < dataLength_1; i_1 += 1) {\n dataSum += data[i_1]['weight'];\n }\n var multiplier = area / dataSum;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var datum = void 0;\n for (var j = 0; j < dataLength_1; j++) {\n datum = data[j];\n datum['itemArea'] = datum['weight'] * multiplier;\n result.push(datum);\n }\n }\n return result;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.onDemandProcess = function (childItems) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentItem = {};\n var totalRect;\n parentItem = childItems[0]['parent'];\n this.treemap.currentLevel = parentItem['isDrilled'] ? parentItem['groupIndex'] : null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentItemGroupname = {};\n if (isNullOrUndefined(parentItem['groupName'])) {\n parentItemGroupname = parentItem;\n }\n else {\n parentItemGroupname[parentItem['groupName']] = [parentItem];\n }\n totalRect = extend({}, this.treemap.areaRect, totalRect, false);\n if (!isNullOrUndefined(this.treemap.treeMapLegendModule) && !isNullOrUndefined(this.treemap.totalRect)) {\n totalRect = this.treemap.totalRect;\n }\n var count = this.treemap.levels.length;\n for (var i = 0; i < count; i++) {\n var levelCount = childItems[0]['groupIndex'];\n if (count === levelCount) {\n this.treemap.levels[count] = this.treemap.levels[i];\n }\n else {\n this.treemap.levels.splice(count - 1, 1);\n }\n }\n this.calculateLayoutItems(parentItemGroupname, totalRect);\n this.renderLayoutItems();\n };\n // eslint-disable-next-line valid-jsdoc\n /** @private */\n LayoutPanel.prototype.renderLayoutItems = function () {\n var _this = this;\n var position;\n var treeMap = this.treemap;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var txtVisible;\n var getItemColor;\n var eventArgs;\n this.renderer = treeMap.renderer;\n var pathOptions;\n var elementID = treeMap.element.id;\n var index;\n var templatePosition;\n var mode = treeMap.layoutType;\n var rect;\n var format;\n var interSectAction = this.treemap.leafItemSettings.interSectAction;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var fill;\n var item;\n var renderText;\n var opacity;\n var rectPath = '';\n var secondaryEle = document.getElementById(treeMap.element.id + '_Secondary_Element');\n var groupId;\n var templateEle;\n var gap;\n var textStyle;\n var levels = treeMap.levels;\n this.layoutGroup = this.renderer.createGroup({ id: elementID + '_TreeMap_' + mode + '_Layout' });\n var itemGroup;\n var template;\n var border;\n var templateGroup = createElement('div', {\n id: treeMap.element.id + '_Label_Template_Group',\n className: 'template'\n });\n templateGroup.style.cssText = 'overflow: hidden; position: absolute;pointer-events: none;' +\n 'top:' + treeMap.areaRect.y + 'px;' +\n 'left:' + treeMap.areaRect.x + 'px;' +\n 'height:' + treeMap.areaRect.height + 'px;' +\n 'width:' + treeMap.areaRect.width + 'px;';\n var isLeafItem = false;\n var leaf = treeMap.leafItemSettings;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childItems;\n var connectorText;\n var _loop_1 = function (i) {\n item = this_1.renderItems[i];\n index = item['groupIndex'];\n if (this_1.treemap.drillDownView && isNullOrUndefined(this_1.treemap.currentLevel)\n && index > 0 || this_1.treemap.drillDownView\n && index > (this_1.treemap.currentLevel + 1)) {\n return \"continue\";\n }\n rect = item['rect'];\n isLeafItem = item['isLeafItem'];\n groupId = elementID + '_Level_Index_' + index + '_Item_Index_' + i;\n itemGroup = this_1.renderer.createGroup({ id: groupId + '_Group' });\n gap = (isLeafItem ? leaf.gap : levels[index].groupGap) / 2;\n var treemapItemRect = this_1.treemap.totalRect ? convertToContainer(this_1.treemap.totalRect) : this_1.treemap.areaRect;\n if (treeMap.layoutType === 'Squarified') {\n rect.width = Math.abs(rect.x - rect.width) - gap;\n rect.height = Math.abs(rect.y - rect.height) - gap;\n }\n if (treeMap.renderDirection === 'TopRightBottomLeft') {\n rect.x = (treemapItemRect.x + treemapItemRect.width) - rect.width - Math.abs(treemapItemRect.x - rect.x);\n }\n else if (treeMap.renderDirection === 'BottomLeftTopRight') {\n rect.y = (treemapItemRect.y + treemapItemRect.height) - rect.height - Math.abs(treemapItemRect.y - rect.y);\n }\n else if (treeMap.renderDirection === 'BottomRightTopLeft') {\n rect.x = (treemapItemRect.x + treemapItemRect.width) - rect.width - Math.abs(treemapItemRect.x - rect.x);\n rect.y = (treemapItemRect.y + treemapItemRect.height) - rect.height - Math.abs(treemapItemRect.y - rect.y);\n }\n getItemColor = this_1.getItemColor(isLeafItem, item);\n fill = getItemColor['fill'];\n opacity = getItemColor['opacity'];\n format = isLeafItem ? leaf.labelFormat : (levels[index]).headerFormat;\n var levelName;\n txtVisible = isLeafItem ? leaf.showLabels : (levels[index]).showHeader;\n if (index === this_1.treemap.currentLevel) {\n if (this_1.treemap.enableBreadcrumb) {\n var re = /#/gi;\n connectorText = '#' + this_1.treemap.breadcrumbConnector + '#';\n levelName = item['levelOrderName'].replace(re, connectorText);\n levelName = index !== 0 ? '#' + levelName : levelName;\n }\n else {\n levelName = item['name'];\n }\n }\n else {\n if (this_1.treemap.enableBreadcrumb) {\n item['isDrilled'] = false;\n }\n levelName = item['name'];\n }\n renderText = textFormatter(format, item['data'], this_1.treemap) || levelName || 'undefined';\n childItems = findChildren(item)['values'];\n renderText = !isLeafItem && childItems && childItems.length > 0 && this_1.treemap.enableDrillDown ?\n !item['isDrilled'] ? treeMap.enableRtl ? renderText + ' [+]' : '[+] ' + renderText :\n treeMap.enableRtl ? renderText + ' [-]' : '[-] ' + renderText : renderText;\n textStyle = (isLeafItem ? leaf.labelStyle : levels[index].headerStyle);\n textStyle.fontFamily = this_1.treemap.themeStyle.labelFontFamily || textStyle.fontFamily;\n textStyle.fontWeight = textStyle.fontWeight || this_1.treemap.themeStyle.fontWeight;\n textStyle.size = textStyle.size || this_1.treemap.themeStyle.labelFontSize;\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 if ((_this.treemap.enableDrillDown && isLeafItem) || (_this.treemap.selectionSettings.enable ||\n _this.treemap.highlightSettings.enable)) {\n itemGroup.setAttribute('role', 'button');\n itemGroup.setAttribute('tabindex', _this.treemap.tabIndex.toString());\n itemGroup.style.cursor = _this.treemap.highlightSettings.enable && !_this.treemap.selectionSettings.enable && (_this.treemap.enableDrillDown && item['groupIndex'] === (_this.treemap.levels.length - 1)) ? 'default' :\n _this.treemap.highlightSettings.enable && !_this.treemap.selectionSettings.enable && !_this.treemap.enableDrillDown ? 'default' : 'pointer';\n }\n else {\n itemGroup.setAttribute('role', 'region');\n }\n maintainSelection(_this.treemap, itemGroup, 'treeMapSelection');\n _this.layoutGroup.appendChild(itemGroup);\n }\n });\n };\n var this_1 = this;\n for (var i = 0; i < this.renderItems.length; i++) {\n _loop_1(i);\n }\n if (templateGroup.childNodes.length > 0) {\n secondaryEle.appendChild(templateGroup);\n }\n this.treemap.svgObject.appendChild(this.layoutGroup);\n };\n LayoutPanel.prototype.renderItemText = function (text, parentElement, textStyle, rect, interSectAction, groupId, fill, position, connectorText) {\n var padding = 5;\n var textSize;\n var textCollection = [];\n var customText;\n var tspanText = [];\n var height = 0;\n var textName;\n textCollection = ((text.indexOf('<br>')) !== -1) ? text.split('<br>') : null;\n customText = this.labelInterSectAction(rect, text, textStyle, interSectAction);\n textSize = measureText(textCollection && textCollection[0] || customText[0], textStyle);\n if (this.treemap.enableRtl) {\n var labelSize = measureText(text, textStyle);\n var drillSymbolCount = text.search('[+]') || text.search('[-]');\n if (rect.width < labelSize.width && drillSymbolCount > 0) {\n var label = text.substring(drillSymbolCount - 1, text.length);\n var drillSymbol = '[+]';\n var drillSymbolSize = measureText(drillSymbol, textStyle);\n customText['0'] = textTrim(rect.width - drillSymbolSize.width - padding, customText[0], textStyle) + label;\n }\n }\n var textLocation = findLabelLocation(rect, position, textSize, 'Text', this.treemap);\n if (!isNullOrUndefined(textCollection)) {\n var collection = [];\n var texts = null;\n var maxNumber = [];\n for (var i = 0; i < textCollection.length; i++) {\n texts = textTrim((rect.width - 5), textCollection[i], textStyle);\n textSize = measureText(texts, textStyle);\n height += textSize.height;\n maxNumber.push(textSize.width);\n collection.push(texts);\n }\n customText = collection;\n textSize.width = Math.max.apply(null, maxNumber);\n textSize.height = height;\n }\n if (interSectAction === 'WrapByWord' || interSectAction === 'Wrap' || interSectAction === 'Trim') {\n for (var j = 0; j < customText.length; j++) {\n textSize = measureText(customText[j], textStyle);\n height += textSize.height;\n if ((rect.height - padding) > height) {\n tspanText.push(customText[j]);\n }\n }\n if (interSectAction === 'Wrap' && customText.length !== tspanText.length && tspanText.length) {\n var collectionLength = tspanText.length - 1;\n var stringText = tspanText[collectionLength];\n stringText = stringText.substring(0, (stringText.length - 1)) + '...';\n tspanText.splice(collectionLength);\n if (stringText !== '...') {\n tspanText.push(stringText);\n }\n }\n }\n else {\n textName = customText;\n tspanText.push(textName);\n }\n var textOptions = new TextOption(groupId + '_Text', textLocation.x, textLocation.y, 'start', tspanText, '', '', connectorText);\n renderTextElement(textOptions, textStyle, textStyle.color || this.getSaturatedColor(fill), parentElement);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getItemColor = function (isLeafItem, item) {\n var treemap = this.treemap;\n var itemFill = isLeafItem ? treemap.leafItemSettings.fill : treemap.levels[item['groupIndex']].fill;\n var itemOpacity = isLeafItem ? treemap.leafItemSettings.opacity : treemap.levels[item['groupIndex']].opacity;\n if (!isNullOrUndefined(treemap.treemapLevelData.defaultLevelsData)) {\n if (treemap.treemapLevelData.defaultLevelsData.length > 0) {\n treemap.treemapLevelData.levelsData = treemap.treemapLevelData.defaultLevelsData;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentData = findChildren(treemap.treemapLevelData.levelsData[0])['values'];\n var colorMapping = isLeafItem ? treemap.leafItemSettings.colorMapping :\n treemap.levels[item['groupIndex']].colorMapping;\n if (colorMapping.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var option = colorMap(colorMapping, item['data'][treemap.equalColorValuePath], item['data'][treemap.rangeColorValuePath]);\n if (!isNullOrUndefined(option)) {\n itemFill = !isNullOrUndefined(option['fill']) ? option['fill'] : treemap.leafItemSettings.fill;\n itemOpacity = option['opacity'];\n }\n }\n else {\n for (var i = 0; i < parentData.length; i++) {\n if (parentData[i]['levelOrderName'] === item['levelOrderName'].split('#')[0]) {\n itemFill = !isNullOrUndefined(itemFill) ? itemFill : !isNullOrUndefined(treemap.colorValuePath) ?\n parentData[i]['data'][treemap.colorValuePath] : (!isNullOrUndefined(treemap.palette) && treemap.palette.length > 0) ?\n treemap.palette[i % treemap.palette.length] : '#808080';\n }\n }\n }\n return { fill: itemFill, opacity: itemOpacity };\n };\n /**\n * To find saturated color for datalabel\n *\n * @param {string} color - Specifies the color\n * @returns {string} - Returns the color\n */\n LayoutPanel.prototype.getSaturatedColor = function (color) {\n var saturatedColor = color;\n saturatedColor = (saturatedColor === 'transparent') ? window.getComputedStyle(document.body, null).backgroundColor : saturatedColor;\n var rgbValue = convertHexToColor(colorNameToHex(saturatedColor));\n var contrast = Math.round((rgbValue.r * 299 + rgbValue.g * 587 + rgbValue.b * 114) / 1000);\n return contrast >= 128 ? 'black' : 'white';\n };\n LayoutPanel.prototype.renderTemplate = function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, max-len\n secondaryEle, groupId, rect, position, template, item, isLeafItem) {\n var templateId = isLeafItem ? groupId + '_LabelTemplate' : groupId + '_HeaderTemplate';\n var baseTemplateId = isLeafItem ? '_LabelTemplate' : '_HeaderTemplate';\n if (isNullOrUndefined(template['prototype']) && typeof template === 'string') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var keys = Object.keys(item['data']);\n for (var i = 0; i < keys.length; i++) {\n var regExp = RegExp;\n template = template.replace(new regExp('{{:' + keys[i] + '}}', 'g'), item['data'][keys[i].toString()]);\n }\n }\n var labelElement;\n if (!isNullOrUndefined(document.getElementById(this.treemap.element.id + '_Secondary_Element'))) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateFn = getTemplateFunction(template);\n var templateElement = templateFn(item['data'], this.treemap, template, this.treemap.element.id + baseTemplateId, false);\n labelElement = convertElement(templateElement, templateId, item['data']);\n var templateSize = measureElement(labelElement, secondaryEle);\n var templateLocation = findLabelLocation(rect, position, templateSize, 'Template', this.treemap);\n labelElement.style.left = templateLocation.x + 'px';\n labelElement.style.top = templateLocation.y + 'px';\n }\n return labelElement;\n };\n LayoutPanel.prototype.labelInterSectAction = function (rect, text, textStyle, alignment) {\n var textValue;\n var maxWidth = rect.width - 10;\n switch (alignment) {\n case 'Hide':\n textValue = [hide(maxWidth, rect.height, text, textStyle)];\n break;\n case 'Trim':\n textValue = [textTrim((maxWidth + 3), text, textStyle)];\n break;\n case 'WrapByWord':\n textValue = wordWrap(maxWidth, text, textStyle);\n break;\n case 'Wrap':\n textValue = textWrap(maxWidth, text, textStyle);\n break;\n }\n return textValue;\n };\n /**\n *\n * @returns {void}\n * @private\n */\n LayoutPanel.prototype.destroy = function () {\n this.treemap = null;\n this.currentRect = null;\n this.layoutGroup = null;\n this.renderer = null;\n this.renderItems = [];\n this.parentData = [];\n };\n return LayoutPanel;\n}());\nexport { LayoutPanel };\n","/**\n * Maps Themes doc\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Theme;\n(function (Theme) {\n /**\n * @private\n */\n Theme.mapsTitleFont = {\n size: '14px',\n fontWeight: 'Medium',\n color: '#424242',\n fontStyle: 'Medium',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n})(Theme || (Theme = {}));\n/**\n * To get the theme style based on treemap theme.\n *\n * @param {TreeMapTheme} theme Specifies the theme of the treemap control.\n * @returns {IThemeStyle} Returns the theme.\n * @private\n */\nexport function getThemeStyle(theme) {\n var style;\n var color;\n switch (theme.toLowerCase()) {\n case 'materialdark':\n color = '#303030';\n break;\n case 'fabricdark':\n color = '#201F1F';\n break;\n case 'bootstrapdark':\n color = '#1A1A1A';\n break;\n }\n switch (theme.toLowerCase()) {\n case 'bootstrapdark':\n case 'fabricdark':\n case 'materialdark':\n style = {\n backgroundColor: color,\n titleFontColor: '#FFFFFF',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n tooltipFontSize: '13px',\n legendTitleColor: '#DADADA',\n legendTextColor: '#DADADA',\n fontSize: '15px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'highcontrast':\n style = {\n backgroundColor: '#000000',\n titleFontColor: '#FFFFFF',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n tooltipFontSize: '13px',\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontSize: '15px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'bootstrap4':\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#212529',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#212529',\n tooltipFillColor: '#000000',\n tooltipFontColor: '#FFFFFF',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 0.9,\n legendTitleColor: '#212529',\n legendTextColor: '#212529',\n fontFamily: 'HelveticaNeue-Medium',\n fontSize: '16px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'HelveticaNeue',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'tailwind':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#374151',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#374151',\n tooltipFillColor: '#111827',\n tooltipFontColor: '#F9FAFB',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#374151',\n legendTextColor: '#374151',\n fontFamily: 'Inter',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'tailwinddark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#D1D5DB',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#D1D5DB',\n tooltipFillColor: '#F9FAFB',\n tooltipFontColor: '#1F2937',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#D1D5DB',\n legendTextColor: '#D1D5DB',\n fontFamily: 'Inter',\n fontWeight: 'Normal',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'bootstrap5':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#212529',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#212529',\n tooltipFillColor: '#212529',\n tooltipFontColor: '#F9FAFB',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#212529',\n legendTextColor: '#212529',\n fontFamily: 'Helvetica Neue',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Helvetica Neue',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'bootstrap5dark':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#FFFFFF',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#E9ECEF',\n tooltipFontColor: '#212529',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontFamily: 'Helvetica Neue',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Helvetica Neue',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluent':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#201F1E',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#201F1E',\n tooltipFillColor: '#FFFFFF',\n tooltipFontColor: '#323130',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#201F1E',\n legendTextColor: '#201F1E',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluentdark':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#F3F2F1',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#F3F2F1',\n tooltipFillColor: '#252423',\n tooltipFontColor: '#F3F2F1',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#F3F2F1',\n legendTextColor: '#F3F2F1',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'material3':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#1C1B1F',\n titleFontWeight: '500',\n subTitleFontColor: '#1C1B1F',\n tooltipFillColor: '#313033',\n tooltipFontColor: '#F4EFF4',\n tooltipFontSize: '14px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#1C1B1F',\n legendTextColor: '#49454E',\n fontFamily: 'Roboto',\n fontSize: '16px',\n fontWeight: '400',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'Roboto',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'material3dark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#E6E1E5',\n titleFontWeight: '500',\n subTitleFontColor: '#E6E1E5',\n tooltipFillColor: '#E6E1E5',\n tooltipFontColor: '#313033',\n tooltipFontSize: '14px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#E6E1E5',\n legendTextColor: '#CAC4D0',\n fontFamily: 'Roboto',\n fontSize: '16px',\n fontWeight: '400',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'Roboto',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluent2':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#242424',\n titleFontWeight: '600',\n subTitleFontColor: '#242424',\n tooltipFillColor: '#FFFFFF',\n tooltipFontColor: '#242424',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#242424',\n legendTextColor: '#242424',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '10px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluent2dark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#FFFFFF',\n titleFontWeight: '600',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#292929',\n tooltipFontColor: '#FFFFFF',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '10px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n case 'fluent2highcontrast':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#FFFFFF',\n titleFontWeight: '600',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#000000',\n tooltipFontColor: '#FFFFFF',\n tooltipFontSize: '12px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: '400',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI',\n labelFontSize: '10px',\n legendBorderColor: '#FFF',\n legendBorderWidth: 1,\n tooltipBorderColor: '#FFF',\n tooltipBorderWidth: 1\n };\n break;\n default:\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#424242',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#424242',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n tooltipFontSize: '13px',\n legendTitleColor: '#353535',\n legendTextColor: '#353535',\n fontSize: '15px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif',\n labelFontSize: '12px',\n legendBorderColor: '#000000',\n legendBorderWidth: 0\n };\n break;\n }\n return style;\n}\n","import { print as printFunction, createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getElement } from '../utils/helper';\nimport { beforePrint } from '../model/constants';\n/**\n * Print module handles the print functionality for treemap.\n *\n * @hidden\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n function Print(control) {\n }\n /**\n * This method is used to perform the print functionality in treemap.\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param { string[] | string | Element} elements - Specifies the element.\n * @returns {void}\n * @private\n */\n Print.prototype.print = function (treeMap, elements) {\n var printWindow = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n printWindow.moveTo(0, 0);\n printWindow.resizeTo(screen.availWidth, screen.availHeight);\n var argsData = {\n cancel: false, htmlContent: this.getHTMLContent(treeMap, elements), name: beforePrint\n };\n treeMap.trigger(beforePrint, argsData, function () {\n if (!argsData.cancel) {\n printFunction(argsData.htmlContent, printWindow);\n }\n });\n };\n /**\n * To get the html string of the Maps\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param {string[] | string | Element} elements - Specifies the element\n * @returns {Element} - Returns the element\n * @private\n */\n Print.prototype.getHTMLContent = function (treeMap, elements) {\n var div = createElement('div');\n if (elements) {\n if (elements instanceof Array) {\n elements.forEach(function (value) {\n div.appendChild(getElement(value).cloneNode(true));\n });\n }\n else if (elements instanceof Element) {\n div.appendChild(elements.cloneNode(true));\n }\n else {\n div.appendChild(getElement(elements).cloneNode(true));\n }\n }\n else {\n var exportElement = treeMap.element.cloneNode(true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var backgroundElement = exportElement.getElementsByTagName('svg')[0];\n if (!isNullOrUndefined(backgroundElement)) {\n backgroundElement = backgroundElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n var backgroundColor = backgroundElement.getAttribute('fill');\n if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3' || treeMap.theme === 'Fluent2')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n backgroundElement.setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark' ||\n treeMap.theme === 'Fluent2Dark' || treeMap.theme === 'Fluent2HighContrast')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n backgroundElement.setAttribute('fill', 'rgba(0, 0, 0, 1)');\n }\n }\n }\n div.appendChild(exportElement);\n }\n return div;\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n Print.prototype.getModuleName = function () {\n // Returns te module name\n return 'Print';\n };\n /**\n * To destroy the Print module.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n Print.prototype.destroy = function () { };\n return Print;\n}());\nexport { Print };\n","import { createElement, Browser, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { triggerDownload } from '../utils/helper';\n/**\n * ImageExport module handles the export to image functionality for treemap.\n *\n * @hidden\n */\nvar ImageExport = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n function ImageExport(control) {\n }\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param {ExportType} type - Specifies the type of the image file.\n * @param {string} fileName - Specifies the file name of the image file.\n * @param {boolean} allowDownload - Specifies whether to download the file or not.\n * @returns {Promise} - Returns the promise string.\n * @private\n */\n ImageExport.prototype.export = function (treeMap, type, fileName, allowDownload) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n var promise = new Promise(function (resolve, reject) {\n var element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'height': treeMap.availableSize.height.toString(),\n 'width': treeMap.availableSize.width.toString()\n }\n });\n var exportElement = treeMap.svgObject.cloneNode(true);\n var backgroundElement = exportElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n var backgroundColor = backgroundElement.getAttribute('fill');\n if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3' || treeMap.theme === 'Fluent2')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark' ||\n treeMap.theme === 'Fluent2Dark' || treeMap.theme === 'Fluent2HighContrast')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(0, 0, 0, 1)');\n }\n }\n var isDownload = !(Browser.userAgent.toString().indexOf('HeadlessChrome') > -1);\n var svgData = '<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">' +\n exportElement.outerHTML +\n '</svg>';\n var url = window.URL.createObjectURL(new Blob(type === 'SVG' ? [svgData] :\n [(new XMLSerializer()).serializeToString(exportElement)], { type: 'image/svg+xml' }));\n if (type === 'SVG') {\n if (allowDownload) {\n triggerDownload(fileName, type, url, isDownload);\n }\n else {\n resolve(null);\n }\n }\n else {\n var image_1 = new Image();\n var context_1 = element.getContext('2d');\n image_1.onload = (function () {\n context_1.drawImage(image_1, 0, 0);\n window.URL.revokeObjectURL(url);\n if (allowDownload) {\n triggerDownload(fileName, type, element.toDataURL('image/png').replace('image/png', 'image/octet-stream'), isDownload);\n }\n else {\n if (type === 'JPEG') {\n resolve(element.toDataURL('image/jpeg'));\n }\n else if (type === 'PNG') {\n resolve(element.toDataURL('image/png'));\n }\n }\n });\n image_1.src = url;\n }\n });\n return promise;\n };\n ImageExport.prototype.getModuleName = function () {\n // Returns te module name\n return 'ImageExport';\n };\n /**\n * To destroy the ImageExport.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n ImageExport.prototype.destroy = function () { };\n return ImageExport;\n}());\nexport { ImageExport };\n","import { createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { PdfPageOrientation, PdfDocument, PdfBitmap } from '@syncfusion/ej2-pdf-export';\n/**\n * PdfExport module handles the export to pdf functionality for treemap.\n *\n * @hidden\n */\nvar PdfExport = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n function PdfExport(control) {\n }\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param {ExportType} type - Specifies the type of the document.\n * @param {string} fileName - Specifies the name of the document.\n * @param {PdfPageOrientation} orientation - Specifies the orientation of the PDF document to export the treemap.\n * @param {boolean} allowDownload - Specifies whether to download the document or not.\n * @returns {Promise} - Returns the string.\n * @private\n */\n PdfExport.prototype.export = function (treeMap, type, fileName, orientation, allowDownload) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n var promise = new Promise(function (resolve, reject) {\n var element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'width': treeMap.availableSize.width.toString(),\n 'height': treeMap.availableSize.height.toString()\n }\n });\n orientation = isNullOrUndefined(orientation) ? PdfPageOrientation.Landscape : orientation;\n var exportElement = treeMap.svgObject.cloneNode(true);\n var backgroundElement = exportElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n var backgroundColor = backgroundElement.getAttribute('fill');\n if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3' || treeMap.theme === 'Fluent2')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark' ||\n treeMap.theme === 'Fluent2Dark' || treeMap.theme === 'Fluent2HighContrast')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(0, 0, 0, 1)');\n }\n }\n var url = window.URL.createObjectURL(new Blob([(new XMLSerializer()).serializeToString(exportElement)], { type: 'image/svg+xml' }));\n var image = new Image();\n var context = element.getContext('2d');\n image.onload = (function () {\n context.drawImage(image, 0, 0);\n window.URL.revokeObjectURL(url);\n var document = new PdfDocument();\n var imageString = element.toDataURL('image/jpeg').replace('image/jpeg', 'image/octet-stream');\n document.pageSettings.orientation = orientation;\n imageString = imageString.slice(imageString.indexOf(',') + 1);\n document.pages.add().graphics.drawImage(new PdfBitmap(imageString), 0, 0, (treeMap.availableSize.width - 60), treeMap.availableSize.height);\n if (allowDownload) {\n document.save(fileName + '.pdf');\n document.destroy();\n }\n else {\n resolve(null);\n }\n });\n image.src = url;\n });\n return promise;\n };\n PdfExport.prototype.getModuleName = function () {\n // Returns te module name\n return 'PdfExport';\n };\n /**\n * To destroy the PdfExport.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n PdfExport.prototype.destroy = function () { };\n return PdfExport;\n}());\nexport { PdfExport };\n","/**\n * Tree Map Components\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, NotifyPropertyChanges, Property, extend, Fetch } from '@syncfusion/ej2-base';\nimport { Complex, Collection } from '@syncfusion/ej2-base';\nimport { Event, Internationalization } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\nimport { isNullOrUndefined, createElement, EventHandler, Browser, remove } from '@syncfusion/ej2-base';\nimport { Border, Margin, TitleSettings, LegendSettings, InitialDrillSettings } from './model/base';\nimport { SelectionSettings, TooltipSettings, LevelSettings, LeafItemSettings, HighlightSettings } from './model/base';\nimport { Size, stringToNumber, RectOption, Rect, textTrim, measureText, findChildren, removeElement, setItemTemplateContent } from '../treemap/utils/helper';\nimport { removeClassNames, removeShape, textFormatter } from '../treemap/utils/helper';\nimport { findPosition, TextOption, renderTextElement, isContainsData, TreeMapAjax } from '../treemap/utils/helper';\nimport { load, loaded, drillStart, drillEnd } from '../treemap/model/constants';\nimport { itemClick, itemMove, click, mouseMove, resize, doubleClick, rightClick } from '../treemap/model/constants';\nimport { LayoutPanel } from './layout/render-panel';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { getThemeStyle } from './model/theme';\nimport { Print } from './model/print';\nimport { ImageExport } from './model/image-export';\nimport { PdfExport } from './model/pdf-export';\n/**\n * Represents the treemap control. It is used to visualize both hierarchical and flat data.\n * ```html\n * <div id=\"container\"/>\n * <script>\n * var treemap = new TreeMap();\n * treemap.appendTo(\"#container\");\n * </script>\n * ```\n */\nvar TreeMap = /** @class */ (function (_super) {\n __extends(TreeMap, _super);\n /**\n * Constructor for TreeMap.\n *\n * @param {TreeMapModel} options - Specifies the treemap instance.\n * @param {string | HTMLElement} element - Specifies the treemap element.\n */\n function TreeMap(options, element) {\n var _this = _super.call(this, options, element) || this;\n /**\n * resize the treemap\n */\n _this.isResize = false;\n /** @private */\n _this.orientation = 'Horizontal';\n /** @private */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.drilledItems = [];\n /** @private */\n _this.isHierarchicalData = false;\n /** @private */\n _this.levelSelection = [];\n /** @private */\n _this.legendId = [];\n return _this;\n }\n TreeMap.prototype.preRender = function () {\n var _this = this;\n this.trigger(load, { treemap: this }, function () {\n _this.initPrivateVariable();\n _this.unWireEVents();\n _this.createSvg();\n _this.wireEVents();\n _this.setCulture();\n });\n };\n TreeMap.prototype.render = function () {\n this.renderElements();\n };\n TreeMap.prototype.renderElements = function () {\n this.treemapLevelData = new LevelsData();\n this.treemapLevelData.levelsData = null;\n this.treemapLevelData.defaultLevelsData = null;\n this.treemapLevelData.hierarchyData = null;\n this.createSecondaryElement();\n this.addTabIndex();\n this.themeStyle = getThemeStyle(this.theme);\n this.renderBorder();\n this.renderTitle(this.titleSettings, 'title', null, null);\n if (!isNullOrUndefined(this.treemapLevelData.levelsData)) {\n this.treemapLevelData.defaultLevelsData = this.treemapLevelData.levelsData;\n }\n this.processDataManager();\n };\n TreeMap.prototype.processDataManager = function () {\n var _this = this;\n var dataModule;\n var queryModule;\n var fetchApiModule;\n var localAjax;\n if (this.dataSource instanceof DataManager) {\n dataModule = this.dataSource;\n queryModule = this.query instanceof Query ? this.query : new Query();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataManager = dataModule.executeQuery(queryModule);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataManager.then(function (e) {\n _this.dataSource = e['result'];\n _this.renderTreeMapElements();\n });\n }\n else if (this.dataSource instanceof TreeMapAjax) {\n localAjax = this.dataSource;\n fetchApiModule = new Fetch(localAjax.dataOptions, localAjax.type, localAjax.contentType);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fetchApiModule.onSuccess = function (args) {\n if (!isNullOrUndefined(args.type) && args.type === 'application/octet-stream') {\n var reader_1 = new FileReader();\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var treemap_1 = _this;\n reader_1.onload = function () {\n args = JSON.parse(reader_1.result.toString());\n treemap_1.dataSource = args;\n treemap_1.renderTreeMapElements();\n };\n reader_1.readAsText(args);\n }\n else {\n _this.dataSource = args;\n _this.renderTreeMapElements();\n }\n };\n fetchApiModule.send(localAjax.sendData);\n }\n else {\n this.renderTreeMapElements();\n }\n };\n TreeMap.prototype.renderTreeMapElements = function () {\n this.processingData();\n if (this.treeMapLegendModule && this.legendSettings.visible) {\n this.treeMapLegendModule.renderLegend();\n }\n this.layout.processLayoutPanel();\n this.element.appendChild(this.svgObject);\n this.elementChange();\n this.trigger(loaded, { treemap: this, isResized: this.isResize });\n this.isResize = false;\n this.renderComplete();\n };\n TreeMap.prototype.createSvg = function () {\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n if (isNullOrUndefined(this.renderer)) {\n this.renderer = new SvgRenderer(this.element.id);\n }\n if (isNullOrUndefined(this.layout)) {\n this.layout = new LayoutPanel(this);\n }\n this.clearTemplate();\n var containerWidth = this.element.clientWidth;\n var containerHeight = this.element.clientHeight;\n this.availableSize = new Size(stringToNumber(this.width, containerWidth) || containerWidth || 600, stringToNumber(this.height, containerHeight) || containerHeight || 450);\n this.svgObject = this.renderer.createSvg({\n id: this.element.id + '_svg',\n width: this.availableSize.width,\n height: this.availableSize.height\n });\n };\n /**\n * To initilize the private varibales of treemap.\n *\n * @returns {void}\n */\n TreeMap.prototype.initPrivateVariable = function () {\n if (this.element.id === '') {\n var collection = document.getElementsByClassName('e-treemap').length;\n this.element.id = 'treemap_control_' + collection;\n }\n this.renderer = new SvgRenderer(this.element.id);\n this.layout = new LayoutPanel(this);\n };\n TreeMap.prototype.createSecondaryElement = function () {\n var secondaryEle = document.getElementById(this.element.id + '_Secondary_Element');\n if (secondaryEle && secondaryEle.childElementCount > 0) {\n secondaryEle.parentNode.removeChild(secondaryEle);\n }\n if (isNullOrUndefined(document.getElementById(this.element.id + '_Secondary_Element'))) {\n var secondaryElement = createElement('div', {\n id: this.element.id + '_Secondary_Element'\n });\n secondaryElement.style.cssText = 'position: absolute;z-index:1;';\n this.element.appendChild(secondaryElement);\n }\n };\n TreeMap.prototype.elementChange = function () {\n if (this.treeMapLegendModule && this.legendSettings.visible && this.treeMapLegendModule.legendGroup && this.layout.layoutGroup\n && !isNullOrUndefined(this.svgObject) && !isNullOrUndefined(document.getElementById(this.layout.layoutGroup.id))\n && !isNullOrUndefined(document.getElementById(this.treeMapLegendModule.legendGroup.id))) {\n this.svgObject.insertBefore(this.layout.layoutGroup, this.treeMapLegendModule.legendGroup);\n }\n };\n /**\n * Render the treemap border\n *\n * @private\n * @returns {void}\n */\n TreeMap.prototype.renderBorder = function () {\n var width = this.border.width;\n var borderElement = this.svgObject.querySelector('#' + this.element.id + '_TreeMap_Border');\n if ((this.border.width > 0 || (this.background || this.themeStyle.backgroundColor)) && isNullOrUndefined(borderElement)) {\n var borderRect = new RectOption(this.element.id + '_TreeMap_Border', this.background || this.themeStyle.backgroundColor, this.border, 1, new Rect(width / 2, width / 2, this.availableSize.width - width, this.availableSize.height - width));\n this.svgObject.appendChild(this.renderer.drawRectangle(borderRect));\n }\n else if (borderElement) {\n borderElement.setAttribute('fill', this.background || this.themeStyle.backgroundColor);\n }\n };\n TreeMap.prototype.renderTitle = function (title, type, bounds, groupEle) {\n var style = {\n color: title.textStyle.color, size: title.textStyle.size, fontFamily: title.textStyle.fontFamily,\n fontStyle: title.textStyle.fontStyle, fontWeight: title.textStyle.fontWeight, opacity: title.textStyle.opacity\n };\n var height;\n var titlePadding = 10;\n var width = (this.availableSize.width - this.margin.right - this.margin.left);\n style.fontFamily = style.fontFamily || this.themeStyle.fontFamily;\n style.fontWeight = style.fontWeight || this.themeStyle.titleFontWeight;\n style.size = style.size || (type === 'title' ? this.themeStyle.fontSize : this.themeStyle.subtitleFontSize);\n if (title.text) {\n if (isNullOrUndefined(groupEle)) {\n groupEle = this.renderer.createGroup({ id: this.element.id + '_Title_Group' });\n }\n var 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', 'region');\n element.setAttribute('tabindex', this.tabIndex.toString());\n if ((type === 'title' && !title.subtitleSettings.text) || (type === 'subtitle')) {\n height = (this.availableSize.height - titleBounds.y - titlePadding - this.margin.bottom);\n this.areaRect = new Rect(this.margin.left, titleBounds.y + titlePadding, width, height);\n }\n if (type !== 'subtitle' && title.subtitleSettings.text) {\n this.renderTitle(title.subtitleSettings, 'subtitle', titleBounds, groupEle);\n }\n else {\n this.svgObject.appendChild(groupEle);\n }\n }\n else {\n height = (this.availableSize.height - this.margin.top - this.margin.bottom);\n this.areaRect = new Rect(this.margin.left, this.margin.top, width, height);\n }\n };\n TreeMap.prototype.processingData = function () {\n var _this = this;\n var path;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource = this.dataSource;\n if (!isNullOrUndefined(this.dataSource) && this.dataSource.length > 0 && this.weightValuePath) {\n this.treemapLevelData.levelsData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource.map(function (data) {\n data[_this.weightValuePath] = (data[_this.weightValuePath]) ? data[_this.weightValuePath].toString() :\n data[_this.weightValuePath];\n });\n this.leafItemSettings.labelPath = this.leafItemSettings.labelPath || this.weightValuePath;\n this.checkIsHierarchicalData();\n if (this.levels.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data_1 = {};\n data_1['level'] = 0;\n path = this.leafItemSettings.labelPath;\n data_1[path] = [];\n for (var i = 0; i < this.dataSource.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(this.dataSource[i])['values'];\n if (this.isHierarchicalData && child && child.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n child.forEach(function (currentData) {\n if (currentData[path]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data_1[path].push({\n groupIndex: 0, name: currentData[path],\n levelOrderName: currentData[path].toString(),\n data: currentData, weight: currentData[_this.weightValuePath]\n });\n }\n });\n }\n else {\n if (this.dataSource[i][path]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data_1[path].push({\n groupIndex: 0, name: this.dataSource[i][path], levelOrderName: this.dataSource[i][path].toString(), data: this.dataSource[i],\n weight: this.dataSource[i][this.weightValuePath]\n });\n }\n }\n }\n this.treemapLevelData.levelsData.push(data_1);\n }\n else {\n if (this.isHierarchicalData) {\n this.treemapLevelData.hierarchyData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemapLevelData.hierarchyData = extend([], this.dataSource, this.treemapLevelData.hierarchyData, true);\n for (var i = 0; i < this.treemapLevelData.hierarchyData.length; i++) {\n this.processHierarchicalData(this.treemapLevelData.hierarchyData[i], i);\n }\n this.treemapLevelData.levelsData = this.treemapLevelData.hierarchyData;\n }\n else {\n this.processFlatJsonData();\n if (this.treemapLevelData.levelsData.length > 1) {\n this.reOrderLevelData(this.treemapLevelData.levelsData.length - 1);\n }\n }\n path = this.levels[0].groupPath;\n }\n if (!this.isHierarchicalData) {\n this.findTotalWeight(this.treemapLevelData.levelsData[0][path], 'Parent');\n }\n }\n };\n TreeMap.prototype.checkIsHierarchicalData = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child;\n this.dataSource = this.dataSource;\n for (var i = 0; i < this.dataSource.length; i++) {\n child = findChildren(this.dataSource[i])['values'];\n if (child && child.length) {\n this.isHierarchicalData = true;\n break;\n }\n else if (i === this.dataSource.length - 1) {\n this.isHierarchicalData = false;\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.processHierarchicalData = function (data, dataCount) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childData;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newData = {};\n var levelIndex;\n var path = this.leafItemSettings.labelPath ? this.leafItemSettings.labelPath : this.weightValuePath;\n var key;\n newData = findChildren(data);\n childData = newData ? newData['values'] : null;\n if (childData && childData.length > 0) {\n key = newData['key'];\n for (var i = 0; i < this.levels.length; i++) {\n if (key === this.levels[i].groupPath) {\n levelIndex = i;\n }\n }\n for (var j = 0; j < childData.length; j++) {\n childData[j]['name'] = childData[j][path];\n childData[j]['levelOrderName'] = (levelIndex === 0 ? childData[j]['name'] :\n data['levelOrderName'] + '#' + childData[j]['name']) + '';\n var childItemLevel = childData[j]['levelOrderName'];\n var childLevel = void 0;\n if (childItemLevel.search('#') > 0) {\n childLevel = childItemLevel.split('#').length - 1;\n }\n childData[j]['groupIndex'] = isNullOrUndefined(levelIndex) ? childLevel === this.levels.length\n ? this.levels.length : childLevel : levelIndex;\n if (levelIndex !== 0) {\n childData[j]['parent'] = data;\n }\n childData[j]['groupName'] = key;\n childData[j]['data'] = childData[j];\n childData[j]['isDrilled'] = false;\n childData[j]['weight'] = childData[j][this.weightValuePath];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childData.forEach(function (currentData) {\n _this.processHierarchicalData(currentData, dataCount);\n });\n }\n if (dataCount === this.treemapLevelData.hierarchyData.length - 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var mainData_1 = this.treemapLevelData.hierarchyData[0][this.levels[0].groupPath];\n if (!isNullOrUndefined(mainData_1)) {\n for (var k = 0; k < this.treemapLevelData.hierarchyData.length; k++) {\n childData = findChildren(this.treemapLevelData.hierarchyData[k])['values'];\n if (k !== 0 && childData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childData.forEach(function (currentData) { mainData_1.push(currentData); });\n this.treemapLevelData.hierarchyData.splice(k, 1);\n k -= 1;\n }\n }\n mainData_1 = this.treemapLevelData.hierarchyData[0][this.levels[0].groupPath];\n for (var l = 0; l < mainData_1.length; l++) {\n newData[this.levels[0].groupPath] = mainData_1;\n mainData_1[l]['parent'] = newData;\n }\n }\n }\n };\n /* eslint-disable valid-jsdoc */\n /**\n * This method is used to perform the print functionality in treemap.\n *\n * @param {string[] | string | Element} id - Specifies the element to print the treemap.\n * @returns {void}\n */\n TreeMap.prototype.print = function (id) {\n if (this.allowPrint && this.printModule) {\n this.printModule.print(this, id);\n }\n };\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {ExportType} type - Specifies the extension type of the exported document.\n * @param {string} fileName - Specifies file name for exporting the rendered TreeMap.\n * @param {PdfPageOrientation} orientation - Specifies the orientation of the PDF document.\n * @param {boolean} allowDownload - Specifies whether the exported file should be downloaded or not.\n * @returns {string} - Specifies the base64 string of the exported image which is returned when the allowDownload is set to false.\n */\n TreeMap.prototype.export = function (type, fileName, orientation, allowDownload) {\n var _this = this;\n if (isNullOrUndefined(allowDownload)) {\n allowDownload = true;\n }\n if (type === 'PDF' && this.allowPdfExport && this.pdfExportModule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n resolve(_this.pdfExportModule.export(_this, type, fileName, orientation, allowDownload));\n });\n }\n else if (this.allowImageExport && (type !== 'PDF') && this.imageExportModule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n resolve(_this.imageExportModule.export(_this, type, fileName, allowDownload));\n });\n }\n return null;\n };\n TreeMap.prototype.processFlatJsonData = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource = this.dataSource;\n var groupPath;\n var orderNames = [];\n for (var i = 0; i < this.levels.length + 1; i++) {\n groupPath = this.levels[i] ? this.levels[i].groupPath : this.leafItemSettings.labelPath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var level = {};\n level['level'] = i;\n level[groupPath] = [];\n this.treemapLevelData.levelsData.push(level);\n for (var j = 0; j < this.dataSource.length; j++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = {};\n var childName = '';\n if (!isNullOrUndefined(groupPath)) {\n var name_1 = this.dataSource[j][groupPath];\n if (i !== 0) {\n for (var k = 0; k <= i; k++) {\n var childGroupPath = this.levels[k] ? this.levels[k].groupPath : groupPath;\n childName += (this.dataSource[j][childGroupPath]) + ((k === i) ? '' : '#');\n }\n }\n if (!(orderNames.length > 0 ? orderNames.indexOf(childName ?\n childName : name_1) !== -1 : false)) {\n currentData['name'] = name_1;\n currentData['levelOrderName'] = ((childName) ? childName : name_1) + '';\n currentData['groupIndex'] = i;\n currentData['isDrilled'] = false;\n currentData['groupName'] = groupPath;\n currentData['data'] = this.dataSource[j];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, max-len\n this.treemapLevelData.levelsData[(this.treemapLevelData.levelsData.length - 1)][groupPath].push(currentData);\n orderNames.push((childName) ? childName : name_1);\n }\n }\n }\n }\n };\n /**\n * This method orders the treemap level data.\n *\n * @param {number} start - Specifies the start value of the treemap level.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.reOrderLevelData = function (start) {\n var currentName;\n var currentPath = this.levels[start] ? this.levels[start].groupPath : this.leafItemSettings.labelPath;\n var prevPath = this.levels[start - 1].groupPath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = this.treemapLevelData.levelsData[start][currentPath];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var previousData = this.treemapLevelData.levelsData[start - 1][prevPath];\n for (var i = 0; i < currentData.length; i++) {\n currentName = currentData[i]['levelOrderName'];\n for (var j = 0; j < previousData.length; j++) {\n previousData[j][currentPath] = isNullOrUndefined(previousData[j][currentPath]) ?\n [] : previousData[j][currentPath];\n if (this.IsChildHierarchy(currentName.split('#'), previousData[j]['levelOrderName'].split('#'))) {\n if (isNullOrUndefined(currentData[i]['parent'])) {\n currentData[i]['parent'] = previousData[j];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n previousData[j][currentPath].push(currentData[i]);\n break;\n }\n }\n }\n this.findTotalWeight(this.treemapLevelData.levelsData[this.treemapLevelData.levelsData.length - 1][currentPath], 'Child');\n this.treemapLevelData.levelsData.splice(start, 1);\n if ((start - 1) > 0) {\n this.reOrderLevelData(start - 1);\n }\n };\n TreeMap.prototype.IsChildHierarchy = function (current, previous) {\n var isChild = false;\n for (var i = 0; i < previous.length; i++) {\n if (current.length < i || previous[i] !== current[i]) {\n return false;\n }\n else {\n isChild = true;\n }\n }\n return isChild;\n };\n /**\n * This method finds the weight value of the treemap level.\n *\n * @param {any[]} processData - Specifies the treemap data.\n * @param {string} type - Specifies the type of the data.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.findTotalWeight = function (processData, type) {\n var _this = this;\n var totalWeight;\n var split;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var groupName;\n var groupObj = {};\n var _loop_1 = function (i) {\n totalWeight = 0;\n groupName = processData[i]['groupName'];\n split = processData[i]['levelOrderName'].split('#');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this_1.dataSource.forEach(function (data) {\n if (isContainsData(split, processData[i]['levelOrderName'], data, _this)) {\n totalWeight += parseFloat(data[_this.weightValuePath]);\n }\n });\n if (type === 'Parent') {\n groupObj[groupName] = processData;\n processData[i]['parent'] = groupObj;\n }\n processData[i]['weight'] = totalWeight;\n };\n var this_1 = this;\n for (var i = 0; i < processData.length; i++) {\n _loop_1(i);\n }\n };\n /**\n * To unbind event handlers for treemap.\n *\n * @returns {void}\n * @private\n */\n TreeMap.prototype.unWireEVents = function () {\n EventHandler.remove(this.element, 'click', this.clickOnTreeMap);\n EventHandler.remove(this.element, 'dblclick', this.doubleClickOnTreeMap);\n EventHandler.remove(this.element, 'contextmenu', this.rightClickOnTreeMap);\n EventHandler.remove(this.element, Browser.touchStartEvent, this.mouseDownOnTreeMap);\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.mouseMoveOnTreeMap);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.mouseEndOnTreeMap);\n EventHandler.remove(this.element, 'pointerleave mouseleave', this.mouseLeaveOnTreeMap);\n window.removeEventListener('resize', this.resizeEvent);\n };\n /**\n * To bind event handlers for treemap.\n *\n * @returns {void}\n */\n TreeMap.prototype.wireEVents = function () {\n EventHandler.add(this.element, 'click', this.clickOnTreeMap, this);\n EventHandler.add(this.element, 'dblclick', this.doubleClickOnTreeMap, this);\n EventHandler.add(this.element, 'contextmenu', this.rightClickOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchStartEvent, this.mouseDownOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchMoveEvent, this.mouseMoveOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchEndEvent, this.mouseEndOnTreeMap, this);\n EventHandler.add(this.element, 'pointerleave mouseleave', this.mouseLeaveOnTreeMap, this);\n this.resizeEvent = this.resizeOnTreeMap.bind(this);\n window.addEventListener('resize', this.resizeEvent);\n };\n /**\n * Method to set culture for maps\n *\n * @returns {void}\n */\n TreeMap.prototype.setCulture = function () {\n this.intl = new Internationalization();\n };\n /**\n * To add tab index for treemap element\n *\n * @returns {void}\n */\n TreeMap.prototype.addTabIndex = function () {\n this.element.setAttribute('aria-label', this.description || 'TreeMap Element');\n this.element.setAttribute('role', 'region');\n this.element.setAttribute('tabindex', this.tabIndex.toString());\n };\n /**\n * This method handles the window resize event on treemap.\n *\n * @param {Event} e - Specifies the pointer event.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TreeMap.prototype.resizeOnTreeMap = function (e) {\n var _this = this;\n if (!this.isDestroyed) {\n this.isResize = true;\n var args_1 = {\n name: resize,\n cancel: false,\n previousSize: this.availableSize,\n currentSize: new Size(0, 0),\n treemap: this\n };\n if (this.resizeTo) {\n clearTimeout(this.resizeTo);\n }\n if (!isNullOrUndefined(this.element) && this.element.classList.contains('e-treemap')) {\n this.resizeTo = setTimeout(function () {\n _this.unWireEVents();\n _this.createSvg();\n _this.refreshing = true;\n _this.wireEVents();\n args_1.currentSize = _this.availableSize;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _this.trigger(resize, args_1, function (observedArgs) {\n _this.render();\n _this.refreshing = false;\n });\n }, 500);\n }\n }\n };\n /**\n * This method handles the click event on the treemap.\n *\n * @param {PointerEvent} e - Specifies the mouse click event in the treemap.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.clickOnTreeMap = function (e) {\n var _this = this;\n var targetEle = e.target;\n var targetId = targetEle.id;\n var eventArgs;\n var itemIndex;\n var labelText = targetEle.innerHTML;\n var clickArgs = { cancel: false, name: click, treemap: this, mouseEvent: e };\n this.trigger(click, clickArgs);\n if (targetId.indexOf('_Item_Index') > -1) {\n e.preventDefault();\n itemIndex = parseFloat(targetId.split('_Item_Index_')[1]);\n eventArgs = {\n cancel: false, name: itemClick, treemap: this, item: this.layout.renderItems[itemIndex], mouseEvent: e,\n groupIndex: this.layout.renderItems[itemIndex]['groupIndex'], groupName: this.layout.renderItems[itemIndex]['name'],\n text: labelText, contentItemTemplate: labelText\n };\n this.trigger(itemClick, eventArgs, function (observedArgs) {\n if (observedArgs.text !== labelText || observedArgs.contentItemTemplate !== labelText) {\n if (isNullOrUndefined(_this.leafItemSettings.labelTemplate)) {\n observedArgs.text = textFormatter(observedArgs.text, observedArgs['item']['data'], observedArgs.treemap);\n targetEle.textContent = observedArgs.text;\n }\n else {\n setItemTemplateContent(targetId, targetEle, observedArgs.contentItemTemplate);\n }\n }\n });\n }\n var end = new Date().getMilliseconds();\n var doubleTapTimer1;\n if (!isNullOrUndefined(this.doubleClick)) {\n if (!isNullOrUndefined(doubleTapTimer1) && end - doubleTapTimer1 < 500) {\n this.doubleClickOnTreeMap(e);\n }\n doubleTapTimer1 = end;\n }\n };\n /**\n * This method handles the double click event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n */\n TreeMap.prototype.doubleClickOnTreeMap = function (e) {\n var doubleClickArgs = { cancel: false, name: doubleClick, treemap: this, mouseEvent: e };\n this.trigger(doubleClick, doubleClickArgs);\n //this.notify('dblclick', e);\n };\n /**\n * This method handles the right click event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.rightClickOnTreeMap = function (e) {\n var rightClickArgs = { cancel: false, name: rightClick, treemap: this, mouseEvent: e };\n this.trigger(rightClick, rightClickArgs);\n };\n /**\n * This method handles the mouse down event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.mouseDownOnTreeMap = function (e) {\n if (e.target.id.indexOf('_Item_Index') > -1) {\n this.mouseDown = true;\n }\n this.notify(Browser.touchStartEvent, e);\n };\n /**\n * This method handles the mouse move event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.mouseMoveOnTreeMap = function (e) {\n var targetEle = e.target;\n var targetId = targetEle.id;\n var eventArgs;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n var moveArgs = { cancel: false, name: mouseMove, treemap: this, mouseEvent: e };\n this.trigger(mouseMove, moveArgs);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childItems;\n if (targetId.indexOf('_Item_Index') > -1) {\n item = this.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childItems = findChildren(item)['values'];\n this.element.style.cursor = (!item['isLeafItem'] && childItems && childItems.length > 0 && this.enableDrillDown) ?\n 'pointer' : 'auto';\n eventArgs = { cancel: false, name: itemMove, treemap: this, item: item, mouseEvent: e };\n this.trigger(itemMove, eventArgs);\n }\n else {\n this.element.style.cursor = 'default';\n }\n this.notify(Browser.touchMoveEvent, e);\n };\n /**\n * This method calculates the selected treemap levels.\n *\n * @param {string} labelText - Specifies the label text.\n * @param {any} item - Specifies the treemap item.\n * @returns {any} - Returns label of the drilled level.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.calculateSelectedTextLevels = function (labelText, item) {\n //to find the levels by clicking the particular text both for drillDownView as true / false.\n var drillLevel;\n var k;\n var text;\n var levelLabels = item['levelOrderName'];\n var levelText = levelLabels.split('#');\n for (var _i = 0, _a = Object.keys(levelText); _i < _a.length; _i++) {\n k = _a[_i];\n if (levelText[k] === labelText) {\n drillLevel = parseInt(k, 10);\n text = labelText;\n }\n }\n return { drillLevel: drillLevel, currentLevelLabel: text, levelText: levelText };\n };\n /**\n * This method calculates the previous level of child items in treemap.\n *\n * @param {any} drillLevelValues - Specifies the values of drill level.\n * @param {any} item - Specifies the treemap item.\n * @param {boolean} directLevel - Specifies the current level.\n * @returns {boolean} - check whether it is previous level or not.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.calculatePreviousLevelChildItems = function (drillLevelValues, item, directLevel) {\n //By clicking any child items drilldown to the particular level.\n //At the time store all the previous drilled level items in drilledItems\n // This condition satisfies while drilldown View is set as false and the text contains '[+]'\n var text;\n var p = 0;\n var levelItems;\n var text1;\n var drillTextLevel = this.layout.renderItems[0]['levelOrderName'].split('#').length;\n for (var h = 0; h < drillTextLevel; h++) {\n text1 = h === 0 ? drillLevelValues['levelText'][h] : text1 + '#' + drillLevelValues['levelText'][h];\n }\n p = drillTextLevel > 1 ? drillTextLevel : p;\n for (var _i = 0, _a = Object['values'](this.layout.renderItems); _i < _a.length; _i++) {\n levelItems = _a[_i];\n var drillLevelText = levelItems['levelOrderName'].split('#');\n if (drillLevelText[0] === drillLevelValues['levelText'][0]) {\n text = p === 0 ? isNullOrUndefined(text1) ? text1 : drillLevelValues['levelText'][p] :\n directLevel ? text1 : text1 + '#' + drillLevelValues['levelText'][p];\n if (text === levelItems['levelOrderName']) {\n this.drilledItems.push({ name: levelItems['levelOrderName'], data: levelItems });\n p++;\n directLevel = true;\n if (p <= item['groupIndex']) {\n text = text + '#' + drillLevelValues['levelText'][p];\n text1 = text;\n }\n }\n }\n }\n return directLevel;\n };\n /**\n * This method compares the selected labels with the drill down items.\n *\n * @param {any} drillLevelValues - Specifies the values of drill level.\n * @param {any} item - Specifies the treemap item.\n * @param {number} i - Specifies the treemap item.\n * @returns {any} - return the new drill down object.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.compareSelectedLabelWithDrillDownItems = function (drillLevelValues, item, i) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var drillLevelChild;\n var newDrillItem = {};\n var b = drillLevelValues['drillLevel'] + 1;\n if (b === this.drilledItems[i]['data']['groupIndex']) {\n drillLevelChild = this.drilledItems[i]['data']['parent'];\n drillLevelChild['isDrilled'] = true;\n newDrillItem[drillLevelChild[this.drilledItems[i]['data']['groupName']]]\n = [drillLevelChild];\n // to remove all the items after matched drilled items\n this.drilledItems.splice(i, this.drilledItems.length);\n }\n else if (drillLevelValues['drillLevel'] === (this.drilledItems.length - 1)\n || drillLevelValues['drillLevel'] === item['groupIndex']) {\n newDrillItem[item['groupName']] = [item];\n }\n return newDrillItem;\n };\n /**\n * This method handles mouse end event in treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.mouseEndOnTreeMap = function (e) {\n var _this = this;\n var targetEle = e.target;\n var targetId = targetEle.id;\n var totalRect;\n var startEvent;\n var endEvent;\n var directLevel = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var index;\n var newDrillItem = {};\n var item;\n var process = true;\n var layoutID = this.element.id + '_TreeMap_' + this.layoutType + '_Layout';\n var drillLevel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateID = this.element.id + '_Label_Template_Group';\n var drillLevelValues;\n if (targetId.indexOf('_Item_Index') > -1 && this.enableDrillDown && !this.drillMouseMove) {\n if (e.cancelable) {\n e.preventDefault();\n }\n index = parseFloat(targetId.split('_Item_Index_')[1]);\n item = this.layout.renderItems[index];\n var labelText = targetEle.textContent;\n if (this.enableBreadcrumb) {\n drillLevelValues = this.calculateSelectedTextLevels(labelText, item);\n drillLevel = drillLevelValues['drillLevel'];\n if (!this.drillDownView && labelText.search('[+]') !== -1) {\n directLevel = this.calculatePreviousLevelChildItems(drillLevelValues, item, directLevel);\n }\n }\n if (this.levels.length !== 0 && !item['isLeafItem'] && findChildren(item)['values'] &&\n findChildren(item)['values'].length > 0) {\n if (this.drilledItems.length > 0) {\n item = directLevel ? this.drilledItems[this.drilledItems.length - 1]['data'] : item;\n for (var i = 0; i < this.drilledItems.length; i++) {\n if (!isNullOrUndefined(drillLevel)) { //Compare the selected text level with drilled items\n var drillLength = this.drilledItems.length;\n newDrillItem = this.compareSelectedLabelWithDrillDownItems(drillLevelValues, item, i);\n if (drillLength !== this.drilledItems.length) {\n i -= 1;\n break;\n }\n } //when clicking the levels drill back to the previous level process takes place\n if (item['levelOrderName'] === this.drilledItems[i]['name'] && !directLevel && isNullOrUndefined(drillLevel)) {\n if (item['groupIndex'] === 0 && item['parent'][item['groupName']] instanceof Array) {\n item['isDrilled'] = !(item['isDrilled']);\n if (!item['isDrilled']) {\n newDrillItem = item['parent'];\n }\n else {\n newDrillItem[item['groupName']] = [item];\n }\n }\n else {\n item['isDrilled'] = false;\n item['parent']['isDrilled'] = true;\n item = item['parent'];\n newDrillItem[item['groupName']] = [item];\n }\n this.drilledItems.splice(i, 1);\n i -= 1;\n break;\n }\n else if (i === this.drilledItems.length - 1 && isNullOrUndefined(drillLevel)) {\n item['isDrilled'] = true; // click the items move to next level.\n newDrillItem[item['groupName']] = [item];\n }\n }\n }\n else {\n item['isDrilled'] = true;\n newDrillItem[item['groupName']] = [item];\n }\n startEvent = {\n cancel: false, name: drillStart, treemap: this,\n element: targetEle, groupIndex: this.enableBreadcrumb &&\n this.drilledItems.length !== 0 && !isNullOrUndefined(drillLevel) ?\n this.drilledItems[this.drilledItems.length - 1]['data']['groupIndex'] : item['groupIndex'],\n groupName: this.enableBreadcrumb && this.drilledItems.length !== 0 && !isNullOrUndefined(drillLevel) ?\n this.drilledItems[this.drilledItems.length - 1]['data']['name'] : item['name'],\n rightClick: e.which === 3 ? true : false, childItems: null, item: newDrillItem\n };\n this.trigger(drillStart, startEvent, function (observedArgs) {\n _this.currentLevel = item['isDrilled'] && isNullOrUndefined(drillLevel) ? item['groupIndex'] :\n (!isNullOrUndefined(drillLevel) && _this.enableBreadcrumb && item['isDrilled']) ? drillLevel : null;\n if (!observedArgs.cancel) {\n if (document.getElementById(layoutID)) {\n var layerElementId = document.getElementById(layoutID);\n layerElementId.parentNode.removeChild(layerElementId);\n }\n totalRect = extend({}, _this.areaRect, totalRect, true);\n if (_this.legendSettings.visible && !isNullOrUndefined(_this.treeMapLegendModule)) {\n if (!isNullOrUndefined(newDrillItem)) {\n _this.treeMapLegendModule.legendGroup.textContent = '';\n _this.treeMapLegendModule.legendGroup = null;\n _this.treeMapLegendModule.widthIncrement = 0;\n _this.treeMapLegendModule.heightIncrement = 0;\n if (_this.enableBreadcrumb && !isNullOrUndefined(drillLevel)) {\n _this.drilledLegendItems = {\n name: _this.drilledItems[_this.drilledItems.length - 1]['data']['levelOrderName'],\n data: _this.drilledItems[_this.drilledItems.length - 1]['data']\n };\n }\n else {\n _this.drilledLegendItems = { name: item['levelOrderName'], data: item };\n }\n _this.treeMapLegendModule.renderLegend();\n }\n totalRect = !isNullOrUndefined(_this.totalRect) ? _this.totalRect : totalRect;\n }\n if (document.getElementById(templateID)) {\n var drillElementId = document.getElementById(templateID);\n drillElementId.parentNode.removeChild(drillElementId);\n }\n if (!isNullOrUndefined(observedArgs.childItems) && !observedArgs.cancel) {\n _this.layout.onDemandProcess(observedArgs.childItems);\n }\n else {\n _this.layout.calculateLayoutItems(newDrillItem, totalRect);\n _this.layout.renderLayoutItems();\n }\n }\n });\n endEvent = { cancel: false, name: drillEnd, treemap: this, renderItems: this.layout.renderItems };\n this.trigger(drillEnd, endEvent);\n if (process) {\n if (!directLevel && isNullOrUndefined(drillLevel)) {\n this.drilledItems.push({ name: item['levelOrderName'], data: item });\n }\n }\n }\n }\n this.mouseDown = false;\n this.notify(Browser.touchEndEvent, e);\n };\n /**\n * This method handles mouse leave event in treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse.\n * @return {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TreeMap.prototype.mouseLeaveOnTreeMap = function (e) {\n if (this.treeMapTooltipModule) {\n this.treeMapTooltipModule.removeTooltip();\n }\n if (this.treeMapLegendModule) {\n this.treeMapLegendModule.removeInteractivePointer();\n }\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', this);\n if (this.treeMapHighlightModule) {\n removeShape(this.treeMapHighlightModule.shapeHighlightCollection);\n this.treeMapHighlightModule.highLightId = '';\n }\n };\n /**\n * This method is used to select or remove the selection of treemap item based on the provided selection settings.\n *\n * @param {string[]} levelOrder - Specifies the order of the level.\n * @param {boolean} isSelected - Specifies whether the treemap item should be selected or the selection should be removed.\n * @return {void}\n */\n TreeMap.prototype.selectItem = function (levelOrder, isSelected) {\n if (isNullOrUndefined(isSelected)) {\n isSelected = true;\n }\n var levelOrderName = '';\n for (var i = 0; i < levelOrder.length; i++) {\n if (i !== levelOrder.length - 1) {\n levelOrderName += levelOrder[i] + '#';\n }\n else {\n levelOrderName += levelOrder[i];\n }\n }\n if (this.treeMapSelectionModule && this.selectionSettings.enable) {\n this.treeMapSelectionModule.selectTreemapItem(levelOrderName, isSelected);\n }\n };\n /**\n * To provide the array of modules needed for maps rendering\n *\n * @returns {ModuleDeclaration[]} Returns the modules\n * @private\n */\n TreeMap.prototype.requiredModules = function () {\n var modules = [];\n if (this.tooltipSettings.visible) {\n modules.push({\n member: 'treeMapTooltip',\n args: [this],\n name: 'TreeMapTooltip'\n });\n }\n if (this.highlightSettings.enable) {\n modules.push({\n member: 'treeMapHighlight',\n args: [this],\n name: 'TreeMapHighlight'\n });\n }\n if (this.selectionSettings.enable) {\n modules.push({\n member: 'treeMapSelection',\n args: [this],\n name: 'TreeMapSelection'\n });\n }\n if (this.legendSettings.visible) {\n modules.push({\n member: 'treeMapLegend',\n args: [this],\n name: 'TreeMapLegend'\n });\n }\n if (this.allowPrint) {\n modules.push({\n member: 'Print',\n args: [this, Print],\n name: 'Print'\n });\n }\n if (this.allowImageExport) {\n modules.push({\n member: 'ImageExport',\n args: [this, ImageExport],\n name: 'ImageExport'\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this, PdfExport],\n name: 'PdfExport'\n });\n }\n return modules;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TreeMapModel} newProp - Specifies the new property\n * @param {TreeMapModel} oldProp - Specifies the old property\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TreeMap.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.isDestroyed) {\n var render = false;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'background':\n this.renderBorder();\n break;\n case 'height':\n case 'width':\n case 'layoutType':\n case 'levels':\n case 'drillDownView':\n case 'renderDirection':\n case 'leafItemSettings':\n case 'legendSettings':\n case 'dataSource':\n render = true;\n break;\n }\n }\n if (render) {\n this.createSvg();\n this.renderElements();\n }\n }\n };\n /**\n * Gets component name.\n *\n * @returns {string} - return the treemap instance.\n * @private\n */\n TreeMap.prototype.getModuleName = function () {\n return 'treemap';\n };\n /**\n * This method destroys the treemap. This method removes the events associated with the treemap and disposes the objects created for rendering and updating the treemap.\n */\n TreeMap.prototype.destroy = function () {\n this.unWireEVents();\n removeElement('treeMapMeasureText');\n this.drilledItems = [];\n this.levelSelection = [];\n this.legendId = [];\n this.removeSvg();\n _super.prototype.destroy.call(this);\n this.areaRect = null;\n this.themeStyle = null;\n this.totalRect = null;\n this.drilledLegendItems = null;\n this.doubleTapTimer = null;\n this.treemapLevelData = null;\n this.resizeEvent = null;\n this.availableSize = null;\n this.intl = null;\n if (!isNullOrUndefined(this.layout)) {\n this.layout.destroy();\n }\n this.layout = null;\n this.renderer = null;\n };\n TreeMap.prototype.removeSvg = function () {\n removeElement(this.element.id + '_Secondary_Element');\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Returns the string value.\n * @private\n */\n TreeMap.prototype.getPersistData = function () {\n return '';\n };\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowPrint\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowImageExport\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"height\", void 0);\n __decorate([\n Complex({}, Border)\n ], TreeMap.prototype, \"border\", void 0);\n __decorate([\n Complex({}, Margin)\n ], TreeMap.prototype, \"margin\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"background\", void 0);\n __decorate([\n Property('Material')\n ], TreeMap.prototype, \"theme\", void 0);\n __decorate([\n Complex({}, TitleSettings)\n ], TreeMap.prototype, \"titleSettings\", void 0);\n __decorate([\n Property('Squarified')\n ], TreeMap.prototype, \"layoutType\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"weightValuePath\", void 0);\n __decorate([\n Property('')\n ], TreeMap.prototype, \"rangeColorValuePath\", void 0);\n __decorate([\n Property('')\n ], TreeMap.prototype, \"equalColorValuePath\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"colorValuePath\", void 0);\n __decorate([\n Property([])\n ], TreeMap.prototype, \"palette\", void 0);\n __decorate([\n Property('TopLeftBottomRight')\n ], TreeMap.prototype, \"renderDirection\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"enableDrillDown\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"enableBreadcrumb\", void 0);\n __decorate([\n Property(' - ')\n ], TreeMap.prototype, \"breadcrumbConnector\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"drillDownView\", void 0);\n __decorate([\n Complex({}, InitialDrillSettings)\n ], TreeMap.prototype, \"initialDrillDown\", void 0);\n __decorate([\n Complex({}, LeafItemSettings)\n ], TreeMap.prototype, \"leafItemSettings\", void 0);\n __decorate([\n Collection([], LevelSettings)\n ], TreeMap.prototype, \"levels\", void 0);\n __decorate([\n Complex({}, HighlightSettings)\n ], TreeMap.prototype, \"highlightSettings\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], TreeMap.prototype, \"selectionSettings\", void 0);\n __decorate([\n Complex({}, TooltipSettings)\n ], TreeMap.prototype, \"tooltipSettings\", void 0);\n __decorate([\n Complex({}, LegendSettings)\n ], TreeMap.prototype, \"legendSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"useGroupingSeparator\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"description\", void 0);\n __decorate([\n Property(0)\n ], TreeMap.prototype, \"tabIndex\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"format\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"drillStart\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"drillEnd\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemSelected\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemHighlight\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"tooltipRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemMove\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"doubleClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"rightClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"mouseMove\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"resize\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"legendItemRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"legendRendering\", void 0);\n TreeMap = __decorate([\n NotifyPropertyChanges\n ], TreeMap);\n return TreeMap;\n}(Component));\nexport { TreeMap };\n/**\n * @private\n */\nvar LevelsData = /** @class */ (function () {\n function LevelsData() {\n }\n return LevelsData;\n}());\nexport { LevelsData };\n","import { findChildren, Location, Rect, Size, measureText, TextOption, PathOption, RectOption, drawSymbol, orderByArea, legendMaintain } from '../utils/helper';\nimport { Browser, isNullOrUndefined, EventHandler, extend } from '@syncfusion/ej2-base';\nimport { renderTextElement, textTrim } from '../utils/helper';\nimport { legendItemRendering, legendRendering } from '../model/constants';\n/**\n * Legend module class\n */\nvar TreeMapLegend = /** @class */ (function () {\n function TreeMapLegend(treemap) {\n this.page = 0;\n /** @private */\n this.legendBorderRect = new Rect(0, 0, 0, 0);\n this.currentPage = 0;\n /** @private */\n this.heightIncrement = 0;\n /** @private */\n this.widthIncrement = 0;\n this.textMaxWidth = 0;\n this.legendInteractiveGradient = [];\n this.legendItemRect = new Rect(0, 0, 0, 0);\n this.treemap = treemap;\n this.addEventListener();\n }\n /**\n * method for legend\n *\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.renderLegend = function () {\n var _this = this;\n this.page = 0;\n this.legendRenderingCollections = [];\n this.legendCollections = [];\n this.legendNames = [];\n this.totalPages = [];\n this.gradientCount = 1;\n this.widthIncrement = 0;\n this.heightIncrement = 0;\n this.defsElement = this.treemap.renderer.createDefs();\n this.treemap.svgObject.appendChild(this.defsElement);\n var eventArgs = {\n cancel: false, name: legendRendering, treemap: this.treemap, _changePosition: this.treemap.legendSettings.position,\n position: this.treemap.legendSettings.position\n };\n this.treemap.trigger(legendRendering, eventArgs, function (observedArgs) {\n if (!observedArgs.cancel && observedArgs._changePosition !== _this.treemap.legendSettings.position) {\n _this.treemap.legendSettings.position = observedArgs._changePosition;\n }\n _this.calculateLegendBounds();\n if (_this.legendCollections.length > 0) {\n _this.drawLegend();\n }\n });\n };\n // eslint-disable-next-line valid-jsdoc\n /** @private */\n TreeMapLegend.prototype.calculateLegendBounds = function () {\n var _this = this;\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n this.findColorMappingLegendItems(treemap.treemapLevelData.levelsData[0]);\n if (((!isNullOrUndefined(this.treemap.palette) && this.treemap.palette.length > 0) || !isNullOrUndefined(treemap.colorValuePath))\n && this.legendCollections.length === 0) {\n this.findPaletteLegendItems(treemap.treemapLevelData.levelsData[0]);\n }\n if (this.legendCollections.length > 0) {\n // eslint-disable-next-line @typescript-eslint/tslint/config\n this.legendCollections.sort(function (firstItem, nextItem) { return (firstItem.levelIndex > nextItem.levelIndex) ? 1 :\n (firstItem.levelIndex < nextItem.levelIndex) ? -1 : 0; });\n // eslint-disable-next-line @typescript-eslint/tslint/config\n this.legendCollections.sort(function (firstItem, nextItem) { return (firstItem.groupIndex > nextItem.groupIndex) ? 1 :\n (firstItem.groupIndex < nextItem.groupIndex) ? -1 : 0; });\n // eslint-disable-next-line @typescript-eslint/tslint/config\n this.legendCollections.sort(function (firstItem, nextItem) { return (firstItem.leafIndex > nextItem.leafIndex) ? 1 :\n (firstItem.leafIndex < nextItem.leafIndex) ? -1 : 0; });\n var defaultSize = 25;\n var textPadding = 10;\n var position = legend.position;\n var legendTitle = legend.title.text;\n var titleTextStyle = legend.titleStyle;\n var legendMode = legend.mode;\n var shapeX = 0;\n var shapeY = 0;\n var textX = 0;\n var textY = 0;\n var shapeHeight = legend.shapeHeight;\n var shapeWidth = legend.shapeWidth;\n var shapeLocation = [];\n var textLocation = [];\n var orientation_1 = (legend.orientation === 'None') ? ((position === 'Top' || position === 'Bottom'\n || (position === 'Auto' && treemap.availableSize.width <= treemap.availableSize.height))\n ? 'Horizontal' : 'Vertical') : legend.orientation;\n var leftPadding = 10;\n var topPadding = 10;\n var spacing = 10;\n var legendWidth = (legend.width.length > 1) ? (legend.width.indexOf('%') > -1) ? (treemap.availableSize.width / 100)\n * parseFloat(legend.width) : parseFloat(legend.width) : null;\n var legendHeight = (legend.height.length > 1) ? (legend.height.indexOf('%') > -1) ?\n (treemap.availableSize.height / 100) * parseFloat(legend.height) : parseFloat(legend.height) : null;\n titleTextStyle.fontFamily = titleTextStyle.fontFamily || treemap.themeStyle.fontFamily;\n titleTextStyle.fontWeight = titleTextStyle.fontWeight || treemap.themeStyle.titleFontWeight;\n titleTextStyle.size = titleTextStyle.size || treemap.themeStyle.legendFontSize;\n var legendTitleSize = measureText(legendTitle, titleTextStyle);\n var startX_1 = 0;\n var startY_1 = 0;\n var shapePadding = legend.shapePadding;\n var itemTextStyle = legend.textStyle;\n itemTextStyle.size = itemTextStyle.size || treemap.themeStyle.legendFontSize;\n itemTextStyle.fontFamily = itemTextStyle.fontFamily || treemap.themeStyle.fontFamily;\n itemTextStyle.fontWeight = itemTextStyle.fontWeight || treemap.themeStyle.fontWeight;\n if (legendMode === 'Default') {\n legendWidth = (isNullOrUndefined(legendWidth)) ? treemap.areaRect.width : legendWidth;\n legendHeight = (isNullOrUndefined(legendHeight)) ? treemap.areaRect.height : legendHeight;\n var j = 0;\n for (var i = 0; i < this.legendCollections.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var legendItem = this.legendCollections[i];\n if (isNullOrUndefined(this.totalPages[this.page])) {\n this.totalPages[this.page] = { Page: (this.page + 1), Collection: [] };\n }\n var legendTextSize = measureText(legendItem['legendName'], itemTextStyle);\n this.textMaxWidth = Math.max(this.textMaxWidth, legendTextSize.width);\n if (i === 0) {\n startX_1 = shapeX = (leftPadding + (shapeWidth / 2));\n startY_1 = shapeY = topPadding + legendTitleSize.height + (shapeHeight > legendTextSize.height ? shapeHeight / 2\n : (legendTextSize.height / 4));\n }\n else {\n var maxSize = (legendTextSize.height > shapeHeight) ? legendTextSize.height : shapeHeight;\n if (orientation_1 === 'Horizontal') {\n var prvePositionX = (textLocation[j - 1].x + textLocation[j - 1].width) + textPadding + shapeWidth;\n if ((prvePositionX + shapePadding + legendTextSize.width) > legendWidth) {\n var nextPositionY = (textLocation[j - 1].y > (shapeLocation[j - 1].y + (shapeHeight / 2)) ?\n textLocation[j - 1].y : (shapeLocation[j - 1].y + (shapeHeight / 2))) + topPadding;\n if ((nextPositionY + maxSize) > legendHeight) {\n this.getPageChanged();\n j = 0;\n shapeLocation = [];\n textLocation = [];\n shapeX = startX_1;\n shapeY = startY_1;\n }\n else {\n shapeX = (shapeLocation[0].x);\n shapeY = (nextPositionY + (maxSize / 2));\n }\n }\n else {\n shapeX = (prvePositionX - (shapeWidth / 2));\n shapeY = (shapeLocation[j - 1]).y;\n }\n }\n else {\n var prevPositionY = textLocation[j - 1].y > shapeLocation[j - 1].y + (shapeHeight / 2) ?\n textLocation[j - 1].y : shapeLocation[j - 1].y + (shapeHeight / 2);\n if ((prevPositionY + topPadding + maxSize) > legendHeight) {\n var nextPositionX = (textLocation[j - 1].x + this.textMaxWidth + textPadding);\n if ((nextPositionX + shapePadding + legendTextSize.width) > legendWidth) {\n shapeX = startX_1;\n shapeY = startY_1;\n textLocation = [];\n shapeLocation = [];\n this.getPageChanged();\n j = 0;\n }\n else {\n shapeX = nextPositionX + (shapeWidth / 2);\n shapeY = (shapeLocation[0].y);\n }\n }\n else {\n shapeX = shapeLocation[j - 1].x;\n shapeY = prevPositionY + topPadding + (shapeHeight / 2);\n }\n }\n }\n textX = shapeX + (shapeWidth / 2) + shapePadding;\n textY = shapeY + (legendTextSize.height / 4);\n shapeLocation.push({ x: shapeX, y: shapeY });\n textLocation.push({ x: textX, y: textY, width: legendTextSize.width, height: (legendTextSize.height / 2) });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalPages[this.page]['Collection'].push({\n DisplayText: legendItem['legendName'], element: legendItem['gradientElement'],\n Shape: { x: shapeX, y: shapeY },\n Text: { x: textX, y: textY },\n Fill: legendItem['legendFill'],\n Data: legendItem['legendData'],\n Rect: {\n x: shapeLocation[j].x - (shapeWidth / 2),\n y: (shapeLocation[j].y - (shapeHeight / 2)) < (textY - legendTextSize.height) ?\n (shapeLocation[j].y - (shapeHeight / 2)) : (textY - legendTextSize.height),\n width: Math.abs((shapeLocation[j].x - (shapeWidth / 2)) - (textX + legendTextSize.width)),\n height: ((shapeHeight > legendTextSize.height) ? shapeHeight : legendTextSize.height)\n }\n });\n j++;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.totalPages[0]['Collection'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n collection.forEach(function (legendObj, index) {\n var legendRect = new Rect(legendObj['Rect']['x'], legendObj['Rect']['y'], legendObj['Rect']['width'], legendObj['Rect']['height']);\n if (index === 0) {\n startX_1 = legendRect.x;\n startY_1 = legendRect.y;\n }\n _this.widthIncrement = Math.max(_this.widthIncrement, Math.abs(startX_1 - (legendRect.x + legendRect.width)));\n _this.heightIncrement = Math.max(_this.heightIncrement, Math.abs(startY_1 - (legendRect.y + legendRect.height)));\n });\n legendWidth = ((this.widthIncrement < legendWidth) ? this.widthIncrement : legendWidth);\n legendHeight = ((this.heightIncrement < legendHeight) ? this.heightIncrement : legendHeight);\n this.legendItemRect = {\n x: collection[0]['Rect']['x'], y: collection[0]['Rect']['y'],\n width: legendWidth, height: legendHeight\n };\n }\n else {\n var legendLength = this.legendCollections.length;\n var rectWidth = (orientation_1 === 'Horizontal') ? (isNullOrUndefined(legendWidth)) ? (treemap.areaRect.width / legendLength) :\n (legendWidth / legendLength) : (isNullOrUndefined(legendWidth)) ? defaultSize : legendWidth;\n var rectHeight = (orientation_1 === 'Horizontal') ? (isNullOrUndefined(legendHeight)) ? defaultSize : legendHeight :\n (isNullOrUndefined(legendHeight)) ? (treemap.areaRect.height / legendLength) : (legendHeight / legendLength);\n startX_1 = 0;\n startY_1 = legendTitleSize.height + spacing;\n var textPadding_1 = 10;\n var placement = legend.labelPosition;\n var itemStartX = 0;\n var itemStartY = 0;\n var labelAction = legend.labelDisplayMode;\n var maxTextHeight = 0;\n var maxTextWidth = 0;\n for (var i = 0; i < this.legendCollections.length; i++) {\n startX_1 = (orientation_1 === 'Horizontal') ? (startX_1 + rectWidth) : startX_1;\n startY_1 = (orientation_1 === 'Horizontal') ? startY_1 : (startY_1 + rectHeight);\n var legendText = this.legendCollections[i]['legendName'];\n var itemTextSize = new Size(0, 0);\n if (labelAction === 'None') {\n itemTextSize = measureText(legendText, itemTextStyle);\n }\n else if (labelAction === 'Trim') {\n legendText = textTrim((orientation_1 === 'Horizontal' ? rectWidth : rectHeight), legendText, itemTextStyle);\n itemTextSize = measureText(legendText, itemTextStyle);\n }\n else {\n legendText = '';\n }\n maxTextHeight = Math.max(maxTextHeight, itemTextSize.height);\n maxTextWidth = Math.max(maxTextWidth, itemTextSize.width);\n if (itemTextSize.width > 0 && itemTextSize.height > 0) {\n if (orientation_1 === 'Horizontal') {\n textX = startX_1 + (rectWidth / 2);\n textY = (placement === 'After') ? (startY_1 + rectHeight + (itemTextSize.height / 2)) + textPadding_1 :\n (startY_1 - textPadding_1);\n }\n else {\n textX = (placement === 'After') ? startX_1 - (itemTextSize.width / 2) - textPadding_1\n : (startX_1 + rectWidth + itemTextSize.width / 2) + textPadding_1;\n textY = startY_1 + (rectHeight / 2) + (itemTextSize.height / 4);\n }\n }\n if (i === 0) {\n itemStartX = (orientation_1 === 'Horizontal') ? startX_1 : (placement === 'After') ?\n textX - (itemTextSize.width / 2) : startX_1;\n itemStartY = (orientation_1 === 'Horizontal') ? (placement === 'After') ? startY_1 :\n textY - (itemTextSize.height / 2) : startY_1;\n }\n if (i === legendLength - 1) {\n legendWidth = (orientation_1 === 'Horizontal') ? Math.abs((startX_1 + rectWidth) - itemStartX) :\n (rectWidth + maxTextWidth + textPadding_1);\n legendHeight = (orientation_1 === 'Horizontal') ? (rectHeight + (maxTextHeight / 2) + textPadding_1) :\n Math.abs((startY_1 + rectHeight) - itemStartY);\n }\n this.legendRenderingCollections.push({\n fill: this.legendCollections[i]['legendFill'], x: startX_1, y: startY_1,\n width: rectWidth, height: rectHeight, element: this.legendCollections[i]['gradientElement'],\n text: legendText, textX: textX, textY: textY,\n textWidth: itemTextSize.width, textHeight: itemTextSize.height,\n data: this.legendCollections[i]['legendData']\n });\n }\n this.legendItemRect = { x: itemStartX, y: itemStartY, width: legendWidth, height: legendHeight };\n }\n }\n };\n TreeMapLegend.prototype.getPageChanged = function () {\n this.page++;\n if (isNullOrUndefined(this.totalPages[this.page])) {\n this.totalPages[this.page] = { Page: (this.page + 1), Collection: [] };\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.findColorMappingLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n if (child && child.length > 0) {\n this.calculateLegendItems(child);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < child.length; i++) {\n this.findColorMappingLegendItems(child[i]);\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.findPaletteLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child;\n var legendFillColor;\n if (!isNullOrUndefined(this.treemap.drilledItems)) {\n if (this.treemap.drilledItems.length === 0 && !isNullOrUndefined(this.treemap.initialDrillDown.groupName)\n && isNullOrUndefined(this.treemap.drilledLegendItems)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var items = findChildren(data)['values'];\n for (var k = 0; k < items.length; k++) {\n if (items[k]['Name'] === this.treemap.initialDrillDown.groupName) {\n items[k]['isDrilled'] = !items[k]['isDrilled'];\n data = items[k];\n this.treemap.currentLevel = this.treemap.initialDrillDown.groupIndex;\n legendFillColor = this.treemap.palette.length > 0 ? this.treemap.palette[k % this.treemap.palette.length] :\n items[k]['data'][this.treemap.colorValuePath];\n break;\n }\n }\n }\n }\n if (this.treemap.enableDrillDown && !isNullOrUndefined(this.treemap.drilledLegendItems)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childElement = this.treemap.drilledLegendItems;\n 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 isLeafItem;\n var colorMapProcess = false;\n var colorMapping;\n var groupIndex;\n var leaf = this.treemap.leafItemSettings;\n var levels = this.treemap.levels;\n var equalValue;\n var position = this.treemap.legendSettings.position;\n var gradientElement;\n var x2;\n var y2;\n var actualValue;\n var isDuplicate;\n var isEqualColor;\n var isRange;\n var isDesaturation = false;\n var legendIndex = 0;\n var outfill;\n var labelLegend;\n var otherIndex;\n this.outOfRangeLegend = null;\n for (var i = 0; i < data.length; i++) {\n fill = '';\n isEqualColor = false;\n isRange = false;\n isDesaturation = false;\n currentData = data[i]['data'];\n groupIndex = data[i]['groupIndex'];\n isLeafItem = (this.treemap.levels.length === 0 || groupIndex === this.treemap.levels.length);\n colorMapping = isLeafItem ? leaf.colorMapping : levels[groupIndex].colorMapping;\n for (var j = 0; j < colorMapping.length; j++) {\n var colorMap = colorMapping[j];\n gradientElement = null;\n rangeValue = Number(currentData[this.treemap.rangeColorValuePath]);\n equalValue = currentData[this.treemap.equalColorValuePath];\n colorMap.value = !isNullOrUndefined(colorMap.value) ? colorMap.value.toString() : colorMap.value;\n if (!isNullOrUndefined(colorMap.from) && !isNullOrUndefined(colorMap.to) &&\n rangeValue >= colorMap.from && rangeValue <= colorMap.to && colorMap.showLegend) {\n colorMapProcess = true;\n isRange = true;\n actualValue = colorMap.from + ' - ' + colorMap.to;\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : colorMap.from + ' - ' + colorMap.to;\n fill = isNullOrUndefined(colorMap.color) ? fill : colorMap.color;\n isAddData = this.isAddNewLegendData(actualValue);\n }\n else if (!isNullOrUndefined(colorMap.value) && equalValue === colorMap.value && colorMap.showLegend) {\n colorMapProcess = true;\n isEqualColor = true;\n actualValue = colorMap.value.toString();\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : colorMap.value.toString();\n fill = isNullOrUndefined(colorMap.color) ? fill :\n Object.prototype.toString.call(colorMap.color) === '[object Array]' ? colorMap.color[0] : colorMap.color;\n isAddData = this.isAddNewLegendData(actualValue);\n }\n if (colorMapProcess && isNullOrUndefined(colorMap.value) && colorMap.maxOpacity && colorMap.minOpacity\n && this.treemap.legendSettings.mode === 'Interactive') {\n var colors = [];\n isDesaturation = true;\n if (Object.prototype.toString.call(colorMap.color) === '[object Array]') {\n for (var q = 0; q < colorMap.color.length; q++) {\n var offsetColor = 100 / (colorMap.color.length - 1);\n var offsetValue = q * offsetColor + '%';\n var stop1Color = { colorStop: offsetValue.toString(), color: colorMap.color[q] };\n colors.push(stop1Color);\n }\n }\n else {\n var stop1Color = { colorStop: '0%', color: fill };\n var stop2Color = { colorStop: '100%', color: fill };\n colors.push(stop1Color);\n colors.push(stop2Color);\n }\n x2 = position === 'Top' || position === 'Bottom' ? '100%' : '0%';\n y2 = position === 'Top' || position === 'Bottom' ? '0%' : '100%';\n var gradient = {\n id: 'groupIndex_' + groupIndex + '_colorIndex_' + this.gradientCount, x1: '0%', y1: '0%', x2: x2, y2: y2\n };\n gradientElement = this.treemap.renderer.drawGradient('linearGradient', gradient, colors).childNodes[0];\n if (Object.prototype.toString.call(colorMap.color) !== '[object Array]') {\n gradientElement.childNodes[0].setAttribute('stop-opacity', colorMap.minOpacity.toString());\n gradientElement.childNodes[1].setAttribute('stop-opacity', colorMap.maxOpacity.toString());\n }\n this.defsElement.appendChild(gradientElement);\n this.gradientCount++;\n }\n isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, legendText) : false;\n if (isAddData && isAddData['process'] && colorMapProcess && !isDuplicate) {\n colorMapProcess = false;\n fill = ((Object.prototype.toString.call(colorMap.color) === '[object Array]')) && isNullOrUndefined(gradientElement)\n && isNullOrUndefined(colorMap.value) ? this.legendGradientColor(colorMap, legendIndex) : fill;\n this.legendCollections.push({\n actualValue: actualValue, levelIndex: !isLeafItem ? j : -1, leafIndex: isLeafItem ? j : -1,\n legendName: legendText, legendFill: fill, legendData: [], groupIndex: !isLeafItem ? groupIndex : -1,\n gradientElement: !isNullOrUndefined(gradientElement) ? gradientElement : isNullOrUndefined(colorMap.value)\n ? this.legendLinearGradient : null, name: data[i]['name'],\n opacity: this.treemap.legendSettings.opacity, borderColor: this.treemap.legendSettings.border.color,\n borderWidth: this.treemap.legendSettings.border.width\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[this.legendCollections.length - 1]['legendData'].push(data[i]);\n legendIndex++;\n }\n else if (colorMapProcess && !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 * @private\n */\n TreeMapLegend.prototype.drawLegend = function () {\n var legend = this.treemap.legendSettings;\n var render = this.treemap.renderer;\n var fill;\n var textOptions;\n var gradientElement;\n var textFont = legend.textStyle;\n this.legendGroup = render.createGroup({ id: this.treemap.element.id + '_Legend_Group' });\n this.renderLegendBorder();\n this.renderLegendTitle();\n if (legend.mode === 'Default') {\n this.drawLegendItem(this.currentPage);\n }\n else {\n for (var i = 0; i < this.legendRenderingCollections.length; i++) {\n var itemId = this.treemap.element.id + '_Legend_Index_' + i;\n var textId = this.treemap.element.id + '_Legend_Index_' + i + '_Text';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = this.legendRenderingCollections[i];\n gradientElement = item['element'];\n fill = gradientElement ? 'url(#' + gradientElement.id + ')' : item['fill'];\n var bounds = new Rect(item['x'], item['y'], item['width'], item['height']);\n var textLocation = new Location(item['textX'], item['textY']);\n var rectOptions = new RectOption(itemId, fill, legend.shapeBorder, legend.opacity, bounds);\n if (this.treemap.enableRtl) {\n if (this.treemap.legendSettings.position === 'Left' || this.treemap.legendSettings.position === 'Right'\n || (this.treemap.legendSettings.position === 'Auto'\n && this.treemap.availableSize.width >= this.treemap.availableSize.height)) {\n rectOptions.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - (this.translate.y + rectOptions.height) - Math.abs(this.legendBorderRect.y - rectOptions.y);\n textLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - (this.translate.y) + (item['textHeight'] / 2)\n - Math.abs(this.legendBorderRect.y - textLocation.y);\n }\n else {\n rectOptions.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + rectOptions.width)\n - Math.abs(this.legendBorderRect.x - rectOptions.x);\n textLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - this.translate.x - Math.abs(this.legendBorderRect.x - textLocation.x);\n }\n }\n 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 render = treemap.renderer;\n var shapeBorder = legend.shapeBorder;\n var eventArgs;\n if (page >= 0 && page < this.totalPages.length) {\n if (document.getElementById(this.legendGroup.id)) {\n document.getElementById(this.legendGroup.id).remove();\n }\n var isLineShape_1 = (legend.shape === 'HorizontalLine' || legend.shape === 'VerticalLine' || legend.shape === 'Cross');\n var strokeColor_1 = isLineShape_1 ? isNullOrUndefined(legend.fill) ? '#000000' : legend.fill : shapeBorder.color;\n var strokeWidth_1 = isLineShape_1 ? (shapeBorder.width === 0) ? 1 : shapeBorder.width : shapeBorder.width;\n var _loop_1 = function (i) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this_1.totalPages[page]['Collection'][i];\n var legendText = collection['DisplayText'];\n var legendElement = render.createGroup({ id: treemap.element.id + '_Legend_Index_' + i });\n legendElement.setAttribute('aria-label', legendText + ' Legend');\n legendElement.setAttribute('role', 'region');\n var shapeId = treemap.element.id + '_Legend_Shape_Index_' + i;\n var textId = treemap.element.id + '_Legend_Text_Index_' + i;\n var shapeLocation = collection['Shape'];\n var textLocation = collection['Text'];\n if (treemap.enableRtl) {\n legendRtlLocation = this_1.defaultLegendRtlLocation(collection, spacing, treemap, legend);\n shapeLocation = legendRtlLocation['shapeLocation'];\n textLocation = legendRtlLocation['textLocation'];\n }\n eventArgs = {\n cancel: false, name: legendItemRendering, treemap: treemap, fill: collection['Fill'],\n shape: legend.shape, imageUrl: legend.imageUrl\n };\n treemap.trigger(legendItemRendering, eventArgs, function (observedArgs) {\n var renderOptions = new PathOption(shapeId, observedArgs.fill, strokeWidth_1, isLineShape_1 ? collection['Fill'] : strokeColor_1, legend.opacity, '');\n legendElement.appendChild(drawSymbol(shapeLocation, observedArgs.shape, shapeSize, observedArgs.imageUrl, renderOptions));\n textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'start', legendText, '', '');\n renderTextElement(textOptions, legend.textStyle, legend.textStyle.color || treemap.themeStyle.legendTextColor, legendElement);\n _this.legendGroup.appendChild(legendElement);\n });\n };\n var this_1 = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (var i = 0; i < this.totalPages[page]['Collection'].length; i++) {\n _loop_1(i);\n }\n var pagingGroup = void 0;\n var width = spacing;\n var height = (spacing / 2);\n if (this.page !== 0) {\n var pagingText = (page + 1) + '/' + this.totalPages.length;\n var pagingFont = legend.textStyle;\n var pagingTextSize = measureText(pagingText, pagingFont);\n var leftPageX = (this.legendItemRect.x + this.legendItemRect.width) - pagingTextSize.width -\n (width * 2) - spacing;\n var rightPageX = (this.legendItemRect.x + this.legendItemRect.width);\n var locY = (this.legendItemRect.y + this.legendItemRect.height) + (height / 2) + spacing;\n var pageTextX = rightPageX - width - (pagingTextSize.width / 2) - (spacing / 2);\n pagingGroup = render.createGroup({ id: treemap.element.id + '_Legend_Paging_Group' });\n var leftPageElement = render.createGroup({ id: treemap.element.id + '_Legend_Left_Paging_Group' });\n var rightPageElement = render.createGroup({ id: treemap.element.id + '_Legend_Right_Paging_Group' });\n var rightPath = ' M ' + rightPageX + ' ' + locY + ' L ' + (rightPageX - width) + ' ' + (locY - height) +\n ' L ' + (rightPageX - width) + ' ' + (locY + height) + ' z ';\n var leftPath = ' M ' + leftPageX + ' ' + locY + ' L ' + (leftPageX + width) + ' ' + (locY - height) +\n ' L ' + (leftPageX + width) + ' ' + (locY + height) + ' z ';\n var leftPageOptions = new PathOption(treemap.element.id + '_Left_Page', '#a6a6a6', 0, '#a6a6a6', 1, '', leftPath);\n leftPageElement.appendChild(render.drawPath(leftPageOptions));\n var leftRectPageOptions = new RectOption(treemap.element.id + '_Left_Page_Rect', 'transparent', {}, 1, new Rect(leftPageX - (width / 2), (locY - (height * 2)), width * 2, spacing * 2), '');\n leftPageElement.appendChild(render.drawRectangle(leftRectPageOptions));\n this.wireEvents(leftPageElement);\n var rightPageOptions = new PathOption(treemap.element.id + '_Right_Page', '#a6a6a6', 0, '#a6a6a6', 1, '', rightPath);\n rightPageElement.appendChild(render.drawPath(rightPageOptions));\n var rightRectPageOptions = new RectOption(treemap.element.id + '_Right_Page_Rect', 'transparent', {}, 1, new Rect((rightPageX - width), (locY - height), width, spacing), '');\n rightPageElement.appendChild(render.drawRectangle(rightRectPageOptions));\n this.wireEvents(rightPageElement);\n pagingGroup.appendChild(leftPageElement);\n pagingGroup.appendChild(rightPageElement);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var pageTextOptions = {\n 'id': treemap.element.id + '_Paging_Text',\n 'x': pageTextX,\n 'y': locY + (pagingTextSize.height / 4),\n 'fill': '#a6a6a6',\n 'font-size': '14px',\n 'font-style': pagingFont.fontStyle,\n 'font-family': pagingFont.fontFamily,\n 'font-weight': pagingFont.fontWeight,\n 'text-anchor': 'middle',\n 'transform': '',\n 'opacity': 1,\n 'dominant-baseline': '',\n 'role': 'region',\n 'aria-label': pagingText\n };\n pagingGroup.appendChild(render.createText(pageTextOptions, pagingText));\n this.legendGroup.appendChild(pagingGroup);\n }\n }\n };\n TreeMapLegend.prototype.renderLegendBorder = function () {\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n var legendTitle = legend.title.text;\n var spacing = 10;\n var textStyle = legend.titleStyle;\n var title = textTrim((this.legendItemRect.width + (spacing * 2)), legendTitle, textStyle);\n var textSize = measureText(title, textStyle);\n this.legendBorderRect = new Rect((this.legendItemRect.x - spacing), (this.legendItemRect.y - spacing - textSize.height), (this.legendItemRect.width) + (spacing * 2), (this.legendItemRect.height) + (spacing * 2) + textSize.height +\n (legend.mode === 'Interactive' ? 0 : (this.page !== 0) ? spacing : 0));\n var borderStyle = {\n color: legend.border.color || this.treemap.themeStyle.legendBorderColor,\n width: legend.border.width || this.treemap.themeStyle.legendBorderWidth\n };\n var renderOptions = new RectOption(treemap.element.id + '_Legend_Border', legend.background, borderStyle, 1, this.legendBorderRect, '');\n var legendBorder = treemap.renderer.drawRectangle(renderOptions);\n legendBorder.style.pointerEvents = 'none';\n this.legendGroup.appendChild(legendBorder);\n this.getLegendAlignment(treemap, this.legendBorderRect.width, this.legendBorderRect.height, legend);\n this.legendGroup.setAttribute('transform', 'translate( ' + (this.translate.x + (-(this.legendBorderRect.x))) + ' ' +\n (this.translate.y + (-(this.legendBorderRect.y))) + ' )');\n treemap.svgObject.appendChild(this.legendGroup);\n };\n TreeMapLegend.prototype.renderLegendTitle = function () {\n var legend = this.treemap.legendSettings;\n var textStyle = legend.titleStyle;\n var legendTitle = legend.title.text;\n var textOptions;\n var spacing = 10;\n var trimTitle = textTrim((this.legendItemRect.width + (spacing * 2)), legendTitle, textStyle);\n var textSize = measureText(trimTitle, textStyle);\n if (legendTitle) {\n textOptions = new TextOption(this.treemap.element.id + '_LegendTitle', (this.legendItemRect.x) + (this.legendItemRect.width / 2), this.legendItemRect.y - (textSize.height / 2) - (spacing / 2), 'middle', trimTitle, '');\n var textElement = renderTextElement(textOptions, textStyle, textStyle.color ||\n this.treemap.themeStyle.legendTitleColor, this.legendGroup);\n textElement.setAttribute('role', 'region');\n textElement.setAttribute('aria-label', legendTitle);\n }\n };\n /**\n * To rendered the interactive pointer\n *\n * @param {PointerEvent | TouchEvent} e - Specifies the pointer argument.\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.renderInteractivePointer = function (e) {\n var treemap = this.treemap;\n var target = e.target;\n var interactiveId = treemap.element.id + '_Interactive_Legend';\n target = !(e.type.indexOf('touch') > -1) ? target :\n document.elementFromPoint(e.changedTouches[0].clientX, e.changedTouches[0].clientY);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetItem;\n var legend = treemap.legendSettings;\n if (target.id.indexOf('_Item_Index') > -1 && legend.visible && this.legendRenderingCollections.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = void 0;\n var legendRect = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data = void 0;\n var fill = void 0;\n var stroke = void 0;\n var strokeWidth = void 0;\n var legendElement = void 0;\n targetItem = treemap.layout.renderItems[parseFloat(target.id.split('_Item_Index_')[1])];\n var svgRect = treemap.svgObject.getBoundingClientRect();\n for (var i = 0; i < this.legendCollections.length; i++) {\n currentData = this.legendCollections[i];\n legendElement = document.getElementById(treemap.element.id + '_Legend_Index_' + i);\n legendRect = legendElement.getBoundingClientRect();\n var rect = new Rect(Math.abs(legendRect.left - svgRect.left), Math.abs(legendRect.top - svgRect.top), legendRect.width, legendRect.height);\n fill = legendElement.getAttribute('fill');\n stroke = legend.shapeBorder.color;\n strokeWidth = legend.shapeBorder.width;\n if (!isNullOrUndefined(currentData['legendData'])) {\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);\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 /**\n * @param {PointerEvent} e - Specifies the event.\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.mouseUpHandler = function (e) {\n this.renderInteractivePointer(e);\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeInteractivePointer.bind(this), 3000);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To remove the interactive pointer\n *\n * @private\n */\n TreeMapLegend.prototype.removeInteractivePointer = function () {\n if (document.getElementById(this.treemap.element.id + '_Interactive_Legend')) {\n var legendElementId = document.getElementById(this.treemap.element.id + '_Interactive_Legend');\n legendElementId.parentNode.removeChild(legendElementId);\n }\n };\n /**\n * To change the next page\n *\n * @param {PointerEvent} e - Specifies the pointer event argument.\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.changeNextPage = function (e) {\n this.currentPage = (e.target.id.indexOf('_Left_Page_') > -1) ? (this.currentPage - 1) :\n (this.currentPage + 1);\n if (this.currentPage >= 0 && this.currentPage < this.totalPages.length) {\n this.drawLegend();\n }\n else {\n this.currentPage = (e.target.id.indexOf('_Left_Page_') > -1) ? 0 : this.totalPages.length - 1;\n }\n };\n /**\n * Wire events for event handler\n *\n * @param {Element} element - Specifies the element.\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.wireEvents = function (element) {\n EventHandler.add(element, Browser.touchStartEvent, this.changeNextPage, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To add the event listener\n *\n * @private\n */\n TreeMapLegend.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.renderInteractivePointer, this);\n this.treemap.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To remove the event listener\n *\n * @private\n */\n TreeMapLegend.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.renderInteractivePointer);\n this.treemap.off(Browser.touchEndEvent, this.mouseUpHandler);\n };\n /**\n * Get module name.\n *\n * @returns {string} Returns the legend module name.\n */\n TreeMapLegend.prototype.getModuleName = function () {\n return 'treeMapLegend';\n };\n /**\n * To destroy the legend.\n *\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.destroy = function () {\n clearTimeout(this.clearTimeout);\n this.clearTimeout = null;\n this.legendRenderingCollections = [];\n this.legendCollections = [];\n this.outOfRangeLegend = null;\n this.totalPages = [];\n this.translate = null;\n this.legendBorderRect = null;\n this.legendGroup = null;\n this.legendNames = [];\n this.defsElement = null;\n this.legendLinearGradient = null;\n this.legendInteractiveGradient = [];\n this.legendItemRect = null;\n this.removeEventListener();\n this.treemap = null;\n };\n /**\n * Get the gradient color for interactive legend.\n *\n * @param {ColorMappingModel} colorMap - Specifies the color mapping instance.\n * @param {number} legendIndex - Specifies the index of legend.\n * @returns {string} - Returns the legend color.\n * @private\n */\n TreeMapLegend.prototype.legendGradientColor = function (colorMap, legendIndex) {\n var legendFillColor;\n var xmlns = 'http://www.w3.org/2000/svg';\n if (!isNullOrUndefined(colorMap.color) && Object.prototype.toString.call(colorMap.color) === '[object Array]') {\n var defElement = this.treemap.renderer.createDefs();\n var linerGradientEle = document.createElementNS(xmlns, 'linearGradient');\n var opacity = 1;\n var position = this.treemap.legendSettings.position;\n var x2 = position === 'Top' || position === 'Bottom' ? '100' : '0';\n var y2 = position === 'Top' || position === 'Bottom' ? '0' : '100';\n linerGradientEle.setAttribute('id', 'linear_' + legendIndex);\n linerGradientEle.setAttribute('x1', 0 + '%');\n linerGradientEle.setAttribute('y1', 0 + '%');\n linerGradientEle.setAttribute('x2', x2 + '%');\n linerGradientEle.setAttribute('y2', y2 + '%');\n for (var b = 0; b < colorMap.color.length; b++) {\n var offsetColor = 100 / (colorMap.color.length - 1);\n var stopEle = document.createElementNS(xmlns, 'stop');\n stopEle.setAttribute('offset', b * offsetColor + '%');\n stopEle.setAttribute('stop-color', colorMap.color[b]);\n stopEle.setAttribute('stop-opacity', opacity.toString());\n linerGradientEle.appendChild(stopEle);\n }\n defElement.appendChild(linerGradientEle);\n this.legendLinearGradient = linerGradientEle;\n var color = 'url(' + '#linear_' + legendIndex + ')';\n this.defsElement.appendChild(linerGradientEle);\n legendFillColor = color;\n }\n return legendFillColor;\n };\n return TreeMapLegend;\n}());\nexport { TreeMapLegend };\n","import { Browser } from '@syncfusion/ej2-base';\nimport { itemHighlight, itemSelected } from '../model/constants';\nimport { findHightLightItems, removeClassNames, applyOptions, removeShape, removeLegend, removeSelectionWithHighlight, setColor, getLegendIndex, pushCollection, setItemTemplateContent } from '../utils/helper';\n/**\n * Performing treemap highlight\n */\nvar TreeMapHighlight = /** @class */ (function () {\n function TreeMapHighlight(treeMap) {\n this.target = 'highlight';\n this.shapeTarget = 'highlight';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.shapeHighlightCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendHighlightCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentElement = [];\n this.treemap = treeMap;\n this.addEventListener();\n }\n /**\n * Mouse down event in highlight\n *\n * @param {PointerEvent} e - Specifies the pointer argument.\n * @returns {boolean} - return the highlight process is true or false.\n * @private\n */\n TreeMapHighlight.prototype.mouseMove = function (e) {\n var treemap = this.treemap;\n var processHighlight;\n var targetId = e.target.id;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var eventArgs;\n var items = [];\n var highlight = this.treemap.highlightSettings;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n var highLightElements = [];\n var process;\n var treeMapElement;\n var element;\n var orders;\n var selectionModule = this.treemap.treeMapSelectionModule;\n 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);\n this.shapeHighlightCollection.push({ legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n setColor(this.shapeElement, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n this.target = 'highlight';\n }\n else if (this.currentElement.length > 0 && this.currentElement[this.currentElement.length - 1]['currentElement'] !== this.shapeElement) {\n removeSelectionWithHighlight(this.shapeHighlightCollection, this.currentElement, treemap);\n this.highLightId = '';\n }\n }\n else if (this.currentElement.length > 0 && this.currentElement[this.currentElement.length - 1]['currentElement'] !== this.shapeElement) {\n removeSelectionWithHighlight(this.shapeHighlightCollection, this.currentElement, treemap);\n this.highLightId = '';\n }\n }\n orders = findHightLightItems(item, [], highlight.mode, treemap);\n if (this.treemap.legendSettings.visible ? selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true : true) {\n if (this.treemap.legendSettings.visible ? selectionModule ?\n this.shapeElement !== selectionModule.shapeElement : true : true) {\n for (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)\n && (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);\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 ?\n selectionModule.legendSelect : true) {\n removeShape(this.shapeHighlightCollection);\n this.shapeHighlightCollection = [];\n }\n }\n }\n if (this.shapeTarget === 'highlight' && this.treemap.legendSettings.visible) {\n removeLegend(this.legendHighlightCollection);\n }\n this.highLightId = '';\n processHighlight = false;\n }\n return processHighlight;\n };\n /**\n * To bind events for highlight\n *\n * @returns {void}\n */\n TreeMapHighlight.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.mouseMove, this);\n };\n /**\n * To unbind events for highlight\n *\n * @returns {void}\n */\n TreeMapHighlight.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.mouseMove);\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name\n */\n TreeMapHighlight.prototype.getModuleName = function () {\n return 'treeMapHighlight';\n };\n /**\n * To destroy the hightlight.\n *\n * @returns {void}\n * @private\n */\n TreeMapHighlight.prototype.destroy = function () {\n this.shapeElement = null;\n this.shapeHighlightCollection = [];\n this.legendHighlightCollection = [];\n this.currentElement = [];\n this.removeEventListener();\n this.treemap = null;\n };\n return TreeMapHighlight;\n}());\nexport { TreeMapHighlight };\n/**\n * Performing treemap selection\n */\nvar TreeMapSelection = /** @class */ (function () {\n function TreeMapSelection(treeMap) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.shapeSelectionCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendSelectionCollection = [];\n this.shapeSelect = true;\n this.legendSelect = true;\n this.treemap = treeMap;\n this.addEventListener();\n }\n /**\n * Mouse down event in selection\n *\n * @param {PointerEvent} e - Specifies the pointer argument.\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.mouseDown = function (e) {\n var targetEle = e.target;\n var eventArgs;\n var treemap = this.treemap;\n 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 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);\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);\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);\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);\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);\n index = getLegendIndex(length_5, items[m], this.treemap);\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index) : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index);\n if (this.shapeElement !== null) {\n this.shapeSelectId = this.shapeElement.getAttribute('id');\n this.treemap.legendId.push(this.shapeSelectId);\n this.shapeSelectionCollection.push({\n legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n setColor(this.shapeElement, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n }\n }\n }\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', this.treemap);\n var selectionElement = document.getElementById(this.treemap.levelSelection[0]);\n this.treemap.selectionId = selectionElement.childNodes[0]['id'];\n var highLightElements = document.getElementsByClassName('treeMapHighLight');\n for (var k = 0; k < selectionElements.length; k++) {\n element = selectionElements[k];\n if (highLightElements.length > 0) {\n for (var j = 0; j < highLightElements.length; j++) {\n if (highLightElements[j].id === element.id) {\n highLightElements[j].classList.remove('treeMapHighLight');\n }\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n else {\n selection.fill = selection.fill === 'null' ?\n this.treemap.layout.renderItems[parseInt(element.id.split('Item_Index_')[1], 10)]['options']['fill']\n : selection.fill;\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n }\n else {\n removeShape(this.shapeSelectionCollection);\n this.shapeElement = undefined;\n this.treemap.levelSelection = [];\n this.shapeSelect = true;\n this.shapeSelectId = '';\n this.treemap.legendId = [];\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', this.treemap);\n this.treemap.selectionId = '';\n }\n };\n /**\n * To bind events for selection\n *\n * @returns {void}\n */\n TreeMapSelection.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchStartEvent, this.mouseDown, this);\n };\n /**\n * To unbind events for selection\n *\n * @returns {void}\n */\n TreeMapSelection.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchStartEvent, this.mouseDown);\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n TreeMapSelection.prototype.getModuleName = function () {\n return 'treeMapSelection';\n };\n /**\n * To destroy the selection.\n *\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.destroy = function () {\n this.shapeElement = null;\n this.shapeSelectionCollection = [];\n this.legendSelectionCollection = [];\n this.removeEventListener();\n this.treemap = null;\n };\n return TreeMapSelection;\n}());\nexport { TreeMapSelection };\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport { Tooltip } from '@syncfusion/ej2-svg-base';\nimport { Browser, createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getMousePosition, textFormatter, formatValue } from '../utils/helper';\nimport { tooltipRendering } from '../model/constants';\n/**\n * Render Tooltip\n */\nvar TreeMapTooltip = /** @class */ (function () {\n function TreeMapTooltip(treeMap) {\n this.treemap = treeMap;\n this.tooltipSettings = this.treemap.tooltipSettings;\n this.tooltipId = this.treemap.element.id + '_TreeMapTooltip';\n this.addEventListener();\n }\n TreeMapTooltip.prototype.renderTooltip = function (e) {\n var _this = this;\n var pageX;\n var pageY;\n var target;\n var touchArg;\n var tootipArgs;\n if (e.type.indexOf('touch') !== -1) {\n this.isTouch = true;\n touchArg = e;\n pageX = touchArg.changedTouches[0].pageX;\n pageY = touchArg.changedTouches[0].pageY;\n target = touchArg.target;\n }\n else {\n this.isTouch = e.pointerType === 'touch';\n pageX = e.pageX;\n pageY = e.pageY;\n target = e.target;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value;\n var targetId = target.id;\n var item = {};\n var tooltipEle;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var location;\n var toolTipData = {};\n var tooltipContent = [];\n var markerFill;\n if (targetId.indexOf('_Item_Index') > -1) {\n item = this.treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n if (!isNullOrUndefined(item)) {\n value = item['weight'];\n toolTipData = item['data'];\n if (!isNullOrUndefined(item['options'])) {\n markerFill = item['options']['fill'];\n }\n if (this.treemap.enableRtl) {\n tooltipContent = [(!isNullOrUndefined(this.tooltipSettings.format) ?\n textFormatter(this.tooltipSettings.format, toolTipData, this.treemap) : null)\n || formatValue(value, this.treemap) + ' : ' + this.treemap.weightValuePath.toString()];\n }\n else {\n tooltipContent = [(!isNullOrUndefined(this.tooltipSettings.format) ?\n textFormatter(this.tooltipSettings.format, toolTipData, this.treemap) : null)\n || this.treemap.weightValuePath.toString() + ' : ' + formatValue(value, this.treemap)];\n }\n if (document.getElementById(this.tooltipId)) {\n tooltipEle = document.getElementById(this.tooltipId);\n }\n else {\n tooltipEle = createElement('div', {\n id: this.treemap.element.id + '_TreeMapTooltip',\n className: 'EJ2-TreeMap-Tooltip'\n });\n tooltipEle.style.cssText = 'position: absolute;pointer-events:none;';\n document.getElementById(this.treemap.element.id + '_Secondary_Element').appendChild(tooltipEle);\n }\n location = getMousePosition(pageX, pageY, this.treemap.svgObject);\n location.y = (this.tooltipSettings.template) ? location.y + 10 : location.y;\n this.tooltipSettings.textStyle.size = this.tooltipSettings.textStyle.size || this.treemap.themeStyle.tooltipFontSize;\n this.tooltipSettings.textStyle.fontFamily = this.tooltipSettings.textStyle.fontFamily || this.treemap.themeStyle.fontFamily;\n this.tooltipSettings.textStyle.fontStyle = !isNullOrUndefined(this.tooltipSettings.textStyle.fontStyle) ? this.tooltipSettings.textStyle.fontStyle : 'Normal';\n this.tooltipSettings.textStyle.fontWeight = this.tooltipSettings.textStyle.fontWeight || this.treemap.themeStyle.fontWeight;\n this.tooltipSettings.textStyle.color = this.treemap.themeStyle.tooltipFontColor\n || this.tooltipSettings.textStyle.color;\n this.tooltipSettings.textStyle.opacity = this.treemap.themeStyle.tooltipTextOpacity\n || this.tooltipSettings.textStyle.opacity;\n var border = {\n width: this.tooltipSettings.border.width || this.treemap.themeStyle.tooltipBorderWidth || 0,\n color: this.tooltipSettings.border.color || this.treemap.themeStyle.tooltipBorderColor || 'transparent'\n };\n tootipArgs = {\n cancel: false, name: tooltipRendering, item: item,\n options: {\n location: location, text: tooltipContent, data: toolTipData, border: border,\n textStyle: this.tooltipSettings.textStyle, template: this.tooltipSettings.template\n },\n treemap: this.treemap,\n element: target, eventArgs: e\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.treemap.trigger(tooltipRendering, tootipArgs, function (args) {\n _this.addTooltip(tootipArgs, markerFill, tooltipEle);\n });\n }\n }\n else {\n this.removeTooltip();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.clearTemplate();\n }\n };\n TreeMapTooltip.prototype.addTooltip = function (tootipArgs, markerFill, tooltipEle, eventArgs) {\n var cancel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var args;\n if (!isNullOrUndefined(tootipArgs)) {\n var c = tootipArgs.cancel, otherArgs = __rest(tootipArgs, [\"cancel\"]);\n cancel = c;\n args = otherArgs.options;\n }\n else {\n cancel = eventArgs.cancel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args = eventArgs;\n }\n if (!cancel) {\n this.svgTooltip = new Tooltip({\n theme: this.treemap.theme,\n enable: true,\n header: '',\n data: args['data'],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n template: args['template'],\n content: args['text'],\n shapes: [],\n location: args['location'],\n palette: [markerFill],\n areaBounds: this.treemap.areaRect,\n textStyle: args['textStyle'],\n fill: this.treemap.tooltipSettings.fill ? this.treemap.tooltipSettings.fill : this.treemap.themeStyle.tooltipFillColor,\n border: args['border'],\n enableShadow: true\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.treemap.isVue || this.treemap.isVue3) {\n this.svgTooltip.controlInstance = this.treemap;\n }\n this.svgTooltip.opacity = this.treemap.themeStyle.tooltipFillOpacity || this.svgTooltip.opacity;\n this.svgTooltip.appendTo(tooltipEle);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.renderReactTemplates();\n }\n else {\n this.removeTooltip();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.clearTemplate();\n }\n };\n TreeMapTooltip.prototype.mouseUpHandler = function (e) {\n this.renderTooltip(e);\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeTooltip.bind(this), 2000);\n };\n TreeMapTooltip.prototype.removeTooltip = function () {\n if (document.getElementsByClassName('EJ2-TreeMap-Tooltip').length > 0) {\n var tooltipElementId = document.getElementsByClassName('EJ2-TreeMap-Tooltip')[0];\n tooltipElementId.parentNode.removeChild(tooltipElementId);\n }\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To bind events for tooltip module\n *\n * @private\n */\n TreeMapTooltip.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.renderTooltip, this);\n this.treemap.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To unbind events for tooltip module\n *\n * @private\n */\n TreeMapTooltip.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.renderTooltip);\n this.treemap.off(Browser.touchEndEvent, this.mouseUpHandler);\n };\n /**\n * Get module name.\n *\n * @returns {string} returns string\n */\n TreeMapTooltip.prototype.getModuleName = function () {\n return 'treeMapTooltip';\n };\n /**\n * To destroy the tooltip.\n *\n * @returns {void}\n * @private\n */\n TreeMapTooltip.prototype.destroy = function () {\n if (!isNullOrUndefined(this.svgTooltip)) {\n this.svgTooltip.destroy();\n }\n this.svgTooltip = null;\n this.tooltipSettings = null;\n this.removeEventListener();\n this.treemap = null;\n };\n return TreeMapTooltip;\n}());\nexport { TreeMapTooltip };\n"],"names":["extendStatics","_super","load","loaded","beforePrint","itemRendering","drillStart","drillEnd","itemSelected","itemHighlight","tooltipRendering","itemClick","itemMove","click","doubleClick","rightClick","mouseMove","legendItemRendering","legendRendering","resize","defaultFont","__extends","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","Border","ChildProperty","Property","apply","Margin","Font","CommonTitleSettings","SubTitleSettings","Complex","fontFamily","fontWeight","TitleSettings","ColorMapping","LegendSettings","size","color","width","x","y","InitialDrillSettings","LeafItemSettings","Collection","TooltipSettings","SelectionSettings","HighlightSettings","LevelSettings","Size","height","stringToNumber","value","containerSize","indexOf","parseInt","Rect","RectOption","id","fill","border","opacity","rect","dashArray","stroke","PathOption","measureText","text","font","measureObject","document","getElementById","createElement","body","appendChild","innerHTML","SanitizeHtmlHelper","sanitize","style","position","fontSize","fontStyle","visibility","top","left","whiteSpace","lineHeight","clientWidth","clientHeight","TextOption","anchor","transform","baseLine","connectorText","textTrim","maxWidth","label","substring","Location","findPosition","location","alignment","textSize","type","createTextStyle","renderer","renderOptions","htmlObject","createText","setAttributeNS","renderTextElement","options","parent","isMinus","font-size","font-style","font-family","font-weight","text-anchor","dominant-baseline","SvgRenderer","isNullOrUndefined","search","drillLevelText","split","z","drillText","replace","len","tspanElement","createTSpan","setItemTemplateContent","targetId","targetElement","contentItemTemplate","itemSelect","itemTemplate","querySelector","getElement","itemsToOrder","a","isContainsData","source","pathName","processData","treemap","isExist","name","leaf","leafItemSettings","data","levels","groupPath","labelPath","weightValuePath","findChildren","keys","children","findHightLightItems","items","mode","treeMap","push","j","parentName","currentItem","layout","renderItems","getTemplateFunction","template","templateFn","querySelectorAll","compile","trim","e","convertElement","element","labelId","childElement","elementLength","cssText","templateHtml","regExp","RegExp","toString","findLabelLocation","labelSize","areaRect","Math","abs","enableDrillDown","renderDirection","measureElement","parentElement","measureElementId","offsetHeight","offsetWidth","parentNode","removeChild","getArea","getShortestEdge","input","container","convertToContainer","min","convertToRect","xOffset","yOffset","getMousePosition","pageX","pageY","elementRect","getBoundingClientRect","pageXOffset","ownerDocument","defaultView","pageYOffset","clientTop","documentElement","clientLeft","positionX","positionY","colorMap","colorMapping","equalValue","paths","isNaN","isEqualColor","dataValue","from","to","call","colorCollections","minOpacity","maxOpacity","deSaturationColor","rangeValue","getColorByValue","rgbToHex","g","componentToHex","Number","rbg","getGradientColor","previousOffset","nextOffset","percent","full","previousColor","charAt","colorNameToHex","nextColor","splitColor","length_1","splitColorValueOffset","getPercentageColor","previous","next","prevColor","getPercentage","substr","ColorValue","round","wordWrap","maximumWidth","dataLabel","textCollection","labelCollection","concat","textWrap","resultText","currentLength","totalWidth","totalLength","sliceString","slice","hide","maxHeight","orderByArea","maintainSelection","className","elementId","levelSelection","index","getAttribute","childElementCount","setAttribute","applyOptions","childNodes","selectionSettings","legendMaintain","legendGroup","legendId","treemapSVGRectElement","removeClassNames","elements","parseFloat","classList","remove","textFormatter","format","_i","keys_1","join","formatValue","intl","getNumberFormat","useGrouping","useGroupingSeparator","convertToHexCode","hex","convertHexToColor","result","exec","isRGBValue","window","getComputedStyle","drawSymbol","shape","url","svgRenderer","temp","renderLegendShape","functionName","renderOption","renderPath","shapeWidth","shapeHeight","shapeX","shapeY","merge","rx","ry","cx","cy","xValue","yValue","cos","PI","sin","href","isParentItem","item","TreeMapAjax","async","contentType","sendData","dataOptions","removeShape","collection","setColor","removeLegend","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","LayoutPanel","processLayoutPanel","totalRect","treemapLevelData","levelsData","initialDrillDown","groupIndex","groupName","drilledItems","getDrilldownData","extend","legendSettings","currentLevel","calculateLayoutItems","count","enableBreadcrumb","renderLayoutItems","drillData","newData","child","parentData","layoutType","computeSliceAndDiceDimensional","computeSquarifyDimensional","coords","gap","headerHeight","leafItem","groups","sliceAndDiceProcess","groupGap","showHeader","childValue","parentArea","alottedValue","totalWeight","isHorizontal","forEach","sort","isHierarchicalData","padding","calculateChildrenLayout","groupPadding","computeTotalArea","performRowsLayout","currentRow","stack","newCoordinates","getCoordinates","nextDatum","restData","aspectRatio","newRow","currentRowLength","valueSum","newContainer","cutArea","newStack","currentMaxAspectRatio","findMaxAspectRatio","row","rowLength","minArea","Infinity","maxArea","sumArea","area","max","pow","areaHeight","areaWidth","isParent","parentRect","subXOffset","subYOffset","coordinates","x1","y1","dataLength_1","dataSum","i_1","multiplier","datum","onDemandProcess","childItems","parentItem","parentItemGroupname","splice","txtVisible","eventArgs","templatePosition","renderText","groupId","templateEle","textStyle","itemGroup","_this","elementID","interSectAction","rectPath","secondaryEle","templateGroup","layoutGroup","createGroup","isLeafItem","this_1","_loop_1","drillDownView","levelName","treemapItemRect","getItemColor","labelFormat","headerFormat","showLabels","breadcrumbConnector","enableRtl","labelStyle","headerStyle","themeStyle","labelFontFamily","labelFontSize","labelPosition","labelTemplate","headerTemplate","cancel","RenderItems","trigger","observedArgs","pathOptions","path","drawPath","renderItemText","renderTemplate","renderReactTemplates","enable","highlightSettings","tabIndex","cursor","svgObject","tspanText","customText","labelInterSectAction","textLocation","drillSymbolCount","drillSymbolSize","texts","maxNumber","collectionLength","stringText","textName","getSaturatedColor","itemFill","itemOpacity","defaultLevelsData","option","equalColorValuePath","rangeColorValuePath","colorValuePath","palette","saturatedColor","rgbValue","backgroundColor","labelElement","templateId","baseTemplateId","templateLocation","textValue","destroy","currentRect","getThemeStyle","theme","toLowerCase","titleFontColor","titleFontWeight","subTitleFontColor","tooltipFillColor","tooltipFontColor","tooltipFontSize","legendTitleColor","legendTextColor","subtitleFontSize","legendFontSize","legendBorderColor","legendBorderWidth","tooltipFillOpacity","tooltipTextOpacity","tooltipBorderColor","tooltipBorderWidth","Theme","mapsTitleFont","Print","print","printWindow","open","outerHeight","outerWidth","argsData","moveTo","resizeTo","screen","availWidth","availHeight","htmlContent","getHTMLContent","printFunction","backgroundElement","div","cloneNode","Element","exportElement","getElementsByTagName","getModuleName","control","ImageExport","export","allowDownload","Promise","resolve","reject","image_1","context_1","availableSize","Browser","userAgent","svgData","outerHTML","URL","createObjectURL","Blob","XMLSerializer","serializeToString","Image","getContext","onload","drawImage","revokeObjectURL","toDataURL","src","PdfExport","orientation","PdfPageOrientation","Landscape","image","context","PdfDocument","imageString","pageSettings","pages","add","graphics","PdfBitmap","save","TreeMap","Component","preRender","initPrivateVariable","unWireEVents","createSvg","wireEVents","setCulture","render","renderElements","LevelsData","hierarchyData","createSecondaryElement","addTabIndex","renderBorder","renderTitle","titleSettings","processDataManager","dataModule","queryModule","dataSource","DataManager","query","Query","executeQuery","then","renderTreeMapElements","localAjax","fetchApiModule","Fetch","onSuccess","args","reader_1","treemap_1","FileReader","JSON","parse","readAsText","send","processingData","visible","renderLegend","elementChange","isResized","isResize","renderComplete","firstChild","hasChildNodes","clearTemplate","containerWidth","containerHeight","secondaryElement","insertBefore","borderElement","background","borderRect","drawRectangle","title","bounds","groupEle","margin","right","elementSize","trimmedTitle","location_1","titleBounds","description","subtitleSettings","bottom","map","checkIsHierarchicalData","data_1","level","currentData","levelOrderName","weight","processHierarchicalData","processFlatJsonData","reOrderLevelData","findTotalWeight","levelIndex","childData","childItemLevel","childLevel","mainData_1","l","allowPrint","printModule","allowPdfExport","pdfExportModule","allowImageExport","imageExportModule","orderNames","childName","name_1","childGroupPath","start","currentPath","prevPath","previousData","currentName","IsChildHierarchy","current","isChild","groupObj","EventHandler","clickOnTreeMap","doubleClickOnTreeMap","rightClickOnTreeMap","touchStartEvent","mouseDownOnTreeMap","touchMoveEvent","mouseMoveOnTreeMap","touchEndEvent","mouseEndOnTreeMap","mouseLeaveOnTreeMap","removeEventListener","resizeEvent","resizeOnTreeMap","bind","addEventListener","Internationalization","args_1","isDestroyed","previousSize","currentSize","clearTimeout","contains","setTimeout","refreshing","doubleTapTimer1","targetEle","labelText","end","mouseEvent","preventDefault","itemIndex","textContent","Date","getMilliseconds","mouseDown","notify","calculateSelectedTextLevels","drillLevel","levelText","_a","currentLevelLabel","calculatePreviousLevelChildItems","drillLevelValues","directLevel","text1","drillTextLevel","h","levelItems","compareSelectedLabelWithDrillDownItems","drillLevelChild","newDrillItem","layoutID","templateID","drillMouseMove","drillLength","startEvent","which","drillElementId","layerElementId","widthIncrement","heightIncrement","drilledLegendItems","endEvent","treeMapTooltipModule","removeTooltip","removeInteractivePointer","treeMapHighlightModule","shapeHighlightCollection","highLightId","selectItem","levelOrder","isSelected","treeMapSelectionModule","selectTreemapItem","requiredModules","modules","tooltipSettings","member","onPropertyChanged","newProp","oldProp","removeSvg","doubleTapTimer","getPersistData","Event","NotifyPropertyChanges","TreeMapLegend","page","legendRenderingCollections","legendNames","totalPages","gradientCount","defsElement","createDefs","_changePosition","calculateLegendBounds","drawLegend","legend","findColorMappingLegendItems","findPaletteLegendItems","firstItem","nextItem","leafIndex","legendTitle","titleTextStyle","titleStyle","legendMode","textX","textY","shapeLocation","orientation_1","legendWidth","legendHeight","legendTitleSize","startX_1","startY_1","shapePadding","itemTextStyle","maxSize","prevPositionY","nextPositionX","legendItem","legendTextSize","Page","textMaxWidth","prvePositionX","nextPositionY","getPageChanged","DisplayText","Shape","Text","Fill","Data","legendObj","legendRect","legendItemRect","legendLength","rectWidth","rectHeight","placement","itemStartX","itemStartY","labelAction","labelDisplayMode","maxTextHeight","maxTextWidth","legendText","itemTextSize","textWidth","textHeight","calculateLegendItems","legendFillColor","legendName","showLegendPath","valuePath","removeDuplicateLegend","removeDuplicates","legendFill","legendData","itemArea","isAddData","actualValue","isRange","otherIndex","colorMapProcess","isDesaturation","legendIndex","outOfRangeLegend","gradientElement","showLegend","isAddNewLegendData","colors","q","stop1Color","colorStop","stop2Color","gradient","x2","y2","drawGradient","isDuplicate","legendGradientColor","legendLinearGradient","outfill","labelLegend","newDataProcess","itemValue","process","textFont","renderLegendBorder","renderLegendTitle","drawLegendItem","currentPage","itemId","textId","rectOptions","shapeBorder","translate","legendBorderRect","defaultLegendRtlLocation","spacing","shapeSize","isLineShape_1","strokeColor_1","strokeWidth_1","shapeId","legendRtlLocation","imageUrl","pagingText","pagingFont","pagingTextSize","rightPageX","locY","pageTextX","leftPageElement","rightPageElement","rightPageOptions","rightRectPageOptions","pageTextOptions","pagingGroup","leftPageX","rightPath","leftPageOptions","leftRectPageOptions","wireEvents","role","aria-label","borderStyle","legendBorder","pointerEvents","getLegendAlignment","trimTitle","textElement","renderInteractivePointer","interactiveId","elementFromPoint","changedTouches","clientX","clientY","targetItem","svgRect","strokeWidth","drawInteractivePointer","locX","invertedPointer","areaX","areaY","totalHeight","mouseUpHandler","legendElementId","changeNextPage","on","off","legendInteractiveGradient","xmlns","defElement","linerGradientEle","createElementNS","offsetColor","stopEle","TreeMapHighlight","processHighlight","orders","highlight","highLightElements","selectionModule","selectionId","treeMapElement","selectionElements","legendSelectId","currentElement","shapeSelectId","length_2","shapeTarget","legendHighlightCollection","nodeEle","Elements","TreeMapSelection","selection","highlightModule","legendSelect","shapeSelect","length_3","undefined","shapeSelectionCollection","length_4","targetEle_1","legendSelectionCollection","s","m","length_5","selectionElement","__rest","t","getOwnPropertySymbols","TreeMapTooltip","renderTooltip","tooltipEle","toolTipData","markerFill","tootipArgs","isTouch","pointerType","tooltipContent","tooltipId","addTooltip","svgTooltip","Tooltip","header","content","shapes","areaBounds","enableShadow","isVue","isVue3","controlInstance","appendTo","tooltipElementId"],"mappings":"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"}
|