@syncfusion/ej2-treemap 23.2.4 → 24.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"ej2-treemap.min.js","sources":["../../src/treemap/utils/helper.js","../../src/treemap/model/theme.js","../../src/treemap/model/constants.js","../../src/treemap/model/base.js","../../src/treemap/layout/render-panel.js","../../src/treemap/model/print.js","../../src/treemap/model/image-export.js","../../src/treemap/model/pdf-export.js","../../src/treemap/treemap.js","../../src/treemap/layout/legend.js","../../src/treemap/user-interaction/highlight-selection.js","../../src/treemap/user-interaction/tooltip.js","../../src/global.js"],"sourcesContent":["import { createElement, compile, merge, isNullOrUndefined, remove, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\n/**\n * Specifies the size parameters.\n */\nvar Size = /** @class */ (function () {\n function Size(width, height) {\n this.width = width;\n this.height = height;\n }\n return Size;\n}());\nexport { Size };\n/**\n *\n * @param {string} value - specifies the text.\n * @param {number} containerSize - specifies the container size value.\n * @returns {number} - Returns the number value which is converted from string.\n */\nexport function stringToNumber(value, containerSize) {\n if (value !== null && value !== undefined) {\n return value.indexOf('%') !== -1 ? (containerSize / 100) * parseInt(value, 10) : parseInt(value, 10);\n }\n return null;\n}\n/**\n * Internal use of type rect\n *\n * @private\n */\nvar Rect = /** @class */ (function () {\n function Rect(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n return Rect;\n}());\nexport { Rect };\n/**\n * Internal use of rectangle options\n *\n * @private\n */\nvar RectOption = /** @class */ (function () {\n function RectOption(id, fill, border, opacity, rect, dashArray) {\n this.y = rect.y;\n this.x = rect.x;\n this.height = rect.height;\n this.width = rect.width;\n this.id = id;\n this.fill = fill;\n this.opacity = opacity;\n this.stroke = border.color;\n this['stroke-width'] = border.width;\n this['stroke-dasharray'] = dashArray;\n }\n return RectOption;\n}());\nexport { RectOption };\nvar PathOption = /** @class */ (function () {\n function PathOption(id, fill, width, color, opacity, dashArray, d) {\n this.id = id;\n this.opacity = opacity;\n this.fill = fill;\n this.stroke = color;\n this['stroke-width'] = width;\n this['stroke-dasharray'] = dashArray;\n this.d = d;\n }\n return PathOption;\n}());\nexport { PathOption };\n/**\n * Function to measure the height and width of the text.\n *\n * @param {string} text - Specifies the text.\n * @param {FontModel} font - Specifies the font.\n * @returns {Size} - Returns the size.\n * @private\n */\nexport function measureText(text, font) {\n var measureObject = document.getElementById('treeMapMeasureText');\n if (measureObject === null) {\n measureObject = createElement('text', { id: 'treeMapMeasureText' });\n document.body.appendChild(measureObject);\n }\n measureObject.innerHTML = SanitizeHtmlHelper.sanitize(text);\n measureObject.style.position = 'absolute';\n measureObject.style.fontSize = font.size;\n measureObject.style.fontWeight = font.fontWeight;\n measureObject.style.fontStyle = font.fontStyle;\n measureObject.style.fontFamily = font.fontFamily;\n measureObject.style.visibility = 'hidden';\n measureObject.style.top = '-100';\n measureObject.style.left = '0';\n measureObject.style.whiteSpace = 'nowrap';\n // For bootstrap line height issue\n measureObject.style.lineHeight = 'normal';\n return new Size(measureObject.clientWidth, measureObject.clientHeight);\n}\n/**\n * Internal use of text options\n *\n * @private\n */\nvar TextOption = /** @class */ (function () {\n function TextOption(id, x, y, anchor, text, transform, baseLine, connectorText) {\n if (transform === void 0) { transform = ''; }\n this.transform = '';\n this.baseLine = 'auto';\n this.id = id;\n this.text = text;\n this.transform = transform;\n this.anchor = anchor;\n this.x = x;\n this.y = y;\n this.baseLine = baseLine;\n this.connectorText = connectorText;\n }\n return TextOption;\n}());\nexport { TextOption };\n/**\n * Trim the title text\n *\n * @param {number} maxWidth - Specifies the maximum width\n * @param {string} text - Specifies the text\n * @param {FontModel} font - Specifies the font\n * @returns {string} - Returns the string\n * @private\n */\nexport function textTrim(maxWidth, text, font) {\n var label = text;\n var size = measureText(text, font).width;\n if (size > maxWidth) {\n var textLength = text.length;\n for (var i = textLength - 1; i >= 0; --i) {\n label = text.substring(0, i) + '...';\n size = measureText(label, font).width;\n if (size <= maxWidth || label.length < 4) {\n if (label.length < 4) {\n label = ' ';\n }\n return label;\n }\n }\n }\n return label;\n}\n/**\n * Specifies the location parameters.\n */\nvar Location = /** @class */ (function () {\n function Location(x, y) {\n this.x = x;\n this.y = y;\n }\n return Location;\n}());\nexport { Location };\n/**\n * Method to calculate x position of title\n *\n * @param {Rect} location - Specifies the location of text.\n * @param {Alignment} alignment - Specifies the alignment of the text.\n * @param {Size} textSize - Specifies the size of the text.\n * @param {type} type - Specifies whether the provided text is title or subtitle.\n * @returns {Location} - Returns the location of text.\n * @private\n */\nexport function findPosition(location, alignment, textSize, type) {\n var x;\n switch (alignment) {\n case 'Near':\n x = location.x;\n break;\n case 'Center':\n x = (type === 'title') ? (location.width / 2 - textSize.width / 2) :\n ((location.x + (location.width / 2)) - textSize.width / 2);\n break;\n case 'Far':\n x = (type === 'title') ? (location.width - location.y - textSize.width) :\n ((location.x + location.width) - textSize.width);\n break;\n }\n var y = (type === 'title') ? location.y + (textSize.height / 2) : ((location.y + location.height / 2) + textSize.height / 2);\n return new Location(x, y);\n}\n/**\n *\n * @param {SvgRenderer} renderer - Specifies the rendering element of the SVG.\n * @param {any} renderOptions - Specifies the settings of the text.\n * @param {string} text - Specifies the text.\n * @returns {HTMLElement} - Returns the HTML element for the text.\n */\nexport function createTextStyle(renderer, renderOptions, text) {\n var htmlObject = renderer.createText(renderOptions, text);\n htmlObject.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n htmlObject.style['user-select'] = 'none';\n htmlObject.style['-moz-user-select'] = 'none';\n htmlObject.style['-webkit-touch-callout'] = 'none';\n htmlObject.style['-webkit-user-select'] = 'none';\n htmlObject.style['-khtml-user-select'] = 'none';\n htmlObject.style['-ms-user-select'] = 'none';\n htmlObject.style['-o-user-select'] = 'none';\n return htmlObject;\n}\n/**\n * Internal rendering of text\n *\n * @param {TextOption} options - Specifies the text option\n * @param {FontModel} font - Specifies the font model\n * @param {string} color - Specifies the color\n * @param {HTMLElement | Element} parent - Specifies the parent element of the text\n * @param {boolean} isMinus - Specifies the boolean value\n * @returns {Element} - Returns the element\n * @private\n */\nexport function renderTextElement(options, font, color, parent, isMinus) {\n if (isMinus === void 0) { isMinus = false; }\n var renderOptions = {\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily,\n 'font-weight': font.fontWeight,\n 'text-anchor': options.anchor,\n 'transform': options.transform,\n 'opacity': font.opacity,\n 'dominant-baseline': options.baseLine,\n 'id': options.id,\n 'x': options.x,\n 'y': options.y,\n 'fill': color\n };\n var text = typeof options.text === 'string' ? options.text : isMinus ? options.text[options.text.length - 1] : options.text[0];\n var tspanElement;\n var renderer = new SvgRenderer('');\n var height;\n var htmlObject;\n var breadCrumbText = !isNullOrUndefined(text) && !isNullOrUndefined(options.connectorText) ?\n (text.search(options.connectorText[1]) >= 0) : false;\n if (breadCrumbText) {\n var drilledLabel = text;\n var spacing = 5;\n var drillLevelText = drilledLabel.split('#');\n for (var z = 0; z < drillLevelText.length; z++) {\n var drillText = (drillLevelText[z].search(options.connectorText) !== -1 &&\n !isNullOrUndefined(options.connectorText)) ?\n options.connectorText : drillLevelText[z];\n renderOptions['id'] = options.id + '_' + z;\n htmlObject = createTextStyle(renderer, renderOptions, drillText);\n if (z % 2 === 0 && z !== 0) {\n var re = /\\s+/g;\n drillText = drillText.replace(re, '&nbsp');\n }\n var size = measureText(drillText, font);\n renderOptions['x'] = z !== 0 ? renderOptions['x'] + size.width : renderOptions['x'] + size.width + spacing;\n parent.appendChild(htmlObject);\n }\n }\n else {\n htmlObject = createTextStyle(renderer, renderOptions, text);\n parent.appendChild(htmlObject);\n }\n if (typeof options.text !== 'string' && options.text.length > 1) {\n for (var i = 1, len = options.text.length; i < len; i++) {\n height = (measureText(options.text[i], font).height);\n tspanElement = renderer.createTSpan({\n 'x': options.x, 'id': options.id,\n 'y': (options.y) + (i * height)\n }, options.text[i]);\n htmlObject.appendChild(tspanElement);\n }\n parent.appendChild(htmlObject);\n }\n return htmlObject;\n}\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 htmlElement.setAttribute('aria-label', label);\n htmlElement.setAttribute('role', 'region');\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: '12px', 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: '14px' }, Font)\n ], LegendSettings.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('Bottom')\n ], LegendSettings.prototype, \"position\", void 0);\n __decorate([\n Property('None')\n ], LegendSettings.prototype, \"orientation\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"invertedPointer\", void 0);\n __decorate([\n Property('After')\n ], LegendSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('None')\n ], LegendSettings.prototype, \"labelDisplayMode\", void 0);\n __decorate([\n Property('Center')\n ], LegendSettings.prototype, \"alignment\", void 0);\n __decorate([\n Property({ x: 0, y: 0 })\n ], LegendSettings.prototype, \"location\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"showLegendPath\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"valuePath\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"removeDuplicateLegend\", void 0);\n return LegendSettings;\n}(ChildProperty));\nexport { LegendSettings };\n/**\n * Sets and gets the settings for drill 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: defaultFont, 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 + i + 2).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', '');\n element.setAttribute('tabindex', (this.tabIndex + (type === 'title' ? 1 : 2)).toString());\n if ((type === 'title' && !title.subtitleSettings.text) || (type === 'subtitle')) {\n height = (this.availableSize.height - titleBounds.y - titlePadding - this.margin.bottom);\n this.areaRect = new Rect(this.margin.left, titleBounds.y + titlePadding, width, height);\n }\n if (type !== 'subtitle' && title.subtitleSettings.text) {\n this.renderTitle(title.subtitleSettings, 'subtitle', titleBounds, groupEle);\n }\n else {\n this.svgObject.appendChild(groupEle);\n }\n }\n else {\n height = (this.availableSize.height - this.margin.top - this.margin.bottom);\n this.areaRect = new Rect(this.margin.left, this.margin.top, width, height);\n }\n };\n TreeMap.prototype.processingData = function () {\n var _this = this;\n var path;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource = this.dataSource;\n if (!isNullOrUndefined(this.dataSource) && this.dataSource.length > 0 && this.weightValuePath) {\n 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 if (this.enableDrillDown || (this.selectionSettings.enable || this.highlightSettings.enable)) {\n this.element.setAttribute('role', 'button');\n this.element.setAttribute('tabindex', this.tabIndex.toString());\n this.element.style.cursor = this.highlightSettings.enable && !this.selectionSettings.enable && !this.enableDrillDown ? 'default' : 'pointer';\n }\n else {\n this.element.setAttribute('role', 'region');\n }\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 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 });\n }\n if (this.highlightSettings.enable) {\n modules.push({\n member: 'treeMapHighlight',\n args: [this]\n });\n }\n if (this.selectionSettings.enable) {\n modules.push({\n member: 'treeMapSelection',\n args: [this]\n });\n }\n if (this.legendSettings.visible) {\n modules.push({\n member: 'treeMapLegend',\n args: [this]\n });\n }\n if (this.allowPrint) {\n modules.push({\n member: 'Print',\n args: [this, Print]\n });\n }\n if (this.allowImageExport) {\n modules.push({\n member: 'ImageExport',\n args: [this, ImageExport]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this, PdfExport]\n });\n }\n return modules;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TreeMapModel} newProp - Specifies the new property\n * @param {TreeMapModel} oldProp - Specifies the old property\n * @returns {void}\n * @private\n */\n // 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 };\n TreeMap.prototype.removeSvg = function () {\n removeElement(this.element.id + '_Secondary_Element');\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Returns the string value.\n * @private\n */\n TreeMap.prototype.getPersistData = function () {\n return '';\n };\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowPrint\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowImageExport\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"height\", void 0);\n __decorate([\n Complex({}, Border)\n ], TreeMap.prototype, \"border\", void 0);\n __decorate([\n Complex({}, Margin)\n ], TreeMap.prototype, \"margin\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"background\", void 0);\n __decorate([\n Property('Material')\n ], TreeMap.prototype, \"theme\", void 0);\n __decorate([\n Complex({}, TitleSettings)\n ], TreeMap.prototype, \"titleSettings\", void 0);\n __decorate([\n Property('Squarified')\n ], TreeMap.prototype, \"layoutType\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"weightValuePath\", void 0);\n __decorate([\n Property('')\n ], TreeMap.prototype, \"rangeColorValuePath\", void 0);\n __decorate([\n Property('')\n ], TreeMap.prototype, \"equalColorValuePath\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"colorValuePath\", void 0);\n __decorate([\n Property([])\n ], TreeMap.prototype, \"palette\", void 0);\n __decorate([\n Property('TopLeftBottomRight')\n ], TreeMap.prototype, \"renderDirection\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"enableDrillDown\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"enableBreadcrumb\", void 0);\n __decorate([\n Property(' - ')\n ], TreeMap.prototype, \"breadcrumbConnector\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"drillDownView\", void 0);\n __decorate([\n Complex({}, InitialDrillSettings)\n ], TreeMap.prototype, \"initialDrillDown\", void 0);\n __decorate([\n Complex({}, LeafItemSettings)\n ], TreeMap.prototype, \"leafItemSettings\", void 0);\n __decorate([\n Collection([], LevelSettings)\n ], TreeMap.prototype, \"levels\", void 0);\n __decorate([\n Complex({}, HighlightSettings)\n ], TreeMap.prototype, \"highlightSettings\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], TreeMap.prototype, \"selectionSettings\", void 0);\n __decorate([\n Complex({}, TooltipSettings)\n ], TreeMap.prototype, \"tooltipSettings\", void 0);\n __decorate([\n Complex({}, LegendSettings)\n ], TreeMap.prototype, \"legendSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"useGroupingSeparator\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"description\", void 0);\n __decorate([\n Property(1)\n ], TreeMap.prototype, \"tabIndex\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"format\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"drillStart\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"drillEnd\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemSelected\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemHighlight\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"tooltipRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemMove\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"doubleClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"rightClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"mouseMove\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"resize\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"legendItemRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"legendRendering\", void 0);\n TreeMap = __decorate([\n NotifyPropertyChanges\n ], TreeMap);\n return TreeMap;\n}(Component));\nexport { TreeMap };\n/**\n * @private\n */\nvar LevelsData = /** @class */ (function () {\n function LevelsData() {\n }\n return LevelsData;\n}());\nexport { LevelsData };\n","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 = treemap.themeStyle.fontFamily || titleTextStyle.fontFamily;\n titleTextStyle.fontWeight = titleTextStyle.fontWeight || treemap.themeStyle.titleFontWeight;\n titleTextStyle.size = treemap.themeStyle.legendFontSize || titleTextStyle.size;\n var legendTitleSize = measureText(legendTitle, titleTextStyle);\n var startX_1 = 0;\n var startY_1 = 0;\n var shapePadding = legend.shapePadding;\n var 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 legendElement = render.createGroup({ id: treemap.element.id + '_Legend_Index_' + i });\n var legendText = collection['DisplayText'];\n var shapeId = treemap.element.id + '_Legend_Shape_Index_' + i;\n var textId = treemap.element.id + '_Legend_Text_Index_' + i;\n var shapeLocation = collection['Shape'];\n var textLocation = collection['Text'];\n if (treemap.enableRtl) {\n legendRtlLocation = this_1.defaultLegendRtlLocation(collection, spacing, treemap, legend);\n shapeLocation = legendRtlLocation['shapeLocation'];\n textLocation = legendRtlLocation['textLocation'];\n }\n eventArgs = {\n cancel: false, name: legendItemRendering, treemap: treemap, fill: collection['Fill'],\n shape: legend.shape, imageUrl: legend.imageUrl\n };\n 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 };\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 renderTextElement(textOptions, textStyle, textStyle.color || this.treemap.themeStyle.legendTitleColor, this.legendGroup);\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 this.legendRenderingCollections = [];\n this.legendCollections = [];\n this.outOfRangeLegend = null;\n this.totalPages = [];\n this.translate = null;\n this.legendBorderRect = null;\n this.legendGroup = null;\n this.legendNames = [];\n this.defsElement = null;\n this.legendLinearGradient = null;\n this.legendInteractiveGradient = [];\n this.legendItemRect = null;\n this.removeEventListener();\n //TODO: The removeInteractivePointer method (calling method) is called in a timer in the mouseUpHandler method. Because of this handling, adding the below code results in a spec failure.\n //this.treemap = null;\n };\n /**\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, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getMousePosition, textFormatter, formatValue } from '../utils/helper';\nimport { tooltipRendering } from '../model/constants';\n/**\n * Render Tooltip\n */\nvar TreeMapTooltip = /** @class */ (function () {\n function TreeMapTooltip(treeMap) {\n this.treemap = treeMap;\n this.tooltipSettings = this.treemap.tooltipSettings;\n this.tooltipId = this.treemap.element.id + '_TreeMapTooltip';\n this.addEventListener();\n }\n TreeMapTooltip.prototype.renderTooltip = function (e) {\n var _this = this;\n var pageX;\n var pageY;\n var target;\n var touchArg;\n var tootipArgs;\n if (e.type.indexOf('touch') !== -1) {\n this.isTouch = true;\n touchArg = e;\n pageX = touchArg.changedTouches[0].pageX;\n pageY = touchArg.changedTouches[0].pageY;\n target = touchArg.target;\n }\n else {\n this.isTouch = e.pointerType === 'touch';\n pageX = e.pageX;\n pageY = e.pageY;\n target = e.target;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value;\n var targetId = target.id;\n var item = {};\n var tooltipEle;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var location;\n var toolTipData = {};\n var tooltipContent = [];\n var markerFill;\n if (targetId.indexOf('_Item_Index') > -1) {\n item = this.treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n if (!isNullOrUndefined(item)) {\n value = item['weight'];\n toolTipData = item['data'];\n if (!isNullOrUndefined(item['options'])) {\n markerFill = item['options']['fill'];\n }\n if (this.treemap.enableRtl) {\n tooltipContent = [SanitizeHtmlHelper.sanitize(textFormatter(this.tooltipSettings.format, toolTipData, this.treemap)) ||\n SanitizeHtmlHelper.sanitize(formatValue(value, this.treemap) + ' : ' + this.treemap.weightValuePath.toString())];\n }\n else {\n tooltipContent = [SanitizeHtmlHelper.sanitize(textFormatter(this.tooltipSettings.format, toolTipData, this.treemap)) ||\n SanitizeHtmlHelper.sanitize(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.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 });\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","import * as index from './index';\nindex.TreeMap.Inject(index.TreeMapTooltip, index.TreeMapLegend, index.TreeMapHighlight, index.TreeMapSelection, index.Print, index.PdfExport, index.ImageExport);\nexport * from './index';\n"],"names":["stringToNumber","value","containerSize","undefined","indexOf","parseInt","measureText","text","font","measureObject","document","getElementById","createElement","id","body","appendChild","innerHTML","SanitizeHtmlHelper","sanitize","style","position","fontSize","size","fontWeight","fontStyle","fontFamily","visibility","top","left","whiteSpace","lineHeight","Size","clientWidth","clientHeight","textTrim","maxWidth","label","width","i","length","substring","findPosition","location","alignment","textSize","type","x","y","height","Location","createTextStyle","renderer","renderOptions","htmlObject","createText","setAttributeNS","renderTextElement","options","color","parent","isMinus","tspanElement","font-size","font-style","font-family","font-weight","text-anchor","anchor","transform","opacity","dominant-baseline","baseLine","fill","SvgRenderer","isNullOrUndefined","connectorText","search","drillLevelText","split","z","drillText","replace","len","createTSpan","setItemTemplateContent","targetId","targetElement","contentItemTemplate","itemTemplate","itemSelect","querySelector","getElement","itemsToOrder","a","b","isContainsData","source","pathName","processData","treemap","path","isExist","name","leaf","leafItemSettings","data","levels","groupPath","labelPath","weightValuePath","findChildren","children","keys","Object","Array","findHightLightItems","items","mode","treeMap","push","j","parentName","currentItem","layout","renderItems","getTemplateFunction","template","templateFn","querySelectorAll","compile","trim","e","convertElement","element","labelId","childElement","cssText","elementLength","templateHtml","regExp","RegExp","toString","findLabelLocation","rect","labelSize","areaRect","Math","abs","enableDrillDown","renderDirection","measureElement","parentElement","offsetHeight","offsetWidth","measureElementId","parentNode","removeChild","getArea","getShortestEdge","input","container","convertToContainer","min","convertToRect","xOffset","yOffset","getMousePosition","pageX","pageY","elementRect","getBoundingClientRect","pageXOffset","ownerDocument","defaultView","pageYOffset","clientTop","documentElement","clientLeft","positionX","positionY","colorMap","colorMapping","equalValue","paths","isNaN","isEqualColor","dataValue","from","to","prototype","call","colorCollections","minOpacity","maxOpacity","deSaturationColor","rangeValue","getColorByValue","rgbToHex","r","g","componentToHex","rbg","Number","getGradientColor","previousOffset","nextOffset","percent","full","previousColor","nextColor","charAt","colorNameToHex","length_1","splitColorValueOffset","splitColor","getPercentageColor","previous","next","prevColor","getPercentage","substr","ColorValue","round","wordWrap","maximumWidth","dataLabel","textCollection","labelCollection","concat","textWrap","resultText","currentLength","totalWidth","totalLength","sliceString","slice","hide","maxHeight","orderByArea","maintainSelection","className","elementId","levelSelection","index","getAttribute","childElementCount","setAttribute","applyOptions","childNodes","border","selectionSettings","legendMaintain","legendGroup","legendId","treemapSVGRectElement","removeClassNames","elements","parseFloat","classList","remove","textFormatter","format","_i","keys_1","key","join","formatValue","intl","getNumberFormat","useGrouping","useGroupingSeparator","convertToHexCode","hex","convertHexToColor","result","exec","isRGBValue","window","getComputedStyle","drawSymbol","shape","url","svgRenderer","temp","renderLegendShape","htmlElement","functionName","renderOption","renderPath","shapeWidth","shapeHeight","shapeX","shapeY","merge","rx","ry","cx","cy","d","xValue","yValue","cos","PI","sin","href","isParentItem","item","removeShape","collection","setColor","removeLegend","dataCount","k","borderColor","borderWidth","removeSelectionWithHighlight","getElementsByClassName","getLegendIndex","dataLength","treeMapLegendModule","legendCollections","pushCollection","number","legendElement","shapeElement","legendCollection","legendEle","oldFill","oldOpacity","oldBorderColor","oldBorderWidth","shapeOldFill","shapeOldOpacity","shapeOldBorderColor","shapeOldBorderWidth","triggerDownload","fileName","isDownload","attrs","download","toLocaleLowerCase","dispatchEvent","MouseEvent","view","bubbles","cancelable","removeElement","getThemeStyle","theme","toLowerCase","backgroundColor","titleFontColor","titleFontWeight","subTitleFontColor","tooltipFillColor","tooltipFontColor","tooltipFontSize","legendTitleColor","legendTextColor","subtitleFontSize","legendFontSize","tooltipFillOpacity","tooltipTextOpacity","labelFontFamily","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","this_1","drillDownView","treemapItemRect","labelFormat","headerFormat","levelName","showLabels","breadcrumbConnector","enableRtl","labelStyle","headerStyle","themeStyle","labelPosition","labelTemplate","headerTemplate","cancel","RenderItems","trigger","observedArgs","drawPath","renderItemText","renderTemplate","renderReactTemplates","enable","highlightSettings","tabIndex","cursor","svgObject","customText","textName","tspanText","labelInterSectAction","drillSymbolCount","drillSymbolSize","textLocation","texts","maxNumber","collectionLength","stringText","getSaturatedColor","itemFill","itemOpacity","defaultLevelsData","option","equalColorValuePath","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","doubleClick","doubleClickArgs","rightClickArgs","mouseDown","notify","moveArgs","calculateSelectedTextLevels","drillLevel","levelText","_a","currentLevelLabel","calculatePreviousLevelChildItems","drillLevelValues","directLevel","levelItems","text1","drillTextLevel","h","compareSelectedLabelWithDrillDownItems","drillLevelChild","newDrillItem","startEvent","endEvent","layoutID","templateID","drillMouseMove","drillLength","rightClick","which","layerElementId","widthIncrement","heightIncrement","drilledLegendItems","drillElementId","treeMapTooltipModule","removeTooltip","removeInteractivePointer","treeMapHighlightModule","shapeHighlightCollection","highLightId","selectItem","levelOrder","isSelected","treeMapSelectionModule","selectTreemapItem","requiredModules","modules","tooltipSettings","member","onPropertyChanged","newProp","oldProp","removeSvg","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","textOptions","legendRtlLocation","shapeSize","isLineShape_1","strokeColor_1","strokeWidth_1","shapeId","imageUrl","pagingGroup","pagingText","pagingFont","pagingTextSize","leftPageX","rightPageX","locY","pageTextX","leftPageElement","rightPageElement","rightPath","leftPath","leftPageOptions","leftRectPageOptions","wireEvents","rightPageOptions","rightRectPageOptions","pageTextOptions","legendBorder","pointerEvents","getLegendAlignment","trimTitle","renderInteractivePointer","interactiveId","elementFromPoint","changedTouches","clientX","clientY","targetItem","strokeWidth","svgRect","drawInteractivePointer","locX","invertedPointer","areaX","areaY","totalHeight","mouseUpHandler","legendElementId","changeNextPage","on","off","xmlns","defElement","linerGradientEle","createElementNS","offsetColor","stopEle","TreeMapHighlight","shapeTarget","legendHighlightCollection","currentElement","mouseMove","processHighlight","treeMapElement","orders","highlight","highLightElements","selectionModule","selectionId","selectionElements","legendSelectId","shapeSelectId","length_2","nodeEle","Elements","legendSelect","TreeMapSelection","shapeSelectionCollection","legendSelectionCollection","shapeSelect","selection","highlightModule","length_3","length_4","targetEle_1","s","m","length_5","selectionElement","__rest","t","getOwnPropertySymbols","TreeMapTooltip","tooltipId","renderTooltip","touchArg","tootipArgs","isTouch","pointerType","tooltipEle","markerFill","toolTipData","tooltipContent","addTooltip","svgTooltip","Tooltip","header","content","shapes","areaBounds","isVue","isVue3","controlInstance","appendTo","tooltipElementId","index.TreeMap","Inject","index.TreeMapTooltip","index.TreeMapLegend","index.TreeMapHighlight","index.TreeMapSelection","index.Print","index.PdfExport","index.ImageExport"],"mappings":"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"}
1
+ {"version":3,"file":"ej2-treemap.min.js","sources":["../../src/treemap/utils/helper.js","../../src/treemap/model/theme.js","../../src/treemap/model/constants.js","../../src/treemap/model/base.js","../../src/treemap/layout/render-panel.js","../../src/treemap/model/print.js","../../src/treemap/model/image-export.js","../../src/treemap/model/pdf-export.js","../../src/treemap/treemap.js","../../src/treemap/layout/legend.js","../../src/treemap/user-interaction/highlight-selection.js","../../src/treemap/user-interaction/tooltip.js","../../src/global.js"],"sourcesContent":["import { createElement, compile, merge, isNullOrUndefined, remove, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\n/**\n * Specifies the size parameters.\n */\nvar Size = /** @class */ (function () {\n function Size(width, height) {\n this.width = width;\n this.height = height;\n }\n return Size;\n}());\nexport { Size };\n/**\n *\n * @param {string} value - specifies the text.\n * @param {number} containerSize - specifies the container size value.\n * @returns {number} - Returns the number value which is converted from string.\n */\nexport function stringToNumber(value, containerSize) {\n if (value !== null && value !== undefined) {\n return value.indexOf('%') !== -1 ? (containerSize / 100) * parseInt(value, 10) : parseInt(value, 10);\n }\n return null;\n}\n/**\n * Internal use of type rect\n *\n * @private\n */\nvar Rect = /** @class */ (function () {\n function Rect(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n return Rect;\n}());\nexport { Rect };\n/**\n * Internal use of rectangle options\n *\n * @private\n */\nvar RectOption = /** @class */ (function () {\n function RectOption(id, fill, border, opacity, rect, dashArray) {\n this.y = rect.y;\n this.x = rect.x;\n this.height = rect.height;\n this.width = rect.width;\n this.id = id;\n this.fill = fill;\n this.opacity = opacity;\n this.stroke = border.color;\n this['stroke-width'] = border.width;\n this['stroke-dasharray'] = dashArray;\n }\n return RectOption;\n}());\nexport { RectOption };\nvar PathOption = /** @class */ (function () {\n function PathOption(id, fill, width, color, opacity, dashArray, d) {\n this.id = id;\n this.opacity = opacity;\n this.fill = fill;\n this.stroke = color;\n this['stroke-width'] = width;\n this['stroke-dasharray'] = dashArray;\n this.d = d;\n }\n return PathOption;\n}());\nexport { PathOption };\n/**\n * Function to measure the height and width of the text.\n *\n * @param {string} text - Specifies the text.\n * @param {FontModel} font - Specifies the font.\n * @returns {Size} - Returns the size.\n * @private\n */\nexport function measureText(text, font) {\n var measureObject = document.getElementById('treeMapMeasureText');\n if (measureObject === null) {\n measureObject = createElement('text', { id: 'treeMapMeasureText' });\n document.body.appendChild(measureObject);\n }\n measureObject.innerHTML = SanitizeHtmlHelper.sanitize(text);\n measureObject.style.position = 'absolute';\n measureObject.style.fontSize = font.size;\n measureObject.style.fontWeight = font.fontWeight;\n measureObject.style.fontStyle = font.fontStyle;\n measureObject.style.fontFamily = font.fontFamily;\n measureObject.style.visibility = 'hidden';\n measureObject.style.top = '-100';\n measureObject.style.left = '0';\n measureObject.style.whiteSpace = 'nowrap';\n // For bootstrap line height issue\n measureObject.style.lineHeight = 'normal';\n return new Size(measureObject.clientWidth, measureObject.clientHeight);\n}\n/**\n * Internal use of text options\n *\n * @private\n */\nvar TextOption = /** @class */ (function () {\n function TextOption(id, x, y, anchor, text, transform, baseLine, connectorText) {\n if (transform === void 0) { transform = ''; }\n this.transform = '';\n this.baseLine = 'auto';\n this.id = id;\n this.text = text;\n this.transform = transform;\n this.anchor = anchor;\n this.x = x;\n this.y = y;\n this.baseLine = baseLine;\n this.connectorText = connectorText;\n }\n return TextOption;\n}());\nexport { TextOption };\n/**\n * Trim the title text\n *\n * @param {number} maxWidth - Specifies the maximum width\n * @param {string} text - Specifies the text\n * @param {FontModel} font - Specifies the font\n * @returns {string} - Returns the string\n * @private\n */\nexport function textTrim(maxWidth, text, font) {\n var label = text;\n var size = measureText(text, font).width;\n if (size > maxWidth) {\n var textLength = text.length;\n for (var i = textLength - 1; i >= 0; --i) {\n label = text.substring(0, i) + '...';\n size = measureText(label, font).width;\n if (size <= maxWidth || label.length < 4) {\n if (label.length < 4) {\n label = ' ';\n }\n return label;\n }\n }\n }\n return label;\n}\n/**\n * Specifies the location parameters.\n */\nvar Location = /** @class */ (function () {\n function Location(x, y) {\n this.x = x;\n this.y = y;\n }\n return Location;\n}());\nexport { Location };\n/**\n * Method to calculate x position of title\n *\n * @param {Rect} location - Specifies the location of text.\n * @param {Alignment} alignment - Specifies the alignment of the text.\n * @param {Size} textSize - Specifies the size of the text.\n * @param {type} type - Specifies whether the provided text is title or subtitle.\n * @returns {Location} - Returns the location of text.\n * @private\n */\nexport function findPosition(location, alignment, textSize, type) {\n var x;\n switch (alignment) {\n case 'Near':\n x = location.x;\n break;\n case 'Center':\n x = (type === 'title') ? (location.width / 2 - textSize.width / 2) :\n ((location.x + (location.width / 2)) - textSize.width / 2);\n break;\n case 'Far':\n x = (type === 'title') ? (location.width - location.y - textSize.width) :\n ((location.x + location.width) - textSize.width);\n break;\n }\n var y = (type === 'title') ? location.y + (textSize.height / 2) : ((location.y + location.height / 2) + textSize.height / 2);\n return new Location(x, y);\n}\n/**\n *\n * @param {SvgRenderer} renderer - Specifies the rendering element of the SVG.\n * @param {any} renderOptions - Specifies the settings of the text.\n * @param {string} text - Specifies the text.\n * @returns {HTMLElement} - Returns the HTML element for the text.\n */\nexport function createTextStyle(renderer, renderOptions, text) {\n var htmlObject = renderer.createText(renderOptions, text);\n htmlObject.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n htmlObject.style['user-select'] = 'none';\n htmlObject.style['-moz-user-select'] = 'none';\n htmlObject.style['-webkit-touch-callout'] = 'none';\n htmlObject.style['-webkit-user-select'] = 'none';\n htmlObject.style['-khtml-user-select'] = 'none';\n htmlObject.style['-ms-user-select'] = 'none';\n htmlObject.style['-o-user-select'] = 'none';\n return htmlObject;\n}\n/**\n * Internal rendering of text\n *\n * @param {TextOption} options - Specifies the text option\n * @param {FontModel} font - Specifies the font model\n * @param {string} color - Specifies the color\n * @param {HTMLElement | Element} parent - Specifies the parent element of the text\n * @param {boolean} isMinus - Specifies the boolean value\n * @returns {Element} - Returns the element\n * @private\n */\nexport function renderTextElement(options, font, color, parent, isMinus) {\n if (isMinus === void 0) { isMinus = false; }\n var renderOptions = {\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily,\n 'font-weight': font.fontWeight,\n 'text-anchor': options.anchor,\n 'transform': options.transform,\n 'opacity': font.opacity,\n 'dominant-baseline': options.baseLine,\n 'id': options.id,\n 'x': options.x,\n 'y': options.y,\n 'fill': color\n };\n var text = typeof options.text === 'string' ? options.text : isMinus ? options.text[options.text.length - 1] : options.text[0];\n var tspanElement;\n var renderer = new SvgRenderer('');\n var height;\n var htmlObject;\n var breadCrumbText = !isNullOrUndefined(text) && !isNullOrUndefined(options.connectorText) ?\n (text.search(options.connectorText[1]) >= 0) : false;\n if (breadCrumbText) {\n var drilledLabel = text;\n var spacing = 5;\n var drillLevelText = drilledLabel.split('#');\n for (var z = 0; z < drillLevelText.length; z++) {\n var drillText = (drillLevelText[z].search(options.connectorText) !== -1 &&\n !isNullOrUndefined(options.connectorText)) ?\n options.connectorText : drillLevelText[z];\n renderOptions['id'] = options.id + '_' + z;\n htmlObject = createTextStyle(renderer, renderOptions, drillText);\n if (z % 2 === 0 && z !== 0) {\n var re = /\\s+/g;\n drillText = drillText.replace(re, '&nbsp');\n }\n var size = measureText(drillText, font);\n renderOptions['x'] = z !== 0 ? renderOptions['x'] + size.width : renderOptions['x'] + size.width + spacing;\n parent.appendChild(htmlObject);\n }\n }\n else {\n htmlObject = createTextStyle(renderer, renderOptions, text);\n parent.appendChild(htmlObject);\n }\n if (typeof options.text !== 'string' && options.text.length > 1) {\n for (var i = 1, len = options.text.length; i < len; i++) {\n height = (measureText(options.text[i], font).height);\n tspanElement = renderer.createTSpan({\n 'x': options.x, 'id': options.id,\n 'y': (options.y) + (i * height)\n }, options.text[i]);\n htmlObject.appendChild(tspanElement);\n }\n parent.appendChild(htmlObject);\n }\n return htmlObject;\n}\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', '');\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 });\n }\n if (this.highlightSettings.enable) {\n modules.push({\n member: 'treeMapHighlight',\n args: [this]\n });\n }\n if (this.selectionSettings.enable) {\n modules.push({\n member: 'treeMapSelection',\n args: [this]\n });\n }\n if (this.legendSettings.visible) {\n modules.push({\n member: 'treeMapLegend',\n args: [this]\n });\n }\n if (this.allowPrint) {\n modules.push({\n member: 'Print',\n args: [this, Print]\n });\n }\n if (this.allowImageExport) {\n modules.push({\n member: 'ImageExport',\n args: [this, ImageExport]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this, PdfExport]\n });\n }\n return modules;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TreeMapModel} newProp - Specifies the new property\n * @param {TreeMapModel} oldProp - Specifies the old property\n * @returns {void}\n * @private\n */\n // 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 };\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 };\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 renderTextElement(textOptions, textStyle, textStyle.color || this.treemap.themeStyle.legendTitleColor, this.legendGroup);\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 this.legendRenderingCollections = [];\n this.legendCollections = [];\n this.outOfRangeLegend = null;\n this.totalPages = [];\n this.translate = null;\n this.legendBorderRect = null;\n this.legendGroup = null;\n this.legendNames = [];\n this.defsElement = null;\n this.legendLinearGradient = null;\n this.legendInteractiveGradient = [];\n this.legendItemRect = null;\n this.removeEventListener();\n //TODO: The removeInteractivePointer method (calling method) is called in a timer in the mouseUpHandler method. Because of this handling, adding the below code results in a spec failure.\n //this.treemap = null;\n };\n /**\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","import * as index from './index';\nindex.TreeMap.Inject(index.TreeMapTooltip, index.TreeMapLegend, index.TreeMapHighlight, index.TreeMapSelection, index.Print, index.PdfExport, index.ImageExport);\nexport * from './index';\n"],"names":["stringToNumber","value","containerSize","undefined","indexOf","parseInt","measureText","text","font","measureObject","document","getElementById","createElement","id","body","appendChild","innerHTML","SanitizeHtmlHelper","sanitize","style","position","fontSize","size","fontWeight","fontStyle","fontFamily","visibility","top","left","whiteSpace","lineHeight","Size","clientWidth","clientHeight","textTrim","maxWidth","label","width","i","length","substring","findPosition","location","alignment","textSize","type","x","y","height","Location","createTextStyle","renderer","renderOptions","htmlObject","createText","setAttributeNS","renderTextElement","options","color","parent","isMinus","tspanElement","font-size","font-style","font-family","font-weight","text-anchor","anchor","transform","opacity","dominant-baseline","baseLine","fill","SvgRenderer","isNullOrUndefined","connectorText","search","drillLevelText","split","z","drillText","replace","len","createTSpan","setItemTemplateContent","targetId","targetElement","contentItemTemplate","itemTemplate","itemSelect","querySelector","getElement","itemsToOrder","a","b","isContainsData","source","pathName","processData","treemap","path","isExist","name","leaf","leafItemSettings","data","levels","groupPath","labelPath","weightValuePath","findChildren","children","keys","Object","Array","findHightLightItems","items","mode","treeMap","push","j","parentName","currentItem","layout","renderItems","getTemplateFunction","template","templateFn","querySelectorAll","compile","trim","e","convertElement","element","labelId","childElement","cssText","elementLength","templateHtml","regExp","RegExp","toString","findLabelLocation","rect","labelSize","areaRect","Math","abs","enableDrillDown","renderDirection","measureElement","parentElement","offsetHeight","offsetWidth","measureElementId","parentNode","removeChild","getArea","getShortestEdge","input","container","convertToContainer","min","convertToRect","xOffset","yOffset","getMousePosition","pageX","pageY","elementRect","getBoundingClientRect","pageXOffset","ownerDocument","defaultView","pageYOffset","clientTop","documentElement","clientLeft","positionX","positionY","colorMap","colorMapping","equalValue","paths","isNaN","isEqualColor","dataValue","from","to","prototype","call","colorCollections","minOpacity","maxOpacity","deSaturationColor","rangeValue","getColorByValue","rgbToHex","r","g","componentToHex","rbg","Number","getGradientColor","previousOffset","nextOffset","percent","full","previousColor","nextColor","charAt","colorNameToHex","length_1","splitColorValueOffset","splitColor","getPercentageColor","previous","next","prevColor","getPercentage","substr","ColorValue","round","wordWrap","maximumWidth","dataLabel","textCollection","labelCollection","concat","textWrap","resultText","currentLength","totalWidth","totalLength","sliceString","slice","hide","maxHeight","orderByArea","maintainSelection","className","elementId","levelSelection","index","getAttribute","childElementCount","setAttribute","applyOptions","childNodes","border","selectionSettings","legendMaintain","legendGroup","legendId","treemapSVGRectElement","removeClassNames","elements","parseFloat","classList","remove","textFormatter","format","_i","keys_1","key","join","formatValue","intl","getNumberFormat","useGrouping","useGroupingSeparator","convertToHexCode","hex","convertHexToColor","result","exec","isRGBValue","window","getComputedStyle","drawSymbol","shape","url","svgRenderer","temp","renderLegendShape","functionName","renderOption","renderPath","shapeWidth","shapeHeight","shapeX","shapeY","merge","rx","ry","cx","cy","d","xValue","yValue","cos","PI","sin","href","isParentItem","item","removeShape","collection","setColor","removeLegend","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","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","this_1","drillDownView","treemapItemRect","labelFormat","headerFormat","levelName","showLabels","breadcrumbConnector","enableRtl","labelStyle","headerStyle","themeStyle","labelPosition","labelTemplate","headerTemplate","cancel","RenderItems","trigger","observedArgs","drawPath","renderItemText","renderTemplate","renderReactTemplates","enable","highlightSettings","tabIndex","cursor","svgObject","customText","textName","tspanText","labelInterSectAction","drillSymbolCount","drillSymbolSize","textLocation","texts","maxNumber","collectionLength","stringText","getSaturatedColor","itemFill","itemOpacity","defaultLevelsData","option","equalColorValuePath","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","doubleClick","doubleClickArgs","rightClickArgs","mouseDown","notify","moveArgs","calculateSelectedTextLevels","drillLevel","levelText","_a","currentLevelLabel","calculatePreviousLevelChildItems","drillLevelValues","directLevel","levelItems","text1","drillTextLevel","h","compareSelectedLabelWithDrillDownItems","drillLevelChild","newDrillItem","startEvent","endEvent","layoutID","templateID","drillMouseMove","drillLength","rightClick","which","layerElementId","widthIncrement","heightIncrement","drilledLegendItems","drillElementId","treeMapTooltipModule","removeTooltip","removeInteractivePointer","treeMapHighlightModule","shapeHighlightCollection","highLightId","selectItem","levelOrder","isSelected","treeMapSelectionModule","selectTreemapItem","requiredModules","modules","tooltipSettings","member","onPropertyChanged","newProp","oldProp","removeSvg","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","textOptions","legendRtlLocation","shapeSize","isLineShape_1","strokeColor_1","strokeWidth_1","shapeId","imageUrl","pagingGroup","pagingText","pagingFont","pagingTextSize","leftPageX","rightPageX","locY","pageTextX","leftPageElement","rightPageElement","rightPath","leftPath","leftPageOptions","leftRectPageOptions","wireEvents","rightPageOptions","rightRectPageOptions","pageTextOptions","legendBorder","pointerEvents","getLegendAlignment","trimTitle","renderInteractivePointer","interactiveId","elementFromPoint","changedTouches","clientX","clientY","targetItem","strokeWidth","svgRect","drawInteractivePointer","locX","invertedPointer","areaX","areaY","totalHeight","mouseUpHandler","legendElementId","changeNextPage","on","off","xmlns","defElement","linerGradientEle","createElementNS","offsetColor","stopEle","TreeMapHighlight","shapeTarget","legendHighlightCollection","currentElement","mouseMove","processHighlight","treeMapElement","orders","highlight","highLightElements","selectionModule","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","index.TreeMap","Inject","index.TreeMapTooltip","index.TreeMapLegend","index.TreeMapHighlight","index.TreeMapSelection","index.Print","index.PdfExport","index.ImageExport"],"mappings":"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"}