@syncfusion/ej2-treemap 20.4.40 → 20.4.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/ej2-treemap.min.js +2 -2
- package/dist/ej2-treemap.umd.min.js +2 -2
- package/dist/ej2-treemap.umd.min.js.map +1 -1
- package/dist/es6/ej2-treemap.es2015.js +3 -2
- package/dist/es6/ej2-treemap.es2015.js.map +1 -1
- package/dist/es6/ej2-treemap.es5.js +3 -2
- package/dist/es6/ej2-treemap.es5.js.map +1 -1
- package/dist/global/ej2-treemap.min.js +2 -2
- package/dist/global/ej2-treemap.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +13 -11
- package/src/treemap/treemap.d.ts +1 -0
- package/src/treemap/treemap.js +3 -2
|
@@ -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 } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\n/**\n * Create the class for size\n */\nvar Size = /** @class */ (function () {\n function Size(width, height) {\n this.width = width;\n this.height = height;\n }\n return Size;\n}());\nexport { Size };\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 = text;\n measureObject.style.position = 'absolute';\n measureObject.style.fontSize = font.size;\n measureObject.style.fontWeight = font.fontWeight;\n measureObject.style.fontStyle = font.fontStyle;\n measureObject.style.fontFamily = font.fontFamily;\n measureObject.style.visibility = 'hidden';\n measureObject.style.top = '-100';\n measureObject.style.left = '0';\n measureObject.style.whiteSpace = 'nowrap';\n // For bootstrap line height issue\n measureObject.style.lineHeight = 'normal';\n return new Size(measureObject.clientWidth, measureObject.clientHeight);\n}\n/**\n * Internal use of text options\n *\n * @private\n */\nvar TextOption = /** @class */ (function () {\n function TextOption(id, x, y, anchor, text, transform, baseLine, connectorText) {\n if (transform === void 0) { transform = ''; }\n this.transform = '';\n this.baseLine = 'auto';\n this.id = id;\n this.text = text;\n this.transform = transform;\n this.anchor = anchor;\n this.x = x;\n this.y = y;\n this.baseLine = baseLine;\n this.connectorText = connectorText;\n }\n return TextOption;\n}());\nexport { TextOption };\n/**\n * Trim the title text\n *\n * @param {number} maxWidth - Specifies the maximum width\n * @param {string} text - Specifies the text\n * @param {FontModel} font - Specifies the font\n * @returns {string} - Returns the string\n * @private\n */\nexport function textTrim(maxWidth, text, font) {\n var label = text;\n var size = measureText(text, font).width;\n if (size > maxWidth) {\n var textLength = text.length;\n for (var i = textLength - 1; i >= 0; --i) {\n label = text.substring(0, i) + '...';\n size = measureText(label, font).width;\n if (size <= maxWidth || label.length < 4) {\n if (label.length < 4) {\n label = ' ';\n }\n return label;\n }\n }\n }\n return label;\n}\n/**\n * Map internal class for Point\n */\nvar Location = /** @class */ (function () {\n function Location(x, y) {\n this.x = x;\n this.y = y;\n }\n return Location;\n}());\nexport { Location };\n/**\n * Method to calculate x position of title\n *\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 */\nexport function findPosition(location, alignment, textSize, type) {\n var x;\n switch (alignment) {\n case 'Near':\n x = location.x;\n break;\n case 'Center':\n x = (type === 'title') ? (location.width / 2 - textSize.width / 2) :\n ((location.x + (location.width / 2)) - textSize.width / 2);\n break;\n case 'Far':\n x = (type === 'title') ? (location.width - location.y - textSize.width) :\n ((location.x + location.width) - textSize.width);\n break;\n }\n var y = (type === 'title') ? location.y + (textSize.height / 2) : ((location.y + location.height / 2) + textSize.height / 2);\n return new Location(x, y);\n}\n/**\n *\n * @param {SvgRenderer} renderer - Specifies the rendering element of the SVG.\n * @param {any} renderOptions - Specifies the settings of the text.\n * @param {string} text - Specifies the text.\n * @returns {HTMLElement} - Returns the HTML element for the text.\n */\nexport function createTextStyle(renderer, renderOptions, text) {\n var htmlObject = renderer.createText(renderOptions, text);\n htmlObject.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n htmlObject.style['user-select'] = 'none';\n htmlObject.style['-moz-user-select'] = 'none';\n htmlObject.style['-webkit-touch-callout'] = 'none';\n htmlObject.style['-webkit-user-select'] = 'none';\n htmlObject.style['-khtml-user-select'] = 'none';\n htmlObject.style['-ms-user-select'] = 'none';\n htmlObject.style['-o-user-select'] = 'none';\n return htmlObject;\n}\n/**\n * Internal rendering of text\n *\n * @param {TextOption} options - Specifies the text option\n * @param {FontModel} font - Specifies the font model\n * @param {string} color - Specifies the color\n * @param {HTMLElement | Element} parent - Specifies the parent element of the text\n * @param {boolean} isMinus - Specifies the boolean value\n * @returns {Element} - Returns the element\n * @private\n */\nexport function renderTextElement(options, font, color, parent, isMinus) {\n if (isMinus === void 0) { isMinus = false; }\n var renderOptions = {\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily,\n 'font-weight': font.fontWeight,\n 'text-anchor': options.anchor,\n 'transform': options.transform,\n 'opacity': font.opacity,\n 'dominant-baseline': options.baseLine,\n 'id': options.id,\n 'x': options.x,\n 'y': options.y,\n 'fill': color\n };\n var text = typeof options.text === 'string' ? options.text : isMinus ? options.text[options.text.length - 1] : options.text[0];\n var tspanElement;\n var renderer = new SvgRenderer('');\n var height;\n var htmlObject;\n var breadCrumbText = !isNullOrUndefined(text) && !isNullOrUndefined(options.connectorText) ?\n (text.search(options.connectorText[1]) >= 0) : false;\n if (breadCrumbText) {\n var drilledLabel = text;\n var spacing = 5;\n var drillLevelText = drilledLabel.split('#');\n for (var z = 0; z < drillLevelText.length; z++) {\n var drillText = (drillLevelText[z].search(options.connectorText) !== -1 &&\n !isNullOrUndefined(options.connectorText)) ?\n options.connectorText : drillLevelText[z];\n renderOptions['id'] = options.id + '_' + z;\n htmlObject = createTextStyle(renderer, renderOptions, drillText);\n if (z % 2 === 0 && z !== 0) {\n var re = /\\s+/g;\n drillText = drillText.replace(re, ' ');\n }\n var size = measureText(drillText, font);\n renderOptions['x'] = z !== 0 ? renderOptions['x'] + size.width : renderOptions['x'] + size.width + spacing;\n parent.appendChild(htmlObject);\n }\n }\n else {\n htmlObject = createTextStyle(renderer, renderOptions, text);\n parent.appendChild(htmlObject);\n }\n if (typeof options.text !== 'string' && options.text.length > 1) {\n for (var i = 1, len = options.text.length; i < len; i++) {\n height = (measureText(options.text[i], font).height);\n tspanElement = renderer.createTSpan({\n 'x': options.x, 'id': options.id,\n 'y': (options.y) + (i * height)\n }, options.text[i]);\n htmlObject.appendChild(tspanElement);\n }\n parent.appendChild(htmlObject);\n }\n return htmlObject;\n}\n/**\n *\n * @param {string} targetId - Specifies the id of the element to which template is to be appended.\n * @param {Element} targetElement - Specifies the element to which template is to be appended.\n * @param {string} contentItemTemplate - Specifies the content to be appended as template.\n * @returns {void}\n */\nexport function setItemTemplateContent(targetId, targetElement, contentItemTemplate) {\n var itemSelect = targetId.split('_RectPath')[0];\n var itemTemplate;\n if (targetId.indexOf('_LabelTemplate') > -1) {\n itemTemplate = targetElement;\n }\n else {\n itemTemplate = document.querySelector('#' + itemSelect + '_LabelTemplate');\n }\n if (!isNullOrUndefined(itemTemplate)) {\n itemTemplate.innerHTML = contentItemTemplate;\n }\n}\n/**\n *\n * @param {string} id - Specifies the id of the element.\n * @returns {Element} - Returns the element.\n */\nexport function getElement(id) {\n return document.getElementById(id);\n}\n/**\n *\n * @param {any} a - Specifies the first order of TreeMap leaf elements.\n * @param {any} b - Specifies the second order of TreeMap leaf elements.\n * @returns {number} - Returns the order of the TreeMap leaf element.\n */\nexport function itemsToOrder(a, b) {\n return a['weight'] === b['weight'] ? 0 : a['weight'] < b['weight'] ? 1 : -1;\n}\n/**\n *\n * @param {string[]} source - Specifies the data from the data source.\n * @param {string} pathName - Specifies the path name in the data source.\n * @param {any} processData - Specifies the data source object.\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @returns {boolean} - Specifies whether data is available in the data source or not.\n */\nexport function isContainsData(source, pathName, processData, treemap) {\n var isExist = false;\n var name = '';\n var path;\n var leaf = treemap.leafItemSettings;\n for (var i = 0; i < source.length; i++) {\n path = treemap.levels[i] ? treemap.levels[i].groupPath : leaf.labelPath ? leaf.labelPath :\n treemap.weightValuePath;\n var data = processData[path] || 'undefined';\n if (source[i] === data) {\n name += data + (i === source.length - 1 ? '' : '#');\n if (name === pathName) {\n isExist = true;\n break;\n }\n }\n }\n return isExist;\n}\n/**\n *\n * @param {any} data - Specifies the data to which the children elements to be found.\n * @returns {any} - Returns the children elements of the TreeMap leaf element.\n */\nexport function findChildren(data) {\n var children;\n if (data) {\n var keys = Object.keys(data);\n children = {};\n for (var i = 0; i < keys.length; i++) {\n if (data[keys[i]] instanceof Array) {\n children['values'] = data[keys[i]];\n children['key'] = keys[i];\n break;\n }\n }\n }\n return children;\n}\n/**\n *\n * @param {any} data - Specifies the data to which highlight must be done.\n * @param {items} items - Specifies the data source items.\n * @param {string} mode - Specifies the mode of highlight.\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @returns {string[]} - Returns the highlighted items.\n */\nexport function findHightLightItems(data, items, mode, treeMap) {\n if (mode === 'Child') {\n items.push(data['levelOrderName']);\n var children = findChildren(data)['values'];\n if (children && children.length > 0) {\n for (var i = 0; i < children.length; i++) {\n if (items.indexOf(children[i]['levelOrderName']) === -1) {\n items.push(children[i]['levelOrderName']);\n }\n }\n for (var j = 0; j < children.length; j++) {\n findHightLightItems(children[j], items, mode, treeMap);\n }\n }\n }\n else if (mode === 'Parent') {\n if (typeof data['levelOrderName'] === 'string' && items.indexOf(data['levelOrderName']) === -1) {\n items.push(data['levelOrderName']);\n findHightLightItems(data['parent'], items, mode, treeMap);\n }\n }\n else if (mode === 'All') {\n var parentName = data['levelOrderName'].split('#')[0];\n var currentItem = void 0;\n for (var i = 0; i < treeMap.layout.renderItems.length; i++) {\n currentItem = treeMap.layout.renderItems[i];\n if ((currentItem['levelOrderName']).indexOf(parentName) > -1 && items.indexOf(currentItem['levelOrderName']) === -1) {\n items.push(currentItem['levelOrderName']);\n }\n }\n }\n else {\n items.push(data['levelOrderName']);\n }\n return items;\n}\n/**\n * Function to compile the template function for maps.\n *\n * @param {string} template - Specifies the template\n * @returns {Function} - Returns the template function\n * @private\n */\nexport function getTemplateFunction(template) {\n var templateFn = null;\n try {\n if (document.querySelectorAll(template).length) {\n templateFn = compile(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (e) {\n templateFn = compile(template);\n }\n return templateFn;\n}\n/**\n * @private\n * @param {HTMLCollection} element - Specifies the element\n * @param {string} labelId - Specifies the label id\n * @param {Object} data - Specifies the data\n * @returns {HTMLElement} - Returns the element\n */\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 */\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 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 * Ajax support 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 */\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 subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n legendTitleColor: '#DADADA',\n legendTextColor: '#DADADA',\n fontSize: '15px',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n break;\n case 'highcontrast':\n style = {\n backgroundColor: '#000000',\n titleFontColor: '#FFFFFF',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontSize: '15px',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n break;\n case 'bootstrap4':\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#212529',\n subTitleFontColor: '#212529',\n tooltipFillColor: '#000000',\n tooltipFontColor: '#FFFFFF',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 0.9,\n legendTitleColor: '#212529',\n legendTextColor: '#212529',\n fontFamily: 'HelveticaNeue-Medium',\n fontSize: '16px',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'HelveticaNeue'\n };\n break;\n case 'tailwind':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#374151',\n subTitleFontColor: '#374151',\n tooltipFillColor: '#111827',\n tooltipFontColor: '#F9FAFB',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#374151',\n legendTextColor: '#374151',\n fontFamily: 'Inter',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter'\n };\n break;\n case 'tailwinddark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#D1D5DB',\n subTitleFontColor: '#D1D5DB',\n tooltipFillColor: '#F9FAFB',\n tooltipFontColor: '#1F2937',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#D1D5DB',\n legendTextColor: '#D1D5DB',\n fontFamily: 'Inter',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter'\n };\n break;\n case 'bootstrap5':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#212529',\n subTitleFontColor: '#212529',\n tooltipFillColor: '#212529',\n tooltipFontColor: '#F9FAFB',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#212529',\n legendTextColor: '#212529',\n fontFamily: 'Helvetica Neue',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Helvetica Neue'\n };\n break;\n case 'bootstrap5dark':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#FFFFFF',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#E9ECEF',\n tooltipFontColor: '#212529',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontFamily: 'Helvetica Neue',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Helvetica Neue'\n };\n break;\n case 'fluent':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#201F1E',\n subTitleFontColor: '#201F1E',\n tooltipFillColor: '#FFFFFF',\n tooltipFontColor: '#323130',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#201F1E',\n legendTextColor: '#201F1E',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI'\n };\n break;\n case 'fluentdark':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#F3F2F1',\n subTitleFontColor: '#F3F2F1',\n tooltipFillColor: '#252423',\n tooltipFontColor: '#F3F2F1',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#F3F2F1',\n legendTextColor: '#F3F2F1',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI'\n };\n break;\n default:\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#424242',\n subTitleFontColor: '#424242',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n legendTitleColor: '#353535',\n legendTextColor: '#353535',\n fontSize: '15px',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n break;\n }\n return style;\n}\n","/**\n * TreeMap constants doc\n */\n/**\n * Triggers when the treemap is on load.\n *\n * @private\n */\nexport var load = 'load';\n/**\n * Triggers after treemap rendered.\n *\n * @private\n */\nexport var loaded = 'loaded';\n/**\n * Trigger before call the print method.\n *\n * @private\n */\nexport var beforePrint = 'beforePrint';\n/**\n * Trigger before each treemap item rendered.\n *\n * @private\n */\nexport var itemRendering = 'itemRendering';\n/**\n * Trigger after click on treemap item.\n *\n * @private\n */\nexport var drillStart = 'drillStart';\n/**\n * Trigger after drill start event completed.\n *\n * @private\n */\nexport var drillEnd = 'drillEnd';\n/**\n * Trigger after select the treemap item.\n *\n * @private\n */\nexport var itemSelected = 'itemSelected';\n/**\n * Trigger after hover on the treemap item.\n *\n * @private\n */\nexport var itemHighlight = 'itemHighlight';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport var tooltipRendering = 'tooltipRendering';\n/**\n * Trigger after click on the treemap item.\n *\n * @private\n */\nexport var itemClick = 'itemClick';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport var itemMove = 'itemMove';\n/**\n * Trigger after click on the treemap item.\n *\n * @private\n */\nexport var click = 'click';\n/**\n * Trigger after double click on the treemap item.\n *\n * @private\n */\nexport var doubleClick = 'doubleClick';\n/**\n * Trigger after right click on the treemap item.\n *\n * @private\n */\nexport var rightClick = 'rightClick';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport var mouseMove = 'mouseMove';\n/**\n * Trigger before each treemap item.\n *\n * @private\n */\nexport var legendItemRendering = 'legendItemRendering';\n/**\n * Trigger before legend items.\n *\n * @private\n */\nexport var legendRendering = 'legendRendering';\n/**\n * Trigger after resize the treemap.\n *\n * @private\n */\nexport var resize = 'resize';\n/**\n * Define the font family in treemap component.\n *\n * @private\n */\nexport var defaultFont = 'Roboto, Segoe UI, Noto, Sans-serif';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * Maps base doc\n */\nimport { Property, ChildProperty, Complex, Collection } from '@syncfusion/ej2-base';\nimport { defaultFont } from './constants';\n/**\n * Sets and gets the options for customizing the color and width of the border in treemap component.\n */\nvar Border = /** @class */ (function (_super) {\n __extends(Border, _super);\n function Border() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('#808080')\n ], Border.prototype, \"color\", void 0);\n __decorate([\n Property(0)\n ], Border.prototype, \"width\", void 0);\n return Border;\n}(ChildProperty));\nexport { Border };\n/**\n * Sets and gets the margin for the treemap component.\n */\nvar Margin = /** @class */ (function (_super) {\n __extends(Margin, _super);\n function Margin() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(10)\n ], Margin.prototype, \"left\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"right\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"top\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"bottom\", void 0);\n return Margin;\n}(ChildProperty));\nexport { Margin };\n/**\n * Sets and gets the options to customize the style of the text contents in the treemap component.\n */\nvar Font = /** @class */ (function (_super) {\n __extends(Font, _super);\n function Font() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], Font.prototype, \"size\", void 0);\n __decorate([\n Property(null)\n ], Font.prototype, \"color\", void 0);\n __decorate([\n Property(defaultFont)\n ], Font.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontStyle\", void 0);\n __decorate([\n Property(1)\n ], Font.prototype, \"opacity\", void 0);\n return Font;\n}(ChildProperty));\nexport { Font };\n/**\n * Sets and gets the options for customizing the common title of the treemap component.\n */\nvar CommonTitleSettings = /** @class */ (function (_super) {\n __extends(CommonTitleSettings, _super);\n function CommonTitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], CommonTitleSettings.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], CommonTitleSettings.prototype, \"description\", void 0);\n return CommonTitleSettings;\n}(ChildProperty));\nexport { CommonTitleSettings };\n/**\n * Sets and gets the options for customizing the subtitle of the treemap component.\n */\nvar SubTitleSettings = /** @class */ (function (_super) {\n __extends(SubTitleSettings, _super);\n function SubTitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ fontFamily: null }, Font)\n ], SubTitleSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property('Center')\n ], SubTitleSettings.prototype, \"alignment\", void 0);\n return SubTitleSettings;\n}(CommonTitleSettings));\nexport { SubTitleSettings };\n/**\n * Sets and gets the options for customizing the title of the treemap component.\n */\nvar TitleSettings = /** @class */ (function (_super) {\n __extends(TitleSettings, _super);\n function TitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ fontFamily: null }, Font)\n ], TitleSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property('Center')\n ], TitleSettings.prototype, \"alignment\", void 0);\n __decorate([\n Complex({}, SubTitleSettings)\n ], TitleSettings.prototype, \"subtitleSettings\", void 0);\n return TitleSettings;\n}(CommonTitleSettings));\nexport { TitleSettings };\n/**\n * Sets and gets the options to customize the color-mapping in treemap component.\n */\nvar ColorMapping = /** @class */ (function (_super) {\n __extends(ColorMapping, _super);\n function ColorMapping() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"from\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"to\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"color\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"label\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"minOpacity\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"maxOpacity\", void 0);\n __decorate([\n Property(true)\n ], ColorMapping.prototype, \"showLegend\", void 0);\n return ColorMapping;\n}(ChildProperty));\nexport { ColorMapping };\n/**\n * Sets and gets the options for customizing the legend of the treemap component.\n */\nvar LegendSettings = /** @class */ (function (_super) {\n __extends(LegendSettings, _super);\n function LegendSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('Default')\n ], LegendSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('transparent')\n ], LegendSettings.prototype, \"background\", void 0);\n __decorate([\n Property('Circle')\n ], LegendSettings.prototype, \"shape\", void 0);\n __decorate([\n Property('')\n ], LegendSettings.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], LegendSettings.prototype, \"height\", void 0);\n __decorate([\n Complex({ fontFamily: null }, Font)\n ], LegendSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], LegendSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(15)\n ], LegendSettings.prototype, \"shapeWidth\", void 0);\n __decorate([\n Property(15)\n ], LegendSettings.prototype, \"shapeHeight\", void 0);\n __decorate([\n Property(10)\n ], LegendSettings.prototype, \"shapePadding\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"imageUrl\", void 0);\n __decorate([\n Complex({ color: '#000000', width: 0 }, Border)\n ], LegendSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ color: '#000000', width: 0 }, Border)\n ], LegendSettings.prototype, \"shapeBorder\", void 0);\n __decorate([\n Complex({}, CommonTitleSettings)\n ], LegendSettings.prototype, \"title\", void 0);\n __decorate([\n Complex({ size: '14px' }, Font)\n ], LegendSettings.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('Bottom')\n ], LegendSettings.prototype, \"position\", void 0);\n __decorate([\n Property('None')\n ], LegendSettings.prototype, \"orientation\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"invertedPointer\", void 0);\n __decorate([\n Property('After')\n ], LegendSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('None')\n ], LegendSettings.prototype, \"labelDisplayMode\", void 0);\n __decorate([\n Property('Center')\n ], LegendSettings.prototype, \"alignment\", void 0);\n __decorate([\n Property({ x: 0, y: 0 })\n ], LegendSettings.prototype, \"location\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"showLegendPath\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"valuePath\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"removeDuplicateLegend\", void 0);\n return LegendSettings;\n}(ChildProperty));\nexport { LegendSettings };\n/**\n * Sets and gets the settings for drill to visualize the treemap rendered in the initial state.\n */\nvar InitialDrillSettings = /** @class */ (function (_super) {\n __extends(InitialDrillSettings, _super);\n function InitialDrillSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], InitialDrillSettings.prototype, \"groupIndex\", void 0);\n __decorate([\n Property(null)\n ], InitialDrillSettings.prototype, \"groupName\", void 0);\n return InitialDrillSettings;\n}(ChildProperty));\nexport { InitialDrillSettings };\n/**\n * Sets and gets the options for customizing the leaf item of the treemap component.\n */\nvar LeafItemSettings = /** @class */ (function (_super) {\n __extends(LeafItemSettings, _super);\n function LeafItemSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(false)\n ], LeafItemSettings.prototype, \"autoFill\", void 0);\n __decorate([\n Complex({}, Border)\n ], LeafItemSettings.prototype, \"border\", void 0);\n __decorate([\n Property(0)\n ], LeafItemSettings.prototype, \"gap\", void 0);\n __decorate([\n Property(10)\n ], LeafItemSettings.prototype, \"padding\", void 0);\n __decorate([\n Property(1)\n ], LeafItemSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LeafItemSettings.prototype, \"showLabels\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelPath\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelFormat\", void 0);\n __decorate([\n Property('TopLeft')\n ], LeafItemSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Complex({ color: null, size: '12px' }, Font)\n ], LeafItemSettings.prototype, \"labelStyle\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelTemplate\", void 0);\n __decorate([\n Property('Center')\n ], LeafItemSettings.prototype, \"templatePosition\", void 0);\n __decorate([\n Property('Trim')\n ], LeafItemSettings.prototype, \"interSectAction\", void 0);\n __decorate([\n Collection([], ColorMapping)\n ], LeafItemSettings.prototype, \"colorMapping\", void 0);\n return LeafItemSettings;\n}(ChildProperty));\nexport { LeafItemSettings };\n/**\n * Sets and gets the options for customizing the tooltip of the treemap component.\n */\nvar TooltipSettings = /** @class */ (function (_super) {\n __extends(TooltipSettings, _super);\n function TooltipSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('')\n ], TooltipSettings.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(0.75)\n ], TooltipSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(['Circle'])\n ], TooltipSettings.prototype, \"markerShapes\", void 0);\n __decorate([\n Complex({}, Border)\n ], TooltipSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ fontFamily: defaultFont, size: '13px' }, Font)\n ], TooltipSettings.prototype, \"textStyle\", void 0);\n return TooltipSettings;\n}(ChildProperty));\nexport { TooltipSettings };\n/**\n * Sets and gets the options for customizing the selection of the leaf items in treemap component.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], SelectionSettings.prototype, \"fill\", void 0);\n __decorate([\n Property('0.5')\n ], SelectionSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, Border)\n ], SelectionSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Item')\n ], SelectionSettings.prototype, \"mode\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Sets and gets the options for customizing the highlighting of the treemap item,\n * when the mouse hover is performed in it.\n */\nvar HighlightSettings = /** @class */ (function (_super) {\n __extends(HighlightSettings, _super);\n function HighlightSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], HighlightSettings.prototype, \"enable\", void 0);\n __decorate([\n Property('#808080')\n ], HighlightSettings.prototype, \"fill\", void 0);\n __decorate([\n Property('0.5')\n ], HighlightSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, Border)\n ], HighlightSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Item')\n ], HighlightSettings.prototype, \"mode\", void 0);\n return HighlightSettings;\n}(ChildProperty));\nexport { HighlightSettings };\n/**\n * Sets and gets the options for customizing the levels of the treemap component.\n */\nvar LevelSettings = /** @class */ (function (_super) {\n __extends(LevelSettings, _super);\n function LevelSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"groupPath\", void 0);\n __decorate([\n Property(0)\n ], LevelSettings.prototype, \"groupGap\", void 0);\n __decorate([\n Property(10)\n ], LevelSettings.prototype, \"groupPadding\", void 0);\n __decorate([\n Complex({}, Border)\n ], LevelSettings.prototype, \"border\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(false)\n ], LevelSettings.prototype, \"autoFill\", void 0);\n __decorate([\n Property(1)\n ], LevelSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LevelSettings.prototype, \"showHeader\", void 0);\n __decorate([\n Property(20)\n ], LevelSettings.prototype, \"headerHeight\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"headerFormat\", void 0);\n __decorate([\n Property('Near')\n ], LevelSettings.prototype, \"headerAlignment\", void 0);\n __decorate([\n Complex({ color: null, size: '13px' }, Font)\n ], LevelSettings.prototype, \"headerStyle\", void 0);\n __decorate([\n Property('TopLeft')\n ], LevelSettings.prototype, \"templatePosition\", void 0);\n __decorate([\n Collection([], ColorMapping)\n ], LevelSettings.prototype, \"colorMapping\", void 0);\n return LevelSettings;\n}(ChildProperty));\nexport { LevelSettings };\n","import { Rect, itemsToOrder, TextOption, measureText, textTrim, hide, wordWrap, textWrap, getTemplateFunction, convertElement, findLabelLocation, PathOption, textFormatter, colorNameToHex, convertHexToColor, colorMap, measureElement, convertToContainer, convertToRect, getShortestEdge, getArea, orderByArea, isParentItem, maintainSelection } from '../utils/helper';\nimport { isNullOrUndefined, createElement, extend } from '@syncfusion/ej2-base';\nimport { findChildren, renderTextElement } from '../utils/helper';\nimport { itemRendering } from '../model/constants';\nimport { LevelsData } from './../treemap';\n/**\n * To calculate and render the shape layer\n */\nvar LayoutPanel = /** @class */ (function () {\n function LayoutPanel(treemap) {\n this.treemap = treemap;\n }\n LayoutPanel.prototype.processLayoutPanel = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data;\n var totalRect;\n if (LevelsData.levelsData && LevelsData.levelsData.length > 0) {\n data = (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) &&\n !isNullOrUndefined(this.treemap.initialDrillDown.groupName)) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length === 0) ?\n this.getDrilldownData(LevelsData.levelsData[0], [])[0] : LevelsData.levelsData[0];\n totalRect = extend({}, this.treemap.areaRect, totalRect, false);\n if (!isNullOrUndefined(this.treemap.treeMapLegendModule) && !isNullOrUndefined(this.treemap.totalRect)) {\n if (this.treemap.legendSettings.position !== 'Float') {\n totalRect = this.treemap.totalRect;\n }\n }\n if (!isNullOrUndefined(this.treemap.currentLevel) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? !isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length !== 0)) {\n var count = this.treemap.drilledItems.length - 1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var x = this.treemap.drilledItems[count]['data'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var y = {};\n y[this.treemap.drilledItems[count]['data']['groupName']] = [x];\n if (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) && !this.treemap.enableBreadcrumb) {\n this.treemap.currentLevel = this.treemap.drilledItems[count]['data']['groupIndex'];\n }\n this.calculateLayoutItems(y || LevelsData.levelsData[0], totalRect);\n this.renderLayoutItems();\n }\n else {\n if (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length === 0)) {\n this.treemap.currentLevel = this.treemap.initialDrillDown.groupIndex;\n }\n this.calculateLayoutItems(data || LevelsData.levelsData[0], totalRect);\n this.renderLayoutItems();\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 /** @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 border = isLeafItem ? leaf.border : levels[index].border;\n position = !isLeafItem ? (levels[index].headerAlignment) === 'Near' ? 'TopLeft' : (levels[index].headerAlignment) === 'Center' ?\n 'TopCenter' : 'TopRight' : leaf.labelPosition;\n templatePosition = isLeafItem ? leaf.templatePosition : levels[index].templatePosition;\n template = isLeafItem ? leaf.labelTemplate : levels[index].headerTemplate;\n item['options'] = { border: border, opacity: opacity, fill: fill };\n eventArgs = {\n cancel: false, name: itemRendering, treemap: this_1.treemap, text: renderText,\n currentItem: item, RenderItems: this_1.renderItems, options: item['options']\n };\n this_1.treemap.trigger(itemRendering, eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n rectPath = ' M ' + rect.x + ' ' + rect.y + ' L ' + (rect.x + rect.width) + ' ' + rect.y +\n ' L ' + (rect.x + rect.width) + ' ' + (rect.y + rect.height) + ' L ' + rect.x + ' ' + (rect.y + rect.height) + 'z';\n pathOptions = new PathOption(groupId + '_RectPath', fill, border.width, border.color, opacity, null, rectPath);\n var path = _this.renderer.drawPath(pathOptions);\n itemGroup.appendChild(path);\n if (txtVisible) {\n if (eventArgs.text !== renderText) {\n eventArgs.text = textFormatter(eventArgs.text, item['data'], _this.treemap) || levelName;\n }\n _this.renderItemText(eventArgs.text.toString(), itemGroup, textStyle, rect, interSectAction, groupId, fill, position, connectorText);\n }\n if (template) {\n templateEle = _this.renderTemplate(secondaryEle, groupId, rect, templatePosition, template, item, isLeafItem);\n if (!isNullOrUndefined(templateEle)) {\n templateGroup.appendChild(templateEle);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.treemap.renderReactTemplates();\n }\n }\n itemGroup.setAttribute('aria-label', item['name']);\n itemGroup.setAttribute('role', '');\n itemGroup.setAttribute('tabindex', (_this.treemap.tabIndex + i + 2).toString());\n maintainSelection(_this.treemap, itemGroup, 'treeMapSelection');\n _this.layoutGroup.appendChild(itemGroup);\n }\n });\n };\n var this_1 = this;\n for (var i = 0; i < this.renderItems.length; i++) {\n _loop_1(i);\n }\n if (templateGroup.childNodes.length > 0) {\n secondaryEle.appendChild(templateGroup);\n }\n this.treemap.svgObject.appendChild(this.layoutGroup);\n };\n LayoutPanel.prototype.renderItemText = function (text, parentElement, textStyle, rect, interSectAction, groupId, fill, position, connectorText) {\n var 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(LevelsData.defaultLevelsData)) {\n if (LevelsData.defaultLevelsData.length > 0) {\n LevelsData.levelsData = LevelsData.defaultLevelsData;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentData = findChildren(LevelsData.levelsData[0])['values'];\n var colorMapping = isLeafItem ? treemap.leafItemSettings.colorMapping :\n treemap.levels[item['groupIndex']].colorMapping;\n if (colorMapping.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var option = colorMap(colorMapping, item['data'][this.treemap.equalColorValuePath], item['data'][this.treemap.rangeColorValuePath]);\n itemFill = !isNullOrUndefined(option['fill']) ? option['fill'] : treemap.leafItemSettings.fill;\n itemOpacity = option['opacity'];\n }\n else {\n for (var i = 0; i < parentData.length; i++) {\n if (parentData[i]['levelOrderName'] === item['levelOrderName'].split('#')[0]) {\n itemFill = !isNullOrUndefined(itemFill) ? itemFill : !isNullOrUndefined(treemap.colorValuePath) ?\n parentData[i]['data'][treemap.colorValuePath] : treemap.palette.length > 0 ?\n treemap.palette[i % treemap.palette.length] : '#808080';\n }\n }\n }\n return { fill: itemFill, opacity: itemOpacity };\n };\n /**\n * To find saturated color for datalabel\n *\n * @param {string} color - Specifies the color\n * @returns {string} - Returns the color\n */\n LayoutPanel.prototype.getSaturatedColor = function (color) {\n var saturatedColor = color;\n saturatedColor = (saturatedColor === 'transparent') ? window.getComputedStyle(document.body, null).backgroundColor : saturatedColor;\n var rgbValue = convertHexToColor(colorNameToHex(saturatedColor));\n var contrast = Math.round((rgbValue.r * 299 + rgbValue.g * 587 + rgbValue.b * 114) / 1000);\n return contrast >= 128 ? 'black' : 'white';\n };\n LayoutPanel.prototype.renderTemplate = function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n secondaryEle, groupId, rect, position, template, item, isLeafItem) {\n var templateId = isLeafItem ? groupId + '_LabelTemplate' : groupId + '_HeaderTemplate';\n var baseTemplateId = isLeafItem ? '_LabelTemplate' : '_HeaderTemplate';\n if (isNullOrUndefined(template['prototype'])) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var keys = Object.keys(item['data']);\n for (var i = 0; i < keys.length; i++) {\n 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 } 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 div.appendChild(treeMap.element.cloneNode(true));\n }\n return div;\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n Print.prototype.getModuleName = function () {\n // Returns te module name\n return 'Print';\n };\n /**\n * To destroy the Print module.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n Print.prototype.destroy = function () { };\n return Print;\n}());\nexport { Print };\n","import { createElement, Browser } from '@syncfusion/ej2-base';\nimport { triggerDownload } from '../utils/helper';\n/**\n * ImageExport module handles the export to image functionality for treemap.\n *\n * @hidden\n */\nvar ImageExport = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance\n */\n // eslint-disable-next-line @typescript-eslint/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 isDownload = !(Browser.userAgent.toString().indexOf('HeadlessChrome') > -1);\n var svgData = '<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">' +\n treeMap.svgObject.outerHTML +\n '</svg>';\n var url = window.URL.createObjectURL(new Blob(type === 'SVG' ? [svgData] :\n [(new XMLSerializer()).serializeToString(treeMap.svgObject)], { type: 'image/svg+xml' }));\n if (type === 'SVG') {\n if (allowDownload) {\n triggerDownload(fileName, type, url, isDownload);\n }\n else {\n resolve(null);\n }\n }\n else {\n var image_1 = new Image();\n var context_1 = element.getContext('2d');\n image_1.onload = (function () {\n context_1.drawImage(image_1, 0, 0);\n window.URL.revokeObjectURL(url);\n if (allowDownload) {\n triggerDownload(fileName, type, element.toDataURL('image/png').replace('image/png', 'image/octet-stream'), isDownload);\n }\n else {\n if (type === 'JPEG') {\n resolve(element.toDataURL('image/jpeg'));\n }\n else if (type === 'PNG') {\n resolve(element.toDataURL('image/png'));\n }\n }\n });\n image_1.src = url;\n }\n });\n return promise;\n };\n ImageExport.prototype.getModuleName = function () {\n // Returns te module name\n return 'ImageExport';\n };\n /**\n * To destroy the ImageExport.\n *\n * @returns {void}\n * @private\n */\n // 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 component.\n * @param {boolean} allowDownload - Specifies whether to download the document or not.\n * @returns {Promise} - Returns the string.\n * @private\n */\n PdfExport.prototype.export = function (treeMap, type, fileName, orientation, allowDownload) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @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 === 'TailwindDark' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Bootstrap5Dark'\n || treeMap.theme === 'Fluent' || treeMap.theme === 'FluentDark') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n }\n var url = window.URL.createObjectURL(new Blob([(new XMLSerializer()).serializeToString(exportElement)], { type: 'image/svg+xml' }));\n var image = new Image();\n var context = element.getContext('2d');\n image.onload = (function () {\n context.drawImage(image, 0, 0);\n window.URL.revokeObjectURL(url);\n var document = new PdfDocument();\n var imageString = element.toDataURL('image/jpeg').replace('image/jpeg', 'image/octet-stream');\n document.pageSettings.orientation = orientation;\n imageString = imageString.slice(imageString.indexOf(',') + 1);\n document.pages.add().graphics.drawImage(new PdfBitmap(imageString), 0, 0, (treeMap.availableSize.width - 60), treeMap.availableSize.height);\n if (allowDownload) {\n document.save(fileName + '.pdf');\n document.destroy();\n }\n else {\n resolve(null);\n }\n });\n image.src = url;\n });\n return promise;\n };\n PdfExport.prototype.getModuleName = function () {\n // Returns te module name\n return 'PdfExport';\n };\n /**\n * To destroy the PdfExport.\n *\n * @returns {void}\n * @private\n */\n // 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, Ajax } from '@syncfusion/ej2-base';\nimport { Complex, Collection } from '@syncfusion/ej2-base';\nimport { Event, Internationalization } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\nimport { isNullOrUndefined, createElement, EventHandler, Browser, remove } from '@syncfusion/ej2-base';\nimport { Border, Margin, TitleSettings, LegendSettings, InitialDrillSettings } from './model/base';\nimport { SelectionSettings, TooltipSettings, LevelSettings, LeafItemSettings, HighlightSettings } from './model/base';\nimport { Size, stringToNumber, RectOption, Rect, textTrim, measureText, findChildren, removeElement, setItemTemplateContent } from '../treemap/utils/helper';\nimport { removeClassNames, removeShape, textFormatter } from '../treemap/utils/helper';\nimport { findPosition, TextOption, renderTextElement, isContainsData, TreeMapAjax } from '../treemap/utils/helper';\nimport { load, loaded, drillStart, drillEnd } from '../treemap/model/constants';\nimport { itemClick, itemMove, click, mouseMove, resize, doubleClick, rightClick } from '../treemap/model/constants';\nimport { LayoutPanel } from './layout/render-panel';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { getThemeStyle } from './model/theme';\nimport { Print } from './model/print';\nimport { ImageExport } from './model/image-export';\nimport { PdfExport } from './model/pdf-export';\n/**\n * Represents the treemap component.\n * ```html\n * <div id=\"container\"/>\n * <script>\n * var treemap = new TreeMap();\n * treemap.appendTo(\"#container\");\n * </script>\n * ```\n */\nvar TreeMap = /** @class */ (function (_super) {\n __extends(TreeMap, _super);\n /**\n * Constructor for TreeMap component.\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 LevelsData.levelsData = null;\n LevelsData.defaultLevelsData = null;\n LevelsData.hierarchyData = null;\n this.createSecondaryElement();\n this.addTabIndex();\n this.themeStyle = getThemeStyle(this.theme);\n this.renderBorder();\n this.renderTitle(this.titleSettings, 'title', null, null);\n if (!isNullOrUndefined(LevelsData.levelsData)) {\n LevelsData.defaultLevelsData = LevelsData.levelsData;\n }\n this.processDataManager();\n };\n TreeMap.prototype.processDataManager = function () {\n var _this = this;\n var dataModule;\n var queryModule;\n var ajaxModule;\n var localAjax;\n if (this.dataSource instanceof DataManager) {\n dataModule = this.dataSource;\n queryModule = this.query instanceof Query ? this.query : new Query();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataManager = dataModule.executeQuery(queryModule);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataManager.then(function (e) {\n _this.dataSource = e['result'];\n _this.renderTreeMapElements();\n });\n }\n else if (this.dataSource instanceof TreeMapAjax) {\n localAjax = this.dataSource;\n ajaxModule = new Ajax(localAjax.dataOptions, localAjax.type, localAjax.async, localAjax.contentType);\n ajaxModule.onSuccess = function (args) {\n _this.dataSource = JSON.parse('[' + args + ']')[0];\n _this.renderTreeMapElements();\n };\n ajaxModule.send(localAjax.sendData);\n }\n else {\n this.renderTreeMapElements();\n }\n };\n TreeMap.prototype.renderTreeMapElements = function () {\n this.processingData();\n if (this.treeMapLegendModule && this.legendSettings.visible) {\n this.treeMapLegendModule.renderLegend();\n }\n this.layout.processLayoutPanel();\n this.element.appendChild(this.svgObject);\n this.elementChange();\n this.trigger(loaded, { treemap: this, isResized: this.isResize });\n this.isResize = false;\n this.renderComplete();\n };\n TreeMap.prototype.createSvg = function () {\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n if (isNullOrUndefined(this.renderer)) {\n this.renderer = new SvgRenderer(this.element.id);\n }\n if (isNullOrUndefined(this.layout)) {\n this.layout = new LayoutPanel(this);\n }\n this.clearTemplate();\n var containerWidth = this.element.clientWidth;\n var containerHeight = this.element.clientHeight;\n this.availableSize = new Size(stringToNumber(this.width, containerWidth) || containerWidth || 600, stringToNumber(this.height, containerHeight) || containerHeight || 450);\n this.svgObject = this.renderer.createSvg({\n id: this.element.id + '_svg',\n width: this.availableSize.width,\n height: this.availableSize.height\n });\n };\n /**\n * To initilize the private varibales of treemap.\n *\n * @returns {void}\n */\n TreeMap.prototype.initPrivateVariable = function () {\n if (this.element.id === '') {\n var collection = document.getElementsByClassName('e-treemap').length;\n this.element.id = 'treemap_control_' + collection;\n }\n this.renderer = new SvgRenderer(this.element.id);\n this.layout = new LayoutPanel(this);\n };\n TreeMap.prototype.createSecondaryElement = function () {\n var secondaryEle = document.getElementById(this.element.id + '_Secondary_Element');\n if (secondaryEle && secondaryEle.childElementCount > 0) {\n secondaryEle.parentNode.removeChild(secondaryEle);\n }\n if (isNullOrUndefined(document.getElementById(this.element.id + '_Secondary_Element'))) {\n var secondaryElement = createElement('div', {\n id: this.element.id + '_Secondary_Element'\n });\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.size = style.size || (type === 'title' ? this.themeStyle.fontSize : this.themeStyle.subtitleFontSize);\n if (title.text) {\n if (isNullOrUndefined(groupEle)) {\n groupEle = this.renderer.createGroup({ id: this.element.id + '_Title_Group' });\n }\n var trimmedTitle = textTrim(width, title.text, style);\n var elementSize = measureText(trimmedTitle, style);\n var rect = (isNullOrUndefined(bounds)) ? new Rect(this.margin.left, this.margin.top, this.availableSize.width, this.availableSize.height) : bounds;\n var location_1 = findPosition(rect, title.alignment, elementSize, type);\n var options = new TextOption(this.element.id + '_TreeMap_' + type, location_1.x, location_1.y, 'start', trimmedTitle);\n var titleBounds = new Rect(location_1.x, location_1.y, elementSize.width, elementSize.height);\n var element = renderTextElement(options, style, style.color || (type === 'title' ? this.themeStyle.titleFontColor : this.themeStyle.subTitleFontColor), groupEle);\n element.setAttribute('aria-label', title.description || title.text);\n element.setAttribute('role', '');\n element.setAttribute('tabindex', (this.tabIndex + (type === 'title' ? 1 : 2)).toString());\n if ((type === 'title' && !title.subtitleSettings.text) || (type === 'subtitle')) {\n height = (this.availableSize.height - titleBounds.y - titlePadding - this.margin.bottom);\n this.areaRect = new Rect(this.margin.left, titleBounds.y + titlePadding, width, height);\n }\n if (type !== 'subtitle' && title.subtitleSettings.text) {\n this.renderTitle(title.subtitleSettings, 'subtitle', titleBounds, groupEle);\n }\n else {\n this.svgObject.appendChild(groupEle);\n }\n }\n else {\n height = (this.availableSize.height - this.margin.top - this.margin.bottom);\n this.areaRect = new Rect(this.margin.left, this.margin.top, width, height);\n }\n };\n TreeMap.prototype.processingData = function () {\n var _this = this;\n var path;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource = this.dataSource;\n if (!isNullOrUndefined(this.dataSource) && this.dataSource.length > 0 && this.weightValuePath) {\n LevelsData.levelsData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource.map(function (data) {\n data[_this.weightValuePath] = (data[_this.weightValuePath]) ? data[_this.weightValuePath].toString() :\n data[_this.weightValuePath];\n });\n this.leafItemSettings.labelPath = this.leafItemSettings.labelPath || this.weightValuePath;\n this.checkIsHierarchicalData();\n if (this.levels.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data_1 = {};\n data_1['level'] = 0;\n path = this.leafItemSettings.labelPath;\n data_1[path] = [];\n for (var i = 0; i < this.dataSource.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(this.dataSource[i])['values'];\n if (this.isHierarchicalData && child && child.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n child.forEach(function (currentData) {\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 LevelsData.levelsData.push(data_1);\n }\n else {\n if (this.isHierarchicalData) {\n LevelsData.hierarchyData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LevelsData.hierarchyData = extend([], this.dataSource, LevelsData.hierarchyData, true);\n for (var i = 0; i < LevelsData.hierarchyData.length; i++) {\n this.processHierarchicalData(LevelsData.hierarchyData[i], i);\n }\n LevelsData.levelsData = LevelsData.hierarchyData;\n }\n else {\n this.processFlatJsonData();\n if (LevelsData.levelsData.length > 1) {\n this.reOrderLevelData(LevelsData.levelsData.length - 1);\n }\n }\n path = this.levels[0].groupPath;\n }\n if (!this.isHierarchicalData) {\n this.findTotalWeight(LevelsData.levelsData[0][path], 'Parent');\n }\n }\n };\n TreeMap.prototype.checkIsHierarchicalData = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child;\n this.dataSource = this.dataSource;\n for (var i = 0; i < this.dataSource.length; i++) {\n child = findChildren(this.dataSource[i])['values'];\n if (child && child.length) {\n this.isHierarchicalData = true;\n break;\n }\n else if (i === this.dataSource.length - 1) {\n this.isHierarchicalData = false;\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.processHierarchicalData = function (data, dataCount) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childData;\n // 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 === LevelsData.hierarchyData.length - 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var mainData_1 = LevelsData.hierarchyData[0][this.levels[0].groupPath];\n for (var k = 0; k < LevelsData.hierarchyData.length; k++) {\n childData = findChildren(LevelsData.hierarchyData[k])['values'];\n if (k !== 0 && childData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childData.forEach(function (currentData) { mainData_1.push(currentData); });\n LevelsData.hierarchyData.splice(k, 1);\n k -= 1;\n }\n }\n mainData_1 = LevelsData.hierarchyData[0][this.levels[0].groupPath];\n for (var l = 0; l < mainData_1.length; l++) {\n newData[this.levels[0].groupPath] = mainData_1;\n mainData_1[l]['parent'] = newData;\n }\n }\n };\n /* eslint-disable valid-jsdoc */\n /**\n * This method is used to perform the print functionality in treemap.\n *\n * @param {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 LevelsData.levelsData.push(level);\n for (var j = 0; j < this.dataSource.length; j++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = {};\n var childName = '';\n if (!isNullOrUndefined(groupPath)) {\n var name_1 = this.dataSource[j][groupPath];\n if (i !== 0) {\n for (var k = 0; k <= i; k++) {\n var childGroupPath = 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\n LevelsData.levelsData[(LevelsData.levelsData.length - 1)][groupPath].push(currentData);\n orderNames.push((childName) ? childName : name_1);\n }\n }\n }\n }\n };\n /**\n * This method orders the treemap level data.\n *\n * @param {number} start - Specifies the start value of the treemap level.\n * @returns {void}\n */\n TreeMap.prototype.reOrderLevelData = function (start) {\n var currentName;\n var currentPath = this.levels[start] ? this.levels[start].groupPath : this.leafItemSettings.labelPath;\n var prevPath = this.levels[start - 1].groupPath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = LevelsData.levelsData[start][currentPath];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var previousData = LevelsData.levelsData[start - 1][prevPath];\n for (var i = 0; i < currentData.length; i++) {\n currentName = currentData[i]['levelOrderName'];\n for (var j = 0; j < previousData.length; j++) {\n previousData[j][currentPath] = isNullOrUndefined(previousData[j][currentPath]) ?\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(LevelsData.levelsData[LevelsData.levelsData.length - 1][currentPath], 'Child');\n LevelsData.levelsData.splice(start, 1);\n if ((start - 1) > 0) {\n this.reOrderLevelData(start - 1);\n }\n };\n TreeMap.prototype.IsChildHierarchy = function (current, previous) {\n var isChild = false;\n for (var i = 0; i < previous.length; i++) {\n if (current.length < i || previous[i] !== current[i]) {\n return false;\n }\n else {\n isChild = true;\n }\n }\n return isChild;\n };\n /**\n * This method finds the weight value of the treemap level.\n *\n * @param {any[]} processData - Specifies the treemap data.\n * @param {string} type - Specifies the type of the data.\n * @returns {void}\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 */\n TreeMap.prototype.unWireEVents = function () {\n EventHandler.remove(this.element, 'click', this.clickOnTreeMap);\n EventHandler.remove(this.element, 'dblclick', this.doubleClickOnTreeMap);\n EventHandler.remove(this.element, 'contextmenu', this.rightClickOnTreeMap);\n EventHandler.remove(this.element, Browser.touchStartEvent, this.mouseDownOnTreeMap);\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.mouseMoveOnTreeMap);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.mouseEndOnTreeMap);\n EventHandler.remove(this.element, 'pointerleave mouseleave', this.mouseLeaveOnTreeMap);\n window.removeEventListener('resize', this.resizeOnTreeMap);\n };\n /**\n * To bind event handlers for treemap.\n *\n * @returns {void}\n */\n TreeMap.prototype.wireEVents = function () {\n EventHandler.add(this.element, 'click', this.clickOnTreeMap, this);\n EventHandler.add(this.element, 'dblclick', this.doubleClickOnTreeMap, this);\n EventHandler.add(this.element, 'contextmenu', this.rightClickOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchStartEvent, this.mouseDownOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchMoveEvent, this.mouseMoveOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchEndEvent, this.mouseEndOnTreeMap, this);\n EventHandler.add(this.element, 'pointerleave mouseleave', this.mouseLeaveOnTreeMap, this);\n window.addEventListener('resize', this.resizeOnTreeMap.bind(this));\n };\n /**\n * Method to set culture for maps\n *\n * @returns {void}\n */\n TreeMap.prototype.setCulture = function () {\n this.intl = new Internationalization();\n };\n /**\n * To add tab index for treemap element\n *\n * @returns {void}\n */\n TreeMap.prototype.addTabIndex = function () {\n this.element.setAttribute('aria-label', this.description || 'TreeMap Element');\n this.element.setAttribute('role', '');\n this.element.setAttribute('tabindex', this.tabIndex.toString());\n };\n /**\n * This method handles the window resize event on treemap.\n *\n * @param {Event} e - Specifies the pointer event.\n * @returns {void}\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 });\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 */\n TreeMap.prototype.clickOnTreeMap = function (e) {\n var _this = this;\n var targetEle = e.target;\n var targetId = targetEle.id;\n var eventArgs;\n var itemIndex;\n var labelText = targetEle.innerHTML;\n var clickArgs = { cancel: false, name: click, treemap: this, mouseEvent: e };\n this.trigger(click, clickArgs);\n if (targetId.indexOf('_Item_Index') > -1) {\n e.preventDefault();\n itemIndex = parseFloat(targetId.split('_Item_Index_')[1]);\n eventArgs = {\n cancel: false, name: itemClick, treemap: this, item: this.layout.renderItems[itemIndex], mouseEvent: e,\n groupIndex: this.layout.renderItems[itemIndex]['groupIndex'], groupName: this.layout.renderItems[itemIndex]['name'],\n text: labelText, contentItemTemplate: labelText\n };\n this.trigger(itemClick, eventArgs, function (observedArgs) {\n if (observedArgs.text !== labelText || observedArgs.contentItemTemplate !== labelText) {\n if (isNullOrUndefined(_this.leafItemSettings.labelTemplate)) {\n observedArgs.text = textFormatter(observedArgs.text, observedArgs['item']['data'], observedArgs.treemap);\n targetEle.innerHTML = observedArgs.text;\n }\n else {\n setItemTemplateContent(targetId, targetEle, observedArgs.contentItemTemplate);\n }\n }\n });\n }\n var end = new Date().getMilliseconds();\n var doubleTapTimer1;\n if (!isNullOrUndefined(this.doubleClick)) {\n if (!isNullOrUndefined(doubleTapTimer1) && end - doubleTapTimer1 < 500) {\n this.doubleClickOnTreeMap(e);\n }\n doubleTapTimer1 = end;\n }\n };\n /**\n * This method handles the double click event in the treemap.\n *\n * @param {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 */\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 */\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 */\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 */\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 */\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 */\n TreeMap.prototype.mouseEndOnTreeMap = function (e) {\n var _this = this;\n var targetEle = e.target;\n var targetId = targetEle.id;\n var totalRect;\n var startEvent;\n var endEvent;\n var directLevel = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var index;\n var newDrillItem = {};\n var item;\n var process = true;\n var layoutID = this.element.id + '_TreeMap_' + this.layoutType + '_Layout';\n var drillLevel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateID = this.element.id + '_Label_Template_Group';\n var drillLevelValues;\n if (targetId.indexOf('_Item_Index') > -1 && this.enableDrillDown && !this.drillMouseMove) {\n if (e.cancelable) {\n e.preventDefault();\n }\n index = parseFloat(targetId.split('_Item_Index_')[1]);\n item = this.layout.renderItems[index];\n var labelText = targetEle.innerHTML;\n if (this.enableBreadcrumb) {\n drillLevelValues = this.calculateSelectedTextLevels(labelText, item);\n drillLevel = drillLevelValues['drillLevel'];\n if (!this.drillDownView && labelText.search('[+]') !== -1) {\n directLevel = this.calculatePreviousLevelChildItems(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 */\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 - check whether it is selected or not.\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 */\n TreeMap.prototype.getModuleName = function () {\n return 'treemap';\n };\n /**\n * This method is used to dispose the treemap component.\n */\n TreeMap.prototype.destroy = function () {\n this.unWireEVents();\n removeElement('treeMapMeasureText');\n this.drilledItems = [];\n this.levelSelection = [];\n this.legendId = [];\n this.removeSvg();\n _super.prototype.destroy.call(this);\n };\n TreeMap.prototype.removeSvg = function () {\n removeElement(this.element.id + '_Secondary_Element');\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Returns the string value.\n * @private\n */\n TreeMap.prototype.getPersistData = function () {\n return '';\n };\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowPrint\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowImageExport\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"height\", void 0);\n __decorate([\n Complex({}, Border)\n ], TreeMap.prototype, \"border\", void 0);\n __decorate([\n Complex({}, Margin)\n ], TreeMap.prototype, \"margin\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"background\", void 0);\n __decorate([\n Property('Material')\n ], TreeMap.prototype, \"theme\", void 0);\n __decorate([\n Complex({}, TitleSettings)\n ], TreeMap.prototype, \"titleSettings\", void 0);\n __decorate([\n Property('Squarified')\n ], TreeMap.prototype, \"layoutType\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"weightValuePath\", void 0);\n __decorate([\n Property('')\n ], TreeMap.prototype, \"rangeColorValuePath\", void 0);\n __decorate([\n Property('')\n ], TreeMap.prototype, \"equalColorValuePath\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"colorValuePath\", void 0);\n __decorate([\n Property([])\n ], TreeMap.prototype, \"palette\", void 0);\n __decorate([\n Property('TopLeftBottomRight')\n ], TreeMap.prototype, \"renderDirection\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"enableDrillDown\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"enableBreadcrumb\", void 0);\n __decorate([\n Property(' - ')\n ], TreeMap.prototype, \"breadcrumbConnector\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"drillDownView\", void 0);\n __decorate([\n Complex({}, InitialDrillSettings)\n ], TreeMap.prototype, \"initialDrillDown\", void 0);\n __decorate([\n Complex({}, LeafItemSettings)\n ], TreeMap.prototype, \"leafItemSettings\", void 0);\n __decorate([\n Collection([], LevelSettings)\n ], TreeMap.prototype, \"levels\", void 0);\n __decorate([\n Complex({}, HighlightSettings)\n ], TreeMap.prototype, \"highlightSettings\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], TreeMap.prototype, \"selectionSettings\", void 0);\n __decorate([\n Complex({}, TooltipSettings)\n ], TreeMap.prototype, \"tooltipSettings\", void 0);\n __decorate([\n Complex({}, LegendSettings)\n ], TreeMap.prototype, \"legendSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"useGroupingSeparator\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"description\", void 0);\n __decorate([\n Property(1)\n ], TreeMap.prototype, \"tabIndex\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"format\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"drillStart\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"drillEnd\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemSelected\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemHighlight\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"tooltipRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemMove\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"doubleClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"rightClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"mouseMove\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"resize\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"legendItemRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"legendRendering\", void 0);\n TreeMap = __decorate([\n NotifyPropertyChanges\n ], TreeMap);\n return TreeMap;\n}(Component));\nexport { TreeMap };\n/**\n * @private\n */\nvar LevelsData = /** @class */ (function () {\n function LevelsData() {\n }\n return LevelsData;\n}());\nexport { LevelsData };\n","import { LevelsData } from '../treemap';\nimport { findChildren, Location, Rect, Size, measureText, TextOption, PathOption, RectOption, drawSymbol, orderByArea, legendMaintain } from '../utils/helper';\nimport { Browser, isNullOrUndefined, EventHandler, extend } from '@syncfusion/ej2-base';\nimport { renderTextElement, textTrim } from '../utils/helper';\nimport { legendItemRendering, legendRendering } from '../model/constants';\n/**\n * Legend module class\n */\nvar TreeMapLegend = /** @class */ (function () {\n function TreeMapLegend(treemap) {\n this.page = 0;\n this.legendBorderRect = new Rect(0, 0, 0, 0);\n this.currentPage = 0;\n this.heightIncrement = 0;\n this.widthIncrement = 0;\n this.textMaxWidth = 0;\n this.legendInteractiveGradient = [];\n this.legendItemRect = new Rect(0, 0, 0, 0);\n this.treemap = treemap;\n this.addEventListener();\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * method for legend\n */\n TreeMapLegend.prototype.renderLegend = function () {\n var _this = this;\n this.legendRenderingCollections = [];\n this.legendCollections = [];\n this.legendNames = [];\n this.totalPages = [];\n this.gradientCount = 1;\n this.widthIncrement = 0;\n this.heightIncrement = 0;\n this.defsElement = this.treemap.renderer.createDefs();\n this.treemap.svgObject.appendChild(this.defsElement);\n var eventArgs = {\n 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 TreeMapLegend.prototype.calculateLegendBounds = function () {\n var _this = this;\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n this.findColorMappingLegendItems(LevelsData.levelsData[0]);\n if ((this.treemap.palette.length > 0 || !isNullOrUndefined(this.treemap.colorValuePath))\n && this.legendCollections.length === 0) {\n this.findPaletteLegendItems(LevelsData.levelsData[0]);\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.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 if (legendMode === 'Default') {\n legendWidth = (isNullOrUndefined(legendWidth)) ? treemap.areaRect.width : legendWidth;\n legendHeight = (isNullOrUndefined(legendHeight)) ? treemap.areaRect.height : legendHeight;\n var j = 0;\n for (var i = 0; i < this.legendCollections.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var legendItem = this.legendCollections[i];\n if (isNullOrUndefined(this.totalPages[this.page])) {\n this.totalPages[this.page] = { Page: (this.page + 1), Collection: [] };\n }\n var legendTextSize = measureText(legendItem['legendName'], itemTextStyle);\n this.textMaxWidth = Math.max(this.textMaxWidth, legendTextSize.width);\n if (i === 0) {\n startX_1 = shapeX = (leftPadding + (shapeWidth / 2));\n startY_1 = shapeY = topPadding + legendTitleSize.height + (shapeHeight > legendTextSize.height ? shapeHeight / 2\n : (legendTextSize.height / 4));\n }\n else {\n var maxSize = (legendTextSize.height > shapeHeight) ? legendTextSize.height : shapeHeight;\n if (orientation_1 === 'Horizontal') {\n var prvePositionX = (textLocation[j - 1].x + textLocation[j - 1].width) + textPadding + shapeWidth;\n if ((prvePositionX + shapePadding + legendTextSize.width) > legendWidth) {\n var nextPositionY = (textLocation[j - 1].y > (shapeLocation[j - 1].y + (shapeHeight / 2)) ?\n textLocation[j - 1].y : (shapeLocation[j - 1].y + (shapeHeight / 2))) + topPadding;\n if ((nextPositionY + maxSize) > legendHeight) {\n this.getPageChanged();\n j = 0;\n shapeLocation = [];\n textLocation = [];\n shapeX = startX_1;\n shapeY = startY_1;\n }\n else {\n shapeX = (shapeLocation[0].x);\n shapeY = (nextPositionY + (maxSize / 2));\n }\n }\n else {\n shapeX = (prvePositionX - (shapeWidth / 2));\n shapeY = (shapeLocation[j - 1]).y;\n }\n }\n else {\n var prevPositionY = textLocation[j - 1].y > shapeLocation[j - 1].y + (shapeHeight / 2) ?\n textLocation[j - 1].y : shapeLocation[j - 1].y + (shapeHeight / 2);\n if ((prevPositionY + topPadding + maxSize) > legendHeight) {\n var nextPositionX = (textLocation[j - 1].x + this.textMaxWidth + textPadding);\n if ((nextPositionX + shapePadding + legendTextSize.width) > legendWidth) {\n shapeX = startX_1;\n shapeY = startY_1;\n textLocation = [];\n shapeLocation = [];\n this.getPageChanged();\n j = 0;\n }\n else {\n shapeX = nextPositionX + (shapeWidth / 2);\n shapeY = (shapeLocation[0].y);\n }\n }\n else {\n shapeX = shapeLocation[j - 1].x;\n shapeY = prevPositionY + topPadding + (shapeHeight / 2);\n }\n }\n }\n textX = shapeX + (shapeWidth / 2) + shapePadding;\n textY = shapeY + (legendTextSize.height / 4);\n shapeLocation.push({ x: shapeX, y: shapeY });\n textLocation.push({ x: textX, y: textY, width: legendTextSize.width, height: (legendTextSize.height / 2) });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalPages[this.page]['Collection'].push({\n DisplayText: legendItem['legendName'], element: legendItem['gradientElement'],\n Shape: { x: shapeX, y: shapeY },\n Text: { x: textX, y: textY },\n Fill: legendItem['legendFill'],\n Data: legendItem['legendData'],\n Rect: {\n x: shapeLocation[j].x - (shapeWidth / 2),\n y: (shapeLocation[j].y - (shapeHeight / 2)) < (textY - legendTextSize.height) ?\n (shapeLocation[j].y - (shapeHeight / 2)) : (textY - legendTextSize.height),\n width: Math.abs((shapeLocation[j].x - (shapeWidth / 2)) - (textX + legendTextSize.width)),\n height: ((shapeHeight > legendTextSize.height) ? shapeHeight : legendTextSize.height)\n }\n });\n j++;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.totalPages[0]['Collection'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n collection.forEach(function (legendObj, index) {\n var legendRect = new Rect(legendObj['Rect']['x'], legendObj['Rect']['y'], legendObj['Rect']['width'], legendObj['Rect']['height']);\n if (index === 0) {\n startX_1 = legendRect.x;\n startY_1 = legendRect.y;\n }\n _this.widthIncrement = Math.max(_this.widthIncrement, Math.abs(startX_1 - (legendRect.x + legendRect.width)));\n _this.heightIncrement = Math.max(_this.heightIncrement, Math.abs(startY_1 - (legendRect.y + legendRect.height)));\n });\n legendWidth = ((this.widthIncrement < legendWidth) ? this.widthIncrement : legendWidth);\n legendHeight = ((this.heightIncrement < legendHeight) ? this.heightIncrement : legendHeight);\n this.legendItemRect = {\n x: collection[0]['Rect']['x'], y: collection[0]['Rect']['y'],\n width: legendWidth, height: legendHeight\n };\n }\n else {\n var legendLength = this.legendCollections.length;\n var rectWidth = (orientation_1 === 'Horizontal') ? (isNullOrUndefined(legendWidth)) ? (treemap.areaRect.width / legendLength) :\n (legendWidth / legendLength) : (isNullOrUndefined(legendWidth)) ? defaultSize : legendWidth;\n var rectHeight = (orientation_1 === 'Horizontal') ? (isNullOrUndefined(legendHeight)) ? defaultSize : legendHeight :\n (isNullOrUndefined(legendHeight)) ? (treemap.areaRect.height / legendLength) : (legendHeight / legendLength);\n startX_1 = 0;\n startY_1 = legendTitleSize.height + spacing;\n var textPadding_1 = 10;\n var placement = legend.labelPosition;\n var itemStartX = 0;\n var itemStartY = 0;\n var labelAction = legend.labelDisplayMode;\n var maxTextHeight = 0;\n var maxTextWidth = 0;\n for (var i = 0; i < this.legendCollections.length; i++) {\n startX_1 = (orientation_1 === 'Horizontal') ? (startX_1 + rectWidth) : startX_1;\n startY_1 = (orientation_1 === 'Horizontal') ? startY_1 : (startY_1 + rectHeight);\n var legendText = this.legendCollections[i]['legendName'];\n var itemTextSize = new Size(0, 0);\n if (labelAction === 'None') {\n itemTextSize = measureText(legendText, itemTextStyle);\n }\n else if (labelAction === 'Trim') {\n legendText = textTrim((orientation_1 === 'Horizontal' ? rectWidth : rectHeight), legendText, itemTextStyle);\n itemTextSize = measureText(legendText, itemTextStyle);\n }\n else {\n legendText = '';\n }\n maxTextHeight = Math.max(maxTextHeight, itemTextSize.height);\n maxTextWidth = Math.max(maxTextWidth, itemTextSize.width);\n if (itemTextSize.width > 0 && itemTextSize.height > 0) {\n if (orientation_1 === 'Horizontal') {\n textX = startX_1 + (rectWidth / 2);\n textY = (placement === 'After') ? (startY_1 + rectHeight + (itemTextSize.height / 2)) + textPadding_1 :\n (startY_1 - textPadding_1);\n }\n else {\n textX = (placement === 'After') ? startX_1 - (itemTextSize.width / 2) - textPadding_1\n : (startX_1 + rectWidth + itemTextSize.width / 2) + textPadding_1;\n textY = startY_1 + (rectHeight / 2) + (itemTextSize.height / 4);\n }\n }\n if (i === 0) {\n itemStartX = (orientation_1 === 'Horizontal') ? startX_1 : (placement === 'After') ?\n textX - (itemTextSize.width / 2) : startX_1;\n itemStartY = (orientation_1 === 'Horizontal') ? (placement === 'After') ? startY_1 :\n textY - (itemTextSize.height / 2) : startY_1;\n }\n if (i === legendLength - 1) {\n legendWidth = (orientation_1 === 'Horizontal') ? Math.abs((startX_1 + rectWidth) - itemStartX) :\n (rectWidth + maxTextWidth + textPadding_1);\n legendHeight = (orientation_1 === 'Horizontal') ? (rectHeight + (maxTextHeight / 2) + textPadding_1) :\n Math.abs((startY_1 + rectHeight) - itemStartY);\n }\n this.legendRenderingCollections.push({\n fill: this.legendCollections[i]['legendFill'], x: startX_1, y: startY_1,\n width: rectWidth, height: rectHeight, element: this.legendCollections[i]['gradientElement'],\n text: legendText, textX: textX, textY: textY,\n textWidth: itemTextSize.width, textHeight: itemTextSize.height,\n data: this.legendCollections[i]['legendData']\n });\n }\n this.legendItemRect = { x: itemStartX, y: itemStartY, width: legendWidth, height: legendHeight };\n }\n }\n };\n TreeMapLegend.prototype.getPageChanged = function () {\n this.page++;\n if (isNullOrUndefined(this.totalPages[this.page])) {\n this.totalPages[this.page] = { Page: (this.page + 1), Collection: [] };\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.findColorMappingLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n if (child && child.length > 0) {\n this.calculateLegendItems(child);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < child.length; i++) {\n this.findColorMappingLegendItems(child[i]);\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.findPaletteLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child;\n var legendFillColor;\n if (!isNullOrUndefined(this.treemap.drilledItems)) {\n if (this.treemap.drilledItems.length === 0 && !isNullOrUndefined(this.treemap.initialDrillDown.groupName)\n && isNullOrUndefined(this.treemap.drilledLegendItems)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var items = findChildren(data)['values'];\n for (var k = 0; k < items.length; k++) {\n if (items[k]['Name'] === this.treemap.initialDrillDown.groupName) {\n items[k]['isDrilled'] = !items[k]['isDrilled'];\n data = items[k];\n this.treemap.currentLevel = this.treemap.initialDrillDown.groupIndex;\n legendFillColor = this.treemap.palette.length > 0 ? this.treemap.palette[k % this.treemap.palette.length] :\n items[k]['data'][this.treemap.colorValuePath];\n break;\n }\n }\n }\n }\n if (this.treemap.enableDrillDown && !isNullOrUndefined(this.treemap.drilledLegendItems)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childElement = this.treemap.drilledLegendItems;\n legendFillColor = childElement['data']['options']['fill'];\n if (childElement['data']['isDrilled']) {\n child = findChildren(childElement['data'])['values'];\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentElement = childElement['data']['parent'];\n child = findChildren(parentElement)['values'];\n }\n }\n else {\n child = findChildren(data)['values'];\n }\n var isDuplicate;\n var legendName;\n if (child && child.length > 0) {\n for (var i = 0; i < child.length; i++) {\n if (isNullOrUndefined(child[i]['data'][this.treemap.legendSettings.showLegendPath]) ||\n child[i]['data'][this.treemap.legendSettings.showLegendPath]) {\n legendName = child[i]['data'][this.treemap.legendSettings.valuePath] ?\n child[i]['data'][this.treemap.legendSettings.valuePath] : child[i]['name'];\n isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, legendName) : false;\n if (!isDuplicate) {\n this.legendCollections.push({\n legendName: legendName,\n legendFill: this.treemap.palette.length > 0 ? !isNullOrUndefined(this.treemap.currentLevel)\n ? legendFillColor : this.treemap.palette[i % this.treemap.palette.length] :\n child[i]['data'][this.treemap.colorValuePath],\n legendData: [],\n itemArea: child[i]['weight']\n });\n }\n }\n }\n this.legendCollections.sort(orderByArea);\n if (this.treemap.palette.length > 0) {\n for (var j = 0; j < this.legendCollections.length; j++) {\n this.legendCollections[j]['legendFill'] = !isNullOrUndefined(this.treemap.currentLevel)\n ? legendFillColor : this.treemap.palette[j % this.treemap.palette.length];\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.calculateLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isAddData;\n var fill;\n var rangeValue;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData;\n var legendText;\n var isLeafItem;\n var colorMapProcess = false;\n var colorMapping;\n var groupIndex;\n var leaf = this.treemap.leafItemSettings;\n var levels = this.treemap.levels;\n var equalValue;\n var position = this.treemap.legendSettings.position;\n var gradientElement;\n var x2;\n var y2;\n var actualValue;\n var isDuplicate;\n var isEqualColor;\n var isRange;\n var isDesaturation = false;\n var legendIndex = 0;\n var outfill;\n var labelLegend;\n var otherIndex;\n this.outOfRangeLegend = null;\n for (var i = 0; i < data.length; i++) {\n fill = '';\n isEqualColor = false;\n isRange = false;\n isDesaturation = false;\n currentData = data[i]['data'];\n groupIndex = data[i]['groupIndex'];\n isLeafItem = (this.treemap.levels.length === 0 || groupIndex === this.treemap.levels.length);\n colorMapping = isLeafItem ? leaf.colorMapping : levels[groupIndex].colorMapping;\n for (var j = 0; j < colorMapping.length; j++) {\n var colorMap = colorMapping[j];\n gradientElement = null;\n rangeValue = Number(currentData[this.treemap.rangeColorValuePath]);\n equalValue = currentData[this.treemap.equalColorValuePath];\n colorMap.value = !isNullOrUndefined(colorMap.value) ? colorMap.value.toString() : colorMap.value;\n if (!isNullOrUndefined(colorMap.from) && !isNullOrUndefined(colorMap.to) &&\n rangeValue >= colorMap.from && rangeValue <= colorMap.to && colorMap.showLegend) {\n colorMapProcess = true;\n isRange = true;\n actualValue = colorMap.from + ' - ' + colorMap.to;\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : colorMap.from + ' - ' + colorMap.to;\n fill = isNullOrUndefined(colorMap.color) ? fill : colorMap.color;\n isAddData = this.isAddNewLegendData(actualValue);\n }\n else if (!isNullOrUndefined(colorMap.value) && equalValue === colorMap.value && colorMap.showLegend) {\n colorMapProcess = true;\n isEqualColor = true;\n actualValue = colorMap.value.toString();\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : colorMap.value.toString();\n fill = isNullOrUndefined(colorMap.color) ? fill :\n Object.prototype.toString.call(colorMap.color) === '[object Array]' ? colorMap.color[0] : colorMap.color;\n isAddData = this.isAddNewLegendData(actualValue);\n }\n if (colorMapProcess && isNullOrUndefined(colorMap.value) && colorMap.maxOpacity && colorMap.minOpacity\n && this.treemap.legendSettings.mode === 'Interactive') {\n var colors = [];\n isDesaturation = true;\n if (Object.prototype.toString.call(colorMap.color) === '[object Array]') {\n for (var q = 0; q < colorMap.color.length; q++) {\n var offsetColor = 100 / (colorMap.color.length - 1);\n var offsetValue = q * offsetColor + '%';\n var stop1Color = { colorStop: offsetValue.toString(), color: colorMap.color[q] };\n colors.push(stop1Color);\n }\n }\n else {\n var stop1Color = { colorStop: '0%', color: fill };\n var stop2Color = { colorStop: '100%', color: fill };\n colors.push(stop1Color);\n colors.push(stop2Color);\n }\n x2 = position === 'Top' || position === 'Bottom' ? '100%' : '0%';\n y2 = position === 'Top' || position === 'Bottom' ? '0%' : '100%';\n var gradient = {\n id: 'groupIndex_' + groupIndex + '_colorIndex_' + this.gradientCount, x1: '0%', y1: '0%', x2: x2, y2: y2\n };\n gradientElement = this.treemap.renderer.drawGradient('linearGradient', gradient, colors).childNodes[0];\n if (Object.prototype.toString.call(colorMap.color) !== '[object Array]') {\n gradientElement.childNodes[0].setAttribute('stop-opacity', colorMap.minOpacity.toString());\n gradientElement.childNodes[1].setAttribute('stop-opacity', colorMap.maxOpacity.toString());\n }\n this.defsElement.appendChild(gradientElement);\n this.gradientCount++;\n }\n isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, legendText) : false;\n if (isAddData && isAddData['process'] && colorMapProcess && !isDuplicate) {\n colorMapProcess = false;\n fill = ((Object.prototype.toString.call(colorMap.color) === '[object Array]')) && isNullOrUndefined(gradientElement)\n && isNullOrUndefined(colorMap.value) ? this.legendGradientColor(colorMap, legendIndex) : fill;\n this.legendCollections.push({\n actualValue: actualValue, levelIndex: !isLeafItem ? j : -1, leafIndex: isLeafItem ? j : -1,\n legendName: legendText, legendFill: fill, legendData: [], groupIndex: !isLeafItem ? groupIndex : -1,\n gradientElement: !isNullOrUndefined(gradientElement) ? gradientElement : isNullOrUndefined(colorMap.value)\n ? this.legendLinearGradient : null, name: data[i]['name'],\n opacity: this.treemap.legendSettings.opacity, borderColor: this.treemap.legendSettings.border.color,\n borderWidth: this.treemap.legendSettings.border.width\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[this.legendCollections.length - 1]['legendData'].push(data[i]);\n legendIndex++;\n }\n else if (colorMapProcess && !isDuplicate) {\n colorMapProcess = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[isAddData['value']]['legendData'].push(data[i]);\n }\n if (!isRange && !isDesaturation && !isEqualColor) {\n if (isNullOrUndefined(colorMap.from) && isNullOrUndefined(colorMap.to)\n && isNullOrUndefined(colorMap.minOpacity) &&\n isNullOrUndefined(colorMap.maxOpacity) && isNullOrUndefined(colorMap.value) &&\n !isNullOrUndefined(colorMap.color)) {\n outfill = ((Object.prototype.toString.call(colorMap.color) === '[object Array]'))\n ? colorMap.color[0] : colorMap.color;\n labelLegend = !isNullOrUndefined(colorMap.label) ? colorMap.label : 'Others';\n if (isNullOrUndefined(this.outOfRangeLegend)) {\n this.legendCollections.push({\n actualValue: labelLegend, legendData: [],\n legendName: labelLegend, legendFill: outfill\n });\n otherIndex = this.legendCollections.length;\n this.outOfRangeLegend = this.legendCollections[otherIndex - 1];\n legendIndex++;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[otherIndex - 1]['legendData'].push(data[i]);\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.removeDuplicates = function (legendCollection, text) {\n var isDuplicate = false;\n for (var i = 0; i < legendCollection.length; i++) {\n if (legendCollection[i]['legendName'] === text) {\n isDuplicate = true;\n break;\n }\n else {\n continue;\n }\n }\n return isDuplicate;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.isAddNewLegendData = function (legendText) {\n var newDataProcess;\n var itemValue;\n if (this.legendCollections.length === 0) {\n newDataProcess = true;\n }\n else {\n for (var j = 0; j < this.legendCollections.length; j++) {\n if (legendText === this.legendCollections[j]['actualValue']) {\n newDataProcess = false;\n itemValue = j;\n break;\n }\n else if (j === this.legendCollections.length - 1) {\n newDataProcess = true;\n }\n }\n }\n return { process: newDataProcess, value: itemValue };\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To draw the legend\n */\n TreeMapLegend.prototype.drawLegend = function () {\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n var render = treemap.renderer;\n var fill;\n var textOptions;\n var gradientElement;\n var textFont = legend.textStyle;\n this.legendGroup = render.createGroup({ id: treemap.element.id + '_Legend_Group' });\n this.renderLegendBorder();\n this.renderLegendTitle();\n if (legend.mode === 'Default') {\n this.drawLegendItem(this.currentPage);\n }\n else {\n for (var i = 0; i < this.legendRenderingCollections.length; i++) {\n var itemId = treemap.element.id + '_Legend_Index_' + i;\n var textId = treemap.element.id + '_Legend_Index_' + i + '_Text';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = this.legendRenderingCollections[i];\n gradientElement = item['element'];\n fill = gradientElement ? 'url(#' + gradientElement.id + ')' : item['fill'];\n var bounds = new Rect(item['x'], item['y'], item['width'], item['height']);\n var textLocation = new Location(item['textX'], item['textY']);\n var rectOptions = new RectOption(itemId, fill, legend.shapeBorder, legend.opacity, bounds);\n if (this.treemap.enableRtl) {\n if (treemap.legendSettings.position === 'Left' || treemap.legendSettings.position === 'Right'\n || (treemap.legendSettings.position === 'Auto'\n && this.treemap.availableSize.width >= this.treemap.availableSize.height)) {\n rectOptions.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - (this.translate.y + rectOptions.height) - Math.abs(this.legendBorderRect.y - rectOptions.y);\n textLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - (this.translate.y) + (item['textHeight'] / 2)\n - Math.abs(this.legendBorderRect.y - textLocation.y);\n }\n else {\n rectOptions.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + rectOptions.width)\n - Math.abs(this.legendBorderRect.x - rectOptions.x);\n textLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - this.translate.x - Math.abs(this.legendBorderRect.x - textLocation.x);\n }\n }\n textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'middle', item['text'], '', '');\n renderTextElement(textOptions, textFont, textFont.color || this.treemap.themeStyle.legendTextColor, this.legendGroup);\n this.legendGroup.appendChild(render.drawRectangle(rectOptions));\n }\n }\n legendMaintain(this.treemap, this.legendGroup);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.defaultLegendRtlLocation = function (collection, spacing, treemap, legend) {\n var shapeLocation = collection['Shape'];\n var textLocation = collection['Text'];\n var legendText = collection['DisplayText'];\n var textSize = measureText(legendText, legend.textStyle);\n shapeLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + spacing) - Math.abs(this.legendBorderRect.x - shapeLocation.x);\n textLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + textSize.width + spacing) - Math.abs(this.legendBorderRect.x - textLocation.x);\n if (treemap.legendSettings.position === 'Left' || treemap.legendSettings.position === 'Right'\n || (treemap.legendSettings.position === 'Auto'\n && this.treemap.availableSize.width >= this.treemap.availableSize.height)) {\n shapeLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - this.translate.y - Math.abs(Math.abs(this.legendBorderRect.y) - shapeLocation.y) - (legend.shapeHeight / 2);\n textLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - this.translate.y - Math.abs(Math.abs(this.legendBorderRect.y) - textLocation.y);\n }\n return { shapeLocation: shapeLocation, textLocation: textLocation };\n };\n TreeMapLegend.prototype.drawLegendItem = function (page) {\n var _this = this;\n var treemap = this.treemap;\n var spacing = 10;\n var legend = treemap.legendSettings;\n var shapeSize = new Size(legend.shapeWidth, legend.shapeHeight);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var textOptions;\n var legendRtlLocation;\n var render = treemap.renderer;\n var shapeBorder = legend.shapeBorder;\n var eventArgs;\n if (page >= 0 && page < this.totalPages.length) {\n if (document.getElementById(this.legendGroup.id)) {\n document.getElementById(this.legendGroup.id).remove();\n }\n var isLineShape_1 = (legend.shape === 'HorizontalLine' || legend.shape === 'VerticalLine' || legend.shape === 'Cross');\n var strokeColor_1 = isLineShape_1 ? isNullOrUndefined(legend.fill) ? '#000000' : legend.fill : shapeBorder.color;\n var strokeWidth_1 = isLineShape_1 ? (shapeBorder.width === 0) ? 1 : shapeBorder.width : shapeBorder.width;\n var _loop_1 = function (i) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this_1.totalPages[page]['Collection'][i];\n var legendElement = render.createGroup({ id: treemap.element.id + '_Legend_Index_' + i });\n var legendText = collection['DisplayText'];\n var shapeId = treemap.element.id + '_Legend_Shape_Index_' + i;\n var textId = treemap.element.id + '_Legend_Text_Index_' + i;\n var shapeLocation = collection['Shape'];\n var textLocation = collection['Text'];\n if (treemap.enableRtl) {\n legendRtlLocation = this_1.defaultLegendRtlLocation(collection, spacing, treemap, legend);\n shapeLocation = legendRtlLocation['shapeLocation'];\n textLocation = legendRtlLocation['textLocation'];\n }\n eventArgs = {\n cancel: false, name: legendItemRendering, treemap: treemap, fill: collection['Fill'],\n shape: legend.shape, imageUrl: legend.imageUrl\n };\n this_1.treemap.trigger(legendItemRendering, eventArgs, function (observedArgs) {\n var renderOptions = new PathOption(shapeId, observedArgs.fill, strokeWidth_1, isLineShape_1 ? collection['Fill'] : strokeColor_1, legend.opacity, '');\n legendElement.appendChild(drawSymbol(shapeLocation, observedArgs.shape, shapeSize, observedArgs.imageUrl, renderOptions, legendText));\n textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'start', legendText, '', '');\n renderTextElement(textOptions, legend.textStyle, legend.textStyle.color || _this.treemap.themeStyle.legendTextColor, legendElement);\n _this.legendGroup.appendChild(legendElement);\n });\n };\n var this_1 = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (var i = 0; i < this.totalPages[page]['Collection'].length; i++) {\n _loop_1(i);\n }\n var pagingGroup = void 0;\n var width = spacing;\n var height = (spacing / 2);\n if (this.page !== 0) {\n var pagingText = (page + 1) + '/' + this.totalPages.length;\n var pagingFont = legend.textStyle;\n var pagingTextSize = measureText(pagingText, pagingFont);\n var leftPageX = (this.legendItemRect.x + this.legendItemRect.width) - pagingTextSize.width -\n (width * 2) - spacing;\n var rightPageX = (this.legendItemRect.x + this.legendItemRect.width);\n var locY = (this.legendItemRect.y + this.legendItemRect.height) + (height / 2) + spacing;\n var pageTextX = rightPageX - width - (pagingTextSize.width / 2) - (spacing / 2);\n pagingGroup = render.createGroup({ id: treemap.element.id + '_Legend_Paging_Group' });\n var leftPageElement = render.createGroup({ id: treemap.element.id + '_Legend_Left_Paging_Group' });\n var rightPageElement = render.createGroup({ id: treemap.element.id + '_Legend_Right_Paging_Group' });\n var rightPath = ' M ' + rightPageX + ' ' + locY + ' L ' + (rightPageX - width) + ' ' + (locY - height) +\n ' L ' + (rightPageX - width) + ' ' + (locY + height) + ' z ';\n var leftPath = ' M ' + leftPageX + ' ' + locY + ' L ' + (leftPageX + width) + ' ' + (locY - height) +\n ' L ' + (leftPageX + width) + ' ' + (locY + height) + ' z ';\n var leftPageOptions = new PathOption(treemap.element.id + '_Left_Page', '#a6a6a6', 0, '#a6a6a6', 1, '', leftPath);\n leftPageElement.appendChild(render.drawPath(leftPageOptions));\n var leftRectPageOptions = new RectOption(treemap.element.id + '_Left_Page_Rect', 'transparent', {}, 1, new Rect(leftPageX - (width / 2), (locY - (height * 2)), width * 2, spacing * 2), '');\n leftPageElement.appendChild(render.drawRectangle(leftRectPageOptions));\n this.wireEvents(leftPageElement);\n var rightPageOptions = new PathOption(treemap.element.id + '_Right_Page', '#a6a6a6', 0, '#a6a6a6', 1, '', rightPath);\n rightPageElement.appendChild(render.drawPath(rightPageOptions));\n var rightRectPageOptions = new RectOption(treemap.element.id + '_Right_Page_Rect', 'transparent', {}, 1, new Rect((rightPageX - width), (locY - height), width, spacing), '');\n rightPageElement.appendChild(render.drawRectangle(rightRectPageOptions));\n this.wireEvents(rightPageElement);\n pagingGroup.appendChild(leftPageElement);\n pagingGroup.appendChild(rightPageElement);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var pageTextOptions = {\n 'id': treemap.element.id + '_Paging_Text',\n 'x': pageTextX,\n 'y': locY + (pagingTextSize.height / 4),\n 'fill': '#a6a6a6',\n 'font-size': '14px',\n 'font-style': pagingFont.fontStyle,\n 'font-family': pagingFont.fontFamily,\n 'font-weight': pagingFont.fontWeight,\n 'text-anchor': 'middle',\n 'transform': '',\n 'opacity': 1,\n 'dominant-baseline': ''\n };\n pagingGroup.appendChild(render.createText(pageTextOptions, pagingText));\n this.legendGroup.appendChild(pagingGroup);\n }\n }\n };\n TreeMapLegend.prototype.renderLegendBorder = function () {\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n var legendTitle = legend.title.text;\n var spacing = 10;\n var textStyle = legend.titleStyle;\n var title = textTrim((this.legendItemRect.width + (spacing * 2)), legendTitle, textStyle);\n var textSize = measureText(title, textStyle);\n this.legendBorderRect = new Rect((this.legendItemRect.x - spacing), (this.legendItemRect.y - spacing - textSize.height), (this.legendItemRect.width) + (spacing * 2), (this.legendItemRect.height) + (spacing * 2) + textSize.height +\n (legend.mode === 'Interactive' ? 0 : (this.page !== 0) ? spacing : 0));\n var renderOptions = new RectOption(treemap.element.id + '_Legend_Border', legend.background, legend.border, 1, this.legendBorderRect, '');\n var legendBorder = treemap.renderer.drawRectangle(renderOptions);\n legendBorder.style.pointerEvents = 'none';\n this.legendGroup.appendChild(legendBorder);\n this.getLegendAlignment(treemap, this.legendBorderRect.width, this.legendBorderRect.height, legend);\n this.legendGroup.setAttribute('transform', 'translate( ' + (this.translate.x + (-(this.legendBorderRect.x))) + ' ' +\n (this.translate.y + (-(this.legendBorderRect.y))) + ' )');\n treemap.svgObject.appendChild(this.legendGroup);\n };\n TreeMapLegend.prototype.renderLegendTitle = function () {\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n var textStyle = legend.titleStyle;\n var legendTitle = legend.title.text;\n var textOptions;\n var spacing = 10;\n var trimTitle = textTrim((this.legendItemRect.width + (spacing * 2)), legendTitle, textStyle);\n var textSize = measureText(trimTitle, textStyle);\n if (legendTitle) {\n textOptions = new TextOption(treemap.element.id + '_LegendTitle', (this.legendItemRect.x) + (this.legendItemRect.width / 2), this.legendItemRect.y - (textSize.height / 2) - (spacing / 2), 'middle', trimTitle, '');\n renderTextElement(textOptions, textStyle, textStyle.color || this.treemap.themeStyle.legendTitleColor, this.legendGroup);\n }\n };\n /**\n * To rendered the interactive pointer\n *\n * @param {PointerEvent | TouchEvent} e - Specifies the pointer argument.\n * @returns {void}\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 TreeMapLegend.prototype.mouseUpHandler = function (e) {\n this.renderInteractivePointer(e);\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeInteractivePointer.bind(this), 3000);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To remove the interactive pointer\n */\n TreeMapLegend.prototype.removeInteractivePointer = function () {\n if (document.getElementById(this.treemap.element.id + '_Interactive_Legend')) {\n var legendElementId = document.getElementById(this.treemap.element.id + '_Interactive_Legend');\n legendElementId.parentNode.removeChild(legendElementId);\n }\n };\n /**\n * To change the next page\n *\n * @param {PointerEvent} e - Specifies the pointer event argument.\n * @returns {void}\n */\n TreeMapLegend.prototype.changeNextPage = function (e) {\n this.currentPage = (e.target.id.indexOf('_Left_Page_') > -1) ? (this.currentPage - 1) :\n (this.currentPage + 1);\n this.drawLegend();\n };\n /**\n * Wire events for event handler\n *\n * @param {Element} element - Specifies the element.\n * @returns {void}\n */\n TreeMapLegend.prototype.wireEvents = function (element) {\n EventHandler.add(element, Browser.touchStartEvent, this.changeNextPage, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To add the event listener\n */\n TreeMapLegend.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.renderInteractivePointer, this);\n this.treemap.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To remove the event listener\n */\n TreeMapLegend.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.renderInteractivePointer);\n this.treemap.off(Browser.touchEndEvent, this.mouseUpHandler);\n };\n /**\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 */\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 */\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 */\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 = [textFormatter(this.tooltipSettings.format, toolTipData, this.treemap) ||\n formatValue(value, this.treemap) + ' : ' + this.treemap.weightValuePath.toString()];\n }\n else {\n tooltipContent = [textFormatter(this.tooltipSettings.format, toolTipData, this.treemap) ||\n this.treemap.weightValuePath.toString() + ' : ' + formatValue(value, this.treemap)];\n }\n if (document.getElementById(this.tooltipId)) {\n tooltipEle = document.getElementById(this.tooltipId);\n }\n else {\n tooltipEle = createElement('div', {\n id: this.treemap.element.id + '_TreeMapTooltip',\n className: 'EJ2-TreeMap-Tooltip'\n });\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.fontFamily = this.treemap.themeStyle.fontFamily;\n this.tooltipSettings.textStyle.color = this.treemap.themeStyle.tooltipFontColor\n || this.tooltipSettings.textStyle.color;\n this.tooltipSettings.textStyle.opacity = this.treemap.themeStyle.tooltipTextOpacity\n || this.tooltipSettings.textStyle.opacity;\n tootipArgs = {\n cancel: false, name: tooltipRendering, item: item,\n options: {\n location: location, text: tooltipContent, data: toolTipData,\n textStyle: this.tooltipSettings.textStyle, template: this.tooltipSettings.template\n },\n treemap: this.treemap,\n element: target, eventArgs: e\n };\n // 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 template: args['template'],\n content: args['text'],\n shapes: [],\n location: args['location'],\n palette: [markerFill],\n areaBounds: this.treemap.areaRect,\n textStyle: args['textStyle'],\n fill: this.treemap.tooltipSettings.fill ? this.treemap.tooltipSettings.fill : this.treemap.themeStyle.tooltipFillColor\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.treemap.isVue || this.treemap.isVue3) {\n this.svgTooltip.controlInstance = this.treemap;\n }\n this.svgTooltip.opacity = this.treemap.themeStyle.tooltipFillOpacity || this.svgTooltip.opacity;\n this.svgTooltip.appendTo(tooltipEle);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.renderReactTemplates();\n }\n else {\n this.removeTooltip();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.clearTemplate();\n }\n };\n TreeMapTooltip.prototype.mouseUpHandler = function (e) {\n this.renderTooltip(e);\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeTooltip.bind(this), 2000);\n };\n TreeMapTooltip.prototype.removeTooltip = function () {\n if (document.getElementsByClassName('EJ2-TreeMap-Tooltip').length > 0) {\n var tooltipElementId = document.getElementsByClassName('EJ2-TreeMap-Tooltip')[0];\n tooltipElementId.parentNode.removeChild(tooltipElementId);\n }\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To bind events for tooltip module\n */\n TreeMapTooltip.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.renderTooltip, this);\n this.treemap.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To unbind events for tooltip module\n */\n TreeMapTooltip.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.renderTooltip);\n this.treemap.off(Browser.touchEndEvent, this.mouseUpHandler);\n };\n /**\n * Get module name.\n *\n * @returns {string} returns string\n */\n TreeMapTooltip.prototype.getModuleName = function () {\n return 'treeMapTooltip';\n };\n /**\n * To destroy the tooltip.\n *\n * @returns {void}\n * @private\n */\n TreeMapTooltip.prototype.destroy = function () {\n if (!isNullOrUndefined(this.svgTooltip)) {\n this.svgTooltip.destroy();\n }\n this.svgTooltip = null;\n this.tooltipSettings = null;\n this.removeEventListener();\n this.treemap = null;\n };\n return TreeMapTooltip;\n}());\nexport { TreeMapTooltip };\n","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","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","subTitleFontColor","tooltipFillColor","tooltipFontColor","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","LevelsData","levelsData","initialDrillDown","groupIndex","groupName","drilledItems","getDrilldownData","extend","legendSettings","currentLevel","calculateLayoutItems","renderLayoutItems","count","enableBreadcrumb","drillData","newData","child","parentData","layoutType","computeSliceAndDiceDimensional","computeSquarifyDimensional","coords","gap","headerHeight","leafItem","groups","sliceAndDiceProcess","groupGap","showHeader","childValue","parentArea","alottedValue","totalWeight","forEach","isHorizontal","sort","isHierarchicalData","padding","calculateChildrenLayout","groupPadding","computeTotalArea","performRowsLayout","currentRow","stack","newCoordinates","getCoordinates","newStack","nextDatum","restData","aspectRatio","newRow","currentRowLength","valueSum","newContainer","cutArea","findMaxAspectRatio","row","rowLength","minArea","Infinity","maxArea","sumArea","area","max","pow","areaWidth","areaHeight","isParent","parentRect","subXOffset","subYOffset","coordinates","y1","x1","dataLength_1","dataSum","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","tabIndex","svgObject","customText","textName","tspanText","labelInterSectAction","drillSymbolCount","drillSymbolSize","textLocation","texts","maxNumber","collectionLength","stringText","getSaturatedColor","itemFill","itemOpacity","defaultLevelsData","option","equalColorValuePath","rangeColorValuePath","colorValuePath","palette","saturatedColor","rgbValue","templateId","baseTemplateId","labelElement","templateLocation","textValue","destroy","currentRect","Theme","mapsTitleFont","Print","control","print","printWindow","open","outerHeight","outerWidth","moveTo","resizeTo","screen","availWidth","availHeight","argsData","htmlContent","getHTMLContent","printFunction","div","cloneNode","Element","getModuleName","ImageExport","export","allowDownload","Promise","resolve","reject","availableSize","Browser","userAgent","svgData","outerHTML","URL","createObjectURL","Blob","XMLSerializer","serializeToString","image_1","Image","context_1","getContext","onload","drawImage","revokeObjectURL","toDataURL","src","PdfExport","orientation","PdfPageOrientation","Landscape","exportElement","backgroundElement","image","context","PdfDocument","imageString","pageSettings","pages","add","graphics","PdfBitmap","save","TreeMap","isResize","preRender","initPrivateVariable","unWireEVents","createSvg","wireEVents","setCulture","render","renderElements","hierarchyData","createSecondaryElement","addTabIndex","renderBorder","renderTitle","titleSettings","processDataManager","dataModule","queryModule","ajaxModule","localAjax","dataSource","DataManager","query","Query","executeQuery","then","renderTreeMapElements","Ajax","onSuccess","args","JSON","parse","send","processingData","visible","renderLegend","elementChange","isResized","renderComplete","firstChild","hasChildNodes","clearTemplate","containerWidth","containerHeight","secondaryElement","insertBefore","borderElement","background","borderRect","drawRectangle","title","bounds","groupEle","margin","right","trimmedTitle","elementSize","location_1","titleBounds","description","subtitleSettings","bottom","map","checkIsHierarchicalData","data_1","currentData","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","resizeOnTreeMap","addEventListener","bind","Internationalization","isDestroyed","args_1","previousSize","currentSize","clearTimeout","contains","setTimeout","refreshing","itemIndex","targetEle","labelText","clickArgs","mouseEvent","preventDefault","doubleTapTimer1","end","Date","getMilliseconds","doubleClick","doubleClickArgs","rightClickArgs","mouseDown","notify","moveArgs","cursor","calculateSelectedTextLevels","drillLevel","levelText","_a","currentLevelLabel","calculatePreviousLevelChildItems","drillLevelValues","directLevel","levelItems","text1","drillTextLevel","h","compareSelectedLabelWithDrillDownItems","drillLevelChild","newDrillItem","startEvent","endEvent","layoutID","templateID","drillMouseMove","drillLength","rightClick","which","layerElementId","textContent","widthIncrement","heightIncrement","drilledLegendItems","drillElementId","treeMapTooltipModule","removeTooltip","removeInteractivePointer","treeMapHighlightModule","shapeHighlightCollection","highLightId","selectItem","levelOrder","isSelected","treeMapSelectionModule","enable","selectTreemapItem","requiredModules","modules","tooltipSettings","member","highlightSettings","onPropertyChanged","newProp","oldProp","removeSvg","getPersistData","Event","NotifyPropertyChanges","Component","TreeMapLegend","page","legendBorderRect","currentPage","textMaxWidth","legendInteractiveGradient","legendItemRect","legendRenderingCollections","legendNames","totalPages","gradientCount","defsElement","createDefs","_changePosition","calculateLegendBounds","drawLegend","legend","findColorMappingLegendItems","findPaletteLegendItems","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 } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\n/**\n * Create the class for size\n */\nvar Size = /** @class */ (function () {\n function Size(width, height) {\n this.width = width;\n this.height = height;\n }\n return Size;\n}());\nexport { Size };\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 = text;\n measureObject.style.position = 'absolute';\n measureObject.style.fontSize = font.size;\n measureObject.style.fontWeight = font.fontWeight;\n measureObject.style.fontStyle = font.fontStyle;\n measureObject.style.fontFamily = font.fontFamily;\n measureObject.style.visibility = 'hidden';\n measureObject.style.top = '-100';\n measureObject.style.left = '0';\n measureObject.style.whiteSpace = 'nowrap';\n // For bootstrap line height issue\n measureObject.style.lineHeight = 'normal';\n return new Size(measureObject.clientWidth, measureObject.clientHeight);\n}\n/**\n * Internal use of text options\n *\n * @private\n */\nvar TextOption = /** @class */ (function () {\n function TextOption(id, x, y, anchor, text, transform, baseLine, connectorText) {\n if (transform === void 0) { transform = ''; }\n this.transform = '';\n this.baseLine = 'auto';\n this.id = id;\n this.text = text;\n this.transform = transform;\n this.anchor = anchor;\n this.x = x;\n this.y = y;\n this.baseLine = baseLine;\n this.connectorText = connectorText;\n }\n return TextOption;\n}());\nexport { TextOption };\n/**\n * Trim the title text\n *\n * @param {number} maxWidth - Specifies the maximum width\n * @param {string} text - Specifies the text\n * @param {FontModel} font - Specifies the font\n * @returns {string} - Returns the string\n * @private\n */\nexport function textTrim(maxWidth, text, font) {\n var label = text;\n var size = measureText(text, font).width;\n if (size > maxWidth) {\n var textLength = text.length;\n for (var i = textLength - 1; i >= 0; --i) {\n label = text.substring(0, i) + '...';\n size = measureText(label, font).width;\n if (size <= maxWidth || label.length < 4) {\n if (label.length < 4) {\n label = ' ';\n }\n return label;\n }\n }\n }\n return label;\n}\n/**\n * Map internal class for Point\n */\nvar Location = /** @class */ (function () {\n function Location(x, y) {\n this.x = x;\n this.y = y;\n }\n return Location;\n}());\nexport { Location };\n/**\n * Method to calculate x position of title\n *\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 */\nexport function findPosition(location, alignment, textSize, type) {\n var x;\n switch (alignment) {\n case 'Near':\n x = location.x;\n break;\n case 'Center':\n x = (type === 'title') ? (location.width / 2 - textSize.width / 2) :\n ((location.x + (location.width / 2)) - textSize.width / 2);\n break;\n case 'Far':\n x = (type === 'title') ? (location.width - location.y - textSize.width) :\n ((location.x + location.width) - textSize.width);\n break;\n }\n var y = (type === 'title') ? location.y + (textSize.height / 2) : ((location.y + location.height / 2) + textSize.height / 2);\n return new Location(x, y);\n}\n/**\n *\n * @param {SvgRenderer} renderer - Specifies the rendering element of the SVG.\n * @param {any} renderOptions - Specifies the settings of the text.\n * @param {string} text - Specifies the text.\n * @returns {HTMLElement} - Returns the HTML element for the text.\n */\nexport function createTextStyle(renderer, renderOptions, text) {\n var htmlObject = renderer.createText(renderOptions, text);\n htmlObject.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n htmlObject.style['user-select'] = 'none';\n htmlObject.style['-moz-user-select'] = 'none';\n htmlObject.style['-webkit-touch-callout'] = 'none';\n htmlObject.style['-webkit-user-select'] = 'none';\n htmlObject.style['-khtml-user-select'] = 'none';\n htmlObject.style['-ms-user-select'] = 'none';\n htmlObject.style['-o-user-select'] = 'none';\n return htmlObject;\n}\n/**\n * Internal rendering of text\n *\n * @param {TextOption} options - Specifies the text option\n * @param {FontModel} font - Specifies the font model\n * @param {string} color - Specifies the color\n * @param {HTMLElement | Element} parent - Specifies the parent element of the text\n * @param {boolean} isMinus - Specifies the boolean value\n * @returns {Element} - Returns the element\n * @private\n */\nexport function renderTextElement(options, font, color, parent, isMinus) {\n if (isMinus === void 0) { isMinus = false; }\n var renderOptions = {\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily,\n 'font-weight': font.fontWeight,\n 'text-anchor': options.anchor,\n 'transform': options.transform,\n 'opacity': font.opacity,\n 'dominant-baseline': options.baseLine,\n 'id': options.id,\n 'x': options.x,\n 'y': options.y,\n 'fill': color\n };\n var text = typeof options.text === 'string' ? options.text : isMinus ? options.text[options.text.length - 1] : options.text[0];\n var tspanElement;\n var renderer = new SvgRenderer('');\n var height;\n var htmlObject;\n var breadCrumbText = !isNullOrUndefined(text) && !isNullOrUndefined(options.connectorText) ?\n (text.search(options.connectorText[1]) >= 0) : false;\n if (breadCrumbText) {\n var drilledLabel = text;\n var spacing = 5;\n var drillLevelText = drilledLabel.split('#');\n for (var z = 0; z < drillLevelText.length; z++) {\n var drillText = (drillLevelText[z].search(options.connectorText) !== -1 &&\n !isNullOrUndefined(options.connectorText)) ?\n options.connectorText : drillLevelText[z];\n renderOptions['id'] = options.id + '_' + z;\n htmlObject = createTextStyle(renderer, renderOptions, drillText);\n if (z % 2 === 0 && z !== 0) {\n var re = /\\s+/g;\n drillText = drillText.replace(re, ' ');\n }\n var size = measureText(drillText, font);\n renderOptions['x'] = z !== 0 ? renderOptions['x'] + size.width : renderOptions['x'] + size.width + spacing;\n parent.appendChild(htmlObject);\n }\n }\n else {\n htmlObject = createTextStyle(renderer, renderOptions, text);\n parent.appendChild(htmlObject);\n }\n if (typeof options.text !== 'string' && options.text.length > 1) {\n for (var i = 1, len = options.text.length; i < len; i++) {\n height = (measureText(options.text[i], font).height);\n tspanElement = renderer.createTSpan({\n 'x': options.x, 'id': options.id,\n 'y': (options.y) + (i * height)\n }, options.text[i]);\n htmlObject.appendChild(tspanElement);\n }\n parent.appendChild(htmlObject);\n }\n return htmlObject;\n}\n/**\n *\n * @param {string} targetId - Specifies the id of the element to which template is to be appended.\n * @param {Element} targetElement - Specifies the element to which template is to be appended.\n * @param {string} contentItemTemplate - Specifies the content to be appended as template.\n * @returns {void}\n */\nexport function setItemTemplateContent(targetId, targetElement, contentItemTemplate) {\n var itemSelect = targetId.split('_RectPath')[0];\n var itemTemplate;\n if (targetId.indexOf('_LabelTemplate') > -1) {\n itemTemplate = targetElement;\n }\n else {\n itemTemplate = document.querySelector('#' + itemSelect + '_LabelTemplate');\n }\n if (!isNullOrUndefined(itemTemplate)) {\n itemTemplate.innerHTML = contentItemTemplate;\n }\n}\n/**\n *\n * @param {string} id - Specifies the id of the element.\n * @returns {Element} - Returns the element.\n */\nexport function getElement(id) {\n return document.getElementById(id);\n}\n/**\n *\n * @param {any} a - Specifies the first order of TreeMap leaf elements.\n * @param {any} b - Specifies the second order of TreeMap leaf elements.\n * @returns {number} - Returns the order of the TreeMap leaf element.\n */\nexport function itemsToOrder(a, b) {\n return a['weight'] === b['weight'] ? 0 : a['weight'] < b['weight'] ? 1 : -1;\n}\n/**\n *\n * @param {string[]} source - Specifies the data from the data source.\n * @param {string} pathName - Specifies the path name in the data source.\n * @param {any} processData - Specifies the data source object.\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @returns {boolean} - Specifies whether data is available in the data source or not.\n */\nexport function isContainsData(source, pathName, processData, treemap) {\n var isExist = false;\n var name = '';\n var path;\n var leaf = treemap.leafItemSettings;\n for (var i = 0; i < source.length; i++) {\n path = treemap.levels[i] ? treemap.levels[i].groupPath : leaf.labelPath ? leaf.labelPath :\n treemap.weightValuePath;\n var data = processData[path] || 'undefined';\n if (source[i] === data) {\n name += data + (i === source.length - 1 ? '' : '#');\n if (name === pathName) {\n isExist = true;\n break;\n }\n }\n }\n return isExist;\n}\n/**\n *\n * @param {any} data - Specifies the data to which the children elements to be found.\n * @returns {any} - Returns the children elements of the TreeMap leaf element.\n */\nexport function findChildren(data) {\n var children;\n if (data) {\n var keys = Object.keys(data);\n children = {};\n for (var i = 0; i < keys.length; i++) {\n if (data[keys[i]] instanceof Array) {\n children['values'] = data[keys[i]];\n children['key'] = keys[i];\n break;\n }\n }\n }\n return children;\n}\n/**\n *\n * @param {any} data - Specifies the data to which highlight must be done.\n * @param {items} items - Specifies the data source items.\n * @param {string} mode - Specifies the mode of highlight.\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @returns {string[]} - Returns the highlighted items.\n */\nexport function findHightLightItems(data, items, mode, treeMap) {\n if (mode === 'Child') {\n items.push(data['levelOrderName']);\n var children = findChildren(data)['values'];\n if (children && children.length > 0) {\n for (var i = 0; i < children.length; i++) {\n if (items.indexOf(children[i]['levelOrderName']) === -1) {\n items.push(children[i]['levelOrderName']);\n }\n }\n for (var j = 0; j < children.length; j++) {\n findHightLightItems(children[j], items, mode, treeMap);\n }\n }\n }\n else if (mode === 'Parent') {\n if (typeof data['levelOrderName'] === 'string' && items.indexOf(data['levelOrderName']) === -1) {\n items.push(data['levelOrderName']);\n findHightLightItems(data['parent'], items, mode, treeMap);\n }\n }\n else if (mode === 'All') {\n var parentName = data['levelOrderName'].split('#')[0];\n var currentItem = void 0;\n for (var i = 0; i < treeMap.layout.renderItems.length; i++) {\n currentItem = treeMap.layout.renderItems[i];\n if ((currentItem['levelOrderName']).indexOf(parentName) > -1 && items.indexOf(currentItem['levelOrderName']) === -1) {\n items.push(currentItem['levelOrderName']);\n }\n }\n }\n else {\n items.push(data['levelOrderName']);\n }\n return items;\n}\n/**\n * Function to compile the template function for maps.\n *\n * @param {string} template - Specifies the template\n * @returns {Function} - Returns the template function\n * @private\n */\nexport function getTemplateFunction(template) {\n var templateFn = null;\n try {\n if (document.querySelectorAll(template).length) {\n templateFn = compile(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (e) {\n templateFn = compile(template);\n }\n return templateFn;\n}\n/**\n * @private\n * @param {HTMLCollection} element - Specifies the element\n * @param {string} labelId - Specifies the label id\n * @param {Object} data - Specifies the data\n * @returns {HTMLElement} - Returns the element\n */\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 */\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 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 * Ajax support 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 */\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 subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n legendTitleColor: '#DADADA',\n legendTextColor: '#DADADA',\n fontSize: '15px',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n break;\n case 'highcontrast':\n style = {\n backgroundColor: '#000000',\n titleFontColor: '#FFFFFF',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontSize: '15px',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n break;\n case 'bootstrap4':\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#212529',\n subTitleFontColor: '#212529',\n tooltipFillColor: '#000000',\n tooltipFontColor: '#FFFFFF',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 0.9,\n legendTitleColor: '#212529',\n legendTextColor: '#212529',\n fontFamily: 'HelveticaNeue-Medium',\n fontSize: '16px',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'HelveticaNeue'\n };\n break;\n case 'tailwind':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#374151',\n subTitleFontColor: '#374151',\n tooltipFillColor: '#111827',\n tooltipFontColor: '#F9FAFB',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#374151',\n legendTextColor: '#374151',\n fontFamily: 'Inter',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter'\n };\n break;\n case 'tailwinddark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#D1D5DB',\n subTitleFontColor: '#D1D5DB',\n tooltipFillColor: '#F9FAFB',\n tooltipFontColor: '#1F2937',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#D1D5DB',\n legendTextColor: '#D1D5DB',\n fontFamily: 'Inter',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter'\n };\n break;\n case 'bootstrap5':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#212529',\n subTitleFontColor: '#212529',\n tooltipFillColor: '#212529',\n tooltipFontColor: '#F9FAFB',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#212529',\n legendTextColor: '#212529',\n fontFamily: 'Helvetica Neue',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Helvetica Neue'\n };\n break;\n case 'bootstrap5dark':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#FFFFFF',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#E9ECEF',\n tooltipFontColor: '#212529',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontFamily: 'Helvetica Neue',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Helvetica Neue'\n };\n break;\n case 'fluent':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#201F1E',\n subTitleFontColor: '#201F1E',\n tooltipFillColor: '#FFFFFF',\n tooltipFontColor: '#323130',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#201F1E',\n legendTextColor: '#201F1E',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI'\n };\n break;\n case 'fluentdark':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#F3F2F1',\n subTitleFontColor: '#F3F2F1',\n tooltipFillColor: '#252423',\n tooltipFontColor: '#F3F2F1',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#F3F2F1',\n legendTextColor: '#F3F2F1',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI'\n };\n break;\n default:\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#424242',\n subTitleFontColor: '#424242',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n legendTitleColor: '#353535',\n legendTextColor: '#353535',\n fontSize: '15px',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n break;\n }\n return style;\n}\n","/**\n * TreeMap constants doc\n */\n/**\n * Triggers when the treemap is on load.\n *\n * @private\n */\nexport var load = 'load';\n/**\n * Triggers after treemap rendered.\n *\n * @private\n */\nexport var loaded = 'loaded';\n/**\n * Trigger before call the print method.\n *\n * @private\n */\nexport var beforePrint = 'beforePrint';\n/**\n * Trigger before each treemap item rendered.\n *\n * @private\n */\nexport var itemRendering = 'itemRendering';\n/**\n * Trigger after click on treemap item.\n *\n * @private\n */\nexport var drillStart = 'drillStart';\n/**\n * Trigger after drill start event completed.\n *\n * @private\n */\nexport var drillEnd = 'drillEnd';\n/**\n * Trigger after select the treemap item.\n *\n * @private\n */\nexport var itemSelected = 'itemSelected';\n/**\n * Trigger after hover on the treemap item.\n *\n * @private\n */\nexport var itemHighlight = 'itemHighlight';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport var tooltipRendering = 'tooltipRendering';\n/**\n * Trigger after click on the treemap item.\n *\n * @private\n */\nexport var itemClick = 'itemClick';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport var itemMove = 'itemMove';\n/**\n * Trigger after click on the treemap item.\n *\n * @private\n */\nexport var click = 'click';\n/**\n * Trigger after double click on the treemap item.\n *\n * @private\n */\nexport var doubleClick = 'doubleClick';\n/**\n * Trigger after right click on the treemap item.\n *\n * @private\n */\nexport var rightClick = 'rightClick';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport var mouseMove = 'mouseMove';\n/**\n * Trigger before each treemap item.\n *\n * @private\n */\nexport var legendItemRendering = 'legendItemRendering';\n/**\n * Trigger before legend items.\n *\n * @private\n */\nexport var legendRendering = 'legendRendering';\n/**\n * Trigger after resize the treemap.\n *\n * @private\n */\nexport var resize = 'resize';\n/**\n * Define the font family in treemap component.\n *\n * @private\n */\nexport var defaultFont = 'Roboto, Segoe UI, Noto, Sans-serif';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * Maps base doc\n */\nimport { Property, ChildProperty, Complex, Collection } from '@syncfusion/ej2-base';\nimport { defaultFont } from './constants';\n/**\n * Sets and gets the options for customizing the color and width of the border in treemap component.\n */\nvar Border = /** @class */ (function (_super) {\n __extends(Border, _super);\n function Border() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('#808080')\n ], Border.prototype, \"color\", void 0);\n __decorate([\n Property(0)\n ], Border.prototype, \"width\", void 0);\n return Border;\n}(ChildProperty));\nexport { Border };\n/**\n * Sets and gets the margin for the treemap component.\n */\nvar Margin = /** @class */ (function (_super) {\n __extends(Margin, _super);\n function Margin() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(10)\n ], Margin.prototype, \"left\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"right\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"top\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"bottom\", void 0);\n return Margin;\n}(ChildProperty));\nexport { Margin };\n/**\n * Sets and gets the options to customize the style of the text contents in the treemap component.\n */\nvar Font = /** @class */ (function (_super) {\n __extends(Font, _super);\n function Font() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], Font.prototype, \"size\", void 0);\n __decorate([\n Property(null)\n ], Font.prototype, \"color\", void 0);\n __decorate([\n Property(defaultFont)\n ], Font.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontStyle\", void 0);\n __decorate([\n Property(1)\n ], Font.prototype, \"opacity\", void 0);\n return Font;\n}(ChildProperty));\nexport { Font };\n/**\n * Sets and gets the options for customizing the common title of the treemap component.\n */\nvar CommonTitleSettings = /** @class */ (function (_super) {\n __extends(CommonTitleSettings, _super);\n function CommonTitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], CommonTitleSettings.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], CommonTitleSettings.prototype, \"description\", void 0);\n return CommonTitleSettings;\n}(ChildProperty));\nexport { CommonTitleSettings };\n/**\n * Sets and gets the options for customizing the subtitle of the treemap component.\n */\nvar SubTitleSettings = /** @class */ (function (_super) {\n __extends(SubTitleSettings, _super);\n function SubTitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ fontFamily: null }, Font)\n ], SubTitleSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property('Center')\n ], SubTitleSettings.prototype, \"alignment\", void 0);\n return SubTitleSettings;\n}(CommonTitleSettings));\nexport { SubTitleSettings };\n/**\n * Sets and gets the options for customizing the title of the treemap component.\n */\nvar TitleSettings = /** @class */ (function (_super) {\n __extends(TitleSettings, _super);\n function TitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ fontFamily: null }, Font)\n ], TitleSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property('Center')\n ], TitleSettings.prototype, \"alignment\", void 0);\n __decorate([\n Complex({}, SubTitleSettings)\n ], TitleSettings.prototype, \"subtitleSettings\", void 0);\n return TitleSettings;\n}(CommonTitleSettings));\nexport { TitleSettings };\n/**\n * Sets and gets the options to customize the color-mapping in treemap component.\n */\nvar ColorMapping = /** @class */ (function (_super) {\n __extends(ColorMapping, _super);\n function ColorMapping() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"from\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"to\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"color\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"label\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"minOpacity\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"maxOpacity\", void 0);\n __decorate([\n Property(true)\n ], ColorMapping.prototype, \"showLegend\", void 0);\n return ColorMapping;\n}(ChildProperty));\nexport { ColorMapping };\n/**\n * Sets and gets the options for customizing the legend of the treemap component.\n */\nvar LegendSettings = /** @class */ (function (_super) {\n __extends(LegendSettings, _super);\n function LegendSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('Default')\n ], LegendSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('transparent')\n ], LegendSettings.prototype, \"background\", void 0);\n __decorate([\n Property('Circle')\n ], LegendSettings.prototype, \"shape\", void 0);\n __decorate([\n Property('')\n ], LegendSettings.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], LegendSettings.prototype, \"height\", void 0);\n __decorate([\n Complex({ fontFamily: null }, Font)\n ], LegendSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], LegendSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(15)\n ], LegendSettings.prototype, \"shapeWidth\", void 0);\n __decorate([\n Property(15)\n ], LegendSettings.prototype, \"shapeHeight\", void 0);\n __decorate([\n Property(10)\n ], LegendSettings.prototype, \"shapePadding\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"imageUrl\", void 0);\n __decorate([\n Complex({ color: '#000000', width: 0 }, Border)\n ], LegendSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ color: '#000000', width: 0 }, Border)\n ], LegendSettings.prototype, \"shapeBorder\", void 0);\n __decorate([\n Complex({}, CommonTitleSettings)\n ], LegendSettings.prototype, \"title\", void 0);\n __decorate([\n Complex({ size: '14px' }, Font)\n ], LegendSettings.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('Bottom')\n ], LegendSettings.prototype, \"position\", void 0);\n __decorate([\n Property('None')\n ], LegendSettings.prototype, \"orientation\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"invertedPointer\", void 0);\n __decorate([\n Property('After')\n ], LegendSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('None')\n ], LegendSettings.prototype, \"labelDisplayMode\", void 0);\n __decorate([\n Property('Center')\n ], LegendSettings.prototype, \"alignment\", void 0);\n __decorate([\n Property({ x: 0, y: 0 })\n ], LegendSettings.prototype, \"location\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"showLegendPath\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"valuePath\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"removeDuplicateLegend\", void 0);\n return LegendSettings;\n}(ChildProperty));\nexport { LegendSettings };\n/**\n * Sets and gets the settings for drill to visualize the treemap rendered in the initial state.\n */\nvar InitialDrillSettings = /** @class */ (function (_super) {\n __extends(InitialDrillSettings, _super);\n function InitialDrillSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], InitialDrillSettings.prototype, \"groupIndex\", void 0);\n __decorate([\n Property(null)\n ], InitialDrillSettings.prototype, \"groupName\", void 0);\n return InitialDrillSettings;\n}(ChildProperty));\nexport { InitialDrillSettings };\n/**\n * Sets and gets the options for customizing the leaf item of the treemap component.\n */\nvar LeafItemSettings = /** @class */ (function (_super) {\n __extends(LeafItemSettings, _super);\n function LeafItemSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(false)\n ], LeafItemSettings.prototype, \"autoFill\", void 0);\n __decorate([\n Complex({}, Border)\n ], LeafItemSettings.prototype, \"border\", void 0);\n __decorate([\n Property(0)\n ], LeafItemSettings.prototype, \"gap\", void 0);\n __decorate([\n Property(10)\n ], LeafItemSettings.prototype, \"padding\", void 0);\n __decorate([\n Property(1)\n ], LeafItemSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LeafItemSettings.prototype, \"showLabels\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelPath\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelFormat\", void 0);\n __decorate([\n Property('TopLeft')\n ], LeafItemSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Complex({ color: null, size: '12px' }, Font)\n ], LeafItemSettings.prototype, \"labelStyle\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelTemplate\", void 0);\n __decorate([\n Property('Center')\n ], LeafItemSettings.prototype, \"templatePosition\", void 0);\n __decorate([\n Property('Trim')\n ], LeafItemSettings.prototype, \"interSectAction\", void 0);\n __decorate([\n Collection([], ColorMapping)\n ], LeafItemSettings.prototype, \"colorMapping\", void 0);\n return LeafItemSettings;\n}(ChildProperty));\nexport { LeafItemSettings };\n/**\n * Sets and gets the options for customizing the tooltip of the treemap component.\n */\nvar TooltipSettings = /** @class */ (function (_super) {\n __extends(TooltipSettings, _super);\n function TooltipSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('')\n ], TooltipSettings.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(0.75)\n ], TooltipSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(['Circle'])\n ], TooltipSettings.prototype, \"markerShapes\", void 0);\n __decorate([\n Complex({}, Border)\n ], TooltipSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ fontFamily: defaultFont, size: '13px' }, Font)\n ], TooltipSettings.prototype, \"textStyle\", void 0);\n return TooltipSettings;\n}(ChildProperty));\nexport { TooltipSettings };\n/**\n * Sets and gets the options for customizing the selection of the leaf items in treemap component.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], SelectionSettings.prototype, \"fill\", void 0);\n __decorate([\n Property('0.5')\n ], SelectionSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, Border)\n ], SelectionSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Item')\n ], SelectionSettings.prototype, \"mode\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Sets and gets the options for customizing the highlighting of the treemap item,\n * when the mouse hover is performed in it.\n */\nvar HighlightSettings = /** @class */ (function (_super) {\n __extends(HighlightSettings, _super);\n function HighlightSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], HighlightSettings.prototype, \"enable\", void 0);\n __decorate([\n Property('#808080')\n ], HighlightSettings.prototype, \"fill\", void 0);\n __decorate([\n Property('0.5')\n ], HighlightSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, Border)\n ], HighlightSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Item')\n ], HighlightSettings.prototype, \"mode\", void 0);\n return HighlightSettings;\n}(ChildProperty));\nexport { HighlightSettings };\n/**\n * Sets and gets the options for customizing the levels of the treemap component.\n */\nvar LevelSettings = /** @class */ (function (_super) {\n __extends(LevelSettings, _super);\n function LevelSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"groupPath\", void 0);\n __decorate([\n Property(0)\n ], LevelSettings.prototype, \"groupGap\", void 0);\n __decorate([\n Property(10)\n ], LevelSettings.prototype, \"groupPadding\", void 0);\n __decorate([\n Complex({}, Border)\n ], LevelSettings.prototype, \"border\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(false)\n ], LevelSettings.prototype, \"autoFill\", void 0);\n __decorate([\n Property(1)\n ], LevelSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LevelSettings.prototype, \"showHeader\", void 0);\n __decorate([\n Property(20)\n ], LevelSettings.prototype, \"headerHeight\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"headerFormat\", void 0);\n __decorate([\n Property('Near')\n ], LevelSettings.prototype, \"headerAlignment\", void 0);\n __decorate([\n Complex({ color: null, size: '13px' }, Font)\n ], LevelSettings.prototype, \"headerStyle\", void 0);\n __decorate([\n Property('TopLeft')\n ], LevelSettings.prototype, \"templatePosition\", void 0);\n __decorate([\n Collection([], ColorMapping)\n ], LevelSettings.prototype, \"colorMapping\", void 0);\n return LevelSettings;\n}(ChildProperty));\nexport { LevelSettings };\n","import { Rect, itemsToOrder, TextOption, measureText, textTrim, hide, wordWrap, textWrap, getTemplateFunction, convertElement, findLabelLocation, PathOption, textFormatter, colorNameToHex, convertHexToColor, colorMap, measureElement, convertToContainer, convertToRect, getShortestEdge, getArea, orderByArea, isParentItem, maintainSelection } from '../utils/helper';\nimport { isNullOrUndefined, createElement, extend } from '@syncfusion/ej2-base';\nimport { findChildren, renderTextElement } from '../utils/helper';\nimport { itemRendering } from '../model/constants';\nimport { LevelsData } from './../treemap';\n/**\n * To calculate and render the shape layer\n */\nvar LayoutPanel = /** @class */ (function () {\n function LayoutPanel(treemap) {\n this.treemap = treemap;\n }\n LayoutPanel.prototype.processLayoutPanel = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data;\n var totalRect;\n if (LevelsData.levelsData && LevelsData.levelsData.length > 0) {\n data = (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) &&\n !isNullOrUndefined(this.treemap.initialDrillDown.groupName)) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length === 0) ?\n this.getDrilldownData(LevelsData.levelsData[0], [])[0] : LevelsData.levelsData[0];\n totalRect = extend({}, this.treemap.areaRect, totalRect, false);\n if (!isNullOrUndefined(this.treemap.treeMapLegendModule) && !isNullOrUndefined(this.treemap.totalRect)) {\n if (this.treemap.legendSettings.position !== 'Float') {\n totalRect = this.treemap.totalRect;\n }\n }\n if (!isNullOrUndefined(this.treemap.currentLevel) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? !isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length !== 0)) {\n var count = this.treemap.drilledItems.length - 1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var x = this.treemap.drilledItems[count]['data'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var y = {};\n y[this.treemap.drilledItems[count]['data']['groupName']] = [x];\n if (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) && !this.treemap.enableBreadcrumb) {\n this.treemap.currentLevel = this.treemap.drilledItems[count]['data']['groupIndex'];\n }\n this.calculateLayoutItems(y || LevelsData.levelsData[0], totalRect);\n this.renderLayoutItems();\n }\n else {\n if (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length === 0)) {\n this.treemap.currentLevel = this.treemap.initialDrillDown.groupIndex;\n }\n this.calculateLayoutItems(data || LevelsData.levelsData[0], totalRect);\n this.renderLayoutItems();\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 /** @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 border = isLeafItem ? leaf.border : levels[index].border;\n position = !isLeafItem ? (levels[index].headerAlignment) === 'Near' ? 'TopLeft' : (levels[index].headerAlignment) === 'Center' ?\n 'TopCenter' : 'TopRight' : leaf.labelPosition;\n templatePosition = isLeafItem ? leaf.templatePosition : levels[index].templatePosition;\n template = isLeafItem ? leaf.labelTemplate : levels[index].headerTemplate;\n item['options'] = { border: border, opacity: opacity, fill: fill };\n eventArgs = {\n cancel: false, name: itemRendering, treemap: this_1.treemap, text: renderText,\n currentItem: item, RenderItems: this_1.renderItems, options: item['options']\n };\n this_1.treemap.trigger(itemRendering, eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n rectPath = ' M ' + rect.x + ' ' + rect.y + ' L ' + (rect.x + rect.width) + ' ' + rect.y +\n ' L ' + (rect.x + rect.width) + ' ' + (rect.y + rect.height) + ' L ' + rect.x + ' ' + (rect.y + rect.height) + 'z';\n pathOptions = new PathOption(groupId + '_RectPath', fill, border.width, border.color, opacity, null, rectPath);\n var path = _this.renderer.drawPath(pathOptions);\n itemGroup.appendChild(path);\n if (txtVisible) {\n if (eventArgs.text !== renderText) {\n eventArgs.text = textFormatter(eventArgs.text, item['data'], _this.treemap) || levelName;\n }\n _this.renderItemText(eventArgs.text.toString(), itemGroup, textStyle, rect, interSectAction, groupId, fill, position, connectorText);\n }\n if (template) {\n templateEle = _this.renderTemplate(secondaryEle, groupId, rect, templatePosition, template, item, isLeafItem);\n if (!isNullOrUndefined(templateEle)) {\n templateGroup.appendChild(templateEle);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.treemap.renderReactTemplates();\n }\n }\n itemGroup.setAttribute('aria-label', item['name']);\n itemGroup.setAttribute('role', '');\n itemGroup.setAttribute('tabindex', (_this.treemap.tabIndex + i + 2).toString());\n maintainSelection(_this.treemap, itemGroup, 'treeMapSelection');\n _this.layoutGroup.appendChild(itemGroup);\n }\n });\n };\n var this_1 = this;\n for (var i = 0; i < this.renderItems.length; i++) {\n _loop_1(i);\n }\n if (templateGroup.childNodes.length > 0) {\n secondaryEle.appendChild(templateGroup);\n }\n this.treemap.svgObject.appendChild(this.layoutGroup);\n };\n LayoutPanel.prototype.renderItemText = function (text, parentElement, textStyle, rect, interSectAction, groupId, fill, position, connectorText) {\n var 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(LevelsData.defaultLevelsData)) {\n if (LevelsData.defaultLevelsData.length > 0) {\n LevelsData.levelsData = LevelsData.defaultLevelsData;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentData = findChildren(LevelsData.levelsData[0])['values'];\n var colorMapping = isLeafItem ? treemap.leafItemSettings.colorMapping :\n treemap.levels[item['groupIndex']].colorMapping;\n if (colorMapping.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var option = colorMap(colorMapping, item['data'][this.treemap.equalColorValuePath], item['data'][this.treemap.rangeColorValuePath]);\n itemFill = !isNullOrUndefined(option['fill']) ? option['fill'] : treemap.leafItemSettings.fill;\n itemOpacity = option['opacity'];\n }\n else {\n for (var i = 0; i < parentData.length; i++) {\n if (parentData[i]['levelOrderName'] === item['levelOrderName'].split('#')[0]) {\n itemFill = !isNullOrUndefined(itemFill) ? itemFill : !isNullOrUndefined(treemap.colorValuePath) ?\n parentData[i]['data'][treemap.colorValuePath] : treemap.palette.length > 0 ?\n treemap.palette[i % treemap.palette.length] : '#808080';\n }\n }\n }\n return { fill: itemFill, opacity: itemOpacity };\n };\n /**\n * To find saturated color for datalabel\n *\n * @param {string} color - Specifies the color\n * @returns {string} - Returns the color\n */\n LayoutPanel.prototype.getSaturatedColor = function (color) {\n var saturatedColor = color;\n saturatedColor = (saturatedColor === 'transparent') ? window.getComputedStyle(document.body, null).backgroundColor : saturatedColor;\n var rgbValue = convertHexToColor(colorNameToHex(saturatedColor));\n var contrast = Math.round((rgbValue.r * 299 + rgbValue.g * 587 + rgbValue.b * 114) / 1000);\n return contrast >= 128 ? 'black' : 'white';\n };\n LayoutPanel.prototype.renderTemplate = function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n secondaryEle, groupId, rect, position, template, item, isLeafItem) {\n var templateId = isLeafItem ? groupId + '_LabelTemplate' : groupId + '_HeaderTemplate';\n var baseTemplateId = isLeafItem ? '_LabelTemplate' : '_HeaderTemplate';\n if (isNullOrUndefined(template['prototype'])) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var keys = Object.keys(item['data']);\n for (var i = 0; i < keys.length; i++) {\n 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 } 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 div.appendChild(treeMap.element.cloneNode(true));\n }\n return div;\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n Print.prototype.getModuleName = function () {\n // Returns te module name\n return 'Print';\n };\n /**\n * To destroy the Print module.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n Print.prototype.destroy = function () { };\n return Print;\n}());\nexport { Print };\n","import { createElement, Browser } from '@syncfusion/ej2-base';\nimport { triggerDownload } from '../utils/helper';\n/**\n * ImageExport module handles the export to image functionality for treemap.\n *\n * @hidden\n */\nvar ImageExport = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance\n */\n // eslint-disable-next-line @typescript-eslint/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 isDownload = !(Browser.userAgent.toString().indexOf('HeadlessChrome') > -1);\n var svgData = '<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">' +\n treeMap.svgObject.outerHTML +\n '</svg>';\n var url = window.URL.createObjectURL(new Blob(type === 'SVG' ? [svgData] :\n [(new XMLSerializer()).serializeToString(treeMap.svgObject)], { type: 'image/svg+xml' }));\n if (type === 'SVG') {\n if (allowDownload) {\n triggerDownload(fileName, type, url, isDownload);\n }\n else {\n resolve(null);\n }\n }\n else {\n var image_1 = new Image();\n var context_1 = element.getContext('2d');\n image_1.onload = (function () {\n context_1.drawImage(image_1, 0, 0);\n window.URL.revokeObjectURL(url);\n if (allowDownload) {\n triggerDownload(fileName, type, element.toDataURL('image/png').replace('image/png', 'image/octet-stream'), isDownload);\n }\n else {\n if (type === 'JPEG') {\n resolve(element.toDataURL('image/jpeg'));\n }\n else if (type === 'PNG') {\n resolve(element.toDataURL('image/png'));\n }\n }\n });\n image_1.src = url;\n }\n });\n return promise;\n };\n ImageExport.prototype.getModuleName = function () {\n // Returns te module name\n return 'ImageExport';\n };\n /**\n * To destroy the ImageExport.\n *\n * @returns {void}\n * @private\n */\n // 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 component.\n * @param {boolean} allowDownload - Specifies whether to download the document or not.\n * @returns {Promise} - Returns the string.\n * @private\n */\n PdfExport.prototype.export = function (treeMap, type, fileName, orientation, allowDownload) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @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 === 'TailwindDark' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Bootstrap5Dark'\n || treeMap.theme === 'Fluent' || treeMap.theme === 'FluentDark') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n }\n var url = window.URL.createObjectURL(new Blob([(new XMLSerializer()).serializeToString(exportElement)], { type: 'image/svg+xml' }));\n var image = new Image();\n var context = element.getContext('2d');\n image.onload = (function () {\n context.drawImage(image, 0, 0);\n window.URL.revokeObjectURL(url);\n var document = new PdfDocument();\n var imageString = element.toDataURL('image/jpeg').replace('image/jpeg', 'image/octet-stream');\n document.pageSettings.orientation = orientation;\n imageString = imageString.slice(imageString.indexOf(',') + 1);\n document.pages.add().graphics.drawImage(new PdfBitmap(imageString), 0, 0, (treeMap.availableSize.width - 60), treeMap.availableSize.height);\n if (allowDownload) {\n document.save(fileName + '.pdf');\n document.destroy();\n }\n else {\n resolve(null);\n }\n });\n image.src = url;\n });\n return promise;\n };\n PdfExport.prototype.getModuleName = function () {\n // Returns te module name\n return 'PdfExport';\n };\n /**\n * To destroy the PdfExport.\n *\n * @returns {void}\n * @private\n */\n // 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, Ajax } from '@syncfusion/ej2-base';\nimport { Complex, Collection } from '@syncfusion/ej2-base';\nimport { Event, Internationalization } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\nimport { isNullOrUndefined, createElement, EventHandler, Browser, remove } from '@syncfusion/ej2-base';\nimport { Border, Margin, TitleSettings, LegendSettings, InitialDrillSettings } from './model/base';\nimport { SelectionSettings, TooltipSettings, LevelSettings, LeafItemSettings, HighlightSettings } from './model/base';\nimport { Size, stringToNumber, RectOption, Rect, textTrim, measureText, findChildren, removeElement, setItemTemplateContent } from '../treemap/utils/helper';\nimport { removeClassNames, removeShape, textFormatter } from '../treemap/utils/helper';\nimport { findPosition, TextOption, renderTextElement, isContainsData, TreeMapAjax } from '../treemap/utils/helper';\nimport { load, loaded, drillStart, drillEnd } from '../treemap/model/constants';\nimport { itemClick, itemMove, click, mouseMove, resize, doubleClick, rightClick } from '../treemap/model/constants';\nimport { LayoutPanel } from './layout/render-panel';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { getThemeStyle } from './model/theme';\nimport { Print } from './model/print';\nimport { ImageExport } from './model/image-export';\nimport { PdfExport } from './model/pdf-export';\n/**\n * Represents the treemap component.\n * ```html\n * <div id=\"container\"/>\n * <script>\n * var treemap = new TreeMap();\n * treemap.appendTo(\"#container\");\n * </script>\n * ```\n */\nvar TreeMap = /** @class */ (function (_super) {\n __extends(TreeMap, _super);\n /**\n * Constructor for TreeMap component.\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 LevelsData.levelsData = null;\n LevelsData.defaultLevelsData = null;\n LevelsData.hierarchyData = null;\n this.createSecondaryElement();\n this.addTabIndex();\n this.themeStyle = getThemeStyle(this.theme);\n this.renderBorder();\n this.renderTitle(this.titleSettings, 'title', null, null);\n if (!isNullOrUndefined(LevelsData.levelsData)) {\n LevelsData.defaultLevelsData = LevelsData.levelsData;\n }\n this.processDataManager();\n };\n TreeMap.prototype.processDataManager = function () {\n var _this = this;\n var dataModule;\n var queryModule;\n var ajaxModule;\n var localAjax;\n if (this.dataSource instanceof DataManager) {\n dataModule = this.dataSource;\n queryModule = this.query instanceof Query ? this.query : new Query();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataManager = dataModule.executeQuery(queryModule);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataManager.then(function (e) {\n _this.dataSource = e['result'];\n _this.renderTreeMapElements();\n });\n }\n else if (this.dataSource instanceof TreeMapAjax) {\n localAjax = this.dataSource;\n ajaxModule = new Ajax(localAjax.dataOptions, localAjax.type, localAjax.async, localAjax.contentType);\n ajaxModule.onSuccess = function (args) {\n _this.dataSource = JSON.parse('[' + args + ']')[0];\n _this.renderTreeMapElements();\n };\n ajaxModule.send(localAjax.sendData);\n }\n else {\n this.renderTreeMapElements();\n }\n };\n TreeMap.prototype.renderTreeMapElements = function () {\n this.processingData();\n if (this.treeMapLegendModule && this.legendSettings.visible) {\n this.treeMapLegendModule.renderLegend();\n }\n this.layout.processLayoutPanel();\n this.element.appendChild(this.svgObject);\n this.elementChange();\n this.trigger(loaded, { treemap: this, isResized: this.isResize });\n this.isResize = false;\n this.renderComplete();\n };\n TreeMap.prototype.createSvg = function () {\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n if (isNullOrUndefined(this.renderer)) {\n this.renderer = new SvgRenderer(this.element.id);\n }\n if (isNullOrUndefined(this.layout)) {\n this.layout = new LayoutPanel(this);\n }\n this.clearTemplate();\n var containerWidth = this.element.clientWidth;\n var containerHeight = this.element.clientHeight;\n this.availableSize = new Size(stringToNumber(this.width, containerWidth) || containerWidth || 600, stringToNumber(this.height, containerHeight) || containerHeight || 450);\n this.svgObject = this.renderer.createSvg({\n id: this.element.id + '_svg',\n width: this.availableSize.width,\n height: this.availableSize.height\n });\n };\n /**\n * To initilize the private varibales of treemap.\n *\n * @returns {void}\n */\n TreeMap.prototype.initPrivateVariable = function () {\n if (this.element.id === '') {\n var collection = document.getElementsByClassName('e-treemap').length;\n this.element.id = 'treemap_control_' + collection;\n }\n this.renderer = new SvgRenderer(this.element.id);\n this.layout = new LayoutPanel(this);\n };\n TreeMap.prototype.createSecondaryElement = function () {\n var secondaryEle = document.getElementById(this.element.id + '_Secondary_Element');\n if (secondaryEle && secondaryEle.childElementCount > 0) {\n secondaryEle.parentNode.removeChild(secondaryEle);\n }\n if (isNullOrUndefined(document.getElementById(this.element.id + '_Secondary_Element'))) {\n var secondaryElement = createElement('div', {\n id: this.element.id + '_Secondary_Element'\n });\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.size = style.size || (type === 'title' ? this.themeStyle.fontSize : this.themeStyle.subtitleFontSize);\n if (title.text) {\n if (isNullOrUndefined(groupEle)) {\n groupEle = this.renderer.createGroup({ id: this.element.id + '_Title_Group' });\n }\n var trimmedTitle = textTrim(width, title.text, style);\n var elementSize = measureText(trimmedTitle, style);\n var rect = (isNullOrUndefined(bounds)) ? new Rect(this.margin.left, this.margin.top, this.availableSize.width, this.availableSize.height) : bounds;\n var location_1 = findPosition(rect, title.alignment, elementSize, type);\n var options = new TextOption(this.element.id + '_TreeMap_' + type, location_1.x, location_1.y, 'start', trimmedTitle);\n var titleBounds = new Rect(location_1.x, location_1.y, elementSize.width, elementSize.height);\n var element = renderTextElement(options, style, style.color || (type === 'title' ? this.themeStyle.titleFontColor : this.themeStyle.subTitleFontColor), groupEle);\n element.setAttribute('aria-label', title.description || title.text);\n element.setAttribute('role', '');\n element.setAttribute('tabindex', (this.tabIndex + (type === 'title' ? 1 : 2)).toString());\n if ((type === 'title' && !title.subtitleSettings.text) || (type === 'subtitle')) {\n height = (this.availableSize.height - titleBounds.y - titlePadding - this.margin.bottom);\n this.areaRect = new Rect(this.margin.left, titleBounds.y + titlePadding, width, height);\n }\n if (type !== 'subtitle' && title.subtitleSettings.text) {\n this.renderTitle(title.subtitleSettings, 'subtitle', titleBounds, groupEle);\n }\n else {\n this.svgObject.appendChild(groupEle);\n }\n }\n else {\n height = (this.availableSize.height - this.margin.top - this.margin.bottom);\n this.areaRect = new Rect(this.margin.left, this.margin.top, width, height);\n }\n };\n TreeMap.prototype.processingData = function () {\n var _this = this;\n var path;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource = this.dataSource;\n if (!isNullOrUndefined(this.dataSource) && this.dataSource.length > 0 && this.weightValuePath) {\n LevelsData.levelsData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource.map(function (data) {\n data[_this.weightValuePath] = (data[_this.weightValuePath]) ? data[_this.weightValuePath].toString() :\n data[_this.weightValuePath];\n });\n this.leafItemSettings.labelPath = this.leafItemSettings.labelPath || this.weightValuePath;\n this.checkIsHierarchicalData();\n if (this.levels.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data_1 = {};\n data_1['level'] = 0;\n path = this.leafItemSettings.labelPath;\n data_1[path] = [];\n for (var i = 0; i < this.dataSource.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(this.dataSource[i])['values'];\n if (this.isHierarchicalData && child && child.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n child.forEach(function (currentData) {\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 LevelsData.levelsData.push(data_1);\n }\n else {\n if (this.isHierarchicalData) {\n LevelsData.hierarchyData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LevelsData.hierarchyData = extend([], this.dataSource, LevelsData.hierarchyData, true);\n for (var i = 0; i < LevelsData.hierarchyData.length; i++) {\n this.processHierarchicalData(LevelsData.hierarchyData[i], i);\n }\n LevelsData.levelsData = LevelsData.hierarchyData;\n }\n else {\n this.processFlatJsonData();\n if (LevelsData.levelsData.length > 1) {\n this.reOrderLevelData(LevelsData.levelsData.length - 1);\n }\n }\n path = this.levels[0].groupPath;\n }\n if (!this.isHierarchicalData) {\n this.findTotalWeight(LevelsData.levelsData[0][path], 'Parent');\n }\n }\n };\n TreeMap.prototype.checkIsHierarchicalData = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child;\n this.dataSource = this.dataSource;\n for (var i = 0; i < this.dataSource.length; i++) {\n child = findChildren(this.dataSource[i])['values'];\n if (child && child.length) {\n this.isHierarchicalData = true;\n break;\n }\n else if (i === this.dataSource.length - 1) {\n this.isHierarchicalData = false;\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.processHierarchicalData = function (data, dataCount) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childData;\n // 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 === LevelsData.hierarchyData.length - 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var mainData_1 = LevelsData.hierarchyData[0][this.levels[0].groupPath];\n for (var k = 0; k < LevelsData.hierarchyData.length; k++) {\n childData = findChildren(LevelsData.hierarchyData[k])['values'];\n if (k !== 0 && childData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childData.forEach(function (currentData) { mainData_1.push(currentData); });\n LevelsData.hierarchyData.splice(k, 1);\n k -= 1;\n }\n }\n mainData_1 = LevelsData.hierarchyData[0][this.levels[0].groupPath];\n for (var l = 0; l < mainData_1.length; l++) {\n newData[this.levels[0].groupPath] = mainData_1;\n mainData_1[l]['parent'] = newData;\n }\n }\n };\n /* eslint-disable valid-jsdoc */\n /**\n * This method is used to perform the print functionality in treemap.\n *\n * @param {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 LevelsData.levelsData.push(level);\n for (var j = 0; j < this.dataSource.length; j++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = {};\n var childName = '';\n if (!isNullOrUndefined(groupPath)) {\n var name_1 = this.dataSource[j][groupPath];\n if (i !== 0) {\n for (var k = 0; k <= i; k++) {\n var childGroupPath = 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\n LevelsData.levelsData[(LevelsData.levelsData.length - 1)][groupPath].push(currentData);\n orderNames.push((childName) ? childName : name_1);\n }\n }\n }\n }\n };\n /**\n * This method orders the treemap level data.\n *\n * @param {number} start - Specifies the start value of the treemap level.\n * @returns {void}\n */\n TreeMap.prototype.reOrderLevelData = function (start) {\n var currentName;\n var currentPath = this.levels[start] ? this.levels[start].groupPath : this.leafItemSettings.labelPath;\n var prevPath = this.levels[start - 1].groupPath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = LevelsData.levelsData[start][currentPath];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var previousData = LevelsData.levelsData[start - 1][prevPath];\n for (var i = 0; i < currentData.length; i++) {\n currentName = currentData[i]['levelOrderName'];\n for (var j = 0; j < previousData.length; j++) {\n previousData[j][currentPath] = isNullOrUndefined(previousData[j][currentPath]) ?\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(LevelsData.levelsData[LevelsData.levelsData.length - 1][currentPath], 'Child');\n LevelsData.levelsData.splice(start, 1);\n if ((start - 1) > 0) {\n this.reOrderLevelData(start - 1);\n }\n };\n TreeMap.prototype.IsChildHierarchy = function (current, previous) {\n var isChild = false;\n for (var i = 0; i < previous.length; i++) {\n if (current.length < i || previous[i] !== current[i]) {\n return false;\n }\n else {\n isChild = true;\n }\n }\n return isChild;\n };\n /**\n * This method finds the weight value of the treemap level.\n *\n * @param {any[]} processData - Specifies the treemap data.\n * @param {string} type - Specifies the type of the data.\n * @returns {void}\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 */\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', '');\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 */\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 });\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 */\n TreeMap.prototype.clickOnTreeMap = function (e) {\n var _this = this;\n var targetEle = e.target;\n var targetId = targetEle.id;\n var eventArgs;\n var itemIndex;\n var labelText = targetEle.innerHTML;\n var clickArgs = { cancel: false, name: click, treemap: this, mouseEvent: e };\n this.trigger(click, clickArgs);\n if (targetId.indexOf('_Item_Index') > -1) {\n e.preventDefault();\n itemIndex = parseFloat(targetId.split('_Item_Index_')[1]);\n eventArgs = {\n cancel: false, name: itemClick, treemap: this, item: this.layout.renderItems[itemIndex], mouseEvent: e,\n groupIndex: this.layout.renderItems[itemIndex]['groupIndex'], groupName: this.layout.renderItems[itemIndex]['name'],\n text: labelText, contentItemTemplate: labelText\n };\n this.trigger(itemClick, eventArgs, function (observedArgs) {\n if (observedArgs.text !== labelText || observedArgs.contentItemTemplate !== labelText) {\n if (isNullOrUndefined(_this.leafItemSettings.labelTemplate)) {\n observedArgs.text = textFormatter(observedArgs.text, observedArgs['item']['data'], observedArgs.treemap);\n targetEle.innerHTML = observedArgs.text;\n }\n else {\n setItemTemplateContent(targetId, targetEle, observedArgs.contentItemTemplate);\n }\n }\n });\n }\n var end = new Date().getMilliseconds();\n var doubleTapTimer1;\n if (!isNullOrUndefined(this.doubleClick)) {\n if (!isNullOrUndefined(doubleTapTimer1) && end - doubleTapTimer1 < 500) {\n this.doubleClickOnTreeMap(e);\n }\n doubleTapTimer1 = end;\n }\n };\n /**\n * This method handles the double click event in the treemap.\n *\n * @param {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 */\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 */\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 */\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 */\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 */\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 */\n TreeMap.prototype.mouseEndOnTreeMap = function (e) {\n var _this = this;\n var targetEle = e.target;\n var targetId = targetEle.id;\n var totalRect;\n var startEvent;\n var endEvent;\n var directLevel = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var index;\n var newDrillItem = {};\n var item;\n var process = true;\n var layoutID = this.element.id + '_TreeMap_' + this.layoutType + '_Layout';\n var drillLevel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateID = this.element.id + '_Label_Template_Group';\n var drillLevelValues;\n if (targetId.indexOf('_Item_Index') > -1 && this.enableDrillDown && !this.drillMouseMove) {\n if (e.cancelable) {\n e.preventDefault();\n }\n index = parseFloat(targetId.split('_Item_Index_')[1]);\n item = this.layout.renderItems[index];\n var labelText = targetEle.innerHTML;\n if (this.enableBreadcrumb) {\n drillLevelValues = this.calculateSelectedTextLevels(labelText, item);\n drillLevel = drillLevelValues['drillLevel'];\n if (!this.drillDownView && labelText.search('[+]') !== -1) {\n directLevel = this.calculatePreviousLevelChildItems(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 */\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 - check whether it is selected or not.\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 */\n TreeMap.prototype.getModuleName = function () {\n return 'treemap';\n };\n /**\n * This method is used to dispose the treemap component.\n */\n TreeMap.prototype.destroy = function () {\n this.unWireEVents();\n removeElement('treeMapMeasureText');\n this.drilledItems = [];\n this.levelSelection = [];\n this.legendId = [];\n this.removeSvg();\n _super.prototype.destroy.call(this);\n };\n TreeMap.prototype.removeSvg = function () {\n removeElement(this.element.id + '_Secondary_Element');\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Returns the string value.\n * @private\n */\n TreeMap.prototype.getPersistData = function () {\n return '';\n };\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowPrint\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowImageExport\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"height\", void 0);\n __decorate([\n Complex({}, Border)\n ], TreeMap.prototype, \"border\", void 0);\n __decorate([\n Complex({}, Margin)\n ], TreeMap.prototype, \"margin\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"background\", void 0);\n __decorate([\n Property('Material')\n ], TreeMap.prototype, \"theme\", void 0);\n __decorate([\n Complex({}, TitleSettings)\n ], TreeMap.prototype, \"titleSettings\", void 0);\n __decorate([\n Property('Squarified')\n ], TreeMap.prototype, \"layoutType\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"weightValuePath\", void 0);\n __decorate([\n Property('')\n ], TreeMap.prototype, \"rangeColorValuePath\", void 0);\n __decorate([\n Property('')\n ], TreeMap.prototype, \"equalColorValuePath\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"colorValuePath\", void 0);\n __decorate([\n Property([])\n ], TreeMap.prototype, \"palette\", void 0);\n __decorate([\n Property('TopLeftBottomRight')\n ], TreeMap.prototype, \"renderDirection\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"enableDrillDown\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"enableBreadcrumb\", void 0);\n __decorate([\n Property(' - ')\n ], TreeMap.prototype, \"breadcrumbConnector\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"drillDownView\", void 0);\n __decorate([\n Complex({}, InitialDrillSettings)\n ], TreeMap.prototype, \"initialDrillDown\", void 0);\n __decorate([\n Complex({}, LeafItemSettings)\n ], TreeMap.prototype, \"leafItemSettings\", void 0);\n __decorate([\n Collection([], LevelSettings)\n ], TreeMap.prototype, \"levels\", void 0);\n __decorate([\n Complex({}, HighlightSettings)\n ], TreeMap.prototype, \"highlightSettings\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], TreeMap.prototype, \"selectionSettings\", void 0);\n __decorate([\n Complex({}, TooltipSettings)\n ], TreeMap.prototype, \"tooltipSettings\", void 0);\n __decorate([\n Complex({}, LegendSettings)\n ], TreeMap.prototype, \"legendSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"useGroupingSeparator\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"description\", void 0);\n __decorate([\n Property(1)\n ], TreeMap.prototype, \"tabIndex\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"format\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"drillStart\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"drillEnd\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemSelected\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemHighlight\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"tooltipRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemMove\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"doubleClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"rightClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"mouseMove\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"resize\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"legendItemRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"legendRendering\", void 0);\n TreeMap = __decorate([\n NotifyPropertyChanges\n ], TreeMap);\n return TreeMap;\n}(Component));\nexport { TreeMap };\n/**\n * @private\n */\nvar LevelsData = /** @class */ (function () {\n function LevelsData() {\n }\n return LevelsData;\n}());\nexport { LevelsData };\n","import { LevelsData } from '../treemap';\nimport { findChildren, Location, Rect, Size, measureText, TextOption, PathOption, RectOption, drawSymbol, orderByArea, legendMaintain } from '../utils/helper';\nimport { Browser, isNullOrUndefined, EventHandler, extend } from '@syncfusion/ej2-base';\nimport { renderTextElement, textTrim } from '../utils/helper';\nimport { legendItemRendering, legendRendering } from '../model/constants';\n/**\n * Legend module class\n */\nvar TreeMapLegend = /** @class */ (function () {\n function TreeMapLegend(treemap) {\n this.page = 0;\n this.legendBorderRect = new Rect(0, 0, 0, 0);\n this.currentPage = 0;\n this.heightIncrement = 0;\n this.widthIncrement = 0;\n this.textMaxWidth = 0;\n this.legendInteractiveGradient = [];\n this.legendItemRect = new Rect(0, 0, 0, 0);\n this.treemap = treemap;\n this.addEventListener();\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * method for legend\n */\n TreeMapLegend.prototype.renderLegend = function () {\n var _this = this;\n this.legendRenderingCollections = [];\n this.legendCollections = [];\n this.legendNames = [];\n this.totalPages = [];\n this.gradientCount = 1;\n this.widthIncrement = 0;\n this.heightIncrement = 0;\n this.defsElement = this.treemap.renderer.createDefs();\n this.treemap.svgObject.appendChild(this.defsElement);\n var eventArgs = {\n 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 TreeMapLegend.prototype.calculateLegendBounds = function () {\n var _this = this;\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n this.findColorMappingLegendItems(LevelsData.levelsData[0]);\n if ((this.treemap.palette.length > 0 || !isNullOrUndefined(this.treemap.colorValuePath))\n && this.legendCollections.length === 0) {\n this.findPaletteLegendItems(LevelsData.levelsData[0]);\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.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 if (legendMode === 'Default') {\n legendWidth = (isNullOrUndefined(legendWidth)) ? treemap.areaRect.width : legendWidth;\n legendHeight = (isNullOrUndefined(legendHeight)) ? treemap.areaRect.height : legendHeight;\n var j = 0;\n for (var i = 0; i < this.legendCollections.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var legendItem = this.legendCollections[i];\n if (isNullOrUndefined(this.totalPages[this.page])) {\n this.totalPages[this.page] = { Page: (this.page + 1), Collection: [] };\n }\n var legendTextSize = measureText(legendItem['legendName'], itemTextStyle);\n this.textMaxWidth = Math.max(this.textMaxWidth, legendTextSize.width);\n if (i === 0) {\n startX_1 = shapeX = (leftPadding + (shapeWidth / 2));\n startY_1 = shapeY = topPadding + legendTitleSize.height + (shapeHeight > legendTextSize.height ? shapeHeight / 2\n : (legendTextSize.height / 4));\n }\n else {\n var maxSize = (legendTextSize.height > shapeHeight) ? legendTextSize.height : shapeHeight;\n if (orientation_1 === 'Horizontal') {\n var prvePositionX = (textLocation[j - 1].x + textLocation[j - 1].width) + textPadding + shapeWidth;\n if ((prvePositionX + shapePadding + legendTextSize.width) > legendWidth) {\n var nextPositionY = (textLocation[j - 1].y > (shapeLocation[j - 1].y + (shapeHeight / 2)) ?\n textLocation[j - 1].y : (shapeLocation[j - 1].y + (shapeHeight / 2))) + topPadding;\n if ((nextPositionY + maxSize) > legendHeight) {\n this.getPageChanged();\n j = 0;\n shapeLocation = [];\n textLocation = [];\n shapeX = startX_1;\n shapeY = startY_1;\n }\n else {\n shapeX = (shapeLocation[0].x);\n shapeY = (nextPositionY + (maxSize / 2));\n }\n }\n else {\n shapeX = (prvePositionX - (shapeWidth / 2));\n shapeY = (shapeLocation[j - 1]).y;\n }\n }\n else {\n var prevPositionY = textLocation[j - 1].y > shapeLocation[j - 1].y + (shapeHeight / 2) ?\n textLocation[j - 1].y : shapeLocation[j - 1].y + (shapeHeight / 2);\n if ((prevPositionY + topPadding + maxSize) > legendHeight) {\n var nextPositionX = (textLocation[j - 1].x + this.textMaxWidth + textPadding);\n if ((nextPositionX + shapePadding + legendTextSize.width) > legendWidth) {\n shapeX = startX_1;\n shapeY = startY_1;\n textLocation = [];\n shapeLocation = [];\n this.getPageChanged();\n j = 0;\n }\n else {\n shapeX = nextPositionX + (shapeWidth / 2);\n shapeY = (shapeLocation[0].y);\n }\n }\n else {\n shapeX = shapeLocation[j - 1].x;\n shapeY = prevPositionY + topPadding + (shapeHeight / 2);\n }\n }\n }\n textX = shapeX + (shapeWidth / 2) + shapePadding;\n textY = shapeY + (legendTextSize.height / 4);\n shapeLocation.push({ x: shapeX, y: shapeY });\n textLocation.push({ x: textX, y: textY, width: legendTextSize.width, height: (legendTextSize.height / 2) });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalPages[this.page]['Collection'].push({\n DisplayText: legendItem['legendName'], element: legendItem['gradientElement'],\n Shape: { x: shapeX, y: shapeY },\n Text: { x: textX, y: textY },\n Fill: legendItem['legendFill'],\n Data: legendItem['legendData'],\n Rect: {\n x: shapeLocation[j].x - (shapeWidth / 2),\n y: (shapeLocation[j].y - (shapeHeight / 2)) < (textY - legendTextSize.height) ?\n (shapeLocation[j].y - (shapeHeight / 2)) : (textY - legendTextSize.height),\n width: Math.abs((shapeLocation[j].x - (shapeWidth / 2)) - (textX + legendTextSize.width)),\n height: ((shapeHeight > legendTextSize.height) ? shapeHeight : legendTextSize.height)\n }\n });\n j++;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.totalPages[0]['Collection'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n collection.forEach(function (legendObj, index) {\n var legendRect = new Rect(legendObj['Rect']['x'], legendObj['Rect']['y'], legendObj['Rect']['width'], legendObj['Rect']['height']);\n if (index === 0) {\n startX_1 = legendRect.x;\n startY_1 = legendRect.y;\n }\n _this.widthIncrement = Math.max(_this.widthIncrement, Math.abs(startX_1 - (legendRect.x + legendRect.width)));\n _this.heightIncrement = Math.max(_this.heightIncrement, Math.abs(startY_1 - (legendRect.y + legendRect.height)));\n });\n legendWidth = ((this.widthIncrement < legendWidth) ? this.widthIncrement : legendWidth);\n legendHeight = ((this.heightIncrement < legendHeight) ? this.heightIncrement : legendHeight);\n this.legendItemRect = {\n x: collection[0]['Rect']['x'], y: collection[0]['Rect']['y'],\n width: legendWidth, height: legendHeight\n };\n }\n else {\n var legendLength = this.legendCollections.length;\n var rectWidth = (orientation_1 === 'Horizontal') ? (isNullOrUndefined(legendWidth)) ? (treemap.areaRect.width / legendLength) :\n (legendWidth / legendLength) : (isNullOrUndefined(legendWidth)) ? defaultSize : legendWidth;\n var rectHeight = (orientation_1 === 'Horizontal') ? (isNullOrUndefined(legendHeight)) ? defaultSize : legendHeight :\n (isNullOrUndefined(legendHeight)) ? (treemap.areaRect.height / legendLength) : (legendHeight / legendLength);\n startX_1 = 0;\n startY_1 = legendTitleSize.height + spacing;\n var textPadding_1 = 10;\n var placement = legend.labelPosition;\n var itemStartX = 0;\n var itemStartY = 0;\n var labelAction = legend.labelDisplayMode;\n var maxTextHeight = 0;\n var maxTextWidth = 0;\n for (var i = 0; i < this.legendCollections.length; i++) {\n startX_1 = (orientation_1 === 'Horizontal') ? (startX_1 + rectWidth) : startX_1;\n startY_1 = (orientation_1 === 'Horizontal') ? startY_1 : (startY_1 + rectHeight);\n var legendText = this.legendCollections[i]['legendName'];\n var itemTextSize = new Size(0, 0);\n if (labelAction === 'None') {\n itemTextSize = measureText(legendText, itemTextStyle);\n }\n else if (labelAction === 'Trim') {\n legendText = textTrim((orientation_1 === 'Horizontal' ? rectWidth : rectHeight), legendText, itemTextStyle);\n itemTextSize = measureText(legendText, itemTextStyle);\n }\n else {\n legendText = '';\n }\n maxTextHeight = Math.max(maxTextHeight, itemTextSize.height);\n maxTextWidth = Math.max(maxTextWidth, itemTextSize.width);\n if (itemTextSize.width > 0 && itemTextSize.height > 0) {\n if (orientation_1 === 'Horizontal') {\n textX = startX_1 + (rectWidth / 2);\n textY = (placement === 'After') ? (startY_1 + rectHeight + (itemTextSize.height / 2)) + textPadding_1 :\n (startY_1 - textPadding_1);\n }\n else {\n textX = (placement === 'After') ? startX_1 - (itemTextSize.width / 2) - textPadding_1\n : (startX_1 + rectWidth + itemTextSize.width / 2) + textPadding_1;\n textY = startY_1 + (rectHeight / 2) + (itemTextSize.height / 4);\n }\n }\n if (i === 0) {\n itemStartX = (orientation_1 === 'Horizontal') ? startX_1 : (placement === 'After') ?\n textX - (itemTextSize.width / 2) : startX_1;\n itemStartY = (orientation_1 === 'Horizontal') ? (placement === 'After') ? startY_1 :\n textY - (itemTextSize.height / 2) : startY_1;\n }\n if (i === legendLength - 1) {\n legendWidth = (orientation_1 === 'Horizontal') ? Math.abs((startX_1 + rectWidth) - itemStartX) :\n (rectWidth + maxTextWidth + textPadding_1);\n legendHeight = (orientation_1 === 'Horizontal') ? (rectHeight + (maxTextHeight / 2) + textPadding_1) :\n Math.abs((startY_1 + rectHeight) - itemStartY);\n }\n this.legendRenderingCollections.push({\n fill: this.legendCollections[i]['legendFill'], x: startX_1, y: startY_1,\n width: rectWidth, height: rectHeight, element: this.legendCollections[i]['gradientElement'],\n text: legendText, textX: textX, textY: textY,\n textWidth: itemTextSize.width, textHeight: itemTextSize.height,\n data: this.legendCollections[i]['legendData']\n });\n }\n this.legendItemRect = { x: itemStartX, y: itemStartY, width: legendWidth, height: legendHeight };\n }\n }\n };\n TreeMapLegend.prototype.getPageChanged = function () {\n this.page++;\n if (isNullOrUndefined(this.totalPages[this.page])) {\n this.totalPages[this.page] = { Page: (this.page + 1), Collection: [] };\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.findColorMappingLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n if (child && child.length > 0) {\n this.calculateLegendItems(child);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < child.length; i++) {\n this.findColorMappingLegendItems(child[i]);\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.findPaletteLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child;\n var legendFillColor;\n if (!isNullOrUndefined(this.treemap.drilledItems)) {\n if (this.treemap.drilledItems.length === 0 && !isNullOrUndefined(this.treemap.initialDrillDown.groupName)\n && isNullOrUndefined(this.treemap.drilledLegendItems)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var items = findChildren(data)['values'];\n for (var k = 0; k < items.length; k++) {\n if (items[k]['Name'] === this.treemap.initialDrillDown.groupName) {\n items[k]['isDrilled'] = !items[k]['isDrilled'];\n data = items[k];\n this.treemap.currentLevel = this.treemap.initialDrillDown.groupIndex;\n legendFillColor = this.treemap.palette.length > 0 ? this.treemap.palette[k % this.treemap.palette.length] :\n items[k]['data'][this.treemap.colorValuePath];\n break;\n }\n }\n }\n }\n if (this.treemap.enableDrillDown && !isNullOrUndefined(this.treemap.drilledLegendItems)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childElement = this.treemap.drilledLegendItems;\n legendFillColor = childElement['data']['options']['fill'];\n if (childElement['data']['isDrilled']) {\n child = findChildren(childElement['data'])['values'];\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentElement = childElement['data']['parent'];\n child = findChildren(parentElement)['values'];\n }\n }\n else {\n child = findChildren(data)['values'];\n }\n var isDuplicate;\n var legendName;\n if (child && child.length > 0) {\n for (var i = 0; i < child.length; i++) {\n if (isNullOrUndefined(child[i]['data'][this.treemap.legendSettings.showLegendPath]) ||\n child[i]['data'][this.treemap.legendSettings.showLegendPath]) {\n legendName = child[i]['data'][this.treemap.legendSettings.valuePath] ?\n child[i]['data'][this.treemap.legendSettings.valuePath] : child[i]['name'];\n isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, legendName) : false;\n if (!isDuplicate) {\n this.legendCollections.push({\n legendName: legendName,\n legendFill: this.treemap.palette.length > 0 ? !isNullOrUndefined(this.treemap.currentLevel)\n ? legendFillColor : this.treemap.palette[i % this.treemap.palette.length] :\n child[i]['data'][this.treemap.colorValuePath],\n legendData: [],\n itemArea: child[i]['weight']\n });\n }\n }\n }\n this.legendCollections.sort(orderByArea);\n if (this.treemap.palette.length > 0) {\n for (var j = 0; j < this.legendCollections.length; j++) {\n this.legendCollections[j]['legendFill'] = !isNullOrUndefined(this.treemap.currentLevel)\n ? legendFillColor : this.treemap.palette[j % this.treemap.palette.length];\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.calculateLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isAddData;\n var fill;\n var rangeValue;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData;\n var legendText;\n var isLeafItem;\n var colorMapProcess = false;\n var colorMapping;\n var groupIndex;\n var leaf = this.treemap.leafItemSettings;\n var levels = this.treemap.levels;\n var equalValue;\n var position = this.treemap.legendSettings.position;\n var gradientElement;\n var x2;\n var y2;\n var actualValue;\n var isDuplicate;\n var isEqualColor;\n var isRange;\n var isDesaturation = false;\n var legendIndex = 0;\n var outfill;\n var labelLegend;\n var otherIndex;\n this.outOfRangeLegend = null;\n for (var i = 0; i < data.length; i++) {\n fill = '';\n isEqualColor = false;\n isRange = false;\n isDesaturation = false;\n currentData = data[i]['data'];\n groupIndex = data[i]['groupIndex'];\n isLeafItem = (this.treemap.levels.length === 0 || groupIndex === this.treemap.levels.length);\n colorMapping = isLeafItem ? leaf.colorMapping : levels[groupIndex].colorMapping;\n for (var j = 0; j < colorMapping.length; j++) {\n var colorMap = colorMapping[j];\n gradientElement = null;\n rangeValue = Number(currentData[this.treemap.rangeColorValuePath]);\n equalValue = currentData[this.treemap.equalColorValuePath];\n colorMap.value = !isNullOrUndefined(colorMap.value) ? colorMap.value.toString() : colorMap.value;\n if (!isNullOrUndefined(colorMap.from) && !isNullOrUndefined(colorMap.to) &&\n rangeValue >= colorMap.from && rangeValue <= colorMap.to && colorMap.showLegend) {\n colorMapProcess = true;\n isRange = true;\n actualValue = colorMap.from + ' - ' + colorMap.to;\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : colorMap.from + ' - ' + colorMap.to;\n fill = isNullOrUndefined(colorMap.color) ? fill : colorMap.color;\n isAddData = this.isAddNewLegendData(actualValue);\n }\n else if (!isNullOrUndefined(colorMap.value) && equalValue === colorMap.value && colorMap.showLegend) {\n colorMapProcess = true;\n isEqualColor = true;\n actualValue = colorMap.value.toString();\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : colorMap.value.toString();\n fill = isNullOrUndefined(colorMap.color) ? fill :\n Object.prototype.toString.call(colorMap.color) === '[object Array]' ? colorMap.color[0] : colorMap.color;\n isAddData = this.isAddNewLegendData(actualValue);\n }\n if (colorMapProcess && isNullOrUndefined(colorMap.value) && colorMap.maxOpacity && colorMap.minOpacity\n && this.treemap.legendSettings.mode === 'Interactive') {\n var colors = [];\n isDesaturation = true;\n if (Object.prototype.toString.call(colorMap.color) === '[object Array]') {\n for (var q = 0; q < colorMap.color.length; q++) {\n var offsetColor = 100 / (colorMap.color.length - 1);\n var offsetValue = q * offsetColor + '%';\n var stop1Color = { colorStop: offsetValue.toString(), color: colorMap.color[q] };\n colors.push(stop1Color);\n }\n }\n else {\n var stop1Color = { colorStop: '0%', color: fill };\n var stop2Color = { colorStop: '100%', color: fill };\n colors.push(stop1Color);\n colors.push(stop2Color);\n }\n x2 = position === 'Top' || position === 'Bottom' ? '100%' : '0%';\n y2 = position === 'Top' || position === 'Bottom' ? '0%' : '100%';\n var gradient = {\n id: 'groupIndex_' + groupIndex + '_colorIndex_' + this.gradientCount, x1: '0%', y1: '0%', x2: x2, y2: y2\n };\n gradientElement = this.treemap.renderer.drawGradient('linearGradient', gradient, colors).childNodes[0];\n if (Object.prototype.toString.call(colorMap.color) !== '[object Array]') {\n gradientElement.childNodes[0].setAttribute('stop-opacity', colorMap.minOpacity.toString());\n gradientElement.childNodes[1].setAttribute('stop-opacity', colorMap.maxOpacity.toString());\n }\n this.defsElement.appendChild(gradientElement);\n this.gradientCount++;\n }\n isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, legendText) : false;\n if (isAddData && isAddData['process'] && colorMapProcess && !isDuplicate) {\n colorMapProcess = false;\n fill = ((Object.prototype.toString.call(colorMap.color) === '[object Array]')) && isNullOrUndefined(gradientElement)\n && isNullOrUndefined(colorMap.value) ? this.legendGradientColor(colorMap, legendIndex) : fill;\n this.legendCollections.push({\n actualValue: actualValue, levelIndex: !isLeafItem ? j : -1, leafIndex: isLeafItem ? j : -1,\n legendName: legendText, legendFill: fill, legendData: [], groupIndex: !isLeafItem ? groupIndex : -1,\n gradientElement: !isNullOrUndefined(gradientElement) ? gradientElement : isNullOrUndefined(colorMap.value)\n ? this.legendLinearGradient : null, name: data[i]['name'],\n opacity: this.treemap.legendSettings.opacity, borderColor: this.treemap.legendSettings.border.color,\n borderWidth: this.treemap.legendSettings.border.width\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[this.legendCollections.length - 1]['legendData'].push(data[i]);\n legendIndex++;\n }\n else if (colorMapProcess && !isDuplicate) {\n colorMapProcess = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[isAddData['value']]['legendData'].push(data[i]);\n }\n if (!isRange && !isDesaturation && !isEqualColor) {\n if (isNullOrUndefined(colorMap.from) && isNullOrUndefined(colorMap.to)\n && isNullOrUndefined(colorMap.minOpacity) &&\n isNullOrUndefined(colorMap.maxOpacity) && isNullOrUndefined(colorMap.value) &&\n !isNullOrUndefined(colorMap.color)) {\n outfill = ((Object.prototype.toString.call(colorMap.color) === '[object Array]'))\n ? colorMap.color[0] : colorMap.color;\n labelLegend = !isNullOrUndefined(colorMap.label) ? colorMap.label : 'Others';\n if (isNullOrUndefined(this.outOfRangeLegend)) {\n this.legendCollections.push({\n actualValue: labelLegend, legendData: [],\n legendName: labelLegend, legendFill: outfill\n });\n otherIndex = this.legendCollections.length;\n this.outOfRangeLegend = this.legendCollections[otherIndex - 1];\n legendIndex++;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[otherIndex - 1]['legendData'].push(data[i]);\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.removeDuplicates = function (legendCollection, text) {\n var isDuplicate = false;\n for (var i = 0; i < legendCollection.length; i++) {\n if (legendCollection[i]['legendName'] === text) {\n isDuplicate = true;\n break;\n }\n else {\n continue;\n }\n }\n return isDuplicate;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.isAddNewLegendData = function (legendText) {\n var newDataProcess;\n var itemValue;\n if (this.legendCollections.length === 0) {\n newDataProcess = true;\n }\n else {\n for (var j = 0; j < this.legendCollections.length; j++) {\n if (legendText === this.legendCollections[j]['actualValue']) {\n newDataProcess = false;\n itemValue = j;\n break;\n }\n else if (j === this.legendCollections.length - 1) {\n newDataProcess = true;\n }\n }\n }\n return { process: newDataProcess, value: itemValue };\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To draw the legend\n */\n TreeMapLegend.prototype.drawLegend = function () {\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n var render = treemap.renderer;\n var fill;\n var textOptions;\n var gradientElement;\n var textFont = legend.textStyle;\n this.legendGroup = render.createGroup({ id: treemap.element.id + '_Legend_Group' });\n this.renderLegendBorder();\n this.renderLegendTitle();\n if (legend.mode === 'Default') {\n this.drawLegendItem(this.currentPage);\n }\n else {\n for (var i = 0; i < this.legendRenderingCollections.length; i++) {\n var itemId = treemap.element.id + '_Legend_Index_' + i;\n var textId = treemap.element.id + '_Legend_Index_' + i + '_Text';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = this.legendRenderingCollections[i];\n gradientElement = item['element'];\n fill = gradientElement ? 'url(#' + gradientElement.id + ')' : item['fill'];\n var bounds = new Rect(item['x'], item['y'], item['width'], item['height']);\n var textLocation = new Location(item['textX'], item['textY']);\n var rectOptions = new RectOption(itemId, fill, legend.shapeBorder, legend.opacity, bounds);\n if (this.treemap.enableRtl) {\n if (treemap.legendSettings.position === 'Left' || treemap.legendSettings.position === 'Right'\n || (treemap.legendSettings.position === 'Auto'\n && this.treemap.availableSize.width >= this.treemap.availableSize.height)) {\n rectOptions.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - (this.translate.y + rectOptions.height) - Math.abs(this.legendBorderRect.y - rectOptions.y);\n textLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - (this.translate.y) + (item['textHeight'] / 2)\n - Math.abs(this.legendBorderRect.y - textLocation.y);\n }\n else {\n rectOptions.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + rectOptions.width)\n - Math.abs(this.legendBorderRect.x - rectOptions.x);\n textLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - this.translate.x - Math.abs(this.legendBorderRect.x - textLocation.x);\n }\n }\n textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'middle', item['text'], '', '');\n renderTextElement(textOptions, textFont, textFont.color || this.treemap.themeStyle.legendTextColor, this.legendGroup);\n this.legendGroup.appendChild(render.drawRectangle(rectOptions));\n }\n }\n legendMaintain(this.treemap, this.legendGroup);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.defaultLegendRtlLocation = function (collection, spacing, treemap, legend) {\n var shapeLocation = collection['Shape'];\n var textLocation = collection['Text'];\n var legendText = collection['DisplayText'];\n var textSize = measureText(legendText, legend.textStyle);\n shapeLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + spacing) - Math.abs(this.legendBorderRect.x - shapeLocation.x);\n textLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + textSize.width + spacing) - Math.abs(this.legendBorderRect.x - textLocation.x);\n if (treemap.legendSettings.position === 'Left' || treemap.legendSettings.position === 'Right'\n || (treemap.legendSettings.position === 'Auto'\n && this.treemap.availableSize.width >= this.treemap.availableSize.height)) {\n shapeLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - this.translate.y - Math.abs(Math.abs(this.legendBorderRect.y) - shapeLocation.y) - (legend.shapeHeight / 2);\n textLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - this.translate.y - Math.abs(Math.abs(this.legendBorderRect.y) - textLocation.y);\n }\n return { shapeLocation: shapeLocation, textLocation: textLocation };\n };\n TreeMapLegend.prototype.drawLegendItem = function (page) {\n var _this = this;\n var treemap = this.treemap;\n var spacing = 10;\n var legend = treemap.legendSettings;\n var shapeSize = new Size(legend.shapeWidth, legend.shapeHeight);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var textOptions;\n var legendRtlLocation;\n var render = treemap.renderer;\n var shapeBorder = legend.shapeBorder;\n var eventArgs;\n if (page >= 0 && page < this.totalPages.length) {\n if (document.getElementById(this.legendGroup.id)) {\n document.getElementById(this.legendGroup.id).remove();\n }\n var isLineShape_1 = (legend.shape === 'HorizontalLine' || legend.shape === 'VerticalLine' || legend.shape === 'Cross');\n var strokeColor_1 = isLineShape_1 ? isNullOrUndefined(legend.fill) ? '#000000' : legend.fill : shapeBorder.color;\n var strokeWidth_1 = isLineShape_1 ? (shapeBorder.width === 0) ? 1 : shapeBorder.width : shapeBorder.width;\n var _loop_1 = function (i) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this_1.totalPages[page]['Collection'][i];\n var legendElement = render.createGroup({ id: treemap.element.id + '_Legend_Index_' + i });\n var legendText = collection['DisplayText'];\n var shapeId = treemap.element.id + '_Legend_Shape_Index_' + i;\n var textId = treemap.element.id + '_Legend_Text_Index_' + i;\n var shapeLocation = collection['Shape'];\n var textLocation = collection['Text'];\n if (treemap.enableRtl) {\n legendRtlLocation = this_1.defaultLegendRtlLocation(collection, spacing, treemap, legend);\n shapeLocation = legendRtlLocation['shapeLocation'];\n textLocation = legendRtlLocation['textLocation'];\n }\n eventArgs = {\n cancel: false, name: legendItemRendering, treemap: treemap, fill: collection['Fill'],\n shape: legend.shape, imageUrl: legend.imageUrl\n };\n this_1.treemap.trigger(legendItemRendering, eventArgs, function (observedArgs) {\n var renderOptions = new PathOption(shapeId, observedArgs.fill, strokeWidth_1, isLineShape_1 ? collection['Fill'] : strokeColor_1, legend.opacity, '');\n legendElement.appendChild(drawSymbol(shapeLocation, observedArgs.shape, shapeSize, observedArgs.imageUrl, renderOptions, legendText));\n textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'start', legendText, '', '');\n renderTextElement(textOptions, legend.textStyle, legend.textStyle.color || _this.treemap.themeStyle.legendTextColor, legendElement);\n _this.legendGroup.appendChild(legendElement);\n });\n };\n var this_1 = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (var i = 0; i < this.totalPages[page]['Collection'].length; i++) {\n _loop_1(i);\n }\n var pagingGroup = void 0;\n var width = spacing;\n var height = (spacing / 2);\n if (this.page !== 0) {\n var pagingText = (page + 1) + '/' + this.totalPages.length;\n var pagingFont = legend.textStyle;\n var pagingTextSize = measureText(pagingText, pagingFont);\n var leftPageX = (this.legendItemRect.x + this.legendItemRect.width) - pagingTextSize.width -\n (width * 2) - spacing;\n var rightPageX = (this.legendItemRect.x + this.legendItemRect.width);\n var locY = (this.legendItemRect.y + this.legendItemRect.height) + (height / 2) + spacing;\n var pageTextX = rightPageX - width - (pagingTextSize.width / 2) - (spacing / 2);\n pagingGroup = render.createGroup({ id: treemap.element.id + '_Legend_Paging_Group' });\n var leftPageElement = render.createGroup({ id: treemap.element.id + '_Legend_Left_Paging_Group' });\n var rightPageElement = render.createGroup({ id: treemap.element.id + '_Legend_Right_Paging_Group' });\n var rightPath = ' M ' + rightPageX + ' ' + locY + ' L ' + (rightPageX - width) + ' ' + (locY - height) +\n ' L ' + (rightPageX - width) + ' ' + (locY + height) + ' z ';\n var leftPath = ' M ' + leftPageX + ' ' + locY + ' L ' + (leftPageX + width) + ' ' + (locY - height) +\n ' L ' + (leftPageX + width) + ' ' + (locY + height) + ' z ';\n var leftPageOptions = new PathOption(treemap.element.id + '_Left_Page', '#a6a6a6', 0, '#a6a6a6', 1, '', leftPath);\n leftPageElement.appendChild(render.drawPath(leftPageOptions));\n var leftRectPageOptions = new RectOption(treemap.element.id + '_Left_Page_Rect', 'transparent', {}, 1, new Rect(leftPageX - (width / 2), (locY - (height * 2)), width * 2, spacing * 2), '');\n leftPageElement.appendChild(render.drawRectangle(leftRectPageOptions));\n this.wireEvents(leftPageElement);\n var rightPageOptions = new PathOption(treemap.element.id + '_Right_Page', '#a6a6a6', 0, '#a6a6a6', 1, '', rightPath);\n rightPageElement.appendChild(render.drawPath(rightPageOptions));\n var rightRectPageOptions = new RectOption(treemap.element.id + '_Right_Page_Rect', 'transparent', {}, 1, new Rect((rightPageX - width), (locY - height), width, spacing), '');\n rightPageElement.appendChild(render.drawRectangle(rightRectPageOptions));\n this.wireEvents(rightPageElement);\n pagingGroup.appendChild(leftPageElement);\n pagingGroup.appendChild(rightPageElement);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var pageTextOptions = {\n 'id': treemap.element.id + '_Paging_Text',\n 'x': pageTextX,\n 'y': locY + (pagingTextSize.height / 4),\n 'fill': '#a6a6a6',\n 'font-size': '14px',\n 'font-style': pagingFont.fontStyle,\n 'font-family': pagingFont.fontFamily,\n 'font-weight': pagingFont.fontWeight,\n 'text-anchor': 'middle',\n 'transform': '',\n 'opacity': 1,\n 'dominant-baseline': ''\n };\n pagingGroup.appendChild(render.createText(pageTextOptions, pagingText));\n this.legendGroup.appendChild(pagingGroup);\n }\n }\n };\n TreeMapLegend.prototype.renderLegendBorder = function () {\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n var legendTitle = legend.title.text;\n var spacing = 10;\n var textStyle = legend.titleStyle;\n var title = textTrim((this.legendItemRect.width + (spacing * 2)), legendTitle, textStyle);\n var textSize = measureText(title, textStyle);\n this.legendBorderRect = new Rect((this.legendItemRect.x - spacing), (this.legendItemRect.y - spacing - textSize.height), (this.legendItemRect.width) + (spacing * 2), (this.legendItemRect.height) + (spacing * 2) + textSize.height +\n (legend.mode === 'Interactive' ? 0 : (this.page !== 0) ? spacing : 0));\n var renderOptions = new RectOption(treemap.element.id + '_Legend_Border', legend.background, legend.border, 1, this.legendBorderRect, '');\n var legendBorder = treemap.renderer.drawRectangle(renderOptions);\n legendBorder.style.pointerEvents = 'none';\n this.legendGroup.appendChild(legendBorder);\n this.getLegendAlignment(treemap, this.legendBorderRect.width, this.legendBorderRect.height, legend);\n this.legendGroup.setAttribute('transform', 'translate( ' + (this.translate.x + (-(this.legendBorderRect.x))) + ' ' +\n (this.translate.y + (-(this.legendBorderRect.y))) + ' )');\n treemap.svgObject.appendChild(this.legendGroup);\n };\n TreeMapLegend.prototype.renderLegendTitle = function () {\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n var textStyle = legend.titleStyle;\n var legendTitle = legend.title.text;\n var textOptions;\n var spacing = 10;\n var trimTitle = textTrim((this.legendItemRect.width + (spacing * 2)), legendTitle, textStyle);\n var textSize = measureText(trimTitle, textStyle);\n if (legendTitle) {\n textOptions = new TextOption(treemap.element.id + '_LegendTitle', (this.legendItemRect.x) + (this.legendItemRect.width / 2), this.legendItemRect.y - (textSize.height / 2) - (spacing / 2), 'middle', trimTitle, '');\n renderTextElement(textOptions, textStyle, textStyle.color || this.treemap.themeStyle.legendTitleColor, this.legendGroup);\n }\n };\n /**\n * To rendered the interactive pointer\n *\n * @param {PointerEvent | TouchEvent} e - Specifies the pointer argument.\n * @returns {void}\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 TreeMapLegend.prototype.mouseUpHandler = function (e) {\n this.renderInteractivePointer(e);\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeInteractivePointer.bind(this), 3000);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To remove the interactive pointer\n */\n TreeMapLegend.prototype.removeInteractivePointer = function () {\n if (document.getElementById(this.treemap.element.id + '_Interactive_Legend')) {\n var legendElementId = document.getElementById(this.treemap.element.id + '_Interactive_Legend');\n legendElementId.parentNode.removeChild(legendElementId);\n }\n };\n /**\n * To change the next page\n *\n * @param {PointerEvent} e - Specifies the pointer event argument.\n * @returns {void}\n */\n TreeMapLegend.prototype.changeNextPage = function (e) {\n this.currentPage = (e.target.id.indexOf('_Left_Page_') > -1) ? (this.currentPage - 1) :\n (this.currentPage + 1);\n this.drawLegend();\n };\n /**\n * Wire events for event handler\n *\n * @param {Element} element - Specifies the element.\n * @returns {void}\n */\n TreeMapLegend.prototype.wireEvents = function (element) {\n EventHandler.add(element, Browser.touchStartEvent, this.changeNextPage, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To add the event listener\n */\n TreeMapLegend.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.renderInteractivePointer, this);\n this.treemap.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To remove the event listener\n */\n TreeMapLegend.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.renderInteractivePointer);\n this.treemap.off(Browser.touchEndEvent, this.mouseUpHandler);\n };\n /**\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 */\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 */\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 */\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 = [textFormatter(this.tooltipSettings.format, toolTipData, this.treemap) ||\n formatValue(value, this.treemap) + ' : ' + this.treemap.weightValuePath.toString()];\n }\n else {\n tooltipContent = [textFormatter(this.tooltipSettings.format, toolTipData, this.treemap) ||\n this.treemap.weightValuePath.toString() + ' : ' + formatValue(value, this.treemap)];\n }\n if (document.getElementById(this.tooltipId)) {\n tooltipEle = document.getElementById(this.tooltipId);\n }\n else {\n tooltipEle = createElement('div', {\n id: this.treemap.element.id + '_TreeMapTooltip',\n className: 'EJ2-TreeMap-Tooltip'\n });\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.fontFamily = this.treemap.themeStyle.fontFamily;\n this.tooltipSettings.textStyle.color = this.treemap.themeStyle.tooltipFontColor\n || this.tooltipSettings.textStyle.color;\n this.tooltipSettings.textStyle.opacity = this.treemap.themeStyle.tooltipTextOpacity\n || this.tooltipSettings.textStyle.opacity;\n tootipArgs = {\n cancel: false, name: tooltipRendering, item: item,\n options: {\n location: location, text: tooltipContent, data: toolTipData,\n textStyle: this.tooltipSettings.textStyle, template: this.tooltipSettings.template\n },\n treemap: this.treemap,\n element: target, eventArgs: e\n };\n // 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 template: args['template'],\n content: args['text'],\n shapes: [],\n location: args['location'],\n palette: [markerFill],\n areaBounds: this.treemap.areaRect,\n textStyle: args['textStyle'],\n fill: this.treemap.tooltipSettings.fill ? this.treemap.tooltipSettings.fill : this.treemap.themeStyle.tooltipFillColor\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.treemap.isVue || this.treemap.isVue3) {\n this.svgTooltip.controlInstance = this.treemap;\n }\n this.svgTooltip.opacity = this.treemap.themeStyle.tooltipFillOpacity || this.svgTooltip.opacity;\n this.svgTooltip.appendTo(tooltipEle);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.renderReactTemplates();\n }\n else {\n this.removeTooltip();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.clearTemplate();\n }\n };\n TreeMapTooltip.prototype.mouseUpHandler = function (e) {\n this.renderTooltip(e);\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeTooltip.bind(this), 2000);\n };\n TreeMapTooltip.prototype.removeTooltip = function () {\n if (document.getElementsByClassName('EJ2-TreeMap-Tooltip').length > 0) {\n var tooltipElementId = document.getElementsByClassName('EJ2-TreeMap-Tooltip')[0];\n tooltipElementId.parentNode.removeChild(tooltipElementId);\n }\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To bind events for tooltip module\n */\n TreeMapTooltip.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.renderTooltip, this);\n this.treemap.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To unbind events for tooltip module\n */\n TreeMapTooltip.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.renderTooltip);\n this.treemap.off(Browser.touchEndEvent, this.mouseUpHandler);\n };\n /**\n * Get module name.\n *\n * @returns {string} returns string\n */\n TreeMapTooltip.prototype.getModuleName = function () {\n return 'treeMapTooltip';\n };\n /**\n * To destroy the tooltip.\n *\n * @returns {void}\n * @private\n */\n TreeMapTooltip.prototype.destroy = function () {\n if (!isNullOrUndefined(this.svgTooltip)) {\n this.svgTooltip.destroy();\n }\n this.svgTooltip = null;\n this.tooltipSettings = null;\n this.removeEventListener();\n this.treemap = null;\n };\n return TreeMapTooltip;\n}());\nexport { TreeMapTooltip };\n","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","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","subTitleFontColor","tooltipFillColor","tooltipFontColor","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","LevelsData","levelsData","initialDrillDown","groupIndex","groupName","drilledItems","getDrilldownData","extend","legendSettings","currentLevel","calculateLayoutItems","renderLayoutItems","count","enableBreadcrumb","drillData","newData","child","parentData","layoutType","computeSliceAndDiceDimensional","computeSquarifyDimensional","coords","gap","headerHeight","leafItem","groups","sliceAndDiceProcess","groupGap","showHeader","childValue","parentArea","alottedValue","totalWeight","forEach","isHorizontal","sort","isHierarchicalData","padding","calculateChildrenLayout","groupPadding","computeTotalArea","performRowsLayout","currentRow","stack","newCoordinates","getCoordinates","newStack","nextDatum","restData","aspectRatio","newRow","currentRowLength","valueSum","newContainer","cutArea","findMaxAspectRatio","row","rowLength","minArea","Infinity","maxArea","sumArea","area","max","pow","areaWidth","areaHeight","isParent","parentRect","subXOffset","subYOffset","coordinates","y1","x1","dataLength_1","dataSum","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","tabIndex","svgObject","customText","textName","tspanText","labelInterSectAction","drillSymbolCount","drillSymbolSize","textLocation","texts","maxNumber","collectionLength","stringText","getSaturatedColor","itemFill","itemOpacity","defaultLevelsData","option","equalColorValuePath","rangeColorValuePath","colorValuePath","palette","saturatedColor","rgbValue","templateId","baseTemplateId","labelElement","templateLocation","textValue","destroy","currentRect","Theme","mapsTitleFont","Print","control","print","printWindow","open","outerHeight","outerWidth","moveTo","resizeTo","screen","availWidth","availHeight","argsData","htmlContent","getHTMLContent","printFunction","div","cloneNode","Element","getModuleName","ImageExport","export","allowDownload","Promise","resolve","reject","availableSize","Browser","userAgent","svgData","outerHTML","URL","createObjectURL","Blob","XMLSerializer","serializeToString","image_1","Image","context_1","getContext","onload","drawImage","revokeObjectURL","toDataURL","src","PdfExport","orientation","PdfPageOrientation","Landscape","exportElement","backgroundElement","image","context","PdfDocument","imageString","pageSettings","pages","add","graphics","PdfBitmap","save","TreeMap","isResize","preRender","initPrivateVariable","unWireEVents","createSvg","wireEVents","setCulture","render","renderElements","hierarchyData","createSecondaryElement","addTabIndex","renderBorder","renderTitle","titleSettings","processDataManager","dataModule","queryModule","ajaxModule","localAjax","dataSource","DataManager","query","Query","executeQuery","then","renderTreeMapElements","Ajax","onSuccess","args","JSON","parse","send","processingData","visible","renderLegend","elementChange","isResized","renderComplete","firstChild","hasChildNodes","clearTemplate","containerWidth","containerHeight","secondaryElement","insertBefore","borderElement","background","borderRect","drawRectangle","title","bounds","groupEle","margin","right","trimmedTitle","elementSize","location_1","titleBounds","description","subtitleSettings","bottom","map","checkIsHierarchicalData","data_1","currentData","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","doubleTapTimer1","end","Date","getMilliseconds","doubleClick","doubleClickArgs","rightClickArgs","mouseDown","notify","moveArgs","cursor","calculateSelectedTextLevels","drillLevel","levelText","_a","currentLevelLabel","calculatePreviousLevelChildItems","drillLevelValues","directLevel","levelItems","text1","drillTextLevel","h","compareSelectedLabelWithDrillDownItems","drillLevelChild","newDrillItem","startEvent","endEvent","layoutID","templateID","drillMouseMove","drillLength","rightClick","which","layerElementId","textContent","widthIncrement","heightIncrement","drilledLegendItems","drillElementId","treeMapTooltipModule","removeTooltip","removeInteractivePointer","treeMapHighlightModule","shapeHighlightCollection","highLightId","selectItem","levelOrder","isSelected","treeMapSelectionModule","enable","selectTreemapItem","requiredModules","modules","tooltipSettings","member","highlightSettings","onPropertyChanged","newProp","oldProp","removeSvg","getPersistData","Event","NotifyPropertyChanges","Component","TreeMapLegend","page","legendBorderRect","currentPage","textMaxWidth","legendInteractiveGradient","legendItemRect","legendRenderingCollections","legendNames","totalPages","gradientCount","defsElement","createDefs","_changePosition","calculateLegendBounds","drawLegend","legend","findColorMappingLegendItems","findPaletteLegendItems","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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"}
|