@syncfusion/ej2-treemap 20.1.59 → 20.2.43
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/CHANGELOG.md +2 -10
- 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 +47 -23
- package/dist/es6/ej2-treemap.es2015.js.map +1 -1
- package/dist/es6/ej2-treemap.es5.js +50 -26
- 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 +11 -11
- package/src/treemap/layout/legend.js +6 -7
- package/src/treemap/layout/render-panel.js +17 -12
- package/src/treemap/model/base.js +3 -3
- package/src/treemap/model/interface.d.ts +4 -0
- package/src/treemap/model/theme.js +16 -0
- package/src/treemap/treemap.js +8 -4
|
@@ -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 };\nexport function stringToNumber(value, containerSize) {\n if (value !== null && value !== undefined) {\n return value.indexOf('%') !== -1 ? (containerSize / 100) * parseInt(value, 10) : parseInt(value, 10);\n }\n return null;\n}\n/**\n * Internal use of type rect\n *\n * @private\n */\nvar Rect = /** @class */ (function () {\n function Rect(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n return Rect;\n}());\nexport { Rect };\n/**\n * Internal use of rectangle options\n *\n * @private\n */\nvar RectOption = /** @class */ (function () {\n function RectOption(id, fill, border, opacity, rect, dashArray) {\n this.y = rect.y;\n this.x = rect.x;\n this.height = rect.height;\n this.width = rect.width;\n this.id = id;\n this.fill = fill;\n this.opacity = opacity;\n this.stroke = border.color;\n this['stroke-width'] = border.width;\n this['stroke-dasharray'] = dashArray;\n }\n return RectOption;\n}());\nexport { RectOption };\nvar PathOption = /** @class */ (function () {\n function PathOption(id, fill, width, color, opacity, dashArray, d) {\n this.id = id;\n this.opacity = opacity;\n this.fill = fill;\n this.stroke = color;\n this['stroke-width'] = width;\n this['stroke-dasharray'] = dashArray;\n this.d = d;\n }\n return PathOption;\n}());\nexport { PathOption };\n/**\n * Function to measure the height and width of the text.\n *\n * @param {string} text - Specifies the text.\n * @param {FontModel} font - Specifies the font.\n * @param {string} id - Specifies the id.\n * @returns {Size} - Returns the size.\n * @private\n */\nexport function measureText(text, font) {\n var measureObject = document.getElementById('treeMapMeasureText');\n if (measureObject === null) {\n measureObject = createElement('text', { id: 'treeMapMeasureText' });\n document.body.appendChild(measureObject);\n }\n measureObject.innerHTML = text;\n measureObject.style.position = 'absolute';\n measureObject.style.fontSize = font.size;\n measureObject.style.fontWeight = font.fontWeight;\n measureObject.style.fontStyle = font.fontStyle;\n measureObject.style.fontFamily = font.fontFamily;\n measureObject.style.visibility = 'hidden';\n measureObject.style.top = '-100';\n measureObject.style.left = '0';\n measureObject.style.whiteSpace = 'nowrap';\n // For bootstrap line height issue\n measureObject.style.lineHeight = 'normal';\n return new Size(measureObject.clientWidth, measureObject.clientHeight);\n}\n/**\n * Internal use of text options\n *\n * @private\n */\nvar TextOption = /** @class */ (function () {\n function TextOption(id, x, y, anchor, text, transform, baseLine, connectorText) {\n if (transform === void 0) { transform = ''; }\n this.transform = '';\n this.baseLine = 'auto';\n this.id = id;\n this.text = text;\n this.transform = transform;\n this.anchor = anchor;\n this.x = x;\n this.y = y;\n this.baseLine = baseLine;\n this.connectorText = connectorText;\n }\n return TextOption;\n}());\nexport { TextOption };\n/**\n * Trim the title text\n *\n * @param {number} maxWidth - Specifies the maximum width\n * @param {string} text - Specifies the text\n * @param {FontModel} font - Specifies the font\n * @returns {string} - Returns the string\n * @private\n */\nexport function textTrim(maxWidth, text, font) {\n var label = text;\n var size = measureText(text, font).width;\n if (size > maxWidth) {\n var textLength = text.length;\n for (var i = textLength - 1; i >= 0; --i) {\n label = text.substring(0, i) + '...';\n size = measureText(label, font).width;\n if (size <= maxWidth || label.length < 4) {\n if (label.length < 4) {\n label = ' ';\n }\n return label;\n }\n }\n }\n return label;\n}\n/**\n * Map internal class for Point\n */\nvar Location = /** @class */ (function () {\n function Location(x, y) {\n this.x = x;\n this.y = y;\n }\n return Location;\n}());\nexport { Location };\n/**\n * Method to calculate x position of title\n */\nexport function findPosition(location, alignment, textSize, type) {\n var x;\n switch (alignment) {\n case 'Near':\n x = location.x;\n break;\n case 'Center':\n x = (type === 'title') ? (location.width / 2 - textSize.width / 2) :\n ((location.x + (location.width / 2)) - textSize.width / 2);\n break;\n case 'Far':\n x = (type === 'title') ? (location.width - location.y - textSize.width) :\n ((location.x + location.width) - textSize.width);\n break;\n }\n var y = (type === 'title') ? location.y + (textSize.height / 2) : ((location.y + location.height / 2) + textSize.height / 2);\n return new Location(x, y);\n}\nexport function createTextStyle(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nrenderer, renderOptions, text) {\n var htmlObject = renderer.createText(renderOptions, text);\n htmlObject.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n htmlObject.style['user-select'] = 'none';\n htmlObject.style['-moz-user-select'] = 'none';\n htmlObject.style['-webkit-touch-callout'] = 'none';\n htmlObject.style['-webkit-user-select'] = 'none';\n htmlObject.style['-khtml-user-select'] = 'none';\n htmlObject.style['-ms-user-select'] = 'none';\n htmlObject.style['-o-user-select'] = 'none';\n return htmlObject;\n}\n/**\n * Internal rendering of text\n *\n * @param {TextOption} options - Specifies the text option\n * @param {FontModel} font - Specifies the font model\n * @param {string} color - Specifies the color\n * @param {HTMLElement | Element} parent - Specifes the html element\n * @param {boolean} isMinus - Specifies the boolean value\n * @returns {Element} - Returns the element\n * @private\n */\nexport function renderTextElement(options, font, color, parent, isMinus) {\n if (isMinus === void 0) { isMinus = false; }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var renderOptions = {\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily,\n 'font-weight': font.fontWeight,\n 'text-anchor': options.anchor,\n 'transform': options.transform,\n 'opacity': font.opacity,\n 'dominant-baseline': options.baseLine,\n 'id': options.id,\n 'x': options.x,\n 'y': options.y,\n 'fill': color\n };\n var text = typeof options.text === 'string' ? options.text : isMinus ? options.text[options.text.length - 1] : options.text[0];\n var tspanElement;\n var renderer = new SvgRenderer('');\n var height;\n var htmlObject;\n var breadCrumbText = !isNullOrUndefined(text) && !isNullOrUndefined(options.connectorText) ?\n (text.search(options.connectorText[1]) >= 0) : false;\n if (breadCrumbText) {\n var drilledLabel = text;\n var spacing = 5;\n var drillLevelText = drilledLabel.split('#');\n for (var z = 0; z < drillLevelText.length; z++) {\n var drillText = (drillLevelText[z].search(options.connectorText) !== -1 && !isNullOrUndefined(options.connectorText)) ?\n options.connectorText : drillLevelText[z];\n renderOptions['id'] = options.id + '_' + z;\n htmlObject = createTextStyle(renderer, renderOptions, drillText);\n if (z % 2 === 0 && z !== 0) {\n var re = /\\s+/g;\n drillText = drillText.replace(re, ' ');\n }\n var size = measureText(drillText, font);\n renderOptions['x'] = z !== 0 ? renderOptions['x'] + size.width : renderOptions['x'] + size.width + spacing;\n parent.appendChild(htmlObject);\n }\n }\n else {\n htmlObject = createTextStyle(renderer, renderOptions, text);\n parent.appendChild(htmlObject);\n }\n if (typeof options.text !== 'string' && options.text.length > 1) {\n for (var i = 1, len = options.text.length; i < len; i++) {\n height = (measureText(options.text[i], font).height);\n tspanElement = renderer.createTSpan({\n 'x': options.x, 'id': options.id,\n 'y': (options.y) + (i * height)\n }, options.text[i]);\n htmlObject.appendChild(tspanElement);\n }\n parent.appendChild(htmlObject);\n }\n return htmlObject;\n}\nexport function setItemTemplateContent(targetId, targetElement, contentItemTemplate) {\n var itemSelect = targetId.split('_RectPath')[0];\n var itemTemplate;\n if (targetId.indexOf('_LabelTemplate') > -1) {\n itemTemplate = targetElement;\n }\n else {\n itemTemplate = document.querySelector('#' + itemSelect + '_LabelTemplate');\n }\n if (!isNullOrUndefined(itemTemplate)) {\n itemTemplate.innerHTML = contentItemTemplate;\n }\n}\nexport function getElement(id) {\n return document.getElementById(id);\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function itemsToOrder(a, b) {\n return a['weight'] === b['weight'] ? 0 : a['weight'] < b['weight'] ? 1 : -1;\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isContainsData(source, pathName, processData, treemap) {\n var isExist = false;\n var name = '';\n var path;\n var leaf = treemap.leafItemSettings;\n for (var i = 0; i < source.length; i++) {\n path = treemap.levels[i] ? treemap.levels[i].groupPath : leaf.labelPath ? leaf.labelPath : treemap.weightValuePath;\n var data = processData[path] || 'undefined';\n if (source[i] === data) {\n name += data + (i === source.length - 1 ? '' : '#');\n if (name === pathName) {\n isExist = true;\n break;\n }\n }\n }\n return isExist;\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function findChildren(data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var children;\n if (data) {\n var keys = Object.keys(data);\n children = {};\n for (var i = 0; i < keys.length; i++) {\n if (data[keys[i]] instanceof Array) {\n children['values'] = data[keys[i]];\n children['key'] = keys[i];\n break;\n }\n }\n }\n return children;\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function findHightLightItems(data, items, mode, treeMap) {\n if (mode === 'Child') {\n items.push(data['levelOrderName']);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var children = findChildren(data)['values'];\n if (children && children.length > 0) {\n for (var i = 0; i < children.length; i++) {\n if (items.indexOf(children[i]['levelOrderName']) === -1) {\n items.push(children[i]['levelOrderName']);\n }\n }\n for (var j = 0; j < children.length; j++) {\n findHightLightItems(children[j], items, mode, treeMap);\n }\n }\n }\n else if (mode === 'Parent') {\n if (typeof data['levelOrderName'] === 'string' && items.indexOf(data['levelOrderName']) === -1) {\n items.push(data['levelOrderName']);\n findHightLightItems(data['parent'], items, mode, treeMap);\n }\n }\n else if (mode === 'All') {\n var parentName = data['levelOrderName'].split('#')[0];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentItem = void 0;\n for (var i = 0; i < treeMap.layout.renderItems.length; i++) {\n currentItem = treeMap.layout.renderItems[i];\n if ((currentItem['levelOrderName']).indexOf(parentName) > -1 && items.indexOf(currentItem['levelOrderName']) === -1) {\n items.push(currentItem['levelOrderName']);\n }\n }\n }\n else {\n items.push(data['levelOrderName']);\n }\n return items;\n}\n/**\n * Function to compile the template function for maps.\n *\n * @param {string} template - Specifies the template\n * @returns {Function} - Returns the template function\n * @private\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getTemplateFunction(template) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateFn = null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var e;\n try {\n if (document.querySelectorAll(template).length) {\n templateFn = compile(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (e) {\n templateFn = compile(template);\n }\n return templateFn;\n}\n/**\n * @private\n * @param {HTMLCollection} element - Specifies the element\n * @param {string} labelId - Specifies the label id\n * @param {Object} data - Specifies the data\n * @returns {HTMLElement} - Returns the element\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function convertElement(element, labelId, data) {\n var childElement = createElement('div', {\n id: labelId,\n styles: 'position: absolute;pointer-events: auto;'\n });\n var elementLength = element.length;\n while (elementLength > 0) {\n childElement.appendChild(element[0]);\n elementLength--;\n }\n var templateHtml = childElement.innerHTML;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n templateHtml = templateHtml.replace(new RegExp('{{:' + keys[i] + '}}', 'g'), data[keys[i].toString()]);\n }\n childElement.innerHTML = templateHtml;\n return childElement;\n}\nexport function findLabelLocation(rect, position, labelSize, type, treemap) {\n var location = new Location(0, 0);\n var padding = 5;\n var paddings = 2;\n var elementRect = treemap.element.getBoundingClientRect();\n var x = (type === 'Template') ? treemap.areaRect.x : 0;\n var y = (type === 'Template') ? treemap.areaRect.y : 0;\n location.x = (Math.abs(x - ((position.indexOf('Left') > -1) ? rect.x + padding : !(position.indexOf('Right') > -1) ?\n rect.x + ((rect.width / 2) - (labelSize.width / 2)) : (rect.x + rect.width) - labelSize.width))) - paddings;\n if (treemap.enableDrillDown && (treemap.renderDirection === 'BottomLeftTopRight'\n || treemap.renderDirection === 'BottomRightTopLeft')) {\n location.y = Math.abs((rect.y + rect.height) - labelSize.height + padding);\n }\n else {\n location.y = Math.abs(y - ((position.indexOf('Top') > -1) ? (type === 'Template' ? rect.y : rect.y + labelSize.height) :\n !(position.indexOf('Bottom') > -1) ? type === 'Template' ? (rect.y + ((rect.height / 2) - (labelSize.height / 2))) :\n (rect.y + (rect.height / 2) + labelSize.height / 4) : (rect.y + rect.height) - labelSize.height));\n }\n return location;\n}\nexport function measureElement(element, parentElement) {\n var size = new Size(0, 0);\n parentElement.appendChild(element);\n size.height = element.offsetHeight;\n size.width = element.offsetWidth;\n var measureElementId = document.getElementById(element.id);\n measureElementId.parentNode.removeChild(measureElementId);\n return size;\n}\nexport function getArea(rect) {\n return (rect.width - rect.x) * (rect.height - rect.y);\n}\nexport function getShortestEdge(input) {\n var container = convertToContainer(input);\n var width = container.width;\n var height = container.height;\n var result = Math.min(width, height);\n return result;\n}\nexport function convertToContainer(rect) {\n var x = rect.x;\n var y = rect.y;\n var width = rect.width;\n var height = rect.height;\n return {\n x: x,\n y: y,\n width: width - x,\n height: height - y\n };\n}\nexport function convertToRect(container) {\n var xOffset = container.x;\n var yOffset = container.y;\n var width = container.width;\n var height = container.height;\n return {\n x: xOffset,\n y: yOffset,\n width: xOffset + width,\n height: yOffset + height\n };\n}\nexport function getMousePosition(pageX, pageY, element) {\n var elementRect = element.getBoundingClientRect();\n var pageXOffset = element.ownerDocument.defaultView.pageXOffset;\n var pageYOffset = element.ownerDocument.defaultView.pageYOffset;\n var clientTop = element.ownerDocument.documentElement.clientTop;\n var clientLeft = element.ownerDocument.documentElement.clientLeft;\n var positionX = elementRect.left + pageXOffset - clientLeft;\n var positionY = elementRect.top + pageYOffset - clientTop;\n return new Location((pageX - positionX), (pageY - positionY));\n}\nexport function colorMap(colorMapping, equalValue, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvalue, weightValuePath) {\n var fill;\n var paths = [];\n var opacity;\n if (isNullOrUndefined(equalValue) && (isNullOrUndefined(value) && isNaN(value))) {\n return null;\n }\n for (var i = 0; i < colorMapping.length; i++) {\n var isEqualColor = false;\n var dataValue = value;\n if (!isNullOrUndefined(colorMapping[i].from) && !isNullOrUndefined(colorMapping[i].to)\n && !isNullOrUndefined(colorMapping[i].value)) {\n if ((value >= colorMapping[i].from && colorMapping[i].to >= value) && (colorMapping[i].value === equalValue)) {\n isEqualColor = true;\n if (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') {\n fill = !isEqualColor ? colorCollections(colorMapping[i], dataValue) : colorMapping[i].color[0];\n }\n else {\n fill = colorMapping[i].color;\n }\n }\n }\n else if ((!isNullOrUndefined(colorMapping[i].from) && !isNullOrUndefined(colorMapping[i].to))\n || !isNullOrUndefined((colorMapping[i].value))) {\n if ((value >= colorMapping[i].from && colorMapping[i].to >= value) || (colorMapping[i].value === equalValue)) {\n if (colorMapping[i].value === equalValue) {\n isEqualColor = true;\n }\n if (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') {\n fill = !isEqualColor ? colorCollections(colorMapping[i], dataValue) : colorMapping[i].color[0];\n }\n else {\n fill = colorMapping[i].color;\n }\n }\n }\n if (((value >= colorMapping[i].from && value <= colorMapping[i].to) || (colorMapping[i].value === equalValue))\n && !isNullOrUndefined(colorMapping[i].minOpacity) && !isNullOrUndefined(colorMapping[i].maxOpacity) && fill) {\n opacity = deSaturationColor(weightValuePath, colorMapping[i], fill, value);\n }\n if ((fill === '' || isNullOrUndefined(fill))\n && isNullOrUndefined(colorMapping[i].from) && isNullOrUndefined(colorMapping[i].to)\n && isNullOrUndefined(colorMapping[i].minOpacity) && isNullOrUndefined(colorMapping[i].maxOpacity)\n && isNullOrUndefined(colorMapping[i].value)) {\n fill = (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') ?\n colorMapping[i].color[0] : colorMapping[i].color;\n }\n opacity = !isNullOrUndefined(opacity) ? opacity : '1';\n paths.push(fill);\n }\n for (var j = paths.length - 1; j >= 0; j--) {\n fill = paths[j];\n j = (fill) ? -1 : j;\n }\n return { fill: fill, opacity: opacity };\n}\nexport function deSaturationColor(weightValuePath, colorMapping, color, rangeValue) {\n var opacity = 1;\n if ((rangeValue >= colorMapping.from && rangeValue <= colorMapping.to)) {\n var ratio = (rangeValue - colorMapping.from) / (colorMapping.to - colorMapping.from);\n opacity = (ratio * (colorMapping.maxOpacity - colorMapping.minOpacity)) + colorMapping.minOpacity;\n }\n return opacity.toString();\n}\nexport function colorCollections(colorMap, value) {\n var gradientFill = getColorByValue(colorMap, value);\n return gradientFill;\n}\nexport function rgbToHex(r, g, b) {\n return '#' + componentToHex(r) + componentToHex(g) + componentToHex(b);\n}\nexport function getColorByValue(colorMap, value) {\n var color = '';\n var rbg;\n if (Number(value) === colorMap.from) {\n color = colorMap.color[0];\n }\n else if (Number(value) === colorMap.to) {\n color = colorMap.color[colorMap.color.length - 1];\n }\n else {\n rbg = getGradientColor(Number(value), colorMap);\n color = rgbToHex(rbg.r, rbg.g, rbg.b);\n }\n return color;\n}\nexport function getGradientColor(value, colorMap) {\n var previousOffset = colorMap.from;\n var nextOffset = colorMap.to;\n var percent = 0;\n var prev1;\n var full = nextOffset - previousOffset;\n var midColor;\n var midreturn;\n percent = (value - previousOffset) / full;\n var previousColor;\n var nextColor;\n if (colorMap.color.length <= 2) {\n previousColor = colorMap.color[0].charAt(0) === '#' ? colorMap.color[0] : colorNameToHex(colorMap.color[0]);\n nextColor = colorMap.color[colorMap.color.length - 1].charAt(0) === '#' ?\n colorMap.color[colorMap.color.length - 1] : colorNameToHex(colorMap.color[colorMap.color.length - 1]);\n }\n else {\n previousColor = colorMap.color[0].charAt(0) === '#' ? colorMap.color[0] : colorNameToHex(colorMap.color[0]);\n nextColor = colorMap.color[colorMap.color.length - 1].charAt(0) === '#' ?\n colorMap.color[colorMap.color.length - 1] : colorNameToHex(colorMap.color[colorMap.color.length - 1]);\n var a = full / (colorMap.color.length - 1);\n var b = void 0;\n var c = void 0;\n var length_1 = colorMap.color.length - 1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var splitColorValueOffset = [];\n var splitColor = {};\n for (var j = 1; j < length_1; j++) {\n c = j * a;\n b = previousOffset + c;\n splitColor = { b: b, color: colorMap.color[j] };\n splitColorValueOffset.push(splitColor);\n }\n for (var i = 0; i < splitColorValueOffset.length; i++) {\n if (previousOffset <= value && value <= splitColorValueOffset[i]['b'] && i === 0) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n nextColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ? 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a)\n : (value - splitColorValueOffset[i]['b']) / a;\n }\n else if (splitColorValueOffset[i]['b'] <= value && value <= nextOffset && i === (splitColorValueOffset.length - 1)) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ?\n 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a) : (value - splitColorValueOffset[i]['b']) / a;\n }\n if (i !== splitColorValueOffset.length - 1 && i < splitColorValueOffset.length) {\n if (splitColorValueOffset[i]['b'] <= value && value <= splitColorValueOffset[i + 1]['b']) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n nextColor = splitColorValueOffset[i + 1]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i + 1]['color'] : colorNameToHex(splitColorValueOffset[i + 1]['color']);\n percent = Math.abs((value - splitColorValueOffset[i + 1]['b'])) / a;\n }\n }\n }\n }\n return getPercentageColor(percent, previousColor, nextColor);\n}\nexport function getPercentageColor(percent, previous, next) {\n var nextColor = next.split('#')[1];\n var prevColor = previous.split('#')[1];\n var r = getPercentage(percent, parseInt(prevColor.substr(0, 2), 16), parseInt(nextColor.substr(0, 2), 16));\n var g = getPercentage(percent, parseInt(prevColor.substr(2, 2), 16), parseInt(nextColor.substr(2, 2), 16));\n var b = getPercentage(percent, parseInt(prevColor.substr(4, 2), 16), parseInt(nextColor.substr(4, 2), 16));\n return new ColorValue(r, g, b);\n}\nexport function getPercentage(percent, previous, next) {\n var full = next - previous;\n return Math.round((previous + (full * percent)));\n}\nexport function wordWrap(maximumWidth, dataLabel, font) {\n var textCollection = dataLabel.split(' ');\n var label = '';\n var labelCollection = [];\n var text;\n for (var i = 0, len = textCollection.length; i < len; i++) {\n text = textCollection[i];\n if (measureText(label.concat(text), font).width < maximumWidth) {\n label = label.concat((label === '' ? '' : ' ') + text);\n }\n else {\n if (label !== '') {\n labelCollection.push(textTrim(maximumWidth, label, font));\n label = text;\n }\n else {\n labelCollection.push(textTrim(maximumWidth, text, font));\n text = '';\n }\n }\n if (label && i === len - 1) {\n labelCollection.push(textTrim(maximumWidth, label, font));\n }\n }\n return labelCollection;\n}\nexport function textWrap(maxWidth, label, font) {\n var text = label;\n var resultText = [];\n var currentLength = 0;\n var totalWidth = measureText(label, font).width;\n var totalLength = label.length;\n if (maxWidth >= totalWidth) {\n resultText.push(label);\n return resultText;\n }\n else {\n for (var i = label.length; i > currentLength; i--) {\n var sliceString = label.slice(currentLength, i);\n totalWidth = measureText(sliceString, font).width;\n if (totalWidth <= maxWidth) {\n resultText.push(sliceString);\n currentLength += sliceString.length;\n if (totalLength === currentLength) {\n return resultText;\n }\n i = totalLength + 1;\n }\n }\n }\n return resultText;\n}\n/**\n * hide function\n *\n * @param {number} maxWidth - Specifies the maximum width\n * @param {number} maxHeight - Specifies the maximum height\n * @param {string} text - Specifies the text\n * @param {FontModel} font - Specifies the font\n * @returns {string} - Returns the hideText\n */\nexport function hide(maxWidth, maxHeight, text, font) {\n var hideText = text;\n var textSize = measureText(text, font);\n hideText = (textSize.width > maxWidth || textSize.height > maxHeight) ? ' ' : text;\n return hideText;\n}\nexport function orderByArea(a, b) {\n if (a['itemArea'] === b['itemArea']) {\n return 0;\n }\n else if (a['itemArea'] < b['itemArea']) {\n return 1;\n }\n return -1;\n}\nexport function maintainSelection(treemap, element, className) {\n var elementId = treemap.levelSelection;\n if (elementId) {\n for (var index = 0; index < elementId.length; index++) {\n if (element.getAttribute('id') === elementId[index]) {\n if (element.childElementCount > 0) {\n element.children[0].setAttribute('class', className);\n applyOptions(element.childNodes[0], {\n border: treemap.selectionSettings.border, fill: treemap.selectionSettings.fill,\n opacity: treemap.selectionSettings.opacity\n });\n }\n }\n else {\n element.setAttribute('class', '');\n }\n }\n }\n}\nexport function legendMaintain(treemap, legendGroup) {\n var elementId = treemap.legendId;\n if (elementId) {\n for (var i = 0; i < elementId.length; i++) {\n for (var j = 0; j < legendGroup.childElementCount; j++) {\n if (legendGroup.childNodes[j]['id'] === elementId[i]) {\n legendGroup.childNodes[j].setAttribute('fill', treemap.selectionSettings.fill);\n legendGroup.childNodes[j].setAttribute('stroke', treemap.selectionSettings.border.color);\n legendGroup.childNodes[j].setAttribute('stroke-width', (treemap.selectionSettings.border.width).toString());\n legendGroup.childNodes[j].setAttribute('opacity', treemap.selectionSettings.opacity);\n }\n }\n }\n }\n}\nexport function removeClassNames(elements, type, treemap) {\n var opacity;\n var process = true;\n var element;\n var stroke;\n var strokeWidth;\n var fill;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var options = {};\n for (var j = 0; j < elements.length; j++) {\n element = isNullOrUndefined(elements[j].childNodes[0]) ? elements[j] :\n elements[j].childNodes[0];\n options = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])]['options'];\n applyOptions(element, options);\n elements[j].classList.remove(type);\n j -= 1;\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function applyOptions(element, options) {\n element.setAttribute('opacity', options['opacity']);\n if (!isNullOrUndefined(options['fill'])) {\n element.setAttribute('fill', options['fill']);\n }\n element.setAttribute('stroke', options['border']['color']);\n element.setAttribute('stroke-width', options['border']['width']);\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function textFormatter(format, data, treemap) {\n if (isNullOrUndefined(format)) {\n return null;\n }\n var keys = Object.keys(data);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n format = format.split('${' + key + '}').join(formatValue(data[key], treemap).toString());\n }\n return format;\n}\nexport function formatValue(value, treemap) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var formatValue;\n var formatFunction;\n if (treemap.format && !isNaN(Number(value))) {\n formatFunction = treemap.intl.getNumberFormat({ format: treemap.format, useGrouping: treemap.useGroupingSeparator });\n formatValue = formatFunction(Number(value));\n }\n else {\n formatValue = value;\n }\n return formatValue ? formatValue : '';\n}\n/**\n * @private\n */\nvar ColorValue = /** @class */ (function () {\n function ColorValue(r, g, b) {\n this.r = r;\n this.g = g;\n this.b = b;\n }\n return ColorValue;\n}());\nexport { ColorValue };\n/**\n * @param {ColorValue} value - Specfies the color value\n * @returns {string} - Returns the string\n * @private\n */\nexport function convertToHexCode(value) {\n return '#' + componentToHex(value.r) + componentToHex(value.g) + componentToHex(value.b);\n}\n/**\n * @param {number} value - Specifes the value\n * @returns {string} - Returns the string\n * @private */\nexport function componentToHex(value) {\n var hex = value.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n}\n/**\n * @param {string} hex - Specifies the hex value\n * @returns {ColorValue} - Returns the color value\n * @private\n */\nexport function convertHexToColor(hex) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? new ColorValue(parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)) :\n new ColorValue(255, 255, 255);\n}\n/**\n * @param {string} color - Specifies the color\n * @returns {string} - Returns the string\n * @private\n */\nexport function colorNameToHex(color) {\n color = color === 'transparent' ? 'white' : color;\n var element = document.getElementById('treeMapMeasureText');\n element.style.color = color;\n color = window.getComputedStyle(element).color;\n var exp = /^(rgb|hsl)(a?)[(]\\s*([\\d.]+\\s*%?)\\s*,\\s*([\\d.]+\\s*%?)\\s*,\\s*([\\d.]+\\s*%?)\\s*(?:,\\s*([\\d.]+)\\s*)?[)]$/;\n var isRGBValue = exp.exec(color);\n return convertToHexCode(new ColorValue(parseInt(isRGBValue[3], 10), parseInt(isRGBValue[4], 10), parseInt(isRGBValue[5], 10)));\n}\n/**\n * @param {Location} location - Specifies the location\n * @param {string} shape - Specifies the shape\n * @param {Size} size - Specifies the size\n * @param {string} url - Specifies the url\n * @param {PathOption} options - Specifies the options\n * @param {string} label - Specifies the label\n * @returns {Element} - Returns the element\n * @private\n */\nexport function drawSymbol(location, shape, size, url, options, label) {\n var functionName = 'Path';\n var svgRenderer = new SvgRenderer('');\n var temp = renderLegendShape(location, size, shape, options, url);\n var htmlElement = svgRenderer['draw' + temp.functionName](temp.renderOption);\n htmlElement.setAttribute('aria-label', label);\n return htmlElement;\n}\n/**\n * @param {Location} location - Specifies the location\n * @param {Size} size - Specifies the size\n * @param {string} shape - Specifies the shape\n * @param {PathOption} options - Specifies the path option\n * @param {string} url - Specifies the string\n * @returns {IShapes} - Returns the shapes\n * @private\n */\nexport function renderLegendShape(location, size, shape, options, url) {\n var renderPath;\n var functionName = 'Path';\n var shapeWidth = size.width;\n var shapeHeight = size.height;\n var shapeX = location.x;\n var shapeY = location.y;\n var x = location.x + (-shapeWidth / 2);\n var y = location.y + (-shapeHeight / 2);\n switch (shape) {\n case 'Circle':\n case 'Bubble':\n functionName = 'Ellipse';\n merge(options, { 'rx': shapeWidth / 2, 'ry': shapeHeight / 2, 'cx': shapeX, 'cy': shapeY });\n break;\n case 'VerticalLine':\n renderPath = 'M' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' + 'L' + ' ' + shapeX + ' '\n + (shapeY + (-shapeHeight / 2));\n merge(options, { 'd': renderPath });\n break;\n case 'Diamond':\n renderPath = 'M' + ' ' + x + ' ' + shapeY + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + shapeY + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + shapeY + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Rectangle':\n renderPath = 'M' + ' ' + x + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (-shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Triangle':\n renderPath = 'M' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'InvertedTriangle':\n renderPath = 'M' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX - (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Pentagon':\n // eslint-disable-next-line no-case-declarations\n var eq = 72;\n // eslint-disable-next-line no-case-declarations\n var xValue = void 0;\n // eslint-disable-next-line no-case-declarations\n var yValue = void 0;\n for (var i = 0; i <= 5; i++) {\n xValue = (shapeWidth / 2) * Math.cos((Math.PI / 180) * (i * eq));\n yValue = (shapeWidth / 2) * Math.sin((Math.PI / 180) * (i * eq));\n if (i === 0) {\n renderPath = 'M' + ' ' + (shapeX + xValue) + ' ' + (shapeY + yValue) + ' ';\n }\n else {\n renderPath = renderPath.concat('L' + ' ' + (shapeX + xValue) + ' ' + (shapeY + yValue) + ' ');\n }\n }\n renderPath = renderPath.concat('Z');\n merge(options, { 'd': renderPath });\n break;\n case 'Star':\n renderPath = 'M ' + (location.x + size.width / 3) + ' ' + (location.y - size.height / 2) + ' L ' + (location.x - size.width / 2)\n + ' ' + (location.y + size.height / 6) + ' L ' + (location.x + size.width / 2) + ' ' + (location.y + size.height / 6)\n + ' L ' + (location.x - size.width / 3) + ' ' + (location.y - size.height / 2) + ' L ' + location.x + ' ' +\n (location.y + size.height / 2) + ' L ' + (location.x + size.width / 3) + ' ' + (location.y - size.height / 2) + ' Z';\n merge(options, { 'd': renderPath });\n break;\n case 'Cross':\n renderPath = 'M' + ' ' + x + ' ' + shapeY + ' ' + 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + shapeY + ' ' +\n 'M' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' + 'L' + ' ' + shapeX + ' ' +\n (shapeY + (-shapeHeight / 2));\n merge(options, { 'd': renderPath });\n break;\n case 'Image':\n functionName = 'Image';\n merge(options, { 'href': url, 'height': shapeHeight, 'width': shapeWidth, x: x, y: y });\n break;\n }\n return { renderOption: options, functionName: functionName };\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isParentItem(data, item) {\n var isParentItem = false;\n for (var j = 0; j < data.length; j++) {\n if (item['levelOrderName'] === data[j]['levelOrderName']) {\n isParentItem = true;\n break;\n }\n }\n return isParentItem;\n}\n/**\n * Ajax support for treemap\n */\nvar TreeMapAjax = /** @class */ (function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function TreeMapAjax(options, type, async, contentType, sendData) {\n this.dataOptions = options;\n this.type = type || 'GET';\n this.async = async || true;\n this.contentType = contentType;\n this.sendData = sendData;\n }\n return TreeMapAjax;\n}());\nexport { TreeMapAjax };\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function removeShape(collection, value) {\n if (collection.length > 0) {\n for (var i = 0; i < collection.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = collection[i];\n setColor(item['legendEle'], item['oldFill'], item['oldOpacity'], item['oldBorderColor'], item['oldBorderWidth']);\n }\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function removeLegend(collection, value) {\n if (collection.length > 0) {\n for (var j = 0; j < collection.length; j++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = collection[j];\n setColor(item['legendEle'], item['oldFill'], item['oldOpacity'], item['oldBorderColor'], item['oldBorderWidth']);\n var dataCount = item['ShapeCollection']['Elements'].length;\n for (var k = 0; k < dataCount; k++) {\n setColor(item['ShapeCollection']['Elements'][k], item['shapeOldFill'], item['shapeOldOpacity'], item['shapeOldBorderColor'], item['shapeOldBorderWidth']);\n }\n }\n }\n}\nexport function setColor(element, fill, opacity, borderColor, borderWidth) {\n element.setAttribute('fill', fill);\n element.setAttribute('opacity', opacity);\n element.setAttribute('stroke', borderColor);\n element.setAttribute('stroke-width', borderWidth);\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function removeSelectionWithHighlight(collection, element, treemap) {\n removeShape(collection, 'highlight');\n element = [];\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getLegendIndex(length, item, treemap) {\n var index;\n for (var i = 0; i < length; i++) {\n var dataLength = treemap.treeMapLegendModule.legendCollections[i]['legendData'].length;\n for (var j = 0; j < dataLength; j++) {\n if (treemap.treeMapLegendModule.legendCollections[i]['legendData'][j]['levelOrderName'] === item['levelOrderName']) {\n index = i;\n break;\n }\n }\n }\n return index;\n}\nexport function pushCollection(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ncollection, index, number, legendElement, shapeElement, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nrenderItems, legendCollection) {\n collection.push({\n legendEle: legendElement, oldFill: legendCollection[index]['legendFill'],\n oldOpacity: legendCollection[index]['opacity'], oldBorderColor: legendCollection[index]['borderColor'],\n oldBorderWidth: legendCollection[index]['borderWidth'],\n shapeElement: shapeElement, shapeOldFill: renderItems[number]['options']['fill'],\n shapeOldOpacity: renderItems[number]['options']['opacity'],\n shapeOldBorderColor: renderItems[number]['options']['border']['color'],\n shapeOldBorderWidth: renderItems[number]['options']['border']['width']\n });\n}\n/**\n * To trigger the download element\n *\n * @param {string} fileName - Specifies the file name\n * @param {ExportType} type - Specifies the type\n * @param {string} url - Specifies the url\n * @param {boolean} isDownload - Specifies the boolean value\n * @returns {void}\n */\nexport function triggerDownload(fileName, type, url, isDownload) {\n createElement('a', {\n attrs: {\n 'download': fileName + '.' + type.toLocaleLowerCase(),\n 'href': url\n }\n }).dispatchEvent(new MouseEvent(isDownload ? 'click' : 'move', {\n view: window,\n bubbles: false,\n cancelable: true\n }));\n}\nexport function removeElement(id) {\n var element = document.getElementById(id);\n return element ? remove(element) : null;\n}\n","/**\n * Maps Themes doc\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Theme;\n(function (Theme) {\n /**\n * @private\n */\n Theme.mapsTitleFont = {\n size: '14px',\n fontWeight: 'Medium',\n color: '#424242',\n fontStyle: 'Medium',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n})(Theme || (Theme = {}));\n/**\n * To get the theme style based on treemap theme.\n *\n * @param {TreeMapTheme} theme Specifies the theme of the treemap control.\n * @returns {IThemeStyle} Returns the theme.\n * @private\n */\nexport function getThemeStyle(theme) {\n var style;\n var color;\n switch (theme.toLowerCase()) {\n case 'materialdark':\n color = '#303030';\n break;\n case 'fabricdark':\n color = '#201F1F';\n break;\n case 'bootstrapdark':\n color = '#1A1A1A';\n break;\n }\n switch (theme.toLowerCase()) {\n case 'bootstrapdark':\n case 'fabricdark':\n case 'materialdark':\n style = {\n backgroundColor: color,\n titleFontColor: '#FFFFFF',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n legendTitleColor: '#DADADA',\n legendTextColor: '#DADADA',\n 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 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 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 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 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 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 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 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 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 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({ size: '14px' }, 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({ size: '15px' }, 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({ size: '13px' }, Font)\n ], LegendSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], LegendSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(15)\n ], LegendSettings.prototype, \"shapeWidth\", void 0);\n __decorate([\n Property(15)\n ], LegendSettings.prototype, \"shapeHeight\", void 0);\n __decorate([\n Property(10)\n ], LegendSettings.prototype, \"shapePadding\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"imageUrl\", void 0);\n __decorate([\n Complex({ color: '#000000', width: 0 }, Border)\n ], LegendSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ color: '#000000', width: 0 }, Border)\n ], LegendSettings.prototype, \"shapeBorder\", void 0);\n __decorate([\n Complex({}, CommonTitleSettings)\n ], LegendSettings.prototype, \"title\", void 0);\n __decorate([\n Complex({ size: '14px' }, Font)\n ], LegendSettings.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('Bottom')\n ], LegendSettings.prototype, \"position\", void 0);\n __decorate([\n Property('None')\n ], LegendSettings.prototype, \"orientation\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"invertedPointer\", void 0);\n __decorate([\n Property('After')\n ], LegendSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('None')\n ], LegendSettings.prototype, \"labelDisplayMode\", void 0);\n __decorate([\n Property('Center')\n ], LegendSettings.prototype, \"alignment\", void 0);\n __decorate([\n Property({ x: 0, y: 0 })\n ], LegendSettings.prototype, \"location\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"showLegendPath\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"valuePath\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"removeDuplicateLegend\", void 0);\n return LegendSettings;\n}(ChildProperty));\nexport { LegendSettings };\n/**\n * Sets and gets the settings for drill to visualize the treemap rendered in the initial state.\n */\nvar InitialDrillSettings = /** @class */ (function (_super) {\n __extends(InitialDrillSettings, _super);\n function InitialDrillSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], InitialDrillSettings.prototype, \"groupIndex\", void 0);\n __decorate([\n Property(null)\n ], InitialDrillSettings.prototype, \"groupName\", void 0);\n return InitialDrillSettings;\n}(ChildProperty));\nexport { InitialDrillSettings };\n/**\n * Sets and gets the options for customizing the leaf item of the treemap component.\n */\nvar LeafItemSettings = /** @class */ (function (_super) {\n __extends(LeafItemSettings, _super);\n function LeafItemSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(false)\n ], LeafItemSettings.prototype, \"autoFill\", void 0);\n __decorate([\n Complex({}, Border)\n ], LeafItemSettings.prototype, \"border\", void 0);\n __decorate([\n Property(0)\n ], LeafItemSettings.prototype, \"gap\", void 0);\n __decorate([\n Property(10)\n ], LeafItemSettings.prototype, \"padding\", void 0);\n __decorate([\n Property(1)\n ], LeafItemSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LeafItemSettings.prototype, \"showLabels\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelPath\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelFormat\", void 0);\n __decorate([\n Property('TopLeft')\n ], LeafItemSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Complex({ color: null, size: '12px' }, Font)\n ], LeafItemSettings.prototype, \"labelStyle\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelTemplate\", void 0);\n __decorate([\n Property('Center')\n ], LeafItemSettings.prototype, \"templatePosition\", void 0);\n __decorate([\n Property('Trim')\n ], LeafItemSettings.prototype, \"interSectAction\", void 0);\n __decorate([\n Collection([], ColorMapping)\n ], LeafItemSettings.prototype, \"colorMapping\", void 0);\n return LeafItemSettings;\n}(ChildProperty));\nexport { LeafItemSettings };\n/**\n * Sets and gets the options for customizing the tooltip of the treemap component.\n */\nvar TooltipSettings = /** @class */ (function (_super) {\n __extends(TooltipSettings, _super);\n function TooltipSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('')\n ], TooltipSettings.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(0.75)\n ], TooltipSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(['Circle'])\n ], TooltipSettings.prototype, \"markerShapes\", void 0);\n __decorate([\n Complex({}, Border)\n ], TooltipSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ fontFamily: defaultFont, size: '13px' }, Font)\n ], TooltipSettings.prototype, \"textStyle\", void 0);\n return TooltipSettings;\n}(ChildProperty));\nexport { TooltipSettings };\n/**\n * Sets and gets the options for customizing the selection of the leaf items in treemap component.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], SelectionSettings.prototype, \"fill\", void 0);\n __decorate([\n Property('0.5')\n ], SelectionSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, Border)\n ], SelectionSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Item')\n ], SelectionSettings.prototype, \"mode\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Sets and gets the options for customizing the highlighting of the treemap item,\n * when the mouse hover is performed in it.\n */\nvar HighlightSettings = /** @class */ (function (_super) {\n __extends(HighlightSettings, _super);\n function HighlightSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], HighlightSettings.prototype, \"enable\", void 0);\n __decorate([\n Property('#808080')\n ], HighlightSettings.prototype, \"fill\", void 0);\n __decorate([\n Property('0.5')\n ], HighlightSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, Border)\n ], HighlightSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Item')\n ], HighlightSettings.prototype, \"mode\", void 0);\n return HighlightSettings;\n}(ChildProperty));\nexport { HighlightSettings };\n/**\n * Sets and gets the options for customizing the levels of the treemap component.\n */\nvar LevelSettings = /** @class */ (function (_super) {\n __extends(LevelSettings, _super);\n function LevelSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"groupPath\", void 0);\n __decorate([\n Property(0)\n ], LevelSettings.prototype, \"groupGap\", void 0);\n __decorate([\n Property(10)\n ], LevelSettings.prototype, \"groupPadding\", void 0);\n __decorate([\n Complex({}, Border)\n ], LevelSettings.prototype, \"border\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(false)\n ], LevelSettings.prototype, \"autoFill\", void 0);\n __decorate([\n Property(1)\n ], LevelSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LevelSettings.prototype, \"showHeader\", void 0);\n __decorate([\n Property(20)\n ], LevelSettings.prototype, \"headerHeight\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"headerFormat\", void 0);\n __decorate([\n Property('Near')\n ], LevelSettings.prototype, \"headerAlignment\", void 0);\n __decorate([\n Complex({ color: null, size: '13px' }, Font)\n ], LevelSettings.prototype, \"headerStyle\", void 0);\n __decorate([\n Property('TopLeft')\n ], LevelSettings.prototype, \"templatePosition\", void 0);\n __decorate([\n Collection([], ColorMapping)\n ], LevelSettings.prototype, \"colorMapping\", void 0);\n return LevelSettings;\n}(ChildProperty));\nexport { LevelSettings };\n","import { Rect, itemsToOrder, TextOption, measureText, textTrim, hide, wordWrap, textWrap, getTemplateFunction, convertElement, findLabelLocation, PathOption, textFormatter, colorNameToHex, convertHexToColor, colorMap, measureElement, convertToContainer, convertToRect, getShortestEdge, getArea, orderByArea, isParentItem, maintainSelection } from '../utils/helper';\nimport { isNullOrUndefined, createElement, extend } from '@syncfusion/ej2-base';\nimport { Location, findChildren, renderTextElement } from '../utils/helper';\nimport { itemRendering } from '../model/constants';\nimport { LevelsData } from './../treemap';\n/**\n * To calculate and render the shape layer\n */\nvar LayoutPanel = /** @class */ (function () {\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function LayoutPanel(treemap) {\n this.treemap = treemap;\n }\n LayoutPanel.prototype.processLayoutPanel = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data;\n var totalRect;\n if (LevelsData.levelsData && LevelsData.levelsData.length > 0) {\n data = (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) &&\n !isNullOrUndefined(this.treemap.initialDrillDown.groupName)) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length === 0) ?\n this.getDrilldownData(LevelsData.levelsData[0], [])[0] : LevelsData.levelsData[0];\n totalRect = extend({}, this.treemap.areaRect, totalRect, false);\n if (!isNullOrUndefined(this.treemap.treeMapLegendModule) && !isNullOrUndefined(this.treemap.totalRect)) {\n if (this.treemap.legendSettings.position !== 'Float') {\n totalRect = this.treemap.totalRect;\n }\n }\n if (!isNullOrUndefined(this.treemap.currentLevel) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? !isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length !== 0)) {\n var count = this.treemap.drilledItems.length - 1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var x = this.treemap.drilledItems[count]['data'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var y = {};\n y[this.treemap.drilledItems[count]['data']['groupName']] = [x];\n if (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) && !this.treemap.enableBreadcrumb) {\n this.treemap.currentLevel = this.treemap.drilledItems[count]['data']['groupIndex'];\n }\n this.calculateLayoutItems(y || LevelsData.levelsData[0], totalRect);\n this.renderLayoutItems(y || LevelsData.levelsData[0]);\n }\n else {\n if (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length === 0)) {\n this.treemap.currentLevel = this.treemap.initialDrillDown.groupIndex;\n }\n this.calculateLayoutItems(data || LevelsData.levelsData[0], totalRect);\n this.renderLayoutItems(data || LevelsData.levelsData[0]);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getDrilldownData = function (data, drillData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var treemap = this.treemap;\n var newData = {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n if (child && child.length > 0 && drillData.length === 0) {\n for (var i = 0; i < child.length; i++) {\n if (child[i]['groupIndex'] === treemap.initialDrillDown.groupIndex &&\n child[i]['name'] === treemap.initialDrillDown.groupName) {\n child[i]['isDrilled'] = true;\n newData[child[i]['groupName']] = [child[i]];\n drillData.push(newData);\n }\n }\n for (var j = 0; j < child.length; j++) {\n this.getDrilldownData(child[j], drillData);\n }\n }\n return drillData;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.calculateLayoutItems = function (data, rect) {\n this.renderItems = [];\n this.parentData = [];\n if (!isNullOrUndefined(this.treemap.weightValuePath)) {\n if (this.treemap.layoutType.indexOf('SliceAndDice') > -1) {\n this.computeSliceAndDiceDimensional(data, rect);\n }\n else {\n rect.height = rect.height + rect.y;\n rect.width = rect.width + rect.x;\n this.computeSquarifyDimensional(data, rect);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeSliceAndDiceDimensional = function (data, coords) {\n var leafItem = this.treemap.leafItemSettings;\n var rect;\n var groups = this.treemap.levels;\n var groupIndex;\n var isLeafItem = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var children = findChildren(data)['values'];\n var gap;\n var headerHeight;\n if (children && children.length > 0) {\n this.sliceAndDiceProcess(children, coords);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < children.length; i++) {\n groupIndex = children[i]['groupIndex'];\n isLeafItem = (groups.length === 0 || groupIndex === groups.length);\n gap = isLeafItem ? leafItem.gap : groups[groupIndex].groupGap;\n headerHeight = groups.length === 0 ? 0 : groups[groupIndex] ? groups[groupIndex].showHeader ?\n groups[groupIndex].headerHeight : 0 : groups[groupIndex - 1].showHeader ? groups[groupIndex - 1].headerHeight : 0;\n rect = children[i]['rect'];\n rect = new Rect(rect.x + (gap / 2), rect.y + (headerHeight + (gap / 2)), rect.width - gap, Math.abs(rect.height - (gap + headerHeight)));\n this.computeSliceAndDiceDimensional(children[i], rect);\n }\n }\n }\n return data;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.sliceAndDiceProcess = function (processData, rect) {\n var parentArea = rect.height * rect.width;\n var levels = this.treemap.levels;\n var childValue;\n var alottedValue = 0;\n var totalWeight = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n processData.forEach(function (data) { totalWeight += data['weight']; });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n processData.forEach(function (child) {\n child['weightArea'] = parentArea * child['weight'] / totalWeight;\n });\n var isHorizontal = (this.treemap.layoutType === 'SliceAndDiceAuto') ? (rect.width > rect.height) :\n (this.treemap.layoutType === 'SliceAndDiceHorizontal');\n processData.sort(itemsToOrder);\n for (var i = 0; i < processData.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = processData[i];\n item['isLeafItem'] = (levels.length === 0) || ((this.treemap.isHierarchicalData ||\n isNullOrUndefined(this.treemap.leafItemSettings.labelPath)) ?\n item['groupIndex'] === levels.length - 1 : item['groupIndex'] === this.treemap.levels.length);\n if (isHorizontal) {\n childValue = ((parentArea / totalWeight) * processData[i]['weight']) / rect.height;\n if (alottedValue <= rect.width) {\n processData[i]['rect'] = new Rect(alottedValue + rect.x, rect.y, childValue, rect.height);\n }\n }\n else {\n childValue = ((parentArea / totalWeight) * processData[i]['weight']) / rect.width;\n if (alottedValue <= rect.height) {\n processData[i]['rect'] = new Rect(rect.x, alottedValue + rect.y, rect.width, childValue);\n }\n }\n alottedValue += childValue;\n this.renderItems.push(processData[i]);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeSquarifyDimensional = function (data, coords) {\n var leaf = this.treemap.leafItemSettings;\n var rect;\n var levels = this.treemap.levels;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var groupIndex = 0;\n var isLeafItem = false;\n var item;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n var index;\n var padding;\n var headerHeight;\n if (child && child.length > 0) {\n if (this.parentData.length === 0) {\n this.parentData = [];\n this.parentData.push(child);\n }\n this.calculateChildrenLayout(data, child, coords);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < child.length; i++) {\n item = child[i];\n index = item['groupIndex'];\n rect = item['rect'];\n padding = (item['isLeafItem'] ? leaf.padding : levels[index].groupPadding) / 2;\n headerHeight = this.treemap.isHierarchicalData ? index === 0 && item['isLeafItem'] ? 0 : levels[index] ?\n levels[index].showHeader ? levels[index].headerHeight : 0 : 0 : (levels.length === 0) ? 0 : levels[index] ?\n levels[index].showHeader ? levels[index].headerHeight : 0 : 0;\n rect = new Rect(rect.x + padding, rect.y + (headerHeight + padding), rect.width - padding, rect.height - padding);\n if (!item['isLeafItem'] && item['weight'] > 0) {\n this.computeSquarifyDimensional(child[i], rect);\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.calculateChildrenLayout = function (parent, children, coords) {\n this.computeTotalArea(children, getArea(coords));\n children.sort(orderByArea);\n this.performRowsLayout(children, [], coords, []);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.performRowsLayout = function (data, currentRow, rect, stack) {\n var dataLength = data.length;\n if (dataLength === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newCoordinates = this.getCoordinates(currentRow, rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newStack = stack.concat(newCoordinates);\n return newStack;\n }\n var width = getShortestEdge(rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var nextDatum = data[0];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var restData = data.slice(1, dataLength);\n if (this.aspectRatio(currentRow, nextDatum, width)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newRow = currentRow.concat(nextDatum);\n return this.performRowsLayout(restData, newRow, rect, stack);\n }\n else {\n var currentRowLength = currentRow.length;\n var valueSum = 0;\n for (var i = 0; i < currentRowLength; i += 1) {\n valueSum += currentRow[i]['itemArea'];\n }\n var newContainer = this.cutArea(rect, valueSum);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newCoordinates = this.getCoordinates(currentRow, rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newStack = stack.concat(newCoordinates);\n return this.performRowsLayout(data, [], newContainer, newStack);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.aspectRatio = function (currentRow, nextDatum, length) {\n if (currentRow.length === 0) {\n return true;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newRow = currentRow.concat(nextDatum);\n var currentMaxAspectRatio = this.findMaxAspectRatio(currentRow, length);\n var newMaxAspectRatio = this.findMaxAspectRatio(newRow, length);\n return (currentMaxAspectRatio >= newMaxAspectRatio);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.findMaxAspectRatio = function (row, length) {\n var rowLength = row.length;\n var minArea = Infinity;\n var maxArea = -Infinity;\n var sumArea = 0;\n for (var i = 0; i < rowLength; i += 1) {\n var area = row[i]['itemArea'];\n if (area < minArea) {\n minArea = area;\n }\n if (area > maxArea) {\n maxArea = area;\n }\n sumArea += area;\n }\n var result = Math.max((Math.pow(length, 2)) * maxArea / (Math.pow(sumArea, 2)), (Math.pow(sumArea, 2)) /\n ((Math.pow(length, 2)) * minArea));\n return result;\n };\n LayoutPanel.prototype.cutArea = function (rect, area) {\n var newContainer = convertToContainer(rect);\n var width = newContainer.width;\n var height = newContainer.height;\n var xOffset = newContainer.x;\n var yOffset = newContainer.y;\n if (width >= height) {\n var areaWidth = area / height;\n var newWidth = width - areaWidth;\n var container = {\n x: xOffset + areaWidth,\n y: yOffset,\n width: newWidth,\n height: height\n };\n return convertToRect(container);\n }\n else {\n var areaHeight = area / width;\n var newHeight = height - areaHeight;\n var container = {\n x: xOffset,\n y: yOffset + areaHeight,\n width: width,\n height: newHeight\n };\n return convertToRect(container);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getCoordinates = function (row, rect) {\n var container = convertToContainer(rect);\n var headerHeight;\n var width = container.width;\n var height = container.height;\n var xOffset = container.x;\n var yOffset = container.y;\n var rowLength = row.length;\n var levels = this.treemap.levels;\n var leaf = this.treemap.leafItemSettings;\n var index;\n var valueSum = 0;\n for (var i = 0; i < rowLength; i += 1) {\n valueSum += row[i]['itemArea'];\n }\n var areaWidth = valueSum / height;\n var areaHeight = valueSum / width;\n var subXOffset = xOffset;\n var subYOffset = yOffset;\n var padding;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var coordinates = [];\n var isParent;\n var gap;\n var parentRect;\n for (var i = 0; i < rowLength; i += 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = row[i];\n index = item['groupIndex'];\n item['isLeafItem'] = (levels.length === 0) || (this.treemap.isHierarchicalData ? index === levels.length :\n isNullOrUndefined(leaf.labelPath) ? false : index === levels.length);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isParent = isParentItem(this.parentData[0], item);\n parentRect = isParent ? this.treemap.areaRect : item['parent'].rect;\n padding = item['isLeafItem'] ? leaf.padding : levels[index].groupPadding;\n if (width >= height) {\n var y1 = subYOffset + item['itemArea'] / areaWidth;\n item['rect'] = {\n x: subXOffset,\n y: subYOffset,\n width: subXOffset + areaWidth,\n height: y1\n };\n subYOffset = y1;\n }\n else {\n var x1 = subXOffset + item['itemArea'] / areaHeight;\n item['rect'] = {\n x: subXOffset,\n y: subYOffset,\n width: x1,\n height: subYOffset + areaHeight\n };\n subXOffset = x1;\n }\n if (item['weight'] > 0 && (isParent || (Math.round(rect.y + (padding / 2)) <=\n Math.round(parentRect.y + (parentRect.height - parentRect.y)) && Math.round(rect.x + (padding / 2)) <=\n Math.round(parentRect.x + (parentRect.width - parentRect.x))))) {\n this.renderItems.push(item);\n coordinates.push(item);\n }\n }\n return coordinates;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeTotalArea = function (data, area) {\n var dataLength = data.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataSum = 0;\n var result = [];\n for (var i = 0; i < dataLength; i += 1) {\n var dataLength_1 = data.length;\n var dataSum_1 = 0;\n for (var i_1 = 0; i_1 < dataLength_1; i_1 += 1) {\n dataSum_1 += data[i_1]['weight'];\n }\n var multiplier = area / dataSum_1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var datum = void 0;\n for (var j = 0; j < dataLength_1; j++) {\n datum = data[j];\n datum['itemArea'] = datum['weight'] * multiplier;\n result.push(datum);\n }\n }\n return result;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.onDemandProcess = function (childItems) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentItem = {};\n var totalRect;\n parentItem = childItems[0]['parent'];\n this.treemap.currentLevel = parentItem['isDrilled'] ? parentItem['groupIndex'] : null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentItemGroupname = {};\n if (isNullOrUndefined(parentItem['groupName'])) {\n parentItemGroupname = parentItem;\n }\n else {\n parentItemGroupname[parentItem['groupName']] = [parentItem];\n }\n totalRect = extend({}, this.treemap.areaRect, totalRect, false);\n if (!isNullOrUndefined(this.treemap.treeMapLegendModule) && !isNullOrUndefined(this.treemap.totalRect)) {\n totalRect = this.treemap.totalRect;\n }\n var count = this.treemap.levels.length;\n for (var i = 0; i < count; i++) {\n var levelCount = childItems[0]['groupIndex'];\n if (count === levelCount) {\n this.treemap.levels[count] = this.treemap.levels[i];\n }\n else {\n this.treemap.levels.splice(count - 1, 1);\n }\n }\n this.calculateLayoutItems(parentItemGroupname, totalRect);\n this.renderLayoutItems(parentItemGroupname);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.renderLayoutItems = function (renderData) {\n var _this = this;\n var textCollection = [];\n var position;\n var treeMap = this.treemap;\n var colorMapping;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var txtVisible;\n var getItemColor;\n var eventArgs;\n this.renderer = treeMap.renderer;\n var trimHeader;\n var textLocation = new Location(0, 0);\n var pathOptions;\n var elementID = treeMap.element.id;\n var index;\n var templatePosition;\n var mode = treeMap.layoutType;\n var rect;\n var format;\n var interSectAction = this.treemap.leafItemSettings.interSectAction;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var textSize;\n var fill;\n var item;\n var renderText;\n var opacity;\n var padding = 5;\n var rectPath = '';\n var isRender;\n var secondaryEle = document.getElementById(treeMap.element.id + '_Secondary_Element');\n var groupId;\n var textOptions;\n var templateEle;\n var gap;\n var textStyle;\n var levels = treeMap.levels;\n this.layoutGroup = this.renderer.createGroup({ id: elementID + '_TreeMap_' + mode + '_Layout' });\n var itemGroup;\n var level;\n var template;\n var border;\n var templateGroup = createElement('div', {\n id: treeMap.element.id + '_Label_Template_Group',\n className: 'template',\n styles: 'overflow: hidden; position: absolute;pointer-events: none;' +\n 'top:' + treeMap.areaRect.y + 'px;' +\n 'left:' + treeMap.areaRect.x + 'px;' +\n 'height:' + treeMap.areaRect.height + 'px;' +\n 'width:' + treeMap.areaRect.width + 'px;'\n });\n var isLeafItem = false;\n var leaf = treeMap.leafItemSettings;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childItems;\n var connectorText;\n var _loop_1 = function (i) {\n item = this_1.renderItems[i];\n index = item['groupIndex'];\n if (this_1.treemap.drillDownView && isNullOrUndefined(this_1.treemap.currentLevel)\n && index > 0 || this_1.treemap.drillDownView\n && index > (this_1.treemap.currentLevel + 1)) {\n return \"continue\";\n }\n rect = item['rect'];\n isLeafItem = item['isLeafItem'];\n groupId = elementID + '_Level_Index_' + index + '_Item_Index_' + i;\n itemGroup = this_1.renderer.createGroup({ id: groupId + '_Group' });\n gap = (isLeafItem ? leaf.gap : levels[index].groupGap) / 2;\n var treemapItemRect = this_1.treemap.totalRect ? convertToContainer(this_1.treemap.totalRect) : this_1.treemap.areaRect;\n if (treeMap.layoutType === 'Squarified') {\n rect.width = Math.abs(rect.x - rect.width) - gap;\n rect.height = Math.abs(rect.y - rect.height) - gap;\n }\n if (treeMap.renderDirection === 'TopRightBottomLeft') {\n rect.x = (treemapItemRect.x + treemapItemRect.width) - rect.width - Math.abs(treemapItemRect.x - rect.x);\n }\n else if (treeMap.renderDirection === 'BottomLeftTopRight') {\n rect.y = (treemapItemRect.y + treemapItemRect.height) - rect.height - Math.abs(treemapItemRect.y - rect.y);\n }\n else if (treeMap.renderDirection === 'BottomRightTopLeft') {\n rect.x = (treemapItemRect.x + treemapItemRect.width) - rect.width - Math.abs(treemapItemRect.x - rect.x);\n rect.y = (treemapItemRect.y + treemapItemRect.height) - rect.height - Math.abs(treemapItemRect.y - rect.y);\n }\n colorMapping = isLeafItem ? leaf.colorMapping : levels[index].colorMapping;\n getItemColor = this_1.getItemColor(isLeafItem, item);\n fill = getItemColor['fill'];\n opacity = getItemColor['opacity'];\n format = isLeafItem ? leaf.labelFormat : (levels[index]).headerFormat;\n var levelName;\n txtVisible = isLeafItem ? leaf.showLabels : (levels[index]).showHeader;\n if (index === this_1.treemap.currentLevel) {\n if (this_1.treemap.enableBreadcrumb) {\n var re = /#/gi;\n connectorText = '#' + this_1.treemap.breadcrumbConnector + '#';\n levelName = item['levelOrderName'].replace(re, connectorText);\n levelName = index !== 0 ? '#' + levelName : levelName;\n }\n else {\n levelName = item['name'];\n }\n }\n else {\n if (this_1.treemap.enableBreadcrumb) {\n item['isDrilled'] = false;\n }\n levelName = item['name'];\n }\n renderText = textFormatter(format, item['data'], this_1.treemap) || levelName || 'undefined';\n childItems = findChildren(item)['values'];\n renderText = !isLeafItem && childItems && childItems.length > 0 && this_1.treemap.enableDrillDown ?\n !item['isDrilled'] ? treeMap.enableRtl ? renderText + ' [+]' : '[+] ' + renderText :\n treeMap.enableRtl ? renderText + ' [-]' : '[-] ' + renderText : renderText;\n textStyle = (isLeafItem ? leaf.labelStyle : levels[index].headerStyle);\n textStyle.fontFamily = this_1.treemap.themeStyle.labelFontFamily || textStyle.fontFamily;\n border = isLeafItem ? leaf.border : levels[index].border;\n position = !isLeafItem ? (levels[index].headerAlignment) === 'Near' ? 'TopLeft' : (levels[index].headerAlignment) === 'Center' ?\n 'TopCenter' : 'TopRight' : leaf.labelPosition;\n templatePosition = isLeafItem ? leaf.templatePosition : levels[index].templatePosition;\n template = isLeafItem ? leaf.labelTemplate : levels[index].headerTemplate;\n item['options'] = { border: border, opacity: opacity, fill: fill };\n eventArgs = {\n cancel: false, name: itemRendering, treemap: this_1.treemap, text: renderText,\n currentItem: item, RenderItems: this_1.renderItems, options: item['options']\n };\n this_1.treemap.trigger(itemRendering, eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n rectPath = ' M ' + rect.x + ' ' + rect.y + ' L ' + (rect.x + rect.width) + ' ' + rect.y +\n ' L ' + (rect.x + rect.width) + ' ' + (rect.y + rect.height) + ' L ' + rect.x + ' ' + (rect.y + rect.height) + 'z';\n pathOptions = new PathOption(groupId + '_RectPath', fill, border.width, border.color, opacity, null, rectPath);\n var path = _this.renderer.drawPath(pathOptions);\n itemGroup.appendChild(path);\n if (txtVisible) {\n if (eventArgs.text !== renderText) {\n eventArgs.text = textFormatter(eventArgs.text, item['data'], _this.treemap) || levelName;\n }\n _this.renderItemText(eventArgs.text.toString(), itemGroup, textStyle, rect, interSectAction, groupId, fill, position, connectorText);\n }\n if (template) {\n templateEle = _this.renderTemplate(secondaryEle, groupId, rect, templatePosition, template, item, isLeafItem);\n templateGroup.appendChild(templateEle);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.treemap.renderReactTemplates();\n }\n itemGroup.setAttribute('aria-label', item['name']);\n itemGroup.setAttribute('tabindex', (_this.treemap.tabIndex + i + 2).toString());\n maintainSelection(_this.treemap, itemGroup, 'treeMapSelection');\n _this.layoutGroup.appendChild(itemGroup);\n }\n });\n };\n var this_1 = this;\n for (var i = 0; i < this.renderItems.length; i++) {\n _loop_1(i);\n }\n if (templateGroup.childNodes.length > 0) {\n secondaryEle.appendChild(templateGroup);\n }\n this.treemap.svgObject.appendChild(this.layoutGroup);\n };\n LayoutPanel.prototype.renderItemText = function (text, parentElement, textStyle, rect, interSectAction, groupId, fill, position, connectorText) {\n var level;\n var headerPosition;\n var secondaryEle = document.getElementById(this.treemap.element.id + '_Secondary_Element');\n var leaf = this.treemap.leafItemSettings;\n var padding = 5;\n var textSize;\n var textCollection = [];\n var customText;\n var templateEle;\n var tspanText = [];\n var height = 0;\n var textName;\n textCollection = ((text.indexOf('<br>')) !== -1) ? text.split('<br>') : null;\n customText = this.labelInterSectAction(rect, text, textStyle, interSectAction);\n textSize = measureText(textCollection && textCollection[0] || customText[0], textStyle);\n if (this.treemap.enableRtl) {\n var labelSize = measureText(text, textStyle);\n var drillSymbolCount = text.search('[+]') || text.search('[-]');\n if (rect.width < labelSize.width && drillSymbolCount > 0) {\n var label = text.substring(drillSymbolCount - 1, text.length);\n var drillSymbol = '[+]';\n var drillSymbolSize = measureText(drillSymbol, textStyle);\n customText['0'] = textTrim(rect.width - drillSymbolSize.width - padding, customText[0], textStyle) + label;\n }\n }\n var textLocation = findLabelLocation(rect, position, textSize, 'Text', this.treemap);\n if (!isNullOrUndefined(textCollection)) {\n var collection = [];\n var texts = null;\n var maxNumber = [];\n for (var i = 0; i < textCollection.length; i++) {\n texts = textTrim((rect.width - 5), textCollection[i], textStyle);\n textSize = measureText(texts, textStyle);\n height += textSize.height;\n maxNumber.push(textSize.width);\n collection.push(texts);\n }\n customText = collection;\n textSize.width = Math.max.apply(null, maxNumber);\n textSize.height = height;\n }\n if (interSectAction === 'WrapByWord' || interSectAction === 'Wrap' || interSectAction === 'Trim') {\n for (var j = 0; j < customText.length; j++) {\n textSize = measureText(customText[j], textStyle);\n height += textSize.height;\n if ((rect.height - padding) > height) {\n tspanText.push(customText[j]);\n }\n }\n if (interSectAction === 'Wrap' && customText.length !== tspanText.length && tspanText.length) {\n var collectionLength = tspanText.length - 1;\n var stringText = tspanText[collectionLength];\n stringText = stringText.substring(0, (stringText.length - 1)) + '...';\n tspanText.splice(collectionLength);\n if (stringText !== '...') {\n tspanText.push(stringText);\n }\n }\n }\n else {\n textName = customText;\n tspanText.push(textName);\n }\n var textOptions = new TextOption(groupId + '_Text', textLocation.x, textLocation.y, 'start', tspanText, '', '', connectorText);\n renderTextElement(textOptions, textStyle, textStyle.color || this.getSaturatedColor(fill), parentElement);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getItemColor = function (isLeafItem, item) {\n var treemap = this.treemap;\n var itemFill = isLeafItem ? treemap.leafItemSettings.fill : treemap.levels[item['groupIndex']].fill;\n var itemOpacity = isLeafItem ? treemap.leafItemSettings.opacity : treemap.levels[item['groupIndex']].opacity;\n if (!isNullOrUndefined(LevelsData.defaultLevelsData)) {\n if (LevelsData.defaultLevelsData.length > 0) {\n LevelsData.levelsData = LevelsData.defaultLevelsData;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentData = findChildren(LevelsData.levelsData[0])['values'];\n var colorMapping = isLeafItem ? treemap.leafItemSettings.colorMapping :\n treemap.levels[item['groupIndex']].colorMapping;\n if (colorMapping.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var option = colorMap(colorMapping, item['data'][this.treemap.equalColorValuePath], item['data'][this.treemap.rangeColorValuePath], item['data'][this.treemap.weightValuePath]);\n itemFill = !isNullOrUndefined(option['fill']) ? option['fill'] : treemap.leafItemSettings.fill;\n itemOpacity = option['opacity'];\n }\n else {\n for (var i = 0; i < parentData.length; i++) {\n if (parentData[i]['levelOrderName'] === item['levelOrderName'].split('#')[0]) {\n itemFill = !isNullOrUndefined(itemFill) ? itemFill : !isNullOrUndefined(treemap.colorValuePath) ?\n parentData[i]['data'][treemap.colorValuePath] : treemap.palette.length > 0 ?\n treemap.palette[i % treemap.palette.length] : '#808080';\n }\n }\n }\n return { fill: itemFill, opacity: itemOpacity };\n };\n /**\n * To find saturated color for datalabel\n *\n * @param {string} color - Specifies the color\n * @returns {string} - Returns the color\n */\n LayoutPanel.prototype.getSaturatedColor = function (color) {\n var saturatedColor = color;\n saturatedColor = (saturatedColor === 'transparent') ? window.getComputedStyle(document.body, null).backgroundColor : saturatedColor;\n var rgbValue = convertHexToColor(colorNameToHex(saturatedColor));\n var contrast = Math.round((rgbValue.r * 299 + rgbValue.g * 587 + rgbValue.b * 114) / 1000);\n return contrast >= 128 ? 'black' : 'white';\n };\n LayoutPanel.prototype.renderTemplate = function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n secondaryEle, groupId, rect, position, template, item, isLeafItem) {\n var templateId = isLeafItem ? groupId + '_LabelTemplate' : groupId + '_HeaderTemplate';\n var baseTemplateId = isLeafItem ? '_LabelTemplate' : '_HeaderTemplate';\n if (isNullOrUndefined(template['prototype'])) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var keys = Object.keys(item['data']);\n for (var i = 0; i < keys.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n template = template.replace(new RegExp('{{:' + keys[i] + '}}', 'g'), item['data'][keys[i].toString()]);\n }\n }\n // 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 var labelEle = convertElement(templateElement, templateId, item['data']);\n var templateSize = measureElement(labelEle, secondaryEle);\n var templateLocation = findLabelLocation(rect, position, templateSize, 'Template', this.treemap);\n labelEle.style.left = templateLocation.x + 'px';\n labelEle.style.top = templateLocation.y + 'px';\n return labelEle;\n };\n LayoutPanel.prototype.labelInterSectAction = function (rect, text, textStyle, alignment) {\n var textValue;\n var maxWidth = rect.width - 10;\n switch (alignment) {\n case 'Hide':\n textValue = [hide(maxWidth, rect.height, text, textStyle)];\n break;\n case 'Trim':\n textValue = [textTrim((maxWidth + 3), text, textStyle)];\n break;\n case 'WrapByWord':\n textValue = wordWrap(maxWidth, text, textStyle);\n break;\n case 'Wrap':\n textValue = textWrap(maxWidth, text, textStyle);\n break;\n }\n return textValue;\n };\n return LayoutPanel;\n}());\nexport { LayoutPanel };\n","import { print as printWindow, createElement } from '@syncfusion/ej2-base';\nimport { getElement } from '../utils/helper';\nimport { beforePrint } from '../model/constants';\n/**\n * Print module handles the print functionality for treemap.\n *\n * @hidden\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function Print(control) {\n this.control = control;\n }\n /**\n * This method is used to perform the print functionality in treemap.\n *\n * @param { string[] | string | Element} elements - Specifies the element.\n * @returns {void}\n * @private\n */\n Print.prototype.print = function (elements) {\n var _this = this;\n this.printWindow = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n this.printWindow.moveTo(0, 0);\n this.printWindow.resizeTo(screen.availWidth, screen.availHeight);\n var argsData = {\n cancel: false, htmlContent: this.getHTMLContent(elements), name: beforePrint\n };\n this.control.trigger(beforePrint, argsData, function () {\n if (!argsData.cancel) {\n printWindow(argsData.htmlContent, _this.printWindow);\n }\n });\n };\n /**\n * To get the html string of the Maps\n *\n * @param {string[] | string | Element} elements - Specifies the element\n * @returns {Element} - Returns the element\n * @private\n */\n Print.prototype.getHTMLContent = function (elements) {\n var div = createElement('div');\n if (elements) {\n if (elements instanceof Array) {\n elements.forEach(function (value) {\n div.appendChild(getElement(value).cloneNode(true));\n });\n }\n else if (elements instanceof Element) {\n div.appendChild(elements.cloneNode(true));\n }\n else {\n div.appendChild(getElement(elements).cloneNode(true));\n }\n }\n else {\n div.appendChild(this.control.element.cloneNode(true));\n }\n return div;\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n Print.prototype.getModuleName = function () {\n // Returns te module name\n return 'Print';\n };\n /**\n * To destroy the legend.\n *\n * @param {TreeMap} treemap - Specifies the treemap instance\n * @returns {void}\n * @private\n */\n Print.prototype.destroy = function (treemap) {\n /**\n * Destroy method performed here\n */\n };\n return Print;\n}());\nexport { Print };\n","import { createElement, Browser } from '@syncfusion/ej2-base';\nimport { triggerDownload } from '../utils/helper';\n/**\n * ImageExport module handles the export to image functionality for treemap.\n *\n * @hidden\n */\nvar ImageExport = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance\n */\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function ImageExport(control) {\n this.control = control;\n }\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {ExportType} type - Specifies the type of the image file.\n * @param {string} fileName - Specifies the file name of the image file.\n * @param {boolean} allowDownload - Specifies whether to download the file or not.\n * @returns {Promise} - Returns the promise string.\n * @private\n */\n ImageExport.prototype.export = function (type, fileName, allowDownload) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var promise = new Promise(function (resolve, reject) {\n var element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'height': _this.control.availableSize.height.toString(),\n 'width': _this.control.availableSize.width.toString()\n }\n });\n var isDownload = !(Browser.userAgent.toString().indexOf('HeadlessChrome') > -1);\n var svgData = '<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">' +\n _this.control.svgObject.outerHTML +\n '</svg>';\n var url = window.URL.createObjectURL(new Blob(type === 'SVG' ? [svgData] :\n [(new XMLSerializer()).serializeToString(_this.control.svgObject)], { type: 'image/svg+xml' }));\n if (type === 'SVG') {\n if (allowDownload) {\n triggerDownload(fileName, type, url, isDownload);\n }\n else {\n resolve(null);\n }\n }\n else {\n var image_1 = new Image();\n var context_1 = element.getContext('2d');\n image_1.onload = (function () {\n context_1.drawImage(image_1, 0, 0);\n window.URL.revokeObjectURL(url);\n if (allowDownload) {\n triggerDownload(fileName, type, element.toDataURL('image/png').replace('image/png', 'image/octet-stream'), isDownload);\n }\n else {\n if (type === 'JPEG') {\n resolve(element.toDataURL('image/jpeg'));\n }\n else if (type === 'PNG') {\n resolve(element.toDataURL('image/png'));\n }\n }\n });\n image_1.src = url;\n }\n });\n return promise;\n };\n ImageExport.prototype.getModuleName = function () {\n // Returns te module name\n return 'ImageExport';\n };\n /**\n * To destroy the ImageExport.\n *\n * @param {TreeMap} treemap - Specifies the instance of the treemap.\n * @returns {void}\n * @private\n */\n ImageExport.prototype.destroy = function (treemap) {\n // Destroy method performed here\n };\n return ImageExport;\n}());\nexport { ImageExport };\n","import { createElement, isNullOrUndefined, Browser } from '@syncfusion/ej2-base';\nimport { PdfPageOrientation, PdfDocument, PdfBitmap } from '@syncfusion/ej2-pdf-export';\n/**\n * PdfExport module handles the export to pdf functionality for treemap.\n *\n * @hidden\n */\nvar PdfExport = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance\n */\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function PdfExport(control) {\n this.control = control;\n }\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {ExportType} type - Specifies the type of the document.\n * @param {string} fileName - Specifies the name of the document.\n * @param {PdfPageOrientation} orientation - Specifies the orientation of the PDF document to export the component.\n * @param {boolean} allowDownload - Specifies whether to download the document or not.\n * @returns {Promise} - Returns the string.\n * @private\n */\n PdfExport.prototype.export = function (type, fileName, orientation, allowDownload) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var promise = new Promise(function (resolve, reject) {\n var element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'width': _this.control.availableSize.width.toString(),\n 'height': _this.control.availableSize.height.toString()\n }\n });\n var isDownload = !(Browser.userAgent.toString().indexOf('HeadlessChrome') > -1);\n orientation = isNullOrUndefined(orientation) ? PdfPageOrientation.Landscape : orientation;\n var exportElement = _this.control.svgObject.cloneNode(true);\n var backgroundElement = exportElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n var backgroundColor = backgroundElement.getAttribute('fill');\n if ((_this.control.theme === 'Tailwind' || _this.control.theme === 'TailwindDark' || _this.control.theme === 'Bootstrap5' || _this.control.theme === 'Bootstrap5Dark'\n || _this.control.theme === 'Fluent' || _this.control.theme === 'FluentDark') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n }\n var url = window.URL.createObjectURL(new Blob([(new XMLSerializer()).serializeToString(exportElement)], { type: 'image/svg+xml' }));\n var image = new Image();\n var context = element.getContext('2d');\n image.onload = (function () {\n context.drawImage(image, 0, 0);\n window.URL.revokeObjectURL(url);\n var document = new PdfDocument();\n var imageString = element.toDataURL('image/jpeg').replace('image/jpeg', 'image/octet-stream');\n document.pageSettings.orientation = orientation;\n imageString = imageString.slice(imageString.indexOf(',') + 1);\n document.pages.add().graphics.drawImage(new PdfBitmap(imageString), 0, 0, (_this.control.availableSize.width - 60), _this.control.availableSize.height);\n if (allowDownload) {\n document.save(fileName + '.pdf');\n document.destroy();\n }\n else {\n resolve(null);\n }\n });\n image.src = url;\n });\n return promise;\n };\n PdfExport.prototype.getModuleName = function () {\n // Returns te module name\n return 'PdfExport';\n };\n /**\n * To destroy the ImageExport.\n *\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @returns {void}\n * @private\n */\n PdfExport.prototype.destroy = function (treemap) {\n // Destroy method performed here\n };\n return PdfExport;\n}());\nexport { PdfExport };\n","/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable @typescript-eslint/dot-notation */\n/* eslint-disable brace-style */\n/* eslint-disable max-len */\n/**\n * Tree Map Components\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, NotifyPropertyChanges, Property, extend, Ajax } from '@syncfusion/ej2-base';\nimport { Complex, Collection } from '@syncfusion/ej2-base';\nimport { Event, Internationalization } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\nimport { isNullOrUndefined, createElement, EventHandler, Browser, remove } from '@syncfusion/ej2-base';\nimport { Border, Margin, TitleSettings, LegendSettings, InitialDrillSettings } from './model/base';\nimport { SelectionSettings, TooltipSettings, LevelSettings, LeafItemSettings, HighlightSettings } from './model/base';\nimport { Size, stringToNumber, RectOption, Rect, textTrim, measureText, findChildren, removeElement, setItemTemplateContent } from '../treemap/utils/helper';\nimport { removeClassNames, removeShape, textFormatter } from '../treemap/utils/helper';\nimport { findPosition, TextOption, renderTextElement, isContainsData, TreeMapAjax } from '../treemap/utils/helper';\nimport { load, loaded, drillStart, drillEnd } from '../treemap/model/constants';\nimport { itemClick, itemMove, click, mouseMove, resize, doubleClick, rightClick } from '../treemap/model/constants';\nimport { LayoutPanel } from './layout/render-panel';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { getThemeStyle } from './model/theme';\nimport { Print } from './model/print';\nimport { ImageExport } from './model/image-export';\nimport { PdfExport } from './model/pdf-export';\n/**\n * Represents the treemap component.\n * ```html\n * <div id=\"container\"/>\n * <script>\n * var treemap = new TreeMap();\n * treemap.appendTo(\"#container\");\n * </script>\n * ```\n */\nvar TreeMap = /** @class */ (function (_super) {\n __extends(TreeMap, _super);\n /**s\n * Constructor for TreeMap component.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function TreeMap(options, element) {\n var _this = _super.call(this, options, element) || this;\n /**\n * resize the treemap\n */\n _this.isResize = false;\n /** @private */\n _this.orientation = 'Horizontal';\n /** @private */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.drilledItems = [];\n /** @private */\n _this.isHierarchicalData = false;\n /** @private */\n _this.levelSelection = [];\n /** @private */\n _this.legendId = [];\n return _this;\n }\n TreeMap.prototype.preRender = function () {\n var _this = this;\n this.trigger(load, { treemap: this }, function () {\n _this.initPrivateVariable();\n _this.unWireEVents();\n _this.createSvg();\n _this.wireEVents();\n _this.setCulture();\n });\n };\n TreeMap.prototype.render = function () {\n this.renderElements();\n };\n TreeMap.prototype.renderElements = function () {\n LevelsData.levelsData = null;\n LevelsData.defaultLevelsData = null;\n LevelsData.hierarchyData = null;\n this.createSecondaryElement();\n this.addTabIndex();\n this.themeStyle = getThemeStyle(this.theme);\n this.renderBorder();\n this.renderTitle(this.titleSettings, 'title', null, null);\n if (!isNullOrUndefined(LevelsData.levelsData)) {\n LevelsData.defaultLevelsData = LevelsData.levelsData;\n }\n this.processDataManager();\n };\n TreeMap.prototype.processDataManager = function () {\n var _this = this;\n var dataModule;\n var queryModule;\n var ajaxModule;\n var localAjax;\n if (this.dataSource instanceof DataManager) {\n dataModule = this.dataSource;\n queryModule = this.query instanceof Query ? this.query : new Query();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataManager = dataModule.executeQuery(queryModule);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataManager.then(function (e) {\n _this.dataSource = e['result'];\n _this.renderTreeMapElements();\n });\n }\n else if (this.dataSource instanceof TreeMapAjax) {\n localAjax = this.dataSource;\n ajaxModule = new Ajax(localAjax.dataOptions, localAjax.type, localAjax.async, localAjax.contentType);\n ajaxModule.onSuccess = function (args) {\n _this.dataSource = JSON.parse('[' + args + ']')[0];\n _this.renderTreeMapElements();\n };\n ajaxModule.send(localAjax.sendData);\n }\n else {\n this.renderTreeMapElements();\n }\n };\n TreeMap.prototype.renderTreeMapElements = function () {\n this.processingData();\n if (this.treeMapLegendModule && this.legendSettings.visible) {\n this.treeMapLegendModule.renderLegend();\n }\n this.layout.processLayoutPanel();\n this.element.appendChild(this.svgObject);\n this.elementChange();\n this.trigger(loaded, { treemap: this, isResized: this.isResize });\n this.isResize = false;\n this.renderComplete();\n };\n TreeMap.prototype.createSvg = function () {\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n this.clearTemplate();\n var containerWidth = this.element.clientWidth;\n var containerHeight = this.element.clientHeight;\n this.availableSize = new Size(stringToNumber(this.width, containerWidth) || containerWidth || 600, stringToNumber(this.height, containerHeight) || containerHeight || 450);\n this.svgObject = this.renderer.createSvg({\n id: this.element.id + '_svg',\n width: this.availableSize.width,\n height: this.availableSize.height\n });\n };\n /**\n * To initilize the private varibales of treemap.\n *\n * @returns {void}\n */\n TreeMap.prototype.initPrivateVariable = function () {\n if (this.element.id === '') {\n var collection = document.getElementsByClassName('e-treemap').length;\n this.element.id = 'treemap_control_' + collection;\n }\n this.renderer = new SvgRenderer(this.element.id);\n this.layout = new LayoutPanel(this);\n };\n TreeMap.prototype.createSecondaryElement = function () {\n var secondaryEle = document.getElementById(this.element.id + '_Secondary_Element');\n if (secondaryEle && secondaryEle.childElementCount > 0) {\n secondaryEle.parentNode.removeChild(secondaryEle);\n }\n if (isNullOrUndefined(document.getElementById(this.element.id + '_Secondary_Element'))) {\n var secondaryElement = createElement('div', {\n id: this.element.id + '_Secondary_Element',\n styles: 'position: absolute;z-index:1;'\n });\n this.element.appendChild(secondaryElement);\n }\n };\n TreeMap.prototype.elementChange = function () {\n if (this.treeMapLegendModule && this.legendSettings.visible && this.treeMapLegendModule.legendGroup && this.layout.layoutGroup\n && !isNullOrUndefined(this.svgObject)) {\n this.svgObject.insertBefore(this.layout.layoutGroup, this.treeMapLegendModule.legendGroup);\n }\n };\n /**\n * @private\n * Render the treemap border\n *\n * @returns {void}\n */\n TreeMap.prototype.renderBorder = function () {\n var width = this.border.width;\n var borderElement = this.svgObject.querySelector('#' + this.element.id + '_TreeMap_Border');\n if ((this.border.width > 0 || (this.background || this.themeStyle.backgroundColor)) && isNullOrUndefined(borderElement)) {\n var borderRect = new RectOption(this.element.id + '_TreeMap_Border', this.background || this.themeStyle.backgroundColor, this.border, 1, new Rect(width / 2, width / 2, this.availableSize.width - width, this.availableSize.height - width));\n this.svgObject.appendChild(this.renderer.drawRectangle(borderRect));\n }\n else if (borderElement) {\n borderElement.setAttribute('fill', this.background || this.themeStyle.backgroundColor);\n }\n };\n TreeMap.prototype.renderTitle = function (title, type, bounds, groupEle) {\n var style = title.textStyle;\n var height;\n var titlePadding = 10;\n var width = (this.availableSize.width - this.margin.right - this.margin.left);\n title.textStyle.fontFamily = this.themeStyle.fontFamily || title.textStyle.fontFamily;\n title.textStyle.size = this.themeStyle.fontSize || title.textStyle.size;\n if (title.text) {\n if (isNullOrUndefined(groupEle)) {\n groupEle = this.renderer.createGroup({ id: this.element.id + '_Title_Group' });\n }\n var trimmedTitle = textTrim(width, title.text, style);\n var elementSize = measureText(trimmedTitle, style);\n var rect = (isNullOrUndefined(bounds)) ? new Rect(this.margin.left, this.margin.top, this.availableSize.width, this.availableSize.height) : bounds;\n var location_1 = findPosition(rect, title.alignment, elementSize, type);\n var options = new TextOption(this.element.id + '_TreeMap_' + type, location_1.x, location_1.y, 'start', trimmedTitle);\n var titleBounds = new Rect(location_1.x, location_1.y, elementSize.width, elementSize.height);\n var element = renderTextElement(options, style, style.color || (type === 'title' ? this.themeStyle.titleFontColor : this.themeStyle.subTitleFontColor), groupEle);\n element.setAttribute('aria-label', title.description || title.text);\n element.setAttribute('tabindex', (this.tabIndex + (type === 'title' ? 1 : 2)).toString());\n if ((type === 'title' && !title.subtitleSettings.text) || (type === 'subtitle')) {\n height = (this.availableSize.height - titleBounds.y - titlePadding - this.margin.bottom);\n this.areaRect = new Rect(this.margin.left, titleBounds.y + titlePadding, width, height);\n }\n if (type !== 'subtitle' && title.subtitleSettings.text) {\n this.renderTitle(title.subtitleSettings, 'subtitle', titleBounds, groupEle);\n }\n else {\n this.svgObject.appendChild(groupEle);\n }\n }\n else {\n height = (this.availableSize.height - this.margin.top - this.margin.bottom);\n this.areaRect = new Rect(this.margin.left, this.margin.top, width, height);\n }\n };\n TreeMap.prototype.processingData = function () {\n var _this = this;\n var path;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource = this.dataSource;\n if (!isNullOrUndefined(this.dataSource) && this.dataSource.length > 0 && this.weightValuePath) {\n LevelsData.levelsData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource.map(function (data) {\n data[_this.weightValuePath] = (data[_this.weightValuePath]) ? data[_this.weightValuePath].toString() :\n data[_this.weightValuePath];\n });\n this.leafItemSettings.labelPath = this.leafItemSettings.labelPath || this.weightValuePath;\n this.checkIsHierarchicalData();\n if (this.levels.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data_1 = {};\n data_1['level'] = 0;\n path = this.leafItemSettings.labelPath;\n data_1[path] = [];\n for (var i = 0; i < this.dataSource.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(this.dataSource[i])['values'];\n if (this.isHierarchicalData && child && child.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n child.forEach(function (currentData, dataIndex) {\n if (currentData[path]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data_1[path].push({\n groupIndex: 0, name: currentData[path], levelOrderName: currentData[path].toString(),\n data: currentData, weight: currentData[_this.weightValuePath]\n });\n }\n });\n }\n else {\n if (this.dataSource[i][path]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data_1[path].push({\n groupIndex: 0, name: this.dataSource[i][path], levelOrderName: this.dataSource[i][path].toString(), data: this.dataSource[i],\n weight: this.dataSource[i][this.weightValuePath]\n });\n }\n }\n }\n LevelsData.levelsData.push(data_1);\n }\n else {\n if (this.isHierarchicalData) {\n LevelsData.hierarchyData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LevelsData.hierarchyData = extend([], this.dataSource, LevelsData.hierarchyData, true);\n for (var i = 0; i < LevelsData.hierarchyData.length; i++) {\n this.processHierarchicalData(LevelsData.hierarchyData[i], i);\n }\n LevelsData.levelsData = LevelsData.hierarchyData;\n }\n else {\n this.processFlatJsonData();\n if (LevelsData.levelsData.length > 1) {\n this.reOrderLevelData(LevelsData.levelsData.length - 1);\n }\n }\n path = this.levels[0].groupPath;\n }\n if (!this.isHierarchicalData) {\n this.findTotalWeight(LevelsData.levelsData[0][path], 'Parent');\n }\n }\n };\n TreeMap.prototype.checkIsHierarchicalData = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child;\n this.dataSource = this.dataSource;\n for (var i = 0; i < this.dataSource.length; i++) {\n child = findChildren(this.dataSource[i])['values'];\n if (child && child.length) {\n this.isHierarchicalData = true;\n break;\n }\n else if (i === this.dataSource.length - 1) {\n this.isHierarchicalData = false;\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.processHierarchicalData = function (data, dataCount) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childData;\n var levelData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newData = {};\n var levelIndex;\n var path = this.leafItemSettings.labelPath ? this.leafItemSettings.labelPath : this.weightValuePath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = {};\n var level;\n var key;\n newData = findChildren(data);\n childData = newData ? newData['values'] : null;\n if (childData && childData.length > 0) {\n key = newData['key'];\n for (var i = 0; i < this.levels.length; i++) {\n if (key === this.levels[i].groupPath) {\n level = this.levels[i];\n levelIndex = i;\n }\n }\n for (var j = 0; j < childData.length; j++) {\n childData[j]['name'] = childData[j][path];\n childData[j]['levelOrderName'] = (levelIndex === 0 ? childData[j]['name'] :\n data['levelOrderName'] + '#' + childData[j]['name']) + '';\n var childItemLevel = childData[j]['levelOrderName'];\n var childLevel = void 0;\n if (childItemLevel.search('#') > 0) {\n childLevel = childItemLevel.split('#').length - 1;\n }\n childData[j]['groupIndex'] = isNullOrUndefined(levelIndex) ? childLevel === this.levels.length\n ? this.levels.length : childLevel : levelIndex;\n if (levelIndex !== 0) {\n childData[j]['parent'] = data;\n }\n childData[j]['groupName'] = key;\n childData[j]['data'] = childData[j];\n childData[j]['isDrilled'] = false;\n childData[j]['weight'] = childData[j][this.weightValuePath];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childData.forEach(function (currentData) {\n _this.processHierarchicalData(currentData, dataCount);\n });\n }\n if (dataCount === LevelsData.hierarchyData.length - 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var mainData_1 = LevelsData.hierarchyData[0][this.levels[0].groupPath];\n for (var k = 0; k < LevelsData.hierarchyData.length; k++) {\n childData = findChildren(LevelsData.hierarchyData[k])['values'];\n if (k !== 0 && childData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childData.forEach(function (currentData) { mainData_1.push(currentData); });\n LevelsData.hierarchyData.splice(k, 1);\n k -= 1;\n }\n }\n mainData_1 = LevelsData.hierarchyData[0][this.levels[0].groupPath];\n for (var l = 0; l < mainData_1.length; l++) {\n newData[this.levels[0].groupPath] = mainData_1;\n mainData_1[l]['parent'] = newData;\n }\n }\n };\n /* eslint-disable valid-jsdoc */\n /**\n * This method is used to perform the print functionality in treemap.\n *\n * @param id - Specifies the element to print the treemap.\n */\n TreeMap.prototype.print = function (id) {\n if (this.allowPrint && this.printModule) {\n this.printModule.print(id);\n }\n };\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param type - Specifies the index of the axis.\n * @param fileName - Specifies file name for exporting the rendered treemap.\n * @param orientation - Specifies the orientation of the pdf document.\n */\n TreeMap.prototype.export = function (type, fileName, orientation, allowDownload) {\n var _this = this;\n if (isNullOrUndefined(allowDownload)) {\n allowDownload = true;\n }\n if (type === 'PDF' && this.allowPdfExport && this.pdfExportModule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new Promise(function (resolve, reject) {\n resolve(_this.pdfExportModule.export(type, fileName, orientation, allowDownload));\n });\n }\n else if (this.allowImageExport && (type !== 'PDF') && this.imageExportModule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new Promise(function (resolve, reject) {\n resolve(_this.imageExportModule.export(type, fileName, allowDownload));\n });\n }\n return null;\n };\n TreeMap.prototype.processFlatJsonData = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource = this.dataSource;\n var groupPath;\n var childGroupPath;\n var orderNames = [];\n var process = false;\n for (var i = 0; i < this.levels.length + 1; i++) {\n groupPath = this.levels[i] ? this.levels[i].groupPath : this.leafItemSettings.labelPath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var level = {};\n level['level'] = i;\n level[groupPath] = [];\n LevelsData.levelsData.push(level);\n for (var j = 0; j < this.dataSource.length; j++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = {};\n var childName = '';\n if (!isNullOrUndefined(groupPath)) {\n var name_1 = this.dataSource[j][groupPath];\n if (i !== 0) {\n for (var k = 0; k <= i; k++) {\n var childGroupPath_1 = this.levels[k] ? this.levels[k].groupPath : groupPath;\n childName += (this.dataSource[j][childGroupPath_1]) + ((k === i) ? '' : '#');\n }\n }\n if (!(orderNames.length > 0 ? orderNames.indexOf(childName ?\n childName : name_1) !== -1 : false)) {\n currentData['name'] = name_1;\n currentData['levelOrderName'] = ((childName) ? childName : name_1) + '';\n currentData['groupIndex'] = i;\n currentData['isDrilled'] = false;\n currentData['groupName'] = groupPath;\n currentData['data'] = this.dataSource[j];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LevelsData.levelsData[LevelsData.levelsData.length - 1][groupPath].push(currentData);\n orderNames.push((childName) ? childName : name_1);\n }\n }\n }\n }\n };\n /**\n * This method orders the treemap level data.\n *\n * @param start - Specifies the start value of the treemap level.\n */\n TreeMap.prototype.reOrderLevelData = function (start) {\n var currentName;\n var currentPath = this.levels[start] ? this.levels[start].groupPath : this.leafItemSettings.labelPath;\n var prevPath = this.levels[start - 1].groupPath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = LevelsData.levelsData[start][currentPath];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var previousData = LevelsData.levelsData[start - 1][prevPath];\n for (var i = 0; i < currentData.length; i++) {\n currentName = currentData[i]['levelOrderName'];\n for (var j = 0; j < previousData.length; j++) {\n previousData[j][currentPath] = isNullOrUndefined(previousData[j][currentPath]) ? [] : previousData[j][currentPath];\n if (this.IsChildHierarchy(currentName.split('#'), previousData[j]['levelOrderName'].split('#'))) {\n if (isNullOrUndefined(currentData[i]['parent'])) {\n currentData[i]['parent'] = previousData[j];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n previousData[j][currentPath].push(currentData[i]);\n break;\n }\n }\n }\n this.findTotalWeight(LevelsData.levelsData[LevelsData.levelsData.length - 1][currentPath], 'Child');\n LevelsData.levelsData.splice(start, 1);\n if ((start - 1) > 0) {\n this.reOrderLevelData(start - 1);\n }\n };\n TreeMap.prototype.IsChildHierarchy = function (current, previous) {\n var isChild = false;\n for (var i = 0; i < previous.length; i++) {\n if (current.length < i || previous[i] !== current[i]) {\n return false;\n }\n else {\n isChild = true;\n }\n }\n return isChild;\n };\n /**\n * This method finds the weight value of the treemap level.\n *\n * @param processData - Specifies the treemap data.\n * @param type - Specifies the type of the data.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.findTotalWeight = function (processData, type) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var totalWeight;\n var childData = [];\n var levelName;\n var start = 0;\n var split;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var groupName;\n var groupObj = {};\n var _loop_1 = function (i) {\n totalWeight = 0;\n groupName = processData[i]['groupName'];\n split = processData[i]['levelOrderName'].split('#');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this_1.dataSource.forEach(function (data) {\n if (isContainsData(split, processData[i]['levelOrderName'], data, _this)) {\n totalWeight += parseFloat(data[_this.weightValuePath]);\n }\n });\n if (type === 'Parent') {\n groupObj[groupName] = processData;\n processData[i]['parent'] = groupObj;\n }\n processData[i]['weight'] = totalWeight;\n };\n var this_1 = this;\n for (var i = 0; i < processData.length; i++) {\n _loop_1(i);\n }\n };\n /**\n * To unbind event handlers for treemap.\n *\n * @returns {void}\n */\n TreeMap.prototype.unWireEVents = function () {\n EventHandler.remove(this.element, 'click', this.clickOnTreeMap);\n EventHandler.remove(this.element, 'dblclick', this.doubleClickOnTreeMap);\n EventHandler.remove(this.element, 'contextmenu', this.rightClickOnTreeMap);\n EventHandler.remove(this.element, Browser.touchStartEvent, this.mouseDownOnTreeMap);\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.mouseMoveOnTreeMap);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.mouseEndOnTreeMap);\n EventHandler.remove(this.element, 'pointerleave mouseleave', this.mouseLeaveOnTreeMap);\n window.removeEventListener('resize', this.resizeOnTreeMap);\n };\n /**\n * To bind event handlers for treemap.\n *\n * @returns {void}\n */\n TreeMap.prototype.wireEVents = function () {\n EventHandler.add(this.element, 'click', this.clickOnTreeMap, this);\n EventHandler.add(this.element, 'dblclick', this.doubleClickOnTreeMap, this);\n EventHandler.add(this.element, 'contextmenu', this.rightClickOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchStartEvent, this.mouseDownOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchMoveEvent, this.mouseMoveOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchEndEvent, this.mouseEndOnTreeMap, this);\n EventHandler.add(this.element, 'pointerleave mouseleave', this.mouseLeaveOnTreeMap, this);\n window.addEventListener('resize', this.resizeOnTreeMap.bind(this));\n };\n /**\n * Method to set culture for maps\n *\n * @returns {void}\n */\n TreeMap.prototype.setCulture = function () {\n this.intl = new Internationalization();\n };\n /**\n * To add tab index for treemap element\n *\n * @returns {void}\n */\n TreeMap.prototype.addTabIndex = function () {\n this.element.setAttribute('aria-label', this.description || 'TreeMap Element');\n this.element.setAttribute('tabindex', this.tabIndex.toString());\n };\n /**\n * This method handles the window resize event on treemap.\n *\n * @param e - Specifies the pointer event.\n */\n TreeMap.prototype.resizeOnTreeMap = function (e) {\n var _this = this;\n this.isResize = true;\n var args = {\n name: resize,\n cancel: false,\n previousSize: this.availableSize,\n currentSize: new Size(0, 0),\n treemap: this\n };\n if (this.resizeTo) {\n clearTimeout(this.resizeTo);\n }\n if (!isNullOrUndefined(this.element) && this.element.classList.contains('e-treemap')) {\n this.resizeTo = setTimeout(function () {\n _this.unWireEVents();\n _this.createSvg();\n _this.refreshing = true;\n _this.wireEVents();\n args.currentSize = _this.availableSize;\n _this.trigger(resize, args, function (observedArgs) {\n _this.render();\n });\n }, 500);\n }\n };\n /**\n * This method handles the click event on the treemap.\n *\n * @param e - Specifies the mouse click event in the treemap.\n */\n TreeMap.prototype.clickOnTreeMap = function (e) {\n var _this = this;\n var targetEle = e.target;\n var targetId = targetEle.id;\n var eventArgs;\n var itemIndex;\n var labelText = targetEle.innerHTML;\n var clickArgs = { cancel: false, name: click, treemap: this, mouseEvent: e };\n this.trigger(click, clickArgs);\n if (targetId.indexOf('_Item_Index') > -1) {\n e.preventDefault();\n itemIndex = parseFloat(targetId.split('_Item_Index_')[1]);\n eventArgs = {\n cancel: false, name: itemClick, treemap: this, item: this.layout.renderItems[itemIndex], mouseEvent: e,\n groupIndex: this.layout.renderItems[itemIndex]['groupIndex'], groupName: this.layout.renderItems[itemIndex]['name'],\n text: labelText, contentItemTemplate: labelText\n };\n this.trigger(itemClick, eventArgs, function (observedArgs) {\n if (observedArgs.text !== labelText || observedArgs.contentItemTemplate !== labelText) {\n if (isNullOrUndefined(_this.leafItemSettings.labelTemplate)) {\n observedArgs.text = textFormatter(observedArgs.text, observedArgs['item']['data'], observedArgs.treemap);\n targetEle.innerHTML = observedArgs.text;\n }\n else {\n setItemTemplateContent(targetId, targetEle, observedArgs.contentItemTemplate);\n }\n }\n });\n }\n var end = new Date().getMilliseconds();\n var doubleTapTimer1;\n if (!isNullOrUndefined(this.doubleClick)) {\n if (!isNullOrUndefined(doubleTapTimer1) && end - doubleTapTimer1 < 500) {\n this.doubleClickOnTreeMap(e);\n }\n doubleTapTimer1 = end;\n }\n };\n /**\n * This method handles the double click event in the treemap.\n *\n * @param e - Specifies the pointer event of mouse click.\n */\n TreeMap.prototype.doubleClickOnTreeMap = function (e) {\n var doubleClickArgs = { cancel: false, name: doubleClick, treemap: this, mouseEvent: e };\n this.trigger(doubleClick, doubleClickArgs);\n //this.notify('dblclick', e);\n };\n /**\n * This method handles the right click event in the treemap.\n *\n * @param e - Specifies the pointer event of mouse click.\n */\n TreeMap.prototype.rightClickOnTreeMap = function (e) {\n var rightClickArgs = { cancel: false, name: rightClick, treemap: this, mouseEvent: e };\n this.trigger(rightClick, rightClickArgs);\n };\n /**\n * This method handles the mouse down event in the treemap.\n *\n * @param e - Specifies the pointer event of mouse click.\n */\n TreeMap.prototype.mouseDownOnTreeMap = function (e) {\n if (e.target.id.indexOf('_Item_Index') > -1) {\n this.mouseDown = true;\n }\n this.notify(Browser.touchStartEvent, e);\n };\n /**\n * This method handles the mouse move event in the treemap.\n *\n * @param e - Specifies the pointer event of mouse click.\n */\n TreeMap.prototype.mouseMoveOnTreeMap = function (e) {\n var targetEle = e.target;\n var targetId = targetEle.id;\n var eventArgs;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n var moveArgs = { cancel: false, name: mouseMove, treemap: this, mouseEvent: e };\n this.trigger(mouseMove, moveArgs);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childItems;\n if (targetId.indexOf('_Item_Index') > -1) {\n item = this.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childItems = findChildren(item)['values'];\n this.element.style.cursor = (!item['isLeafItem'] && childItems && childItems.length > 0 && this.enableDrillDown) ?\n 'pointer' : 'auto';\n eventArgs = { cancel: false, name: itemMove, treemap: this, item: item, mouseEvent: e };\n this.trigger(itemMove, eventArgs);\n }\n this.notify(Browser.touchMoveEvent, e);\n };\n /**\n * This method calculates the selected treemap levels.\n *\n * @param labelText - Specifies the label text.\n * @param item - Specifies the treemap item.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.calculateSelectedTextLevels = function (labelText, item) {\n //to find the levels by clicking the particular text both for drillDownView as true / false.\n var drillLevel;\n var k;\n var text;\n var levelLabels = item['levelOrderName'];\n var levelText = levelLabels.split('#');\n for (var _i = 0, _a = Object.keys(levelText); _i < _a.length; _i++) {\n k = _a[_i];\n if (levelText[k] === labelText) {\n drillLevel = parseInt(k, 10);\n text = labelText;\n }\n }\n return { drillLevel: drillLevel, currentLevelLabel: text, levelText: levelText };\n };\n /**\n * This method calculates the previous level of child items in treemap.\n *\n * @param labelText - Specifies the label text in treemap\n * @param drillLevelValues - Specifies the values of drill level.\n * @param item - Specifies the treemap item.\n * @param directLevel - Specifies the current level.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.calculatePreviousLevelChildItems = function (labelText, drillLevelValues, item, directLevel) {\n //By clicking any child items drilldown to the particular level.\n //At the time store all the previous drilled level items in drilledItems\n // This condition satisfies while drilldown View is set as false and the text contains '[+]'\n var text;\n var p = 0;\n var levelItems;\n var text1;\n var drillTextLevel = this.layout.renderItems[0]['levelOrderName'].split('#').length;\n for (var h = 0; h < drillTextLevel; h++) {\n text1 = h === 0 ? drillLevelValues['levelText'][h] : text1 + '#' + drillLevelValues['levelText'][h];\n }\n p = drillTextLevel > 1 ? drillTextLevel : p;\n for (var _i = 0, _a = Object['values'](this.layout.renderItems); _i < _a.length; _i++) {\n levelItems = _a[_i];\n var drillLevelText = levelItems['levelOrderName'].split('#');\n if (drillLevelText[0] === drillLevelValues['levelText'][0]) {\n text = p === 0 ? isNullOrUndefined(text1) ? text1 : drillLevelValues['levelText'][p] :\n directLevel ? text1 : text1 + '#' + drillLevelValues['levelText'][p];\n if (text === levelItems['levelOrderName']) {\n this.drilledItems.push({ name: levelItems['levelOrderName'], data: levelItems });\n p++;\n directLevel = true;\n if (p <= item['groupIndex']) {\n text = text + '#' + drillLevelValues['levelText'][p];\n text1 = text;\n }\n }\n }\n }\n return directLevel;\n };\n /**\n * This method compares the selected labels with the drill down items.\n *\n * @param drillLevelValues - Specifies the values of drill level.\n * @param item - Specifies the treemap item.\n * @param i - Specifies the treemap item.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.compareSelectedLabelWithDrillDownItems = function (drillLevelValues, item, i) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var drillLevelChild;\n var newDrillItem = {};\n var b = drillLevelValues['drillLevel'] + 1;\n if (b === this.drilledItems[i]['data']['groupIndex']) {\n drillLevelChild = this.drilledItems[i]['data']['parent'];\n drillLevelChild['isDrilled'] = true;\n newDrillItem[drillLevelChild[this.drilledItems[i]['data']['groupName']]]\n = [drillLevelChild];\n // to remove all the items after matched drilled items\n this.drilledItems.splice(i, this.drilledItems.length);\n }\n else if (drillLevelValues['drillLevel'] === (this.drilledItems.length - 1)\n || drillLevelValues['drillLevel'] === item['groupIndex']) {\n newDrillItem[item['groupName']] = [item];\n }\n return newDrillItem;\n };\n /**\n * This method handles mouse end event in treemap.\n *\n * @param e - Specifies the pointer event of mouse.\n */\n TreeMap.prototype.mouseEndOnTreeMap = function (e) {\n var _this = this;\n var targetEle = e.target;\n var targetId = targetEle.id;\n var totalRect;\n var startEvent;\n var endEvent;\n var directLevel = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var index;\n var newDrillItem = {};\n var item;\n var process = true;\n var layoutID = this.element.id + '_TreeMap_' + this.layoutType + '_Layout';\n var drillLevel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateID = this.element.id + '_Label_Template_Group';\n var drillLevelValues;\n if (targetId.indexOf('_Item_Index') > -1 && this.enableDrillDown && !this.drillMouseMove) {\n if (e.cancelable) {\n e.preventDefault();\n }\n index = parseFloat(targetId.split('_Item_Index_')[1]);\n item = this.layout.renderItems[index];\n var labelText = targetEle.innerHTML;\n if (this.enableBreadcrumb) {\n drillLevelValues = this.calculateSelectedTextLevels(labelText, item);\n drillLevel = drillLevelValues['drillLevel'];\n if (!this.drillDownView && labelText.search('[+]') !== -1) {\n directLevel = this.calculatePreviousLevelChildItems(labelText, drillLevelValues, item, directLevel);\n }\n }\n if (this.levels.length !== 0 && !item['isLeafItem'] && findChildren(item)['values'] &&\n findChildren(item)['values'].length > 0) {\n if (this.drilledItems.length > 0) {\n item = directLevel ? this.drilledItems[this.drilledItems.length - 1]['data'] : item;\n for (var i = 0; i < this.drilledItems.length; i++) {\n if (!isNullOrUndefined(drillLevel)) { //Compare the selected text level with drilled items\n var drillLength = this.drilledItems.length;\n newDrillItem = this.compareSelectedLabelWithDrillDownItems(drillLevelValues, item, i);\n if (drillLength !== this.drilledItems.length) {\n i -= 1;\n break;\n }\n } //when clicking the levels drill back to the previous level process takes place\n if (item['levelOrderName'] === this.drilledItems[i]['name'] && !directLevel && isNullOrUndefined(drillLevel)) {\n if (item['groupIndex'] === 0 && item['parent'][item['groupName']] instanceof Array) {\n item['isDrilled'] = !(item['isDrilled']);\n if (!item['isDrilled']) {\n newDrillItem = item['parent'];\n }\n else {\n newDrillItem[item['groupName']] = [item];\n }\n }\n else {\n item['isDrilled'] = false;\n item['parent']['isDrilled'] = true;\n item = item['parent'];\n newDrillItem[item['groupName']] = [item];\n }\n this.drilledItems.splice(i, 1);\n i -= 1;\n break;\n }\n else if (i === this.drilledItems.length - 1 && isNullOrUndefined(drillLevel)) {\n item['isDrilled'] = true; // click the items move to next level.\n newDrillItem[item['groupName']] = [item];\n }\n }\n }\n else {\n item['isDrilled'] = true;\n newDrillItem[item['groupName']] = [item];\n }\n startEvent = {\n cancel: false, name: drillStart, treemap: this,\n element: targetEle, groupIndex: this.enableBreadcrumb &&\n this.drilledItems.length !== 0 && !isNullOrUndefined(drillLevel) ?\n this.drilledItems[this.drilledItems.length - 1]['data']['groupIndex'] : item['groupIndex'],\n groupName: this.enableBreadcrumb && this.drilledItems.length !== 0 && !isNullOrUndefined(drillLevel) ?\n this.drilledItems[this.drilledItems.length - 1]['data']['name'] : item['name'],\n rightClick: e.which === 3 ? true : false, childItems: null, item: newDrillItem\n };\n this.trigger(drillStart, startEvent, function (observedArgs) {\n _this.currentLevel = item['isDrilled'] && isNullOrUndefined(drillLevel) ? item['groupIndex'] :\n (!isNullOrUndefined(drillLevel) && _this.enableBreadcrumb && item['isDrilled']) ? drillLevel : null;\n if (!observedArgs.cancel) {\n if (document.getElementById(layoutID)) {\n var layerElementId = document.getElementById(layoutID);\n layerElementId.parentNode.removeChild(layerElementId);\n }\n totalRect = extend({}, _this.areaRect, totalRect, true);\n if (_this.legendSettings.visible && !isNullOrUndefined(_this.treeMapLegendModule)) {\n if (!isNullOrUndefined(newDrillItem)) {\n _this.treeMapLegendModule.legendGroup.textContent = '';\n _this.treeMapLegendModule.legendGroup = null;\n _this.treeMapLegendModule.widthIncrement = 0;\n _this.treeMapLegendModule.heightIncrement = 0;\n if (_this.enableBreadcrumb && !isNullOrUndefined(drillLevel)) {\n _this.drilledLegendItems = {\n name: _this.drilledItems[_this.drilledItems.length - 1]['data']['levelOrderName'],\n data: _this.drilledItems[_this.drilledItems.length - 1]['data']\n };\n }\n else {\n _this.drilledLegendItems = { name: item['levelOrderName'], data: item };\n }\n _this.treeMapLegendModule.renderLegend();\n }\n totalRect = !isNullOrUndefined(_this.totalRect) ? _this.totalRect : totalRect;\n }\n if (document.getElementById(templateID)) {\n var drillElementId = document.getElementById(templateID);\n drillElementId.parentNode.removeChild(drillElementId);\n }\n if (!isNullOrUndefined(observedArgs.childItems) && !observedArgs.cancel) {\n _this.layout.onDemandProcess(observedArgs.childItems);\n }\n else {\n _this.layout.calculateLayoutItems(newDrillItem, totalRect);\n _this.layout.renderLayoutItems(newDrillItem);\n }\n }\n });\n endEvent = { cancel: false, name: drillEnd, treemap: this, renderItems: this.layout.renderItems };\n this.trigger(drillEnd, endEvent);\n if (process) {\n if (!directLevel && isNullOrUndefined(drillLevel)) {\n this.drilledItems.push({ name: item['levelOrderName'], data: item });\n }\n }\n }\n }\n this.mouseDown = false;\n this.notify(Browser.touchEndEvent, e);\n };\n /**\n * This method handles mouse leave event in treemap.\n *\n * @param e - Specifies the pointer event of mouse.\n */\n TreeMap.prototype.mouseLeaveOnTreeMap = function (e) {\n if (this.treeMapTooltipModule) {\n this.treeMapTooltipModule.removeTooltip();\n }\n if (this.treeMapLegendModule) {\n this.treeMapLegendModule.removeInteractivePointer();\n }\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', this);\n if (this.treeMapHighlightModule) {\n removeShape(this.treeMapHighlightModule.shapeHighlightCollection, 'highlight');\n this.treeMapHighlightModule.highLightId = '';\n }\n };\n /**\n * This method is used to select or remove the selection of treemap item based on the provided selection settings.\n */\n TreeMap.prototype.selectItem = function (levelOrder, isSelected) {\n if (isNullOrUndefined(isSelected)) {\n isSelected = true;\n }\n var levelOrderName = '';\n for (var i = 0; i < levelOrder.length; i++) {\n if (i !== levelOrder.length - 1) {\n levelOrderName += levelOrder[i] + '#';\n }\n else {\n levelOrderName += levelOrder[i];\n }\n }\n if (this.treeMapSelectionModule && this.selectionSettings.enable) {\n this.treeMapSelectionModule.selectTreemapItem(levelOrderName, isSelected);\n }\n };\n /**\n * To provide the array of modules needed for maps rendering\n *\n * @returns {ModuleDeclaration[]} Returns the modules\n * @private\n */\n TreeMap.prototype.requiredModules = function () {\n var modules = [];\n if (this.tooltipSettings.visible) {\n modules.push({\n member: 'treeMapTooltip',\n args: [this]\n });\n }\n if (this.highlightSettings.enable) {\n modules.push({\n member: 'treeMapHighlight',\n args: [this]\n });\n }\n if (this.selectionSettings.enable) {\n modules.push({\n member: 'treeMapSelection',\n args: [this]\n });\n }\n if (this.legendSettings.visible) {\n modules.push({\n member: 'treeMapLegend',\n args: [this]\n });\n }\n if (this.allowPrint) {\n modules.push({\n member: 'Print',\n args: [this, Print]\n });\n }\n if (this.allowImageExport) {\n modules.push({\n member: 'ImageExport',\n args: [this, ImageExport]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this, PdfExport]\n });\n }\n return modules;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TreeMapModel} newProp - Specifies the new property\n * @param {TreeMapModel} oldProp - Specifies the old property\n * @returns {void}\n * @private\n */\n TreeMap.prototype.onPropertyChanged = function (newProp, oldProp) {\n var render = false;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'background':\n this.renderBorder();\n break;\n case 'height':\n case 'width':\n case 'layoutType':\n case 'levels':\n case 'drillDownView':\n case 'renderDirection':\n case 'leafItemSettings':\n case 'legendSettings':\n case 'dataSource':\n render = true;\n break;\n }\n }\n if (render) {\n this.createSvg();\n this.renderElements();\n }\n };\n /**\n * Gets component name.\n */\n TreeMap.prototype.getModuleName = function () {\n return 'treemap';\n };\n /**\n * This method is used to dispose the treemap component.\n */\n TreeMap.prototype.destroy = function () {\n this.unWireEVents();\n this.drilledItems = [];\n this.levelSelection = [];\n this.legendId = [];\n this.removeSvg();\n _super.prototype.destroy.call(this);\n };\n TreeMap.prototype.removeSvg = function () {\n removeElement(this.element.id + '_Secondary_Element');\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Returns the string value.\n * @private\n */\n TreeMap.prototype.getPersistData = function () {\n return '';\n };\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowPrint\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowImageExport\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"height\", void 0);\n __decorate([\n Complex({}, Border)\n ], TreeMap.prototype, \"border\", void 0);\n __decorate([\n Complex({}, Margin)\n ], TreeMap.prototype, \"margin\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"background\", void 0);\n __decorate([\n Property('Material')\n ], TreeMap.prototype, \"theme\", void 0);\n __decorate([\n Complex({}, TitleSettings)\n ], TreeMap.prototype, \"titleSettings\", void 0);\n __decorate([\n Property('Squarified')\n ], TreeMap.prototype, \"layoutType\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"weightValuePath\", void 0);\n __decorate([\n Property('')\n ], TreeMap.prototype, \"rangeColorValuePath\", void 0);\n __decorate([\n Property('')\n ], TreeMap.prototype, \"equalColorValuePath\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"colorValuePath\", void 0);\n __decorate([\n Property([])\n ], TreeMap.prototype, \"palette\", void 0);\n __decorate([\n Property('TopLeftBottomRight')\n ], TreeMap.prototype, \"renderDirection\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"enableDrillDown\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"enableBreadcrumb\", void 0);\n __decorate([\n Property(' - ')\n ], TreeMap.prototype, \"breadcrumbConnector\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"drillDownView\", void 0);\n __decorate([\n Complex({}, InitialDrillSettings)\n ], TreeMap.prototype, \"initialDrillDown\", void 0);\n __decorate([\n Complex({}, LeafItemSettings)\n ], TreeMap.prototype, \"leafItemSettings\", void 0);\n __decorate([\n Collection([], LevelSettings)\n ], TreeMap.prototype, \"levels\", void 0);\n __decorate([\n Complex({}, HighlightSettings)\n ], TreeMap.prototype, \"highlightSettings\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], TreeMap.prototype, \"selectionSettings\", void 0);\n __decorate([\n Complex({}, TooltipSettings)\n ], TreeMap.prototype, \"tooltipSettings\", void 0);\n __decorate([\n Complex({}, LegendSettings)\n ], TreeMap.prototype, \"legendSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"useGroupingSeparator\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"description\", void 0);\n __decorate([\n Property(1)\n ], TreeMap.prototype, \"tabIndex\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"format\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"drillStart\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"drillEnd\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemSelected\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemHighlight\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"tooltipRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemMove\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"doubleClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"rightClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"mouseMove\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"resize\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"legendItemRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"legendRendering\", void 0);\n TreeMap = __decorate([\n NotifyPropertyChanges\n ], TreeMap);\n return TreeMap;\n}(Component));\nexport { TreeMap };\n/**\n * @private\n */\nvar LevelsData = /** @class */ (function () {\n function LevelsData() {\n }\n return LevelsData;\n}());\nexport { LevelsData };\n","/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable @typescript-eslint/dot-notation */\n/* eslint-disable max-len */\nimport { LevelsData } from '../treemap';\nimport { findChildren, Location, Rect, Size, measureText, TextOption, PathOption, RectOption, drawSymbol, orderByArea, legendMaintain } from '../utils/helper';\nimport { Browser, isNullOrUndefined, EventHandler, extend } from '@syncfusion/ej2-base';\nimport { renderTextElement, textTrim } from '../utils/helper';\nimport { legendItemRendering, legendRendering } from '../model/constants';\n/**\n * Legend module class\n */\nvar TreeMapLegend = /** @class */ (function () {\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function TreeMapLegend(treemap) {\n this.page = 0;\n this.legendBorderRect = new Rect(0, 0, 0, 0);\n this.currentPage = 0;\n this.heightIncrement = 0;\n this.widthIncrement = 0;\n this.textMaxWidth = 0;\n this.legendInteractiveGradient = [];\n this.legendItemRect = new Rect(0, 0, 0, 0);\n this.treemap = treemap;\n this.addEventListener();\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * method for legend\n */\n TreeMapLegend.prototype.renderLegend = function () {\n var _this = this;\n this.legendRenderingCollections = [];\n this.legendCollections = [];\n this.legendNames = [];\n this.totalPages = [];\n this.gradientCount = 1;\n this.widthIncrement = 0;\n this.heightIncrement = 0;\n this.defsElement = this.treemap.renderer.createDefs();\n this.treemap.svgObject.appendChild(this.defsElement);\n var eventArgs;\n eventArgs = {\n cancel: false, name: legendRendering, treemap: this.treemap, _changePosition: this.treemap.legendSettings.position,\n position: this.treemap.legendSettings.position\n };\n this.treemap.trigger(legendRendering, eventArgs, function (observedArgs) {\n // eslint-disable-next-line no-underscore-dangle\n if (!observedArgs.cancel && observedArgs._changePosition !== _this.treemap.legendSettings.position) {\n // eslint-disable-next-line no-underscore-dangle\n _this.treemap.legendSettings.position = observedArgs._changePosition;\n }\n _this.calculateLegendBounds();\n if (_this.legendCollections.length > 0) {\n _this.drawLegend();\n }\n });\n };\n TreeMapLegend.prototype.calculateLegendBounds = function () {\n var _this = this;\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n this.findColorMappingLegendItems(LevelsData.levelsData[0]);\n if ((this.treemap.palette.length > 0 || !isNullOrUndefined(this.treemap.colorValuePath))\n && this.legendCollections.length === 0) {\n this.findPaletteLegendItems(LevelsData.levelsData[0], 'Parent');\n }\n if (this.legendCollections.length > 0) {\n var defaultSize = 25;\n var textPadding = 10;\n var position = legend.position;\n var legendTitle = legend.title.text;\n var titleTextStyle = legend.titleStyle;\n var legendMode = legend.mode;\n var shapeX = 0;\n var shapeY = 0;\n var textX = 0;\n var textY = 0;\n var shapeHeight = legend.shapeHeight;\n var shapeWidth = legend.shapeWidth;\n var shapeLocation = [];\n var textLocation = [];\n var orientation_1 = (legend.orientation === 'None') ? ((position === 'Top' || position === 'Bottom'\n || (position === 'Auto' && treemap.availableSize.width <= treemap.availableSize.height))\n ? 'Horizontal' : 'Vertical') : legend.orientation;\n var leftPadding = 10;\n var topPadding = 10;\n var spacing = 10;\n var legendWidth = (legend.width.length > 1) ? (legend.width.indexOf('%') > -1) ? (treemap.availableSize.width / 100)\n * parseFloat(legend.width) : parseFloat(legend.width) : null;\n var legendHeight = (legend.height.length > 1) ? (legend.height.indexOf('%') > -1) ?\n (treemap.availableSize.height / 100) * parseFloat(legend.height) : parseFloat(legend.height) : null;\n titleTextStyle.fontFamily = treemap.themeStyle.fontFamily || titleTextStyle.fontFamily;\n titleTextStyle.size = treemap.themeStyle.legendFontSize || titleTextStyle.size;\n var legendTitleSize = measureText(legendTitle, titleTextStyle);\n var startX_1 = 0;\n var startY_1 = 0;\n var shapePadding = legend.shapePadding;\n var rectWidth = void 0;\n var rectHeight = void 0;\n var itemTextStyle = legend.textStyle;\n var legendLength = this.legendCollections.length;\n legend.textStyle.size = treemap.themeStyle.legendFontSize || legend.textStyle.size;\n legend.textStyle.fontFamily = treemap.themeStyle.fontFamily || legend.textStyle.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'], legend.textStyle);\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 itemTextStyle_1 = legend.textStyle;\n var legendLength_1 = this.legendCollections.length;\n var rectWidth_1 = (orientation_1 === 'Horizontal') ? (isNullOrUndefined(legendWidth)) ? (treemap.areaRect.width / legendLength_1) :\n (legendWidth / legendLength_1) : (isNullOrUndefined(legendWidth)) ? defaultSize : legendWidth;\n var rectHeight_1 = (orientation_1 === 'Horizontal') ? (isNullOrUndefined(legendHeight)) ? defaultSize : legendHeight :\n (isNullOrUndefined(legendHeight)) ? (treemap.areaRect.height / legendLength_1) : (legendHeight / legendLength_1);\n startX_1 = 0;\n startY_1 = legendTitleSize.height + spacing;\n var textPadding_1 = 10;\n var placement = legend.labelPosition;\n var itemStartX = 0;\n var itemStartY = 0;\n var labelAction = legend.labelDisplayMode;\n var maxTextHeight = 0;\n var maxTextWidth = 0;\n for (var i = 0; i < this.legendCollections.length; i++) {\n startX_1 = (orientation_1 === 'Horizontal') ? (startX_1 + rectWidth_1) : startX_1;\n startY_1 = (orientation_1 === 'Horizontal') ? startY_1 : (startY_1 + rectHeight_1);\n var legendText = this.legendCollections[i]['legendName'];\n var itemTextSize = new Size(0, 0);\n if (labelAction === 'None') {\n itemTextSize = measureText(legendText, itemTextStyle_1);\n }\n else if (labelAction === 'Trim') {\n legendText = textTrim((orientation_1 === 'Horizontal' ? rectWidth_1 : rectHeight_1), legendText, itemTextStyle_1);\n itemTextSize = measureText(legendText, itemTextStyle_1);\n }\n else {\n legendText = '';\n }\n maxTextHeight = Math.max(maxTextHeight, itemTextSize.height);\n maxTextWidth = Math.max(maxTextWidth, itemTextSize.width);\n if (itemTextSize.width > 0 && itemTextSize.height > 0) {\n if (orientation_1 === 'Horizontal') {\n textX = startX_1 + (rectWidth_1 / 2);\n textY = (placement === 'After') ? (startY_1 + rectHeight_1 + (itemTextSize.height / 2)) + textPadding_1 :\n (startY_1 - textPadding_1);\n }\n else {\n textX = (placement === 'After') ? startX_1 - (itemTextSize.width / 2) - textPadding_1\n : (startX_1 + rectWidth_1 + itemTextSize.width / 2) + textPadding_1;\n textY = startY_1 + (rectHeight_1 / 2) + (itemTextSize.height / 4);\n }\n }\n if (i === 0) {\n itemStartX = (orientation_1 === 'Horizontal') ? startX_1 : (placement === 'After') ?\n textX - (itemTextSize.width / 2) : startX_1;\n itemStartY = (orientation_1 === 'Horizontal') ? (placement === 'After') ? startY_1 :\n textY - (itemTextSize.height / 2) : startY_1;\n }\n if (i === legendLength_1 - 1) {\n legendWidth = (orientation_1 === 'Horizontal') ? Math.abs((startX_1 + rectWidth_1) - itemStartX) :\n (rectWidth_1 + maxTextWidth + textPadding_1);\n legendHeight = (orientation_1 === 'Horizontal') ? (rectHeight_1 + (maxTextHeight / 2) + textPadding_1) :\n Math.abs((startY_1 + rectHeight_1) - itemStartY);\n }\n this.legendRenderingCollections.push({\n fill: this.legendCollections[i]['legendFill'], x: startX_1, y: startY_1,\n width: rectWidth_1, height: rectHeight_1, element: this.legendCollections[i]['gradientElement'],\n text: legendText, textX: textX, textY: textY,\n textWidth: itemTextSize.width, textHeight: itemTextSize.height,\n data: this.legendCollections[i]['legendData']\n });\n }\n this.legendItemRect = { x: itemStartX, y: itemStartY, width: legendWidth, height: legendHeight };\n }\n }\n };\n TreeMapLegend.prototype.getPageChanged = function () {\n this.page++;\n if (isNullOrUndefined(this.totalPages[this.page])) {\n this.totalPages[this.page] = { Page: (this.page + 1), Collection: [] };\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.findColorMappingLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n if (child && child.length > 0) {\n this.calculateLegendItems(child);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < child.length; i++) {\n this.findColorMappingLegendItems(child[i]);\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.findPaletteLegendItems = function (data, type) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child;\n var legendFillColor;\n if (!isNullOrUndefined(this.treemap.drilledItems)) {\n if (this.treemap.drilledItems.length === 0 && !isNullOrUndefined(this.treemap.initialDrillDown.groupName)\n && isNullOrUndefined(this.treemap.drilledLegendItems)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var items = findChildren(data)['values'];\n for (var k = 0; k < items.length; k++) {\n if (items[k]['Name'] === this.treemap.initialDrillDown.groupName) {\n items[k]['isDrilled'] = !items[k]['isDrilled'];\n data = items[k];\n this.treemap.currentLevel = this.treemap.initialDrillDown.groupIndex;\n legendFillColor = this.treemap.palette.length > 0 ? this.treemap.palette[k % this.treemap.palette.length] :\n items[k]['data'][this.treemap.colorValuePath];\n break;\n }\n }\n }\n }\n if (this.treemap.enableDrillDown && !isNullOrUndefined(this.treemap.drilledLegendItems)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childElement = this.treemap.drilledLegendItems;\n legendFillColor = childElement['data']['options']['fill'];\n if (childElement['data']['isDrilled']) {\n child = findChildren(childElement['data'])['values'];\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentElement = childElement['data']['parent'];\n child = findChildren(parentElement)['values'];\n }\n }\n else {\n child = findChildren(data)['values'];\n }\n var isDuplicate;\n var legendName;\n if (child && child.length > 0) {\n for (var i = 0; i < child.length; i++) {\n if (isNullOrUndefined(child[i]['data'][this.treemap.legendSettings.showLegendPath]) ||\n child[i]['data'][this.treemap.legendSettings.showLegendPath]) {\n legendName = child[i]['data'][this.treemap.legendSettings.valuePath] ?\n child[i]['data'][this.treemap.legendSettings.valuePath] : child[i]['name'];\n isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, legendName) : false;\n if (!isDuplicate) {\n this.legendCollections.push({\n legendName: legendName,\n legendFill: this.treemap.palette.length > 0 ? !isNullOrUndefined(this.treemap.currentLevel)\n ? legendFillColor : this.treemap.palette[i % this.treemap.palette.length] :\n child[i]['data'][this.treemap.colorValuePath],\n legendData: [],\n itemArea: child[i]['weight']\n });\n }\n }\n }\n this.legendCollections.sort(orderByArea);\n if (this.treemap.palette.length > 0) {\n for (var j = 0; j < this.legendCollections.length; j++) {\n this.legendCollections[j]['legendFill'] = !isNullOrUndefined(this.treemap.currentLevel)\n ? legendFillColor : this.treemap.palette[j % this.treemap.palette.length];\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.calculateLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isAddData;\n var fill;\n var rangeValue;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData;\n var legendText;\n var itemValue;\n var isLeafItem;\n var colorMapProcess = false;\n var colorMapping;\n var groupIndex;\n var leaf = this.treemap.leafItemSettings;\n var levels = this.treemap.levels;\n var equalValue;\n var position = this.treemap.legendSettings.position;\n var gradientElement;\n var x2;\n var y2;\n var actualValue;\n var isDuplicate;\n var isEqualColor;\n var isRange;\n var isDesaturation = false;\n var legendIndex = 0;\n var outfill;\n var labelLegend;\n var otherIndex;\n this.outOfRangeLegend = null;\n for (var i = 0; i < data.length; i++) {\n fill = '';\n isEqualColor = false;\n isRange = false;\n isDesaturation = false;\n currentData = data[i]['data'];\n groupIndex = data[i]['groupIndex'];\n isLeafItem = (this.treemap.levels.length === 0 || groupIndex === this.treemap.levels.length);\n colorMapping = isLeafItem ? leaf.colorMapping : levels[groupIndex].colorMapping;\n for (var _i = 0, colorMapping_1 = colorMapping; _i < colorMapping_1.length; _i++) {\n var colorMap = colorMapping_1[_i];\n gradientElement = null;\n rangeValue = Number(currentData[this.treemap.rangeColorValuePath]);\n equalValue = currentData[this.treemap.equalColorValuePath];\n colorMap.value = !isNullOrUndefined(colorMap.value) ? colorMap.value.toString() : colorMap.value;\n if (!isNullOrUndefined(colorMap.from) && !isNullOrUndefined(colorMap.to) &&\n rangeValue >= colorMap.from && rangeValue <= colorMap.to && colorMap.showLegend) {\n colorMapProcess = true;\n isRange = true;\n actualValue = colorMap.from + ' - ' + colorMap.to;\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : colorMap.from + ' - ' + colorMap.to;\n fill = isNullOrUndefined(colorMap.color) ? fill : colorMap.color;\n isAddData = this.isAddNewLegendData(actualValue);\n }\n else if (!isNullOrUndefined(colorMap.value) && equalValue === colorMap.value && colorMap.showLegend) {\n colorMapProcess = true;\n isEqualColor = true;\n actualValue = colorMap.value.toString();\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : colorMap.value.toString();\n fill = isNullOrUndefined(colorMap.color) ? fill :\n Object.prototype.toString.call(colorMap.color) === '[object Array]' ? colorMap.color[0] : colorMap.color;\n isAddData = this.isAddNewLegendData(actualValue);\n }\n if (colorMapProcess && isNullOrUndefined(colorMap.value) && colorMap.maxOpacity && colorMap.minOpacity\n && this.treemap.legendSettings.mode === 'Interactive') {\n var colors = [];\n isDesaturation = true;\n if (Object.prototype.toString.call(colorMap.color) === '[object Array]') {\n for (var q = 0; q < colorMap.color.length; q++) {\n var offsetColor = 100 / (colorMap.color.length - 1);\n var offsetValue = q * offsetColor + '%';\n var stop1Color = { colorStop: offsetValue.toString(), color: colorMap.color[q] };\n colors.push(stop1Color);\n }\n }\n else {\n var stop1Color = { colorStop: '0%', color: fill };\n var stop2Color = { colorStop: '100%', color: fill };\n colors.push(stop1Color);\n colors.push(stop2Color);\n }\n x2 = position === 'Top' || position === 'Bottom' ? '100%' : '0%';\n y2 = position === 'Top' || position === 'Bottom' ? '0%' : '100%';\n var gradient = {\n id: 'groupIndex_' + groupIndex + '_colorIndex_' + this.gradientCount, x1: '0%', y1: '0%', x2: x2, y2: y2\n };\n gradientElement = this.treemap.renderer.drawGradient('linearGradient', gradient, colors).childNodes[0];\n if (Object.prototype.toString.call(colorMap.color) !== '[object Array]') {\n gradientElement.childNodes[0].setAttribute('stop-opacity', colorMap.minOpacity.toString());\n gradientElement.childNodes[1].setAttribute('stop-opacity', colorMap.maxOpacity.toString());\n }\n this.defsElement.appendChild(gradientElement);\n this.gradientCount++;\n }\n isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, legendText) : false;\n if (isAddData && isAddData['process'] && colorMapProcess && !isDuplicate) {\n colorMapProcess = false;\n fill = ((Object.prototype.toString.call(colorMap.color) === '[object Array]')) && isNullOrUndefined(gradientElement)\n && isNullOrUndefined(colorMap.value) ? this.legendGradientColor(colorMap, legendIndex) : fill;\n this.legendCollections.push({\n actualValue: actualValue,\n legendName: legendText, legendFill: fill, legendData: [],\n gradientElement: !isNullOrUndefined(gradientElement) ? gradientElement : isNullOrUndefined(colorMap.value)\n ? this.legendLinearGradient : null, name: data[i]['name'],\n opacity: this.treemap.legendSettings.opacity, borderColor: this.treemap.legendSettings.border.color,\n borderWidth: this.treemap.legendSettings.border.width\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[this.legendCollections.length - 1]['legendData'].push(data[i]);\n legendIndex++;\n }\n else if (colorMapProcess && !isDuplicate) {\n colorMapProcess = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[isAddData['value']]['legendData'].push(data[i]);\n }\n if (!isRange && !isDesaturation && !isEqualColor) {\n if (isNullOrUndefined(colorMap.from) && isNullOrUndefined(colorMap.to)\n && isNullOrUndefined(colorMap.minOpacity) &&\n isNullOrUndefined(colorMap.maxOpacity) && isNullOrUndefined(colorMap.value) &&\n !isNullOrUndefined(colorMap.color)) {\n outfill = ((Object.prototype.toString.call(colorMap.color) === '[object Array]'))\n ? colorMap.color[0] : colorMap.color;\n labelLegend = !isNullOrUndefined(colorMap.label) ? colorMap.label : 'Others';\n if (isNullOrUndefined(this.outOfRangeLegend)) {\n this.legendCollections.push({\n actualValue: labelLegend, legendData: [],\n legendName: labelLegend, legendFill: outfill\n });\n otherIndex = this.legendCollections.length;\n this.outOfRangeLegend = this.legendCollections[otherIndex - 1];\n legendIndex++;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[otherIndex - 1]['legendData'].push(data[i]);\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.removeDuplicates = function (legendCollection, text) {\n var isDuplicate = false;\n for (var i = 0; i < legendCollection.length; i++) {\n if (legendCollection[i]['legendName'] === text) {\n isDuplicate = true;\n break;\n }\n else {\n continue;\n }\n }\n return isDuplicate;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.isAddNewLegendData = function (legendText) {\n var newDataProcess;\n var itemValue;\n if (this.legendCollections.length === 0) {\n newDataProcess = true;\n }\n else {\n for (var j = 0; j < this.legendCollections.length; j++) {\n if (legendText === this.legendCollections[j]['actualValue']) {\n newDataProcess = false;\n itemValue = j;\n break;\n }\n else if (j === this.legendCollections.length - 1) {\n newDataProcess = true;\n }\n }\n }\n return { process: newDataProcess, value: itemValue };\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To draw the legend\n */\n TreeMapLegend.prototype.drawLegend = function () {\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n var render = treemap.renderer;\n var fill;\n var textOptions;\n var gradientElement;\n var textFont = legend.textStyle;\n this.legendGroup = render.createGroup({ id: treemap.element.id + '_Legend_Group' });\n this.renderLegendBorder();\n this.renderLegendTitle();\n if (legend.mode === 'Default') {\n this.drawLegendItem(this.currentPage);\n }\n else {\n for (var i = 0; i < this.legendRenderingCollections.length; i++) {\n var itemId = treemap.element.id + '_Legend_Index_' + i;\n var textId = treemap.element.id + '_Legend_Index_' + i + '_Text';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = this.legendRenderingCollections[i];\n gradientElement = item['element'];\n fill = gradientElement ? 'url(#' + gradientElement.id + ')' : item['fill'];\n var bounds = new Rect(item['x'], item['y'], item['width'], item['height']);\n var textLocation = new Location(item['textX'], item['textY']);\n var rectOptions = new RectOption(itemId, fill, legend.shapeBorder, legend.opacity, bounds);\n if (this.treemap.enableRtl) {\n if (treemap.legendSettings.position === 'Left' || treemap.legendSettings.position === 'Right'\n || (treemap.legendSettings.position === 'Auto'\n && this.treemap.availableSize.width >= this.treemap.availableSize.height)) {\n rectOptions.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - (this.translate.y + rectOptions.height) - Math.abs(this.legendBorderRect.y - rectOptions.y);\n textLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - (this.translate.y) + (item['textHeight'] / 2)\n - Math.abs(this.legendBorderRect.y - textLocation.y);\n }\n else {\n rectOptions.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + rectOptions.width)\n - Math.abs(this.legendBorderRect.x - rectOptions.x);\n textLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - this.translate.x - Math.abs(this.legendBorderRect.x - textLocation.x);\n }\n }\n textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'middle', item['text'], '', '');\n renderTextElement(textOptions, textFont, textFont.color || this.treemap.themeStyle.legendTextColor, this.legendGroup);\n this.legendGroup.appendChild(render.drawRectangle(rectOptions));\n }\n }\n legendMaintain(this.treemap, this.legendGroup);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.defaultLegendRtlLocation = function (collection, spacing, treemap, legend) {\n var shapeLocation = collection['Shape'];\n var textLocation = collection['Text'];\n var legendText = collection['DisplayText'];\n var textSize = measureText(legendText, legend.textStyle);\n shapeLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + spacing) - Math.abs(this.legendBorderRect.x - shapeLocation.x);\n textLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + textSize.width + spacing) - Math.abs(this.legendBorderRect.x - textLocation.x);\n if (treemap.legendSettings.position === 'Left' || treemap.legendSettings.position === 'Right'\n || (treemap.legendSettings.position === 'Auto'\n && this.treemap.availableSize.width >= this.treemap.availableSize.height)) {\n shapeLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - this.translate.y - Math.abs(Math.abs(this.legendBorderRect.y) - shapeLocation.y) - (legend.shapeHeight / 2);\n textLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - this.translate.y - Math.abs(Math.abs(this.legendBorderRect.y) - textLocation.y);\n }\n return { shapeLocation: shapeLocation, textLocation: textLocation };\n };\n TreeMapLegend.prototype.drawLegendItem = function (page) {\n var _this = this;\n var treemap = this.treemap;\n var spacing = 10;\n var legend = treemap.legendSettings;\n var shapeSize = new Size(legend.shapeWidth, legend.shapeHeight);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var textOptions;\n var legendRtlLocation;\n var renderOptions;\n var render = treemap.renderer;\n var shapeBorder = legend.shapeBorder;\n var eventArgs;\n if (page >= 0 && page < this.totalPages.length) {\n if (document.getElementById(this.legendGroup.id)) {\n document.getElementById(this.legendGroup.id).remove();\n }\n var isLineShape_1 = (legend.shape === 'HorizontalLine' || legend.shape === 'VerticalLine' || legend.shape === 'Cross');\n var strokeColor_1 = isLineShape_1 ? isNullOrUndefined(legend.fill) ? '#000000' : legend.fill : shapeBorder.color;\n var strokeWidth_1 = isLineShape_1 ? (shapeBorder.width === 0) ? 1 : shapeBorder.width : shapeBorder.width;\n var _loop_1 = function (i) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this_1.totalPages[page]['Collection'][i];\n var legendElement = render.createGroup({ id: treemap.element.id + '_Legend_Index_' + i });\n var legendText = collection['DisplayText'];\n var shapeId = treemap.element.id + '_Legend_Shape_Index_' + i;\n var textId = treemap.element.id + '_Legend_Text_Index_' + i;\n var shapeLocation = collection['Shape'];\n var textLocation = collection['Text'];\n if (treemap.enableRtl) {\n legendRtlLocation = this_1.defaultLegendRtlLocation(collection, spacing, treemap, legend);\n shapeLocation = legendRtlLocation['shapeLocation'];\n textLocation = legendRtlLocation['textLocation'];\n }\n eventArgs = {\n cancel: false, name: legendItemRendering, treemap: treemap, fill: collection['Fill'],\n shape: legend.shape, imageUrl: legend.imageUrl\n };\n this_1.treemap.trigger(legendItemRendering, eventArgs, function (observedArgs) {\n var renderOptions = new PathOption(shapeId, observedArgs.fill, strokeWidth_1, isLineShape_1 ? collection['Fill'] : strokeColor_1, legend.opacity, '');\n legendElement.appendChild(drawSymbol(shapeLocation, observedArgs.shape, shapeSize, observedArgs.imageUrl, renderOptions, legendText));\n textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'start', legendText, '', '');\n renderTextElement(textOptions, legend.textStyle, legend.textStyle.color || _this.treemap.themeStyle.legendTextColor, legendElement);\n _this.legendGroup.appendChild(legendElement);\n });\n };\n var this_1 = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (var i = 0; i < this.totalPages[page]['Collection'].length; i++) {\n _loop_1(i);\n }\n var pagingGroup = void 0;\n var width = spacing;\n var height = (spacing / 2);\n if (this.page !== 0) {\n var pagingText = (page + 1) + '/' + this.totalPages.length;\n var pagingFont = legend.textStyle;\n var pagingTextSize = measureText(pagingText, pagingFont);\n var leftPageX = (this.legendItemRect.x + this.legendItemRect.width) - pagingTextSize.width -\n (width * 2) - spacing;\n var rightPageX = (this.legendItemRect.x + this.legendItemRect.width);\n var locY = (this.legendItemRect.y + this.legendItemRect.height) + (height / 2) + spacing;\n var pageTextX = rightPageX - width - (pagingTextSize.width / 2) - (spacing / 2);\n pagingGroup = render.createGroup({ id: treemap.element.id + '_Legend_Paging_Group' });\n var leftPageElement = render.createGroup({ id: treemap.element.id + '_Legend_Left_Paging_Group' });\n var rightPageElement = render.createGroup({ id: treemap.element.id + '_Legend_Right_Paging_Group' });\n var rightPath = ' M ' + rightPageX + ' ' + locY + ' L ' + (rightPageX - width) + ' ' + (locY - height) +\n ' L ' + (rightPageX - width) + ' ' + (locY + height) + ' z ';\n var leftPath = ' M ' + leftPageX + ' ' + locY + ' L ' + (leftPageX + width) + ' ' + (locY - height) +\n ' L ' + (leftPageX + width) + ' ' + (locY + height) + ' z ';\n var leftPageOptions = new PathOption(treemap.element.id + '_Left_Page', '#a6a6a6', 0, '#a6a6a6', 1, '', leftPath);\n leftPageElement.appendChild(render.drawPath(leftPageOptions));\n var leftRectPageOptions = new RectOption(treemap.element.id + '_Left_Page_Rect', 'transparent', {}, 1, new Rect(leftPageX - (width / 2), (locY - (height * 2)), width * 2, spacing * 2), '');\n leftPageElement.appendChild(render.drawRectangle(leftRectPageOptions));\n this.wireEvents(leftPageElement);\n var rightPageOptions = new PathOption(treemap.element.id + '_Right_Page', '#a6a6a6', 0, '#a6a6a6', 1, '', rightPath);\n rightPageElement.appendChild(render.drawPath(rightPageOptions));\n var rightRectPageOptions = new RectOption(treemap.element.id + '_Right_Page_Rect', 'transparent', {}, 1, new Rect((rightPageX - width), (locY - height), width, spacing), '');\n rightPageElement.appendChild(render.drawRectangle(rightRectPageOptions));\n this.wireEvents(rightPageElement);\n pagingGroup.appendChild(leftPageElement);\n pagingGroup.appendChild(rightPageElement);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var pageTextOptions = {\n 'id': treemap.element.id + '_Paging_Text',\n 'x': pageTextX,\n 'y': locY + (pagingTextSize.height / 4),\n 'fill': '#a6a6a6',\n 'font-size': '14px',\n 'font-style': pagingFont.fontStyle,\n 'font-family': pagingFont.fontFamily,\n 'font-weight': pagingFont.fontWeight,\n 'text-anchor': 'middle',\n 'transform': '',\n 'opacity': 1,\n 'dominant-baseline': ''\n };\n pagingGroup.appendChild(render.createText(pageTextOptions, pagingText));\n this.legendGroup.appendChild(pagingGroup);\n }\n }\n };\n TreeMapLegend.prototype.renderLegendBorder = function () {\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n var legendTitle = legend.title.text;\n var spacing = 10;\n var textStyle = legend.titleStyle;\n var textOptions;\n var title = textTrim((this.legendItemRect.width + (spacing * 2)), legendTitle, textStyle);\n var textSize = measureText(title, textStyle);\n this.legendBorderRect = new Rect((this.legendItemRect.x - spacing), (this.legendItemRect.y - spacing - textSize.height), (this.legendItemRect.width) + (spacing * 2), (this.legendItemRect.height) + (spacing * 2) + textSize.height +\n (legend.mode === 'Interactive' ? 0 : (this.page !== 0) ? spacing : 0));\n var renderOptions = new RectOption(treemap.element.id + '_Legend_Border', legend.background, legend.border, 1, this.legendBorderRect, '');\n var legendBorder = treemap.renderer.drawRectangle(renderOptions);\n legendBorder.style.pointerEvents = 'none';\n this.legendGroup.appendChild(legendBorder);\n this.getLegendAlignment(treemap, this.legendBorderRect.width, this.legendBorderRect.height, legend);\n this.legendGroup.setAttribute('transform', 'translate( ' + (this.translate.x + (-(this.legendBorderRect.x))) + ' ' +\n (this.translate.y + (-(this.legendBorderRect.y))) + ' )');\n treemap.svgObject.appendChild(this.legendGroup);\n };\n TreeMapLegend.prototype.renderLegendTitle = function () {\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n var textStyle = legend.titleStyle;\n var legendTitle = legend.title.text;\n var textOptions;\n var spacing = 10;\n var trimTitle = textTrim((this.legendItemRect.width + (spacing * 2)), legendTitle, textStyle);\n var textSize = measureText(trimTitle, textStyle);\n if (legendTitle) {\n textOptions = new TextOption(treemap.element.id + '_LegendTitle', (this.legendItemRect.x) + (this.legendItemRect.width / 2), this.legendItemRect.y - (textSize.height / 2) - (spacing / 2), 'middle', trimTitle, '');\n renderTextElement(textOptions, textStyle, textStyle.color || this.treemap.themeStyle.legendTitleColor, this.legendGroup);\n }\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To rendered the interactive pointer\n */\n TreeMapLegend.prototype.renderInteractivePointer = function (e) {\n var treemap = this.treemap;\n var target = e.target;\n var interactiveId = treemap.element.id + '_Interactive_Legend';\n target = !(e.type.indexOf('touch') > -1) ? target :\n document.elementFromPoint(e.changedTouches[0].clientX, e.changedTouches[0].clientY);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetItem;\n var legend = treemap.legendSettings;\n if (target.id.indexOf('_Item_Index') > -1 && legend.visible && this.legendRenderingCollections.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = void 0;\n var legendRect = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var rect = void 0;\n var data = void 0;\n var fill = void 0;\n var stroke = void 0;\n var strokeWidth = void 0;\n var legendElement = void 0;\n targetItem = treemap.layout.renderItems[parseFloat(target.id.split('_Item_Index_')[1])];\n var svgRect = treemap.svgObject.getBoundingClientRect();\n for (var i = 0; i < this.legendCollections.length; i++) {\n currentData = this.legendCollections[i];\n legendElement = document.getElementById(treemap.element.id + '_Legend_Index_' + i);\n legendRect = legendElement.getBoundingClientRect();\n var rect_1 = new Rect(Math.abs(legendRect.left - svgRect.left), Math.abs(legendRect.top - svgRect.top), legendRect.width, legendRect.height);\n fill = legendElement.getAttribute('fill');\n stroke = legend.shapeBorder.color;\n strokeWidth = legend.shapeBorder.width;\n if (!isNullOrUndefined(currentData['legendData'])) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data = currentData['legendData'];\n for (var j = 0; j < data.length; j++) {\n if (data[j]['levelOrderName'] === targetItem['levelOrderName']) {\n this.drawInteractivePointer(legend, fill, stroke, interactiveId, strokeWidth, rect_1);\n break;\n }\n }\n }\n }\n }\n else {\n this.removeInteractivePointer();\n }\n };\n TreeMapLegend.prototype.drawInteractivePointer = function (legend, fill, stroke, id, strokeWidth, rect) {\n var path;\n var locX;\n var locY;\n var height = 10;\n var width = 10;\n var direction = (legend.orientation === 'None') ? (legend.position === 'Top' || legend.position === 'Bottom')\n ? 'Horizontal' : 'Vertical' : legend.orientation;\n if (direction === 'Horizontal') {\n if (!legend.invertedPointer) {\n locX = rect.x + (rect.width / 2);\n locY = rect.y;\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX - width) + ' ' + (locY - height) +\n ' L ' + (locX + width) + ' ' + (locY - height) + ' Z ';\n }\n else {\n locX = rect.x + (rect.width / 2);\n locY = rect.y + (rect.height);\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX - width) + ' ' + (locY + height) +\n ' L ' + (locX + width) + ' ' + (locY + height) + ' Z ';\n }\n }\n else {\n if (!legend.invertedPointer) {\n locX = rect.x + (rect.width);\n locY = rect.y + (rect.height / 2);\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX + width) + ' ' + (locY - height) +\n ' L ' + (locX + width) + ' ' + (locY + height) + ' z ';\n }\n else {\n locX = rect.x;\n locY = rect.y + (rect.height / 2);\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX - width) + ' ' + (locY - height) +\n ' L ' + (locX - width) + ' ' + (locY + height) + ' z ';\n }\n }\n var pathOptions = new PathOption(id, fill, strokeWidth, stroke, 1, '', path);\n this.treemap.svgObject.appendChild(this.treemap.renderer.drawPath(pathOptions));\n };\n TreeMapLegend.prototype.getLegendAlignment = function (treemap, width, height, legend) {\n var x;\n var y;\n var spacing = 10;\n var totalRect;\n // eslint-disable-next-line prefer-const\n totalRect = extend({}, treemap.areaRect, totalRect, true);\n var areaX = totalRect.x;\n var areaY = totalRect.y;\n var areaHeight = totalRect.height;\n var areaWidth = totalRect.width;\n var totalWidth = treemap.availableSize.width;\n var totalHeight = treemap.availableSize.height;\n var position = legend.position === 'Auto' ? (totalWidth > totalHeight) ? 'Right' : 'Bottom' : legend.position;\n if (legend.position === 'Float') {\n this.translate = legend.location;\n }\n else {\n switch (position) {\n case 'Top':\n case 'Bottom':\n totalRect.height = (areaHeight - height);\n x = (totalWidth / 2) - (width / 2);\n y = (position === 'Top') ? areaY : (areaY + totalRect.height) + spacing;\n totalRect.y = (position === 'Top') ? areaY + height + spacing : areaY;\n break;\n case 'Left':\n case 'Right':\n totalRect.width = (areaWidth - width);\n x = (position === 'Left') ? areaX : areaX + totalRect.width;\n y = (totalHeight / 2) - (height / 2);\n totalRect.x = (position === 'Left') ? areaX + width : areaX;\n break;\n }\n switch (legend.alignment) {\n case 'Near':\n if (position === 'Top' || position === 'Bottom') {\n x = totalRect.x;\n }\n else {\n y = totalRect.y;\n }\n break;\n case 'Far':\n if (position === 'Top' || position === 'Bottom') {\n x = totalWidth - width;\n }\n else {\n y = totalHeight - height;\n }\n break;\n }\n this.treemap.totalRect = totalRect;\n this.translate = new Location(x, y);\n }\n };\n TreeMapLegend.prototype.mouseUpHandler = function (e) {\n this.renderInteractivePointer(e);\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeInteractivePointer.bind(this), 3000);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To remove the interactive pointer\n */\n TreeMapLegend.prototype.removeInteractivePointer = function () {\n if (document.getElementById(this.treemap.element.id + '_Interactive_Legend')) {\n var legendElementId = document.getElementById(this.treemap.element.id + '_Interactive_Legend');\n legendElementId.parentNode.removeChild(legendElementId);\n }\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To change the next page\n */\n TreeMapLegend.prototype.changeNextPage = function (e) {\n this.currentPage = (e.target.id.indexOf('_Left_Page_') > -1) ? (this.currentPage - 1) :\n (this.currentPage + 1);\n this.drawLegend();\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * Wire events for event handler\n */\n TreeMapLegend.prototype.wireEvents = function (element) {\n EventHandler.add(element, Browser.touchStartEvent, this.changeNextPage, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To add the event listener\n */\n TreeMapLegend.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.renderInteractivePointer, this);\n this.treemap.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To remove the event listener\n */\n TreeMapLegend.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.renderInteractivePointer);\n this.treemap.off(Browser.touchEndEvent, this.mouseUpHandler);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * Get module name.\n */\n TreeMapLegend.prototype.getModuleName = function () {\n return 'treeMapLegend';\n };\n /**\n * To destroy the legend.\n *\n * @param {TreeMap} treemap - Specifies treemap instance\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.destroy = function (treemap) {\n /**\n * Destroy method performed here\n */\n this.removeEventListener();\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * Get the gradient color for interactive legend.\n */\n TreeMapLegend.prototype.legendGradientColor = function (colorMap, legendIndex) {\n var legendFillColor;\n var xmlns = 'http://www.w3.org/2000/svg';\n if (!isNullOrUndefined(colorMap.color) && Object.prototype.toString.call(colorMap.color) === '[object Array]') {\n var defElement = this.treemap.renderer.createDefs();\n var linerGradientEle = document.createElementNS(xmlns, 'linearGradient');\n var opacity = 1;\n var position = this.treemap.legendSettings.position;\n var x2 = position === 'Top' || position === 'Bottom' ? '100' : '0';\n var y2 = position === 'Top' || position === 'Bottom' ? '0' : '100';\n linerGradientEle.setAttribute('id', 'linear_' + legendIndex);\n linerGradientEle.setAttribute('x1', 0 + '%');\n linerGradientEle.setAttribute('y1', 0 + '%');\n linerGradientEle.setAttribute('x2', x2 + '%');\n linerGradientEle.setAttribute('y2', y2 + '%');\n for (var b = 0; b < colorMap.color.length; b++) {\n var offsetColor = 100 / (colorMap.color.length - 1);\n var stopEle = document.createElementNS(xmlns, 'stop');\n stopEle.setAttribute('offset', b * offsetColor + '%');\n stopEle.setAttribute('stop-color', colorMap.color[b]);\n stopEle.setAttribute('stop-opacity', opacity.toString());\n linerGradientEle.appendChild(stopEle);\n }\n defElement.appendChild(linerGradientEle);\n this.legendLinearGradient = linerGradientEle;\n var color = 'url(' + '#linear_' + legendIndex + ')';\n this.defsElement.appendChild(linerGradientEle);\n legendFillColor = color;\n }\n return legendFillColor;\n };\n return TreeMapLegend;\n}());\nexport { TreeMapLegend };\n","import { Browser } from '@syncfusion/ej2-base';\nimport { itemHighlight, itemSelected } from '../model/constants';\nimport { findHightLightItems, removeClassNames, applyOptions, removeShape, removeLegend, removeSelectionWithHighlight, setColor, getLegendIndex, pushCollection, setItemTemplateContent } from '../utils/helper';\n/**\n * Performing treemap highlight\n */\nvar TreeMapHighlight = /** @class */ (function () {\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function TreeMapHighlight(treeMap) {\n this.target = 'highlight';\n this.shapeTarget = 'highlight';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.shapeHighlightCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendHighlightCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentElement = [];\n this.treemap = treeMap;\n this.addEventListener();\n }\n /* eslint-disable max-len */\n // eslint-disable-next-line valid-jsdoc\n /**\n * Mouse down event in highlight\n */\n TreeMapHighlight.prototype.mouseMove = function (e) {\n var treemap = this.treemap;\n var processHighlight;\n var targetId = e.target.id;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var eventArgs;\n var items = [];\n var highlight = this.treemap.highlightSettings;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n var highLightElements = [];\n var process;\n var treeMapElement;\n var element;\n var orders;\n var selectionModule = this.treemap.treeMapSelectionModule;\n if (targetId.indexOf('_Item_Index') > -1 && (selectionModule ? this.treemap.selectionId !== targetId : true)) {\n if (this.highLightId !== targetId) {\n treeMapElement = document.getElementById(treemap.element.id + '_TreeMap_' + treemap.layoutType + '_Layout');\n var selectionElements = document.getElementsByClassName('treeMapSelection');\n item = this.treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n var index = void 0;\n if (this.treemap.legendSettings.visible) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n var length_1 = this.treemap.treeMapLegendModule.legendCollections.length;\n index = getLegendIndex(length_1, item, treemap);\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index) : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index);\n if (this.shapeElement !== null && (selectionModule ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true)) {\n if (selectionModule ? this.shapeElement !== selectionModule.shapeElement : true) {\n this.currentElement.push({ currentElement: this.shapeElement });\n removeShape(this.shapeHighlightCollection, 'highlight');\n this.shapeHighlightCollection.push({ legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n setColor(this.shapeElement, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n this.target = 'highlight';\n }\n else if (this.currentElement.length > 0 && this.currentElement[this.currentElement.length - 1]['currentElement'] !== this.shapeElement) {\n removeSelectionWithHighlight(this.shapeHighlightCollection, this.currentElement, treemap);\n this.highLightId = '';\n }\n }\n else if (this.currentElement.length > 0 && this.currentElement[this.currentElement.length - 1]['currentElement'] !== this.shapeElement) {\n removeSelectionWithHighlight(this.shapeHighlightCollection, this.currentElement, treemap);\n this.highLightId = '';\n }\n }\n orders = findHightLightItems(item, [], highlight.mode, treemap);\n if (this.treemap.legendSettings.visible ? selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true : true) {\n if (this.treemap.legendSettings.visible ? selectionModule ? this.shapeElement !== selectionModule.shapeElement : true : true) {\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n process = true;\n item = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])];\n for (var j = 0; j < selectionElements.length; j++) {\n if (element.id === selectionElements[j].id) {\n process = false;\n break;\n }\n }\n if (orders.indexOf(item['levelOrderName']) > -1 && process) {\n highLightElements.push(element);\n items.push(item);\n }\n }\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n for (var k = 0; k < highLightElements.length; k++) {\n element = highLightElements[k];\n applyOptions(element.childNodes[0], { border: highlight.border, fill: highlight.fill, opacity: highlight.opacity });\n element.classList.add('treeMapHighLight');\n this.highLightId = targetId;\n }\n eventArgs = { cancel: false, name: itemHighlight, treemap: treemap, items: items, elements: highLightElements };\n treemap.trigger(itemHighlight, eventArgs);\n }\n else {\n processHighlight = false;\n }\n }\n }\n }\n else if (targetId.indexOf('_Legend_Shape') > -1 || targetId.indexOf('_Legend_Index') > -1) {\n if (this.treemap.legendSettings.visible && (selectionModule ? selectionModule.legendSelectId !== targetId : true) && (selectionModule ? selectionModule.shapeSelectId !== targetId : true)) {\n var itemIndex = void 0;\n var groupIndex = void 0;\n var length_2;\n var targetEle = document.getElementById(targetId);\n if (this.shapeTarget === 'highlight') {\n removeLegend(this.legendHighlightCollection, 'highlight');\n }\n this.shapeTarget = 'highlight';\n var index = this.treemap.legendSettings.mode === 'Default' ? parseFloat(targetId.split('_Legend_Shape_Index_')[1]) : parseFloat(targetId.split('_Legend_Index_')[1]);\n var dataLength = this.treemap.treeMapLegendModule.legendCollections[index]['legendData'].length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n var legendIndex = parseInt(targetId[targetId.length - 1], 10);\n for (var i = 0; i < dataLength; i++) {\n for (var j = 0; j < this.treemap.layout.renderItems.length; j++) {\n if (this.treemap.treeMapLegendModule.legendCollections[index]['legendData'][i]['levelOrderName'] === this.treemap.layout.renderItems[j]['levelOrderName']) {\n itemIndex = j;\n groupIndex = this.treemap.layout.renderItems[j]['groupIndex'];\n var nodeEle = document.getElementById(this.treemap.element.id + '_Level_Index_' + groupIndex + '_Item_Index_' + itemIndex + '_RectPath');\n if (i === 0) {\n this.legendHighlightCollection = [];\n pushCollection(this.legendHighlightCollection, legendIndex, j, targetEle, nodeEle, this.treemap.layout.renderItems, collection);\n length_2 = this.legendHighlightCollection.length;\n this.legendHighlightCollection[length_2 - 1]['ShapeCollection'] = { Elements: [] };\n }\n setColor(targetEle, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n setColor(nodeEle, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n length_2 = this.legendHighlightCollection.length;\n this.legendHighlightCollection[length_2 - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n }\n }\n else {\n if (selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true) {\n if (selectionModule ? this.shapeElement !== selectionModule.shapeElement : true && this.treemap.legendSettings.visible) {\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n }\n }\n if ((this.shapeTarget === 'highlight' || this.target === 'highlight') && this.treemap.legendSettings.visible) {\n if (selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true) {\n if (selectionModule ? this.shapeElement !== selectionModule.shapeElement : true && selectionModule ? selectionModule.legendSelect : true) {\n removeShape(this.shapeHighlightCollection, 'highlight');\n this.shapeHighlightCollection = [];\n }\n }\n }\n if (this.shapeTarget === 'highlight' && this.treemap.legendSettings.visible) {\n removeLegend(this.legendHighlightCollection, 'highlight');\n }\n this.highLightId = '';\n processHighlight = false;\n }\n return processHighlight;\n };\n /**\n * To bind events for highlight\n *\n * @returns {void}\n */\n TreeMapHighlight.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.mouseMove, this);\n };\n /**\n * To unbind events for highlight\n *\n * @returns {void}\n */\n TreeMapHighlight.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.mouseMove);\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name\n */\n TreeMapHighlight.prototype.getModuleName = function () {\n return 'treeMapHighlight';\n };\n /**\n * To destroy the hightlight.\n *\n * @param {TreeMap} treeMap - Specifies the instance of the treemap.\n * @returns {void}\n * @private\n */\n TreeMapHighlight.prototype.destroy = function (treeMap) {\n this.removeEventListener();\n };\n return TreeMapHighlight;\n}());\nexport { TreeMapHighlight };\n/**\n * Performing treemap selection\n */\nvar TreeMapSelection = /** @class */ (function () {\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function TreeMapSelection(treeMap) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.shapeSelectionCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendSelectionCollection = [];\n this.shapeSelect = true;\n this.legendSelect = true;\n this.treemap = treeMap;\n this.addEventListener();\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * Mouse down event in selection\n */\n TreeMapSelection.prototype.mouseDown = function (e) {\n var targetEle = e.target;\n var eventArgs;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var treemap = this.treemap;\n treemap.levelSelection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var items = [];\n var targetId = targetEle.id;\n var labelText = targetEle.innerHTML;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n var selectionElements = [];\n var opacity;\n var treeMapElement;\n var element;\n var orders;\n var selection = treemap.selectionSettings;\n var highlightModule = this.treemap.treeMapHighlightModule;\n var layoutID = treemap.element.id + '_TreeMap_' + treemap.layoutType + '_Layout';\n if (targetId.indexOf('_Item_Index') > -1) {\n e.preventDefault();\n if (this.treemap.selectionId !== targetId && this.legendSelect) {\n treeMapElement = document.getElementById(layoutID);\n item = treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n var index = void 0;\n if (this.treemap.legendSettings.visible) {\n this.shapeSelect = false;\n var length_3 = this.treemap.treeMapLegendModule.legendCollections.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n this.shapeElement = undefined;\n removeShape(this.shapeSelectionCollection, 'selection');\n if (highlightModule) {\n highlightModule.shapeTarget = 'selection';\n highlightModule.shapeHighlightCollection = [];\n }\n index = getLegendIndex(length_3, item, treemap);\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index) : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index);\n if (this.shapeElement !== null) {\n this.shapeSelectId = this.shapeElement.getAttribute('id');\n this.shapeSelectionCollection.push({ legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n setColor(this.shapeElement, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n }\n }\n orders = findHightLightItems(item, [], selection.mode, treemap);\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n item = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])];\n if (orders.indexOf(item['levelOrderName']) > -1) {\n selectionElements.push(element);\n treemap.levelSelection.push(element.id);\n items.push(item);\n }\n }\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', treemap);\n this.treemap.selectionId = targetId;\n var highLightElements = document.getElementsByClassName('treeMapHighLight');\n for (var k = 0; k < selectionElements.length; k++) {\n element = selectionElements[k];\n if (highLightElements.length > 0) {\n for (var j = 0; j < highLightElements.length; j++) {\n if (highLightElements[j].id === element.id) {\n highLightElements[j].classList.remove('treeMapHighLight');\n }\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n else {\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n eventArgs = { cancel: false, name: itemSelected, treemap: treemap, items: items, elements: selectionElements,\n text: labelText, contentItemTemplate: labelText };\n treemap.trigger(itemSelected, eventArgs, function (observedArgs) {\n if (observedArgs.contentItemTemplate !== labelText) {\n setItemTemplateContent(targetId, targetEle, observedArgs.contentItemTemplate);\n }\n });\n }\n }\n else {\n removeShape(this.shapeSelectionCollection, 'selection');\n this.shapeSelectionCollection = [];\n this.shapeElement = undefined;\n this.shapeSelect = true;\n this.shapeSelectId = '';\n this.treemap.legendId = [];\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', treemap);\n this.treemap.selectionId = '';\n }\n }\n else if (targetId.indexOf('_Legend_Shape') > -1 || targetId.indexOf('_Legend_Index') > -1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n if (this.treemap.legendSettings.visible && this.legendSelectId !== targetId && this.shapeSelect) {\n var itemIndex = void 0;\n var groupIndex = void 0;\n var length_4;\n this.legendSelectId = targetId;\n this.legendSelect = false;\n var legendIndex = parseInt(targetId[targetId.length - 1], 10);\n var targetEle_1 = document.getElementById(targetId);\n removeLegend(this.legendSelectionCollection, 'selection');\n if (highlightModule) {\n highlightModule.shapeTarget = 'selection';\n }\n var index = this.treemap.legendSettings.mode === 'Default' ? parseFloat(targetId.split('_Legend_Shape_Index_')[1]) : parseFloat(targetId.split('_Legend_Index_')[1]);\n var dataLength = this.treemap.treeMapLegendModule.legendCollections[index]['legendData'].length;\n for (var k = 0; k < dataLength; k++) {\n for (var l = 0; l < this.treemap.layout.renderItems.length; l++) {\n if (this.treemap.treeMapLegendModule.legendCollections[index]['legendData'][k]['levelOrderName'] === this.treemap.layout.renderItems[l]['levelOrderName']) {\n itemIndex = l;\n groupIndex = this.treemap.layout.renderItems[l]['groupIndex'];\n var nodeEle = document.getElementById(this.treemap.element.id + '_Level_Index_' + groupIndex + '_Item_Index_' + itemIndex + '_RectPath');\n if (k === 0) {\n pushCollection(this.legendSelectionCollection, legendIndex, l, targetEle_1, nodeEle, this.treemap.layout.renderItems, collection);\n length_4 = this.legendSelectionCollection.length;\n this.legendSelectionCollection[length_4 - 1]['ShapeCollection'] = { Elements: [] };\n }\n setColor(targetEle_1, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n setColor(nodeEle, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n length_4 = this.legendSelectionCollection.length;\n this.legendSelectionCollection[length_4 - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n }\n else {\n removeLegend(this.legendSelectionCollection, 'Selection');\n if (highlightModule) {\n highlightModule.shapeTarget = 'highlight';\n }\n this.legendSelect = true;\n this.legendSelectId = '';\n }\n }\n };\n /**\n * @param {string} levelOrder - Specifies the level order of treemap item\n * @param {boolean} enable - Specifies the boolean value\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.selectTreemapItem = function (levelOrder, enable) {\n if (enable) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = void 0;\n for (var s = 0; s < this.treemap.layout.renderItems.length; s++) {\n if (levelOrder === this.treemap.layout.renderItems[s]['levelOrderName']) {\n item = this.treemap.layout.renderItems[s];\n break;\n }\n }\n var selection = this.treemap.selectionSettings;\n var selectionElements = [];\n var element = void 0;\n var index = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var items = [];\n this.treemap.levelSelection = [];\n var layoutID = this.treemap.element.id + '_TreeMap_' + this.treemap.layoutType + '_Layout';\n var treeMapElement = document.getElementById(layoutID);\n var orders = findHightLightItems(item, [], selection.mode, this.treemap);\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n item = this.treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])];\n if (orders.indexOf(item['levelOrderName']) > -1) {\n selectionElements.push(element);\n this.treemap.levelSelection.push(element.id);\n items.push(item);\n }\n }\n if (this.treemap.legendSettings.visible) {\n for (var m = 0; m < items.length; m++) {\n this.shapeSelect = false;\n var length_5 = this.treemap.treeMapLegendModule.legendCollections.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n this.shapeElement = undefined;\n removeShape(this.shapeSelectionCollection, 'selection');\n index = getLegendIndex(length_5, items[m], this.treemap);\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index) : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index);\n if (this.shapeElement !== null) {\n this.shapeSelectId = this.shapeElement.getAttribute('id');\n this.treemap.legendId.push(this.shapeSelectId);\n this.shapeSelectionCollection.push({\n legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n setColor(this.shapeElement, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n }\n }\n }\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', this.treemap);\n var selectionElement = document.getElementById(this.treemap.levelSelection[0]);\n this.treemap.selectionId = selectionElement.childNodes[0]['id'];\n var highLightElements = document.getElementsByClassName('treeMapHighLight');\n for (var k = 0; k < selectionElements.length; k++) {\n element = selectionElements[k];\n if (highLightElements.length > 0) {\n for (var j = 0; j < highLightElements.length; j++) {\n if (highLightElements[j].id === element.id) {\n highLightElements[j].classList.remove('treeMapHighLight');\n }\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n else {\n selection.fill = selection.fill === 'null' ?\n this.treemap.layout.renderItems[parseInt(element.id.split('Item_Index_')[1], 10)]['options']['fill']\n : selection.fill;\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n }\n else {\n removeShape(this.shapeSelectionCollection, 'selection');\n this.shapeElement = undefined;\n this.treemap.levelSelection = [];\n this.shapeSelect = true;\n this.shapeSelectId = '';\n this.treemap.legendId = [];\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', this.treemap);\n this.treemap.selectionId = '';\n }\n };\n /**\n * To bind events for selection\n *\n * @returns {void}\n */\n TreeMapSelection.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchStartEvent, this.mouseDown, this);\n };\n /**\n * To unbind events for selection\n *\n * @returns {void}\n */\n TreeMapSelection.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchStartEvent, this.mouseDown);\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n TreeMapSelection.prototype.getModuleName = function () {\n return 'treeMapSelection';\n };\n /**\n * To destroy the selection.\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.destroy = function (treeMap) {\n this.removeEventListener();\n };\n return TreeMapSelection;\n}());\nexport { TreeMapSelection };\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport { Tooltip } from '@syncfusion/ej2-svg-base';\nimport { Browser, createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getMousePosition, textFormatter, formatValue } from '../utils/helper';\nimport { tooltipRendering } from '../model/constants';\n/**\n * Render Tooltip\n */\nvar TreeMapTooltip = /** @class */ (function () {\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function TreeMapTooltip(treeMap) {\n this.treemap = treeMap;\n this.tooltipSettings = this.treemap.tooltipSettings;\n this.tooltipId = this.treemap.element.id + '_TreeMapTooltip';\n this.addEventListener();\n }\n TreeMapTooltip.prototype.renderTooltip = function (e) {\n var _this = this;\n var pageX;\n var pageY;\n var target;\n var touchArg;\n var tootipArgs;\n if (e.type.indexOf('touch') !== -1) {\n this.isTouch = true;\n touchArg = e;\n pageX = touchArg.changedTouches[0].pageX;\n pageY = touchArg.changedTouches[0].pageY;\n target = touchArg.target;\n }\n else {\n this.isTouch = e.pointerType === 'touch';\n pageX = e.pageX;\n pageY = e.pageY;\n target = e.target;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value;\n var targetId = target.id;\n var item = {};\n var tooltipEle;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var location;\n var toolTipHeader;\n var toolTipData = {};\n var tooltipContent = [];\n var markerFill;\n if (targetId.indexOf('_Item_Index') > -1) {\n item = this.treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n if (!isNullOrUndefined(item)) {\n toolTipHeader = item['name'];\n value = item['weight'];\n toolTipData = item['data'];\n markerFill = item['options']['fill'];\n if (this.treemap.enableRtl) {\n tooltipContent = [textFormatter(this.tooltipSettings.format, toolTipData, this.treemap) ||\n formatValue(value, this.treemap) + ' : ' + this.treemap.weightValuePath.toString()];\n }\n else {\n tooltipContent = [textFormatter(this.tooltipSettings.format, toolTipData, this.treemap) ||\n this.treemap.weightValuePath.toString() + ' : ' + formatValue(value, this.treemap)];\n }\n if (document.getElementById(this.tooltipId)) {\n tooltipEle = document.getElementById(this.tooltipId);\n }\n else {\n tooltipEle = createElement('div', {\n id: this.treemap.element.id + '_TreeMapTooltip',\n className: 'EJ2-TreeMap-Tooltip',\n styles: 'position: absolute;pointer-events:none;'\n });\n document.getElementById(this.treemap.element.id + '_Secondary_Element').appendChild(tooltipEle);\n }\n location = getMousePosition(pageX, pageY, this.treemap.svgObject);\n location.y = (this.tooltipSettings.template) ? location.y + 10 : location.y;\n this.tooltipSettings.textStyle.fontFamily = this.treemap.themeStyle.fontFamily;\n this.tooltipSettings.textStyle.color = this.treemap.themeStyle.tooltipFontColor\n || this.tooltipSettings.textStyle.color;\n this.tooltipSettings.textStyle.opacity = this.treemap.themeStyle.tooltipTextOpacity\n || this.tooltipSettings.textStyle.opacity;\n tootipArgs = {\n cancel: false, name: tooltipRendering, item: item,\n options: {\n location: location, text: tooltipContent, data: toolTipData,\n textStyle: this.tooltipSettings.textStyle, template: this.tooltipSettings.template\n },\n treemap: this.treemap,\n element: target, eventArgs: e\n };\n this.treemap.trigger(tooltipRendering, tootipArgs, function (args) {\n _this.addTooltip(tootipArgs, markerFill, tooltipEle);\n });\n }\n }\n else {\n this.removeTooltip();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.clearTemplate();\n }\n };\n TreeMapTooltip.prototype.addTooltip = function (tootipArgs, markerFill, tooltipEle, eventArgs) {\n var cancel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var args;\n if (!isNullOrUndefined(tootipArgs)) {\n var c = tootipArgs.cancel, otherArgs = __rest(tootipArgs, [\"cancel\"]);\n cancel = c;\n args = otherArgs.options;\n }\n else {\n cancel = eventArgs.cancel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args = eventArgs;\n }\n if (!cancel) {\n this.svgTooltip = new Tooltip({\n enable: true,\n header: '',\n data: args['data'],\n template: args['template'],\n content: args['text'],\n shapes: [],\n location: args['location'],\n palette: [markerFill],\n areaBounds: this.treemap.areaRect,\n textStyle: args['textStyle'],\n fill: this.treemap.tooltipSettings.fill ? this.treemap.tooltipSettings.fill : this.treemap.themeStyle.tooltipFillColor\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.treemap.isVue || this.treemap.isVue3) {\n this.svgTooltip.controlInstance = this.treemap;\n }\n this.svgTooltip.opacity = this.treemap.themeStyle.tooltipFillOpacity || this.svgTooltip.opacity;\n this.svgTooltip.appendTo(tooltipEle);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.renderReactTemplates();\n }\n else {\n this.removeTooltip();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.clearTemplate();\n }\n };\n TreeMapTooltip.prototype.mouseUpHandler = function (e) {\n this.renderTooltip(e);\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeTooltip.bind(this), 2000);\n };\n TreeMapTooltip.prototype.removeTooltip = function () {\n if (document.getElementsByClassName('EJ2-TreeMap-Tooltip').length > 0) {\n var tooltipElementId = document.getElementsByClassName('EJ2-TreeMap-Tooltip')[0];\n tooltipElementId.parentNode.removeChild(tooltipElementId);\n }\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To bind events for tooltip module\n */\n TreeMapTooltip.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.renderTooltip, this);\n this.treemap.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To unbind events for tooltip module\n */\n TreeMapTooltip.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.renderTooltip);\n this.treemap.off(Browser.touchEndEvent, this.mouseUpHandler);\n };\n /**\n * Get module name.\n *\n * @returns {string} returns string\n */\n TreeMapTooltip.prototype.getModuleName = function () {\n return 'treeMapTooltip';\n };\n /**\n * To destroy the tooltip.\n *\n * @param {TreeMap} treeMap - Specifies the instance of the treemap\n * @returns {void}\n * @private\n */\n TreeMapTooltip.prototype.destroy = function (treeMap) {\n /**\n * Destroy method performed here\n */\n this.removeEventListener();\n };\n return TreeMapTooltip;\n}());\nexport { TreeMapTooltip };\n","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","styles","elementLength","templateHtml","RegExp","toString","findLabelLocation","rect","labelSize","getBoundingClientRect","areaRect","Math","abs","enableDrillDown","renderDirection","measureElement","parentElement","offsetHeight","offsetWidth","measureElementId","parentNode","removeChild","getArea","getShortestEdge","input","container","convertToContainer","min","convertToRect","xOffset","yOffset","getMousePosition","pageX","pageY","elementRect","pageXOffset","ownerDocument","defaultView","pageYOffset","clientTop","documentElement","clientLeft","positionX","positionY","colorMap","colorMapping","equalValue","paths","isNaN","isEqualColor","dataValue","from","to","prototype","call","colorCollections","minOpacity","maxOpacity","deSaturationColor","rangeValue","getColorByValue","rgbToHex","r","g","componentToHex","rbg","Number","getGradientColor","previousOffset","nextOffset","percent","full","previousColor","nextColor","charAt","colorNameToHex","length_1","splitColorValueOffset","splitColor","getPercentageColor","previous","next","prevColor","getPercentage","substr","ColorValue","round","wordWrap","maximumWidth","dataLabel","textCollection","labelCollection","concat","textWrap","resultText","currentLength","totalWidth","totalLength","sliceString","slice","hide","maxHeight","orderByArea","maintainSelection","className","elementId","levelSelection","index","getAttribute","childElementCount","setAttribute","applyOptions","childNodes","border","selectionSettings","legendMaintain","legendGroup","legendId","removeClassNames","elements","parseFloat","classList","remove","textFormatter","format","_i","keys_1","key","join","formatValue","intl","getNumberFormat","useGrouping","useGroupingSeparator","convertToHexCode","hex","convertHexToColor","result","exec","window","getComputedStyle","isRGBValue","drawSymbol","shape","url","svgRenderer","temp","renderLegendShape","htmlElement","functionName","renderOption","renderPath","shapeWidth","shapeHeight","shapeX","shapeY","merge","rx","ry","cx","cy","d","xValue","yValue","cos","PI","sin","href","isParentItem","item","removeShape","collection","setColor","removeLegend","dataCount","k","borderColor","borderWidth","removeSelectionWithHighlight","getElementsByClassName","getLegendIndex","dataLength","treeMapLegendModule","legendCollections","pushCollection","number","legendElement","shapeElement","legendCollection","legendEle","oldFill","oldOpacity","oldBorderColor","oldBorderWidth","shapeOldFill","shapeOldOpacity","shapeOldBorderColor","shapeOldBorderWidth","triggerDownload","fileName","isDownload","attrs","download","toLocaleLowerCase","dispatchEvent","MouseEvent","view","bubbles","cancelable","removeElement","getThemeStyle","theme","toLowerCase","backgroundColor","titleFontColor","subTitleFontColor","tooltipFillColor","tooltipFontColor","legendTitleColor","legendTextColor","tooltipFillOpacity","tooltipTextOpacity","legendFontSize","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_1","i_1","multiplier","datum","onDemandProcess","childItems","parentItem","parentItemGroupname","splice","renderData","txtVisible","getItemColor","eventArgs","_this","pathOptions","templatePosition","renderText","groupId","templateEle","textStyle","elementID","interSectAction","rectPath","secondaryEle","layoutGroup","createGroup","itemGroup","templateGroup","isLeafItem","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","labelEle","templateLocation","textValue","Theme","mapsTitleFont","Print","control","print","printWindow","open","outerHeight","outerWidth","moveTo","resizeTo","screen","availWidth","availHeight","argsData","htmlContent","getHTMLContent","div","cloneNode","Element","getModuleName","destroy","ImageExport","export","allowDownload","Promise","resolve","reject","availableSize","Browser","userAgent","svgData","outerHTML","URL","createObjectURL","Blob","XMLSerializer","serializeToString","image_1","Image","context_1","getContext","onload","drawImage","revokeObjectURL","toDataURL","src","PdfExport","orientation","PdfPageOrientation","Landscape","exportElement","backgroundElement","image","context","PdfDocument","imageString","pageSettings","pages","add","graphics","PdfBitmap","save","TreeMap","isResize","preRender","initPrivateVariable","unWireEVents","createSvg","wireEVents","setCulture","render","renderElements","hierarchyData","createSecondaryElement","addTabIndex","renderBorder","renderTitle","titleSettings","processDataManager","dataModule","queryModule","ajaxModule","localAjax","dataSource","DataManager","query","Query","executeQuery","then","renderTreeMapElements","Ajax","onSuccess","args","JSON","parse","send","processingData","visible","renderLegend","elementChange","isResized","renderComplete","firstChild","hasChildNodes","clearTemplate","containerWidth","containerHeight","secondaryElement","insertBefore","borderElement","background","borderRect","drawRectangle","title","bounds","groupEle","margin","right","trimmedTitle","elementSize","location_1","titleBounds","description","subtitleSettings","bottom","map","checkIsHierarchicalData","data_1","currentData","dataIndex","levelOrderName","weight","processHierarchicalData","processFlatJsonData","reOrderLevelData","findTotalWeight","childData","levelIndex","childItemLevel","childLevel","mainData_1","l","allowPrint","printModule","allowPdfExport","pdfExportModule","allowImageExport","imageExportModule","orderNames","level","childName","name_1","childGroupPath_1","start","currentName","currentPath","prevPath","previousData","IsChildHierarchy","current","isChild","groupObj","EventHandler","clickOnTreeMap","doubleClickOnTreeMap","rightClickOnTreeMap","touchStartEvent","mouseDownOnTreeMap","touchMoveEvent","mouseMoveOnTreeMap","touchEndEvent","mouseEndOnTreeMap","mouseLeaveOnTreeMap","removeEventListener","resizeOnTreeMap","addEventListener","bind","Internationalization","previousSize","currentSize","clearTimeout","contains","setTimeout","refreshing","itemIndex","targetEle","labelText","clickArgs","mouseEvent","preventDefault","doubleTapTimer1","end","Date","getMilliseconds","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","legendTitle","titleTextStyle","titleStyle","legendMode","textX","textY","shapeLocation","orientation_1","legendWidth","legendHeight","legendTitleSize","startX_1","startY_1","shapePadding","legendItem","Page","legendTextSize","maxSize","prvePositionX","nextPositionY","getPageChanged","prevPositionY","nextPositionX","DisplayText","Shape","Text","Fill","Data","legendObj","legendRect","itemTextStyle_1","legendLength_1","rectWidth_1","rectHeight_1","placement","itemStartX","itemStartY","labelAction","labelDisplayMode","maxTextHeight","maxTextWidth","legendText","itemTextSize","textWidth","textHeight","calculateLegendItems","legendFillColor","legendName","showLegendPath","valuePath","removeDuplicateLegend","removeDuplicates","legendFill","legendData","itemArea","isAddData","gradientElement","x2","y2","actualValue","isDuplicate","isRange","outfill","labelLegend","otherIndex","colorMapProcess","isDesaturation","legendIndex","outOfRangeLegend","colorMapping_1","showLegend","isAddNewLegendData","colors","q","stop1Color","colorStop","stop2Color","gradient","drawGradient","legendGradientColor","legendLinearGradient","newDataProcess","itemValue","process","textFont","renderLegendBorder","renderLegendTitle","drawLegendItem","itemId","textId","rectOptions","shapeBorder","translate","defaultLegendRtlLocation","spacing","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","rect_1","drawInteractivePointer","locX","invertedPointer","areaX","areaY","totalHeight","mouseUpHandler","legendElementId","changeNextPage","isDestroyed","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 };\nexport function stringToNumber(value, containerSize) {\n if (value !== null && value !== undefined) {\n return value.indexOf('%') !== -1 ? (containerSize / 100) * parseInt(value, 10) : parseInt(value, 10);\n }\n return null;\n}\n/**\n * Internal use of type rect\n *\n * @private\n */\nvar Rect = /** @class */ (function () {\n function Rect(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n return Rect;\n}());\nexport { Rect };\n/**\n * Internal use of rectangle options\n *\n * @private\n */\nvar RectOption = /** @class */ (function () {\n function RectOption(id, fill, border, opacity, rect, dashArray) {\n this.y = rect.y;\n this.x = rect.x;\n this.height = rect.height;\n this.width = rect.width;\n this.id = id;\n this.fill = fill;\n this.opacity = opacity;\n this.stroke = border.color;\n this['stroke-width'] = border.width;\n this['stroke-dasharray'] = dashArray;\n }\n return RectOption;\n}());\nexport { RectOption };\nvar PathOption = /** @class */ (function () {\n function PathOption(id, fill, width, color, opacity, dashArray, d) {\n this.id = id;\n this.opacity = opacity;\n this.fill = fill;\n this.stroke = color;\n this['stroke-width'] = width;\n this['stroke-dasharray'] = dashArray;\n this.d = d;\n }\n return PathOption;\n}());\nexport { PathOption };\n/**\n * Function to measure the height and width of the text.\n *\n * @param {string} text - Specifies the text.\n * @param {FontModel} font - Specifies the font.\n * @param {string} id - Specifies the id.\n * @returns {Size} - Returns the size.\n * @private\n */\nexport function measureText(text, font) {\n var measureObject = document.getElementById('treeMapMeasureText');\n if (measureObject === null) {\n measureObject = createElement('text', { id: 'treeMapMeasureText' });\n document.body.appendChild(measureObject);\n }\n measureObject.innerHTML = text;\n measureObject.style.position = 'absolute';\n measureObject.style.fontSize = font.size;\n measureObject.style.fontWeight = font.fontWeight;\n measureObject.style.fontStyle = font.fontStyle;\n measureObject.style.fontFamily = font.fontFamily;\n measureObject.style.visibility = 'hidden';\n measureObject.style.top = '-100';\n measureObject.style.left = '0';\n measureObject.style.whiteSpace = 'nowrap';\n // For bootstrap line height issue\n measureObject.style.lineHeight = 'normal';\n return new Size(measureObject.clientWidth, measureObject.clientHeight);\n}\n/**\n * Internal use of text options\n *\n * @private\n */\nvar TextOption = /** @class */ (function () {\n function TextOption(id, x, y, anchor, text, transform, baseLine, connectorText) {\n if (transform === void 0) { transform = ''; }\n this.transform = '';\n this.baseLine = 'auto';\n this.id = id;\n this.text = text;\n this.transform = transform;\n this.anchor = anchor;\n this.x = x;\n this.y = y;\n this.baseLine = baseLine;\n this.connectorText = connectorText;\n }\n return TextOption;\n}());\nexport { TextOption };\n/**\n * Trim the title text\n *\n * @param {number} maxWidth - Specifies the maximum width\n * @param {string} text - Specifies the text\n * @param {FontModel} font - Specifies the font\n * @returns {string} - Returns the string\n * @private\n */\nexport function textTrim(maxWidth, text, font) {\n var label = text;\n var size = measureText(text, font).width;\n if (size > maxWidth) {\n var textLength = text.length;\n for (var i = textLength - 1; i >= 0; --i) {\n label = text.substring(0, i) + '...';\n size = measureText(label, font).width;\n if (size <= maxWidth || label.length < 4) {\n if (label.length < 4) {\n label = ' ';\n }\n return label;\n }\n }\n }\n return label;\n}\n/**\n * Map internal class for Point\n */\nvar Location = /** @class */ (function () {\n function Location(x, y) {\n this.x = x;\n this.y = y;\n }\n return Location;\n}());\nexport { Location };\n/**\n * Method to calculate x position of title\n */\nexport function findPosition(location, alignment, textSize, type) {\n var x;\n switch (alignment) {\n case 'Near':\n x = location.x;\n break;\n case 'Center':\n x = (type === 'title') ? (location.width / 2 - textSize.width / 2) :\n ((location.x + (location.width / 2)) - textSize.width / 2);\n break;\n case 'Far':\n x = (type === 'title') ? (location.width - location.y - textSize.width) :\n ((location.x + location.width) - textSize.width);\n break;\n }\n var y = (type === 'title') ? location.y + (textSize.height / 2) : ((location.y + location.height / 2) + textSize.height / 2);\n return new Location(x, y);\n}\nexport function createTextStyle(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nrenderer, renderOptions, text) {\n var htmlObject = renderer.createText(renderOptions, text);\n htmlObject.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n htmlObject.style['user-select'] = 'none';\n htmlObject.style['-moz-user-select'] = 'none';\n htmlObject.style['-webkit-touch-callout'] = 'none';\n htmlObject.style['-webkit-user-select'] = 'none';\n htmlObject.style['-khtml-user-select'] = 'none';\n htmlObject.style['-ms-user-select'] = 'none';\n htmlObject.style['-o-user-select'] = 'none';\n return htmlObject;\n}\n/**\n * Internal rendering of text\n *\n * @param {TextOption} options - Specifies the text option\n * @param {FontModel} font - Specifies the font model\n * @param {string} color - Specifies the color\n * @param {HTMLElement | Element} parent - Specifes the html element\n * @param {boolean} isMinus - Specifies the boolean value\n * @returns {Element} - Returns the element\n * @private\n */\nexport function renderTextElement(options, font, color, parent, isMinus) {\n if (isMinus === void 0) { isMinus = false; }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var renderOptions = {\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily,\n 'font-weight': font.fontWeight,\n 'text-anchor': options.anchor,\n 'transform': options.transform,\n 'opacity': font.opacity,\n 'dominant-baseline': options.baseLine,\n 'id': options.id,\n 'x': options.x,\n 'y': options.y,\n 'fill': color\n };\n var text = typeof options.text === 'string' ? options.text : isMinus ? options.text[options.text.length - 1] : options.text[0];\n var tspanElement;\n var renderer = new SvgRenderer('');\n var height;\n var htmlObject;\n var breadCrumbText = !isNullOrUndefined(text) && !isNullOrUndefined(options.connectorText) ?\n (text.search(options.connectorText[1]) >= 0) : false;\n if (breadCrumbText) {\n var drilledLabel = text;\n var spacing = 5;\n var drillLevelText = drilledLabel.split('#');\n for (var z = 0; z < drillLevelText.length; z++) {\n var drillText = (drillLevelText[z].search(options.connectorText) !== -1 && !isNullOrUndefined(options.connectorText)) ?\n options.connectorText : drillLevelText[z];\n renderOptions['id'] = options.id + '_' + z;\n htmlObject = createTextStyle(renderer, renderOptions, drillText);\n if (z % 2 === 0 && z !== 0) {\n var re = /\\s+/g;\n drillText = drillText.replace(re, ' ');\n }\n var size = measureText(drillText, font);\n renderOptions['x'] = z !== 0 ? renderOptions['x'] + size.width : renderOptions['x'] + size.width + spacing;\n parent.appendChild(htmlObject);\n }\n }\n else {\n htmlObject = createTextStyle(renderer, renderOptions, text);\n parent.appendChild(htmlObject);\n }\n if (typeof options.text !== 'string' && options.text.length > 1) {\n for (var i = 1, len = options.text.length; i < len; i++) {\n height = (measureText(options.text[i], font).height);\n tspanElement = renderer.createTSpan({\n 'x': options.x, 'id': options.id,\n 'y': (options.y) + (i * height)\n }, options.text[i]);\n htmlObject.appendChild(tspanElement);\n }\n parent.appendChild(htmlObject);\n }\n return htmlObject;\n}\nexport function setItemTemplateContent(targetId, targetElement, contentItemTemplate) {\n var itemSelect = targetId.split('_RectPath')[0];\n var itemTemplate;\n if (targetId.indexOf('_LabelTemplate') > -1) {\n itemTemplate = targetElement;\n }\n else {\n itemTemplate = document.querySelector('#' + itemSelect + '_LabelTemplate');\n }\n if (!isNullOrUndefined(itemTemplate)) {\n itemTemplate.innerHTML = contentItemTemplate;\n }\n}\nexport function getElement(id) {\n return document.getElementById(id);\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function itemsToOrder(a, b) {\n return a['weight'] === b['weight'] ? 0 : a['weight'] < b['weight'] ? 1 : -1;\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isContainsData(source, pathName, processData, treemap) {\n var isExist = false;\n var name = '';\n var path;\n var leaf = treemap.leafItemSettings;\n for (var i = 0; i < source.length; i++) {\n path = treemap.levels[i] ? treemap.levels[i].groupPath : leaf.labelPath ? leaf.labelPath : treemap.weightValuePath;\n var data = processData[path] || 'undefined';\n if (source[i] === data) {\n name += data + (i === source.length - 1 ? '' : '#');\n if (name === pathName) {\n isExist = true;\n break;\n }\n }\n }\n return isExist;\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function findChildren(data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var children;\n if (data) {\n var keys = Object.keys(data);\n children = {};\n for (var i = 0; i < keys.length; i++) {\n if (data[keys[i]] instanceof Array) {\n children['values'] = data[keys[i]];\n children['key'] = keys[i];\n break;\n }\n }\n }\n return children;\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function findHightLightItems(data, items, mode, treeMap) {\n if (mode === 'Child') {\n items.push(data['levelOrderName']);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var children = findChildren(data)['values'];\n if (children && children.length > 0) {\n for (var i = 0; i < children.length; i++) {\n if (items.indexOf(children[i]['levelOrderName']) === -1) {\n items.push(children[i]['levelOrderName']);\n }\n }\n for (var j = 0; j < children.length; j++) {\n findHightLightItems(children[j], items, mode, treeMap);\n }\n }\n }\n else if (mode === 'Parent') {\n if (typeof data['levelOrderName'] === 'string' && items.indexOf(data['levelOrderName']) === -1) {\n items.push(data['levelOrderName']);\n findHightLightItems(data['parent'], items, mode, treeMap);\n }\n }\n else if (mode === 'All') {\n var parentName = data['levelOrderName'].split('#')[0];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentItem = void 0;\n for (var i = 0; i < treeMap.layout.renderItems.length; i++) {\n currentItem = treeMap.layout.renderItems[i];\n if ((currentItem['levelOrderName']).indexOf(parentName) > -1 && items.indexOf(currentItem['levelOrderName']) === -1) {\n items.push(currentItem['levelOrderName']);\n }\n }\n }\n else {\n items.push(data['levelOrderName']);\n }\n return items;\n}\n/**\n * Function to compile the template function for maps.\n *\n * @param {string} template - Specifies the template\n * @returns {Function} - Returns the template function\n * @private\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getTemplateFunction(template) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateFn = null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var e;\n try {\n if (document.querySelectorAll(template).length) {\n templateFn = compile(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (e) {\n templateFn = compile(template);\n }\n return templateFn;\n}\n/**\n * @private\n * @param {HTMLCollection} element - Specifies the element\n * @param {string} labelId - Specifies the label id\n * @param {Object} data - Specifies the data\n * @returns {HTMLElement} - Returns the element\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function convertElement(element, labelId, data) {\n var childElement = createElement('div', {\n id: labelId,\n styles: 'position: absolute;pointer-events: auto;'\n });\n var elementLength = element.length;\n while (elementLength > 0) {\n childElement.appendChild(element[0]);\n elementLength--;\n }\n var templateHtml = childElement.innerHTML;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n templateHtml = templateHtml.replace(new RegExp('{{:' + keys[i] + '}}', 'g'), data[keys[i].toString()]);\n }\n childElement.innerHTML = templateHtml;\n return childElement;\n}\nexport function findLabelLocation(rect, position, labelSize, type, treemap) {\n var location = new Location(0, 0);\n var padding = 5;\n var paddings = 2;\n var elementRect = treemap.element.getBoundingClientRect();\n var x = (type === 'Template') ? treemap.areaRect.x : 0;\n var y = (type === 'Template') ? treemap.areaRect.y : 0;\n location.x = (Math.abs(x - ((position.indexOf('Left') > -1) ? rect.x + padding : !(position.indexOf('Right') > -1) ?\n rect.x + ((rect.width / 2) - (labelSize.width / 2)) : (rect.x + rect.width) - labelSize.width))) - paddings;\n if (treemap.enableDrillDown && (treemap.renderDirection === 'BottomLeftTopRight'\n || treemap.renderDirection === 'BottomRightTopLeft')) {\n location.y = Math.abs((rect.y + rect.height) - labelSize.height + padding);\n }\n else {\n location.y = Math.abs(y - ((position.indexOf('Top') > -1) ? (type === 'Template' ? rect.y : rect.y + labelSize.height) :\n !(position.indexOf('Bottom') > -1) ? type === 'Template' ? (rect.y + ((rect.height / 2) - (labelSize.height / 2))) :\n (rect.y + (rect.height / 2) + labelSize.height / 4) : (rect.y + rect.height) - labelSize.height));\n }\n return location;\n}\nexport function measureElement(element, parentElement) {\n var size = new Size(0, 0);\n parentElement.appendChild(element);\n size.height = element.offsetHeight;\n size.width = element.offsetWidth;\n var measureElementId = document.getElementById(element.id);\n measureElementId.parentNode.removeChild(measureElementId);\n return size;\n}\nexport function getArea(rect) {\n return (rect.width - rect.x) * (rect.height - rect.y);\n}\nexport function getShortestEdge(input) {\n var container = convertToContainer(input);\n var width = container.width;\n var height = container.height;\n var result = Math.min(width, height);\n return result;\n}\nexport function convertToContainer(rect) {\n var x = rect.x;\n var y = rect.y;\n var width = rect.width;\n var height = rect.height;\n return {\n x: x,\n y: y,\n width: width - x,\n height: height - y\n };\n}\nexport function convertToRect(container) {\n var xOffset = container.x;\n var yOffset = container.y;\n var width = container.width;\n var height = container.height;\n return {\n x: xOffset,\n y: yOffset,\n width: xOffset + width,\n height: yOffset + height\n };\n}\nexport function getMousePosition(pageX, pageY, element) {\n var elementRect = element.getBoundingClientRect();\n var pageXOffset = element.ownerDocument.defaultView.pageXOffset;\n var pageYOffset = element.ownerDocument.defaultView.pageYOffset;\n var clientTop = element.ownerDocument.documentElement.clientTop;\n var clientLeft = element.ownerDocument.documentElement.clientLeft;\n var positionX = elementRect.left + pageXOffset - clientLeft;\n var positionY = elementRect.top + pageYOffset - clientTop;\n return new Location((pageX - positionX), (pageY - positionY));\n}\nexport function colorMap(colorMapping, equalValue, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvalue, weightValuePath) {\n var fill;\n var paths = [];\n var opacity;\n if (isNullOrUndefined(equalValue) && (isNullOrUndefined(value) && isNaN(value))) {\n return null;\n }\n for (var i = 0; i < colorMapping.length; i++) {\n var isEqualColor = false;\n var dataValue = value;\n if (!isNullOrUndefined(colorMapping[i].from) && !isNullOrUndefined(colorMapping[i].to)\n && !isNullOrUndefined(colorMapping[i].value)) {\n if ((value >= colorMapping[i].from && colorMapping[i].to >= value) && (colorMapping[i].value === equalValue)) {\n isEqualColor = true;\n if (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') {\n fill = !isEqualColor ? colorCollections(colorMapping[i], dataValue) : colorMapping[i].color[0];\n }\n else {\n fill = colorMapping[i].color;\n }\n }\n }\n else if ((!isNullOrUndefined(colorMapping[i].from) && !isNullOrUndefined(colorMapping[i].to))\n || !isNullOrUndefined((colorMapping[i].value))) {\n if ((value >= colorMapping[i].from && colorMapping[i].to >= value) || (colorMapping[i].value === equalValue)) {\n if (colorMapping[i].value === equalValue) {\n isEqualColor = true;\n }\n if (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') {\n fill = !isEqualColor ? colorCollections(colorMapping[i], dataValue) : colorMapping[i].color[0];\n }\n else {\n fill = colorMapping[i].color;\n }\n }\n }\n if (((value >= colorMapping[i].from && value <= colorMapping[i].to) || (colorMapping[i].value === equalValue))\n && !isNullOrUndefined(colorMapping[i].minOpacity) && !isNullOrUndefined(colorMapping[i].maxOpacity) && fill) {\n opacity = deSaturationColor(weightValuePath, colorMapping[i], fill, value);\n }\n if ((fill === '' || isNullOrUndefined(fill))\n && isNullOrUndefined(colorMapping[i].from) && isNullOrUndefined(colorMapping[i].to)\n && isNullOrUndefined(colorMapping[i].minOpacity) && isNullOrUndefined(colorMapping[i].maxOpacity)\n && isNullOrUndefined(colorMapping[i].value)) {\n fill = (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') ?\n colorMapping[i].color[0] : colorMapping[i].color;\n }\n opacity = !isNullOrUndefined(opacity) ? opacity : '1';\n paths.push(fill);\n }\n for (var j = paths.length - 1; j >= 0; j--) {\n fill = paths[j];\n j = (fill) ? -1 : j;\n }\n return { fill: fill, opacity: opacity };\n}\nexport function deSaturationColor(weightValuePath, colorMapping, color, rangeValue) {\n var opacity = 1;\n if ((rangeValue >= colorMapping.from && rangeValue <= colorMapping.to)) {\n var ratio = (rangeValue - colorMapping.from) / (colorMapping.to - colorMapping.from);\n opacity = (ratio * (colorMapping.maxOpacity - colorMapping.minOpacity)) + colorMapping.minOpacity;\n }\n return opacity.toString();\n}\nexport function colorCollections(colorMap, value) {\n var gradientFill = getColorByValue(colorMap, value);\n return gradientFill;\n}\nexport function rgbToHex(r, g, b) {\n return '#' + componentToHex(r) + componentToHex(g) + componentToHex(b);\n}\nexport function getColorByValue(colorMap, value) {\n var color = '';\n var rbg;\n if (Number(value) === colorMap.from) {\n color = colorMap.color[0];\n }\n else if (Number(value) === colorMap.to) {\n color = colorMap.color[colorMap.color.length - 1];\n }\n else {\n rbg = getGradientColor(Number(value), colorMap);\n color = rgbToHex(rbg.r, rbg.g, rbg.b);\n }\n return color;\n}\nexport function getGradientColor(value, colorMap) {\n var previousOffset = colorMap.from;\n var nextOffset = colorMap.to;\n var percent = 0;\n var prev1;\n var full = nextOffset - previousOffset;\n var midColor;\n var midreturn;\n percent = (value - previousOffset) / full;\n var previousColor;\n var nextColor;\n if (colorMap.color.length <= 2) {\n previousColor = colorMap.color[0].charAt(0) === '#' ? colorMap.color[0] : colorNameToHex(colorMap.color[0]);\n nextColor = colorMap.color[colorMap.color.length - 1].charAt(0) === '#' ?\n colorMap.color[colorMap.color.length - 1] : colorNameToHex(colorMap.color[colorMap.color.length - 1]);\n }\n else {\n previousColor = colorMap.color[0].charAt(0) === '#' ? colorMap.color[0] : colorNameToHex(colorMap.color[0]);\n nextColor = colorMap.color[colorMap.color.length - 1].charAt(0) === '#' ?\n colorMap.color[colorMap.color.length - 1] : colorNameToHex(colorMap.color[colorMap.color.length - 1]);\n var a = full / (colorMap.color.length - 1);\n var b = void 0;\n var c = void 0;\n var length_1 = colorMap.color.length - 1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var splitColorValueOffset = [];\n var splitColor = {};\n for (var j = 1; j < length_1; j++) {\n c = j * a;\n b = previousOffset + c;\n splitColor = { b: b, color: colorMap.color[j] };\n splitColorValueOffset.push(splitColor);\n }\n for (var i = 0; i < splitColorValueOffset.length; i++) {\n if (previousOffset <= value && value <= splitColorValueOffset[i]['b'] && i === 0) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n nextColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ? 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a)\n : (value - splitColorValueOffset[i]['b']) / a;\n }\n else if (splitColorValueOffset[i]['b'] <= value && value <= nextOffset && i === (splitColorValueOffset.length - 1)) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ?\n 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a) : (value - splitColorValueOffset[i]['b']) / a;\n }\n if (i !== splitColorValueOffset.length - 1 && i < splitColorValueOffset.length) {\n if (splitColorValueOffset[i]['b'] <= value && value <= splitColorValueOffset[i + 1]['b']) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n nextColor = splitColorValueOffset[i + 1]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i + 1]['color'] : colorNameToHex(splitColorValueOffset[i + 1]['color']);\n percent = Math.abs((value - splitColorValueOffset[i + 1]['b'])) / a;\n }\n }\n }\n }\n return getPercentageColor(percent, previousColor, nextColor);\n}\nexport function getPercentageColor(percent, previous, next) {\n var nextColor = next.split('#')[1];\n var prevColor = previous.split('#')[1];\n var r = getPercentage(percent, parseInt(prevColor.substr(0, 2), 16), parseInt(nextColor.substr(0, 2), 16));\n var g = getPercentage(percent, parseInt(prevColor.substr(2, 2), 16), parseInt(nextColor.substr(2, 2), 16));\n var b = getPercentage(percent, parseInt(prevColor.substr(4, 2), 16), parseInt(nextColor.substr(4, 2), 16));\n return new ColorValue(r, g, b);\n}\nexport function getPercentage(percent, previous, next) {\n var full = next - previous;\n return Math.round((previous + (full * percent)));\n}\nexport function wordWrap(maximumWidth, dataLabel, font) {\n var textCollection = dataLabel.split(' ');\n var label = '';\n var labelCollection = [];\n var text;\n for (var i = 0, len = textCollection.length; i < len; i++) {\n text = textCollection[i];\n if (measureText(label.concat(text), font).width < maximumWidth) {\n label = label.concat((label === '' ? '' : ' ') + text);\n }\n else {\n if (label !== '') {\n labelCollection.push(textTrim(maximumWidth, label, font));\n label = text;\n }\n else {\n labelCollection.push(textTrim(maximumWidth, text, font));\n text = '';\n }\n }\n if (label && i === len - 1) {\n labelCollection.push(textTrim(maximumWidth, label, font));\n }\n }\n return labelCollection;\n}\nexport function textWrap(maxWidth, label, font) {\n var text = label;\n var resultText = [];\n var currentLength = 0;\n var totalWidth = measureText(label, font).width;\n var totalLength = label.length;\n if (maxWidth >= totalWidth) {\n resultText.push(label);\n return resultText;\n }\n else {\n for (var i = label.length; i > currentLength; i--) {\n var sliceString = label.slice(currentLength, i);\n totalWidth = measureText(sliceString, font).width;\n if (totalWidth <= maxWidth) {\n resultText.push(sliceString);\n currentLength += sliceString.length;\n if (totalLength === currentLength) {\n return resultText;\n }\n i = totalLength + 1;\n }\n }\n }\n return resultText;\n}\n/**\n * hide function\n *\n * @param {number} maxWidth - Specifies the maximum width\n * @param {number} maxHeight - Specifies the maximum height\n * @param {string} text - Specifies the text\n * @param {FontModel} font - Specifies the font\n * @returns {string} - Returns the hideText\n */\nexport function hide(maxWidth, maxHeight, text, font) {\n var hideText = text;\n var textSize = measureText(text, font);\n hideText = (textSize.width > maxWidth || textSize.height > maxHeight) ? ' ' : text;\n return hideText;\n}\nexport function orderByArea(a, b) {\n if (a['itemArea'] === b['itemArea']) {\n return 0;\n }\n else if (a['itemArea'] < b['itemArea']) {\n return 1;\n }\n return -1;\n}\nexport function maintainSelection(treemap, element, className) {\n var elementId = treemap.levelSelection;\n if (elementId) {\n for (var index = 0; index < elementId.length; index++) {\n if (element.getAttribute('id') === elementId[index]) {\n if (element.childElementCount > 0) {\n element.children[0].setAttribute('class', className);\n applyOptions(element.childNodes[0], {\n border: treemap.selectionSettings.border, fill: treemap.selectionSettings.fill,\n opacity: treemap.selectionSettings.opacity\n });\n }\n }\n else {\n element.setAttribute('class', '');\n }\n }\n }\n}\nexport function legendMaintain(treemap, legendGroup) {\n var elementId = treemap.legendId;\n if (elementId) {\n for (var i = 0; i < elementId.length; i++) {\n for (var j = 0; j < legendGroup.childElementCount; j++) {\n if (legendGroup.childNodes[j]['id'] === elementId[i]) {\n legendGroup.childNodes[j].setAttribute('fill', treemap.selectionSettings.fill);\n legendGroup.childNodes[j].setAttribute('stroke', treemap.selectionSettings.border.color);\n legendGroup.childNodes[j].setAttribute('stroke-width', (treemap.selectionSettings.border.width).toString());\n legendGroup.childNodes[j].setAttribute('opacity', treemap.selectionSettings.opacity);\n }\n }\n }\n }\n}\nexport function removeClassNames(elements, type, treemap) {\n var opacity;\n var process = true;\n var element;\n var stroke;\n var strokeWidth;\n var fill;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var options = {};\n for (var j = 0; j < elements.length; j++) {\n element = isNullOrUndefined(elements[j].childNodes[0]) ? elements[j] :\n elements[j].childNodes[0];\n options = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])]['options'];\n applyOptions(element, options);\n elements[j].classList.remove(type);\n j -= 1;\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function applyOptions(element, options) {\n element.setAttribute('opacity', options['opacity']);\n if (!isNullOrUndefined(options['fill'])) {\n element.setAttribute('fill', options['fill']);\n }\n element.setAttribute('stroke', options['border']['color']);\n element.setAttribute('stroke-width', options['border']['width']);\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function textFormatter(format, data, treemap) {\n if (isNullOrUndefined(format)) {\n return null;\n }\n var keys = Object.keys(data);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n format = format.split('${' + key + '}').join(formatValue(data[key], treemap).toString());\n }\n return format;\n}\nexport function formatValue(value, treemap) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var formatValue;\n var formatFunction;\n if (treemap.format && !isNaN(Number(value))) {\n formatFunction = treemap.intl.getNumberFormat({ format: treemap.format, useGrouping: treemap.useGroupingSeparator });\n formatValue = formatFunction(Number(value));\n }\n else {\n formatValue = value;\n }\n return formatValue ? formatValue : '';\n}\n/**\n * @private\n */\nvar ColorValue = /** @class */ (function () {\n function ColorValue(r, g, b) {\n this.r = r;\n this.g = g;\n this.b = b;\n }\n return ColorValue;\n}());\nexport { ColorValue };\n/**\n * @param {ColorValue} value - Specfies the color value\n * @returns {string} - Returns the string\n * @private\n */\nexport function convertToHexCode(value) {\n return '#' + componentToHex(value.r) + componentToHex(value.g) + componentToHex(value.b);\n}\n/**\n * @param {number} value - Specifes the value\n * @returns {string} - Returns the string\n * @private */\nexport function componentToHex(value) {\n var hex = value.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n}\n/**\n * @param {string} hex - Specifies the hex value\n * @returns {ColorValue} - Returns the color value\n * @private\n */\nexport function convertHexToColor(hex) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? new ColorValue(parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)) :\n new ColorValue(255, 255, 255);\n}\n/**\n * @param {string} color - Specifies the color\n * @returns {string} - Returns the string\n * @private\n */\nexport function colorNameToHex(color) {\n color = color === 'transparent' ? 'white' : color;\n var element = document.getElementById('treeMapMeasureText');\n element.style.color = color;\n color = window.getComputedStyle(element).color;\n var exp = /^(rgb|hsl)(a?)[(]\\s*([\\d.]+\\s*%?)\\s*,\\s*([\\d.]+\\s*%?)\\s*,\\s*([\\d.]+\\s*%?)\\s*(?:,\\s*([\\d.]+)\\s*)?[)]$/;\n var isRGBValue = exp.exec(color);\n return convertToHexCode(new ColorValue(parseInt(isRGBValue[3], 10), parseInt(isRGBValue[4], 10), parseInt(isRGBValue[5], 10)));\n}\n/**\n * @param {Location} location - Specifies the location\n * @param {string} shape - Specifies the shape\n * @param {Size} size - Specifies the size\n * @param {string} url - Specifies the url\n * @param {PathOption} options - Specifies the options\n * @param {string} label - Specifies the label\n * @returns {Element} - Returns the element\n * @private\n */\nexport function drawSymbol(location, shape, size, url, options, label) {\n var functionName = 'Path';\n var svgRenderer = new SvgRenderer('');\n var temp = renderLegendShape(location, size, shape, options, url);\n var htmlElement = svgRenderer['draw' + temp.functionName](temp.renderOption);\n htmlElement.setAttribute('aria-label', label);\n return htmlElement;\n}\n/**\n * @param {Location} location - Specifies the location\n * @param {Size} size - Specifies the size\n * @param {string} shape - Specifies the shape\n * @param {PathOption} options - Specifies the path option\n * @param {string} url - Specifies the string\n * @returns {IShapes} - Returns the shapes\n * @private\n */\nexport function renderLegendShape(location, size, shape, options, url) {\n var renderPath;\n var functionName = 'Path';\n var shapeWidth = size.width;\n var shapeHeight = size.height;\n var shapeX = location.x;\n var shapeY = location.y;\n var x = location.x + (-shapeWidth / 2);\n var y = location.y + (-shapeHeight / 2);\n switch (shape) {\n case 'Circle':\n case 'Bubble':\n functionName = 'Ellipse';\n merge(options, { 'rx': shapeWidth / 2, 'ry': shapeHeight / 2, 'cx': shapeX, 'cy': shapeY });\n break;\n case 'VerticalLine':\n renderPath = 'M' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' + 'L' + ' ' + shapeX + ' '\n + (shapeY + (-shapeHeight / 2));\n merge(options, { 'd': renderPath });\n break;\n case 'Diamond':\n renderPath = 'M' + ' ' + x + ' ' + shapeY + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + shapeY + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + shapeY + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Rectangle':\n renderPath = 'M' + ' ' + x + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (-shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Triangle':\n renderPath = 'M' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'InvertedTriangle':\n renderPath = 'M' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX - (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Pentagon':\n // eslint-disable-next-line no-case-declarations\n var eq = 72;\n // eslint-disable-next-line no-case-declarations\n var xValue = void 0;\n // eslint-disable-next-line no-case-declarations\n var yValue = void 0;\n for (var i = 0; i <= 5; i++) {\n xValue = (shapeWidth / 2) * Math.cos((Math.PI / 180) * (i * eq));\n yValue = (shapeWidth / 2) * Math.sin((Math.PI / 180) * (i * eq));\n if (i === 0) {\n renderPath = 'M' + ' ' + (shapeX + xValue) + ' ' + (shapeY + yValue) + ' ';\n }\n else {\n renderPath = renderPath.concat('L' + ' ' + (shapeX + xValue) + ' ' + (shapeY + yValue) + ' ');\n }\n }\n renderPath = renderPath.concat('Z');\n merge(options, { 'd': renderPath });\n break;\n case 'Star':\n renderPath = 'M ' + (location.x + size.width / 3) + ' ' + (location.y - size.height / 2) + ' L ' + (location.x - size.width / 2)\n + ' ' + (location.y + size.height / 6) + ' L ' + (location.x + size.width / 2) + ' ' + (location.y + size.height / 6)\n + ' L ' + (location.x - size.width / 3) + ' ' + (location.y - size.height / 2) + ' L ' + location.x + ' ' +\n (location.y + size.height / 2) + ' L ' + (location.x + size.width / 3) + ' ' + (location.y - size.height / 2) + ' Z';\n merge(options, { 'd': renderPath });\n break;\n case 'Cross':\n renderPath = 'M' + ' ' + x + ' ' + shapeY + ' ' + 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + shapeY + ' ' +\n 'M' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' + 'L' + ' ' + shapeX + ' ' +\n (shapeY + (-shapeHeight / 2));\n merge(options, { 'd': renderPath });\n break;\n case 'Image':\n functionName = 'Image';\n merge(options, { 'href': url, 'height': shapeHeight, 'width': shapeWidth, x: x, y: y });\n break;\n }\n return { renderOption: options, functionName: functionName };\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isParentItem(data, item) {\n var isParentItem = false;\n for (var j = 0; j < data.length; j++) {\n if (item['levelOrderName'] === data[j]['levelOrderName']) {\n isParentItem = true;\n break;\n }\n }\n return isParentItem;\n}\n/**\n * Ajax support for treemap\n */\nvar TreeMapAjax = /** @class */ (function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function TreeMapAjax(options, type, async, contentType, sendData) {\n this.dataOptions = options;\n this.type = type || 'GET';\n this.async = async || true;\n this.contentType = contentType;\n this.sendData = sendData;\n }\n return TreeMapAjax;\n}());\nexport { TreeMapAjax };\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function removeShape(collection, value) {\n if (collection.length > 0) {\n for (var i = 0; i < collection.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = collection[i];\n setColor(item['legendEle'], item['oldFill'], item['oldOpacity'], item['oldBorderColor'], item['oldBorderWidth']);\n }\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function removeLegend(collection, value) {\n if (collection.length > 0) {\n for (var j = 0; j < collection.length; j++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = collection[j];\n setColor(item['legendEle'], item['oldFill'], item['oldOpacity'], item['oldBorderColor'], item['oldBorderWidth']);\n var dataCount = item['ShapeCollection']['Elements'].length;\n for (var k = 0; k < dataCount; k++) {\n setColor(item['ShapeCollection']['Elements'][k], item['shapeOldFill'], item['shapeOldOpacity'], item['shapeOldBorderColor'], item['shapeOldBorderWidth']);\n }\n }\n }\n}\nexport function setColor(element, fill, opacity, borderColor, borderWidth) {\n element.setAttribute('fill', fill);\n element.setAttribute('opacity', opacity);\n element.setAttribute('stroke', borderColor);\n element.setAttribute('stroke-width', borderWidth);\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function removeSelectionWithHighlight(collection, element, treemap) {\n removeShape(collection, 'highlight');\n element = [];\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getLegendIndex(length, item, treemap) {\n var index;\n for (var i = 0; i < length; i++) {\n var dataLength = treemap.treeMapLegendModule.legendCollections[i]['legendData'].length;\n for (var j = 0; j < dataLength; j++) {\n if (treemap.treeMapLegendModule.legendCollections[i]['legendData'][j]['levelOrderName'] === item['levelOrderName']) {\n index = i;\n break;\n }\n }\n }\n return index;\n}\nexport function pushCollection(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ncollection, index, number, legendElement, shapeElement, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nrenderItems, legendCollection) {\n collection.push({\n legendEle: legendElement, oldFill: legendCollection[index]['legendFill'],\n oldOpacity: legendCollection[index]['opacity'], oldBorderColor: legendCollection[index]['borderColor'],\n oldBorderWidth: legendCollection[index]['borderWidth'],\n shapeElement: shapeElement, shapeOldFill: renderItems[number]['options']['fill'],\n shapeOldOpacity: renderItems[number]['options']['opacity'],\n shapeOldBorderColor: renderItems[number]['options']['border']['color'],\n shapeOldBorderWidth: renderItems[number]['options']['border']['width']\n });\n}\n/**\n * To trigger the download element\n *\n * @param {string} fileName - Specifies the file name\n * @param {ExportType} type - Specifies the type\n * @param {string} url - Specifies the url\n * @param {boolean} isDownload - Specifies the boolean value\n * @returns {void}\n */\nexport function triggerDownload(fileName, type, url, isDownload) {\n createElement('a', {\n attrs: {\n 'download': fileName + '.' + type.toLocaleLowerCase(),\n 'href': url\n }\n }).dispatchEvent(new MouseEvent(isDownload ? 'click' : 'move', {\n view: window,\n bubbles: false,\n cancelable: true\n }));\n}\nexport function removeElement(id) {\n var element = document.getElementById(id);\n return element ? remove(element) : null;\n}\n","/**\n * Maps Themes doc\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Theme;\n(function (Theme) {\n /**\n * @private\n */\n Theme.mapsTitleFont = {\n size: '14px',\n fontWeight: 'Medium',\n color: '#424242',\n fontStyle: 'Medium',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n})(Theme || (Theme = {}));\n/**\n * To get the theme style based on treemap theme.\n *\n * @param {TreeMapTheme} theme Specifies the theme of the treemap control.\n * @returns {IThemeStyle} Returns the theme.\n * @private\n */\nexport function getThemeStyle(theme) {\n var style;\n var color;\n switch (theme.toLowerCase()) {\n case 'materialdark':\n color = '#303030';\n break;\n case 'fabricdark':\n color = '#201F1F';\n break;\n case 'bootstrapdark':\n color = '#1A1A1A';\n break;\n }\n switch (theme.toLowerCase()) {\n case 'bootstrapdark':\n case 'fabricdark':\n case 'materialdark':\n style = {\n backgroundColor: color,\n titleFontColor: '#FFFFFF',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n legendTitleColor: '#DADADA',\n legendTextColor: '#DADADA',\n fontSize: '15px',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n break;\n case 'highcontrast':\n style = {\n backgroundColor: '#000000',\n titleFontColor: '#FFFFFF',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontSize: '15px',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n break;\n case 'bootstrap4':\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#212529',\n subTitleFontColor: '#212529',\n tooltipFillColor: '#000000',\n tooltipFontColor: '#FFFFFF',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 0.9,\n legendTitleColor: '#212529',\n legendTextColor: '#212529',\n fontFamily: 'HelveticaNeue-Medium',\n fontSize: '16px',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'HelveticaNeue'\n };\n break;\n case 'tailwind':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#374151',\n subTitleFontColor: '#374151',\n tooltipFillColor: '#111827',\n tooltipFontColor: '#F9FAFB',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#374151',\n legendTextColor: '#374151',\n fontFamily: 'Inter',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter'\n };\n break;\n case 'tailwinddark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#D1D5DB',\n subTitleFontColor: '#D1D5DB',\n tooltipFillColor: '#F9FAFB',\n tooltipFontColor: '#1F2937',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#D1D5DB',\n legendTextColor: '#D1D5DB',\n fontFamily: 'Inter',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter'\n };\n break;\n case 'bootstrap5':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#212529',\n subTitleFontColor: '#212529',\n tooltipFillColor: '#212529',\n tooltipFontColor: '#F9FAFB',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#212529',\n legendTextColor: '#212529',\n fontFamily: 'Helvetica Neue',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Helvetica Neue'\n };\n break;\n case 'bootstrap5dark':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#FFFFFF',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#E9ECEF',\n tooltipFontColor: '#212529',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontFamily: 'Helvetica Neue',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Helvetica Neue'\n };\n break;\n case 'fluent':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#201F1E',\n subTitleFontColor: '#201F1E',\n tooltipFillColor: '#FFFFFF',\n tooltipFontColor: '#323130',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#201F1E',\n legendTextColor: '#201F1E',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI'\n };\n break;\n case 'fluentdark':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#F3F2F1',\n subTitleFontColor: '#F3F2F1',\n tooltipFillColor: '#252423',\n tooltipFontColor: '#F3F2F1',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#F3F2F1',\n legendTextColor: '#F3F2F1',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI'\n };\n break;\n default:\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#424242',\n subTitleFontColor: '#424242',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n legendTitleColor: '#353535',\n legendTextColor: '#353535',\n fontSize: '15px',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n break;\n }\n return style;\n}\n","/**\n * TreeMap constants doc\n */\n/**\n * Triggers when the treemap is on load.\n *\n * @private\n */\nexport var load = 'load';\n/**\n * Triggers after treemap rendered.\n *\n * @private\n */\nexport var loaded = 'loaded';\n/**\n * Trigger before call the print method.\n *\n * @private\n */\nexport var beforePrint = 'beforePrint';\n/**\n * Trigger before each treemap item rendered.\n *\n * @private\n */\nexport var itemRendering = 'itemRendering';\n/**\n * Trigger after click on treemap item.\n *\n * @private\n */\nexport var drillStart = 'drillStart';\n/**\n * Trigger after drill start event completed.\n *\n * @private\n */\nexport var drillEnd = 'drillEnd';\n/**\n * Trigger after select the treemap item.\n *\n * @private\n */\nexport var itemSelected = 'itemSelected';\n/**\n * Trigger after hover on the treemap item.\n *\n * @private\n */\nexport var itemHighlight = 'itemHighlight';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport var tooltipRendering = 'tooltipRendering';\n/**\n * Trigger after click on the treemap item.\n *\n * @private\n */\nexport var itemClick = 'itemClick';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport var itemMove = 'itemMove';\n/**\n * Trigger after click on the treemap item.\n *\n * @private\n */\nexport var click = 'click';\n/**\n * Trigger after double click on the treemap item.\n *\n * @private\n */\nexport var doubleClick = 'doubleClick';\n/**\n * Trigger after right click on the treemap item.\n *\n * @private\n */\nexport var rightClick = 'rightClick';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport var mouseMove = 'mouseMove';\n/**\n * Trigger before each treemap item.\n *\n * @private\n */\nexport var legendItemRendering = 'legendItemRendering';\n/**\n * Trigger before legend items.\n *\n * @private\n */\nexport var legendRendering = 'legendRendering';\n/**\n * Trigger after resize the treemap.\n *\n * @private\n */\nexport var resize = 'resize';\n/**\n * Define the font family in treemap component.\n *\n * @private\n */\nexport var defaultFont = 'Roboto, Segoe UI, Noto, Sans-serif';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * Maps base doc\n */\nimport { Property, ChildProperty, Complex, Collection } from '@syncfusion/ej2-base';\nimport { defaultFont } from './constants';\n/**\n * Sets and gets the options for customizing the color and width of the border in treemap component.\n */\nvar Border = /** @class */ (function (_super) {\n __extends(Border, _super);\n function Border() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('#808080')\n ], Border.prototype, \"color\", void 0);\n __decorate([\n Property(0)\n ], Border.prototype, \"width\", void 0);\n return Border;\n}(ChildProperty));\nexport { Border };\n/**\n * Sets and gets the margin for the treemap component.\n */\nvar Margin = /** @class */ (function (_super) {\n __extends(Margin, _super);\n function Margin() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(10)\n ], Margin.prototype, \"left\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"right\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"top\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"bottom\", void 0);\n return Margin;\n}(ChildProperty));\nexport { Margin };\n/**\n * Sets and gets the options to customize the style of the text contents in the treemap component.\n */\nvar Font = /** @class */ (function (_super) {\n __extends(Font, _super);\n function Font() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], Font.prototype, \"size\", void 0);\n __decorate([\n Property(null)\n ], Font.prototype, \"color\", void 0);\n __decorate([\n Property(defaultFont)\n ], Font.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontStyle\", void 0);\n __decorate([\n Property(1)\n ], Font.prototype, \"opacity\", void 0);\n return Font;\n}(ChildProperty));\nexport { Font };\n/**\n * Sets and gets the options for customizing the common title of the treemap component.\n */\nvar CommonTitleSettings = /** @class */ (function (_super) {\n __extends(CommonTitleSettings, _super);\n function CommonTitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], CommonTitleSettings.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], CommonTitleSettings.prototype, \"description\", void 0);\n return CommonTitleSettings;\n}(ChildProperty));\nexport { CommonTitleSettings };\n/**\n * Sets and gets the options for customizing the subtitle of the treemap component.\n */\nvar SubTitleSettings = /** @class */ (function (_super) {\n __extends(SubTitleSettings, _super);\n function SubTitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ fontFamily: null }, Font)\n ], SubTitleSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property('Center')\n ], SubTitleSettings.prototype, \"alignment\", void 0);\n return SubTitleSettings;\n}(CommonTitleSettings));\nexport { SubTitleSettings };\n/**\n * Sets and gets the options for customizing the title of the treemap component.\n */\nvar TitleSettings = /** @class */ (function (_super) {\n __extends(TitleSettings, _super);\n function TitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ fontFamily: null }, Font)\n ], TitleSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property('Center')\n ], TitleSettings.prototype, \"alignment\", void 0);\n __decorate([\n Complex({}, SubTitleSettings)\n ], TitleSettings.prototype, \"subtitleSettings\", void 0);\n return TitleSettings;\n}(CommonTitleSettings));\nexport { TitleSettings };\n/**\n * Sets and gets the options to customize the color-mapping in treemap component.\n */\nvar ColorMapping = /** @class */ (function (_super) {\n __extends(ColorMapping, _super);\n function ColorMapping() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"from\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"to\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"color\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"label\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"minOpacity\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"maxOpacity\", void 0);\n __decorate([\n Property(true)\n ], ColorMapping.prototype, \"showLegend\", void 0);\n return ColorMapping;\n}(ChildProperty));\nexport { ColorMapping };\n/**\n * Sets and gets the options for customizing the legend of the treemap component.\n */\nvar LegendSettings = /** @class */ (function (_super) {\n __extends(LegendSettings, _super);\n function LegendSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('Default')\n ], LegendSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('transparent')\n ], LegendSettings.prototype, \"background\", void 0);\n __decorate([\n Property('Circle')\n ], LegendSettings.prototype, \"shape\", void 0);\n __decorate([\n Property('')\n ], LegendSettings.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], LegendSettings.prototype, \"height\", void 0);\n __decorate([\n Complex({ fontFamily: null }, Font)\n ], LegendSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], LegendSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(15)\n ], LegendSettings.prototype, \"shapeWidth\", void 0);\n __decorate([\n Property(15)\n ], LegendSettings.prototype, \"shapeHeight\", void 0);\n __decorate([\n Property(10)\n ], LegendSettings.prototype, \"shapePadding\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"imageUrl\", void 0);\n __decorate([\n Complex({ color: '#000000', width: 0 }, Border)\n ], LegendSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ color: '#000000', width: 0 }, Border)\n ], LegendSettings.prototype, \"shapeBorder\", void 0);\n __decorate([\n Complex({}, CommonTitleSettings)\n ], LegendSettings.prototype, \"title\", void 0);\n __decorate([\n Complex({ size: '14px' }, Font)\n ], LegendSettings.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('Bottom')\n ], LegendSettings.prototype, \"position\", void 0);\n __decorate([\n Property('None')\n ], LegendSettings.prototype, \"orientation\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"invertedPointer\", void 0);\n __decorate([\n Property('After')\n ], LegendSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('None')\n ], LegendSettings.prototype, \"labelDisplayMode\", void 0);\n __decorate([\n Property('Center')\n ], LegendSettings.prototype, \"alignment\", void 0);\n __decorate([\n Property({ x: 0, y: 0 })\n ], LegendSettings.prototype, \"location\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"showLegendPath\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"valuePath\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"removeDuplicateLegend\", void 0);\n return LegendSettings;\n}(ChildProperty));\nexport { LegendSettings };\n/**\n * Sets and gets the settings for drill to visualize the treemap rendered in the initial state.\n */\nvar InitialDrillSettings = /** @class */ (function (_super) {\n __extends(InitialDrillSettings, _super);\n function InitialDrillSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], InitialDrillSettings.prototype, \"groupIndex\", void 0);\n __decorate([\n Property(null)\n ], InitialDrillSettings.prototype, \"groupName\", void 0);\n return InitialDrillSettings;\n}(ChildProperty));\nexport { InitialDrillSettings };\n/**\n * Sets and gets the options for customizing the leaf item of the treemap component.\n */\nvar LeafItemSettings = /** @class */ (function (_super) {\n __extends(LeafItemSettings, _super);\n function LeafItemSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(false)\n ], LeafItemSettings.prototype, \"autoFill\", void 0);\n __decorate([\n Complex({}, Border)\n ], LeafItemSettings.prototype, \"border\", void 0);\n __decorate([\n Property(0)\n ], LeafItemSettings.prototype, \"gap\", void 0);\n __decorate([\n Property(10)\n ], LeafItemSettings.prototype, \"padding\", void 0);\n __decorate([\n Property(1)\n ], LeafItemSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LeafItemSettings.prototype, \"showLabels\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelPath\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelFormat\", void 0);\n __decorate([\n Property('TopLeft')\n ], LeafItemSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Complex({ color: null, size: '12px' }, Font)\n ], LeafItemSettings.prototype, \"labelStyle\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelTemplate\", void 0);\n __decorate([\n Property('Center')\n ], LeafItemSettings.prototype, \"templatePosition\", void 0);\n __decorate([\n Property('Trim')\n ], LeafItemSettings.prototype, \"interSectAction\", void 0);\n __decorate([\n Collection([], ColorMapping)\n ], LeafItemSettings.prototype, \"colorMapping\", void 0);\n return LeafItemSettings;\n}(ChildProperty));\nexport { LeafItemSettings };\n/**\n * Sets and gets the options for customizing the tooltip of the treemap component.\n */\nvar TooltipSettings = /** @class */ (function (_super) {\n __extends(TooltipSettings, _super);\n function TooltipSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('')\n ], TooltipSettings.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(0.75)\n ], TooltipSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(['Circle'])\n ], TooltipSettings.prototype, \"markerShapes\", void 0);\n __decorate([\n Complex({}, Border)\n ], TooltipSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ fontFamily: defaultFont, size: '13px' }, Font)\n ], TooltipSettings.prototype, \"textStyle\", void 0);\n return TooltipSettings;\n}(ChildProperty));\nexport { TooltipSettings };\n/**\n * Sets and gets the options for customizing the selection of the leaf items in treemap component.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], SelectionSettings.prototype, \"fill\", void 0);\n __decorate([\n Property('0.5')\n ], SelectionSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, Border)\n ], SelectionSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Item')\n ], SelectionSettings.prototype, \"mode\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Sets and gets the options for customizing the highlighting of the treemap item,\n * when the mouse hover is performed in it.\n */\nvar HighlightSettings = /** @class */ (function (_super) {\n __extends(HighlightSettings, _super);\n function HighlightSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], HighlightSettings.prototype, \"enable\", void 0);\n __decorate([\n Property('#808080')\n ], HighlightSettings.prototype, \"fill\", void 0);\n __decorate([\n Property('0.5')\n ], HighlightSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, Border)\n ], HighlightSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Item')\n ], HighlightSettings.prototype, \"mode\", void 0);\n return HighlightSettings;\n}(ChildProperty));\nexport { HighlightSettings };\n/**\n * Sets and gets the options for customizing the levels of the treemap component.\n */\nvar LevelSettings = /** @class */ (function (_super) {\n __extends(LevelSettings, _super);\n function LevelSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"groupPath\", void 0);\n __decorate([\n Property(0)\n ], LevelSettings.prototype, \"groupGap\", void 0);\n __decorate([\n Property(10)\n ], LevelSettings.prototype, \"groupPadding\", void 0);\n __decorate([\n Complex({}, Border)\n ], LevelSettings.prototype, \"border\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(false)\n ], LevelSettings.prototype, \"autoFill\", void 0);\n __decorate([\n Property(1)\n ], LevelSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LevelSettings.prototype, \"showHeader\", void 0);\n __decorate([\n Property(20)\n ], LevelSettings.prototype, \"headerHeight\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"headerFormat\", void 0);\n __decorate([\n Property('Near')\n ], LevelSettings.prototype, \"headerAlignment\", void 0);\n __decorate([\n Complex({ color: null, size: '13px' }, Font)\n ], LevelSettings.prototype, \"headerStyle\", void 0);\n __decorate([\n Property('TopLeft')\n ], LevelSettings.prototype, \"templatePosition\", void 0);\n __decorate([\n Collection([], ColorMapping)\n ], LevelSettings.prototype, \"colorMapping\", void 0);\n return LevelSettings;\n}(ChildProperty));\nexport { LevelSettings };\n","import { Rect, itemsToOrder, TextOption, measureText, textTrim, hide, wordWrap, textWrap, getTemplateFunction, convertElement, findLabelLocation, PathOption, textFormatter, colorNameToHex, convertHexToColor, colorMap, measureElement, convertToContainer, convertToRect, getShortestEdge, getArea, orderByArea, isParentItem, maintainSelection } from '../utils/helper';\nimport { isNullOrUndefined, createElement, extend } from '@syncfusion/ej2-base';\nimport { Location, findChildren, renderTextElement } from '../utils/helper';\nimport { itemRendering } from '../model/constants';\nimport { LevelsData } from './../treemap';\n/**\n * To calculate and render the shape layer\n */\nvar LayoutPanel = /** @class */ (function () {\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function LayoutPanel(treemap) {\n this.treemap = treemap;\n }\n LayoutPanel.prototype.processLayoutPanel = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data;\n var totalRect;\n if (LevelsData.levelsData && LevelsData.levelsData.length > 0) {\n data = (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) &&\n !isNullOrUndefined(this.treemap.initialDrillDown.groupName)) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length === 0) ?\n this.getDrilldownData(LevelsData.levelsData[0], [])[0] : LevelsData.levelsData[0];\n totalRect = extend({}, this.treemap.areaRect, totalRect, false);\n if (!isNullOrUndefined(this.treemap.treeMapLegendModule) && !isNullOrUndefined(this.treemap.totalRect)) {\n if (this.treemap.legendSettings.position !== 'Float') {\n totalRect = this.treemap.totalRect;\n }\n }\n if (!isNullOrUndefined(this.treemap.currentLevel) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? !isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length !== 0)) {\n var count = this.treemap.drilledItems.length - 1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var x = this.treemap.drilledItems[count]['data'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var y = {};\n y[this.treemap.drilledItems[count]['data']['groupName']] = [x];\n if (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) && !this.treemap.enableBreadcrumb) {\n this.treemap.currentLevel = this.treemap.drilledItems[count]['data']['groupIndex'];\n }\n this.calculateLayoutItems(y || LevelsData.levelsData[0], totalRect);\n this.renderLayoutItems(y || LevelsData.levelsData[0]);\n }\n else {\n if (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length === 0)) {\n this.treemap.currentLevel = this.treemap.initialDrillDown.groupIndex;\n }\n this.calculateLayoutItems(data || LevelsData.levelsData[0], totalRect);\n this.renderLayoutItems(data || LevelsData.levelsData[0]);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getDrilldownData = function (data, drillData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var treemap = this.treemap;\n var newData = {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n if (child && child.length > 0 && drillData.length === 0) {\n for (var i = 0; i < child.length; i++) {\n if (child[i]['groupIndex'] === treemap.initialDrillDown.groupIndex &&\n child[i]['name'] === treemap.initialDrillDown.groupName) {\n child[i]['isDrilled'] = true;\n newData[child[i]['groupName']] = [child[i]];\n drillData.push(newData);\n }\n }\n for (var j = 0; j < child.length; j++) {\n this.getDrilldownData(child[j], drillData);\n }\n }\n return drillData;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.calculateLayoutItems = function (data, rect) {\n this.renderItems = [];\n this.parentData = [];\n if (!isNullOrUndefined(this.treemap.weightValuePath)) {\n if (this.treemap.layoutType.indexOf('SliceAndDice') > -1) {\n this.computeSliceAndDiceDimensional(data, rect);\n }\n else {\n rect.height = rect.height + rect.y;\n rect.width = rect.width + rect.x;\n this.computeSquarifyDimensional(data, rect);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeSliceAndDiceDimensional = function (data, coords) {\n var leafItem = this.treemap.leafItemSettings;\n var rect;\n var groups = this.treemap.levels;\n var groupIndex;\n var isLeafItem = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var children = findChildren(data)['values'];\n var gap;\n var headerHeight;\n if (children && children.length > 0) {\n this.sliceAndDiceProcess(children, coords);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < children.length; i++) {\n groupIndex = children[i]['groupIndex'];\n isLeafItem = (groups.length === 0 || groupIndex === groups.length);\n gap = isLeafItem ? leafItem.gap : groups[groupIndex].groupGap;\n headerHeight = groups.length === 0 ? 0 : groups[groupIndex] ? groups[groupIndex].showHeader ?\n groups[groupIndex].headerHeight : 0 : groups[groupIndex - 1].showHeader ? groups[groupIndex - 1].headerHeight : 0;\n rect = children[i]['rect'];\n rect = new Rect(rect.x + (gap / 2), rect.y + (headerHeight + (gap / 2)), rect.width - gap, Math.abs(rect.height - (gap + headerHeight)));\n this.computeSliceAndDiceDimensional(children[i], rect);\n }\n }\n }\n return data;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.sliceAndDiceProcess = function (processData, rect) {\n var parentArea = rect.height * rect.width;\n var levels = this.treemap.levels;\n var childValue;\n var alottedValue = 0;\n var totalWeight = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n processData.forEach(function (data) { totalWeight += data['weight']; });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n processData.forEach(function (child) {\n child['weightArea'] = parentArea * child['weight'] / totalWeight;\n });\n var isHorizontal = (this.treemap.layoutType === 'SliceAndDiceAuto') ? (rect.width > rect.height) :\n (this.treemap.layoutType === 'SliceAndDiceHorizontal');\n processData.sort(itemsToOrder);\n for (var i = 0; i < processData.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = processData[i];\n item['isLeafItem'] = (levels.length === 0) || ((this.treemap.isHierarchicalData ||\n isNullOrUndefined(this.treemap.leafItemSettings.labelPath)) ?\n item['groupIndex'] === levels.length - 1 : item['groupIndex'] === this.treemap.levels.length);\n if (isHorizontal) {\n childValue = ((parentArea / totalWeight) * processData[i]['weight']) / rect.height;\n if (alottedValue <= rect.width) {\n processData[i]['rect'] = new Rect(alottedValue + rect.x, rect.y, childValue, rect.height);\n }\n }\n else {\n childValue = ((parentArea / totalWeight) * processData[i]['weight']) / rect.width;\n if (alottedValue <= rect.height) {\n processData[i]['rect'] = new Rect(rect.x, alottedValue + rect.y, rect.width, childValue);\n }\n }\n alottedValue += childValue;\n this.renderItems.push(processData[i]);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeSquarifyDimensional = function (data, coords) {\n var leaf = this.treemap.leafItemSettings;\n var rect;\n var levels = this.treemap.levels;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var groupIndex = 0;\n var isLeafItem = false;\n var item;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n var index;\n var padding;\n var headerHeight;\n if (child && child.length > 0) {\n if (this.parentData.length === 0) {\n this.parentData = [];\n this.parentData.push(child);\n }\n this.calculateChildrenLayout(data, child, coords);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < child.length; i++) {\n item = child[i];\n index = item['groupIndex'];\n rect = item['rect'];\n padding = (item['isLeafItem'] ? leaf.padding : levels[index].groupPadding) / 2;\n headerHeight = this.treemap.isHierarchicalData ? index === 0 && item['isLeafItem'] ? 0 : levels[index] ?\n levels[index].showHeader ? levels[index].headerHeight : 0 : 0 : (levels.length === 0) ? 0 : levels[index] ?\n levels[index].showHeader ? levels[index].headerHeight : 0 : 0;\n rect = new Rect(rect.x + padding, rect.y + (headerHeight + padding), rect.width - padding, rect.height - padding);\n if (!item['isLeafItem'] && item['weight'] > 0) {\n this.computeSquarifyDimensional(child[i], rect);\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.calculateChildrenLayout = function (parent, children, coords) {\n this.computeTotalArea(children, getArea(coords));\n children.sort(orderByArea);\n this.performRowsLayout(children, [], coords, []);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.performRowsLayout = function (data, currentRow, rect, stack) {\n var dataLength = data.length;\n if (dataLength === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newCoordinates = this.getCoordinates(currentRow, rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newStack = stack.concat(newCoordinates);\n return newStack;\n }\n var width = getShortestEdge(rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var nextDatum = data[0];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var restData = data.slice(1, dataLength);\n if (this.aspectRatio(currentRow, nextDatum, width)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newRow = currentRow.concat(nextDatum);\n return this.performRowsLayout(restData, newRow, rect, stack);\n }\n else {\n var currentRowLength = currentRow.length;\n var valueSum = 0;\n for (var i = 0; i < currentRowLength; i += 1) {\n valueSum += currentRow[i]['itemArea'];\n }\n var newContainer = this.cutArea(rect, valueSum);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newCoordinates = this.getCoordinates(currentRow, rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newStack = stack.concat(newCoordinates);\n return this.performRowsLayout(data, [], newContainer, newStack);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.aspectRatio = function (currentRow, nextDatum, length) {\n if (currentRow.length === 0) {\n return true;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newRow = currentRow.concat(nextDatum);\n var currentMaxAspectRatio = this.findMaxAspectRatio(currentRow, length);\n var newMaxAspectRatio = this.findMaxAspectRatio(newRow, length);\n return (currentMaxAspectRatio >= newMaxAspectRatio);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.findMaxAspectRatio = function (row, length) {\n var rowLength = row.length;\n var minArea = Infinity;\n var maxArea = -Infinity;\n var sumArea = 0;\n for (var i = 0; i < rowLength; i += 1) {\n var area = row[i]['itemArea'];\n if (area < minArea) {\n minArea = area;\n }\n if (area > maxArea) {\n maxArea = area;\n }\n sumArea += area;\n }\n var result = Math.max((Math.pow(length, 2)) * maxArea / (Math.pow(sumArea, 2)), (Math.pow(sumArea, 2)) /\n ((Math.pow(length, 2)) * minArea));\n return result;\n };\n LayoutPanel.prototype.cutArea = function (rect, area) {\n var newContainer = convertToContainer(rect);\n var width = newContainer.width;\n var height = newContainer.height;\n var xOffset = newContainer.x;\n var yOffset = newContainer.y;\n if (width >= height) {\n var areaWidth = area / height;\n var newWidth = width - areaWidth;\n var container = {\n x: xOffset + areaWidth,\n y: yOffset,\n width: newWidth,\n height: height\n };\n return convertToRect(container);\n }\n else {\n var areaHeight = area / width;\n var newHeight = height - areaHeight;\n var container = {\n x: xOffset,\n y: yOffset + areaHeight,\n width: width,\n height: newHeight\n };\n return convertToRect(container);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getCoordinates = function (row, rect) {\n var container = convertToContainer(rect);\n var headerHeight;\n var width = container.width;\n var height = container.height;\n var xOffset = container.x;\n var yOffset = container.y;\n var rowLength = row.length;\n var levels = this.treemap.levels;\n var leaf = this.treemap.leafItemSettings;\n var index;\n var valueSum = 0;\n for (var i = 0; i < rowLength; i += 1) {\n valueSum += row[i]['itemArea'];\n }\n var areaWidth = valueSum / height;\n var areaHeight = valueSum / width;\n var subXOffset = xOffset;\n var subYOffset = yOffset;\n var padding;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var coordinates = [];\n var isParent;\n var gap;\n var parentRect;\n for (var i = 0; i < rowLength; i += 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = row[i];\n index = item['groupIndex'];\n item['isLeafItem'] = (levels.length === 0) || (this.treemap.isHierarchicalData ? index === levels.length :\n isNullOrUndefined(leaf.labelPath) ? false : index === levels.length);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isParent = isParentItem(this.parentData[0], item);\n parentRect = isParent ? this.treemap.areaRect : item['parent'].rect;\n padding = item['isLeafItem'] ? leaf.padding : levels[index].groupPadding;\n if (width >= height) {\n var y1 = subYOffset + item['itemArea'] / areaWidth;\n item['rect'] = {\n x: subXOffset,\n y: subYOffset,\n width: subXOffset + areaWidth,\n height: y1\n };\n subYOffset = y1;\n }\n else {\n var x1 = subXOffset + item['itemArea'] / areaHeight;\n item['rect'] = {\n x: subXOffset,\n y: subYOffset,\n width: x1,\n height: subYOffset + areaHeight\n };\n subXOffset = x1;\n }\n if (item['weight'] > 0 && (isParent || (Math.round(rect.y + (padding / 2)) <=\n Math.round(parentRect.y + (parentRect.height - parentRect.y)) && Math.round(rect.x + (padding / 2)) <=\n Math.round(parentRect.x + (parentRect.width - parentRect.x))))) {\n this.renderItems.push(item);\n coordinates.push(item);\n }\n }\n return coordinates;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeTotalArea = function (data, area) {\n var dataLength = data.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataSum = 0;\n var result = [];\n for (var i = 0; i < dataLength; i += 1) {\n var dataLength_1 = data.length;\n var dataSum_1 = 0;\n for (var i_1 = 0; i_1 < dataLength_1; i_1 += 1) {\n dataSum_1 += data[i_1]['weight'];\n }\n var multiplier = area / dataSum_1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var datum = void 0;\n for (var j = 0; j < dataLength_1; j++) {\n datum = data[j];\n datum['itemArea'] = datum['weight'] * multiplier;\n result.push(datum);\n }\n }\n return result;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.onDemandProcess = function (childItems) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentItem = {};\n var totalRect;\n parentItem = childItems[0]['parent'];\n this.treemap.currentLevel = parentItem['isDrilled'] ? parentItem['groupIndex'] : null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentItemGroupname = {};\n if (isNullOrUndefined(parentItem['groupName'])) {\n parentItemGroupname = parentItem;\n }\n else {\n parentItemGroupname[parentItem['groupName']] = [parentItem];\n }\n totalRect = extend({}, this.treemap.areaRect, totalRect, false);\n if (!isNullOrUndefined(this.treemap.treeMapLegendModule) && !isNullOrUndefined(this.treemap.totalRect)) {\n totalRect = this.treemap.totalRect;\n }\n var count = this.treemap.levels.length;\n for (var i = 0; i < count; i++) {\n var levelCount = childItems[0]['groupIndex'];\n if (count === levelCount) {\n this.treemap.levels[count] = this.treemap.levels[i];\n }\n else {\n this.treemap.levels.splice(count - 1, 1);\n }\n }\n this.calculateLayoutItems(parentItemGroupname, totalRect);\n this.renderLayoutItems(parentItemGroupname);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.renderLayoutItems = function (renderData) {\n var _this = this;\n var textCollection = [];\n var position;\n var treeMap = this.treemap;\n var colorMapping;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var txtVisible;\n var getItemColor;\n var eventArgs;\n this.renderer = treeMap.renderer;\n var trimHeader;\n var textLocation = new Location(0, 0);\n var pathOptions;\n var elementID = treeMap.element.id;\n var index;\n var templatePosition;\n var mode = treeMap.layoutType;\n var rect;\n var format;\n var interSectAction = this.treemap.leafItemSettings.interSectAction;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var textSize;\n var fill;\n var item;\n var renderText;\n var opacity;\n var padding = 5;\n var rectPath = '';\n var isRender;\n var secondaryEle = document.getElementById(treeMap.element.id + '_Secondary_Element');\n var groupId;\n var textOptions;\n var templateEle;\n var gap;\n var textStyle;\n var levels = treeMap.levels;\n this.layoutGroup = this.renderer.createGroup({ id: elementID + '_TreeMap_' + mode + '_Layout' });\n var itemGroup;\n var level;\n var template;\n var border;\n var templateGroup = createElement('div', {\n id: treeMap.element.id + '_Label_Template_Group',\n className: 'template',\n styles: 'overflow: hidden; position: absolute;pointer-events: none;' +\n 'top:' + treeMap.areaRect.y + 'px;' +\n 'left:' + treeMap.areaRect.x + 'px;' +\n 'height:' + treeMap.areaRect.height + 'px;' +\n 'width:' + treeMap.areaRect.width + 'px;'\n });\n var isLeafItem = false;\n var leaf = treeMap.leafItemSettings;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childItems;\n var connectorText;\n var _loop_1 = function (i) {\n item = this_1.renderItems[i];\n index = item['groupIndex'];\n if (this_1.treemap.drillDownView && isNullOrUndefined(this_1.treemap.currentLevel)\n && index > 0 || this_1.treemap.drillDownView\n && index > (this_1.treemap.currentLevel + 1)) {\n return \"continue\";\n }\n rect = item['rect'];\n isLeafItem = item['isLeafItem'];\n groupId = elementID + '_Level_Index_' + index + '_Item_Index_' + i;\n itemGroup = this_1.renderer.createGroup({ id: groupId + '_Group' });\n gap = (isLeafItem ? leaf.gap : levels[index].groupGap) / 2;\n var treemapItemRect = this_1.treemap.totalRect ? convertToContainer(this_1.treemap.totalRect) : this_1.treemap.areaRect;\n if (treeMap.layoutType === 'Squarified') {\n rect.width = Math.abs(rect.x - rect.width) - gap;\n rect.height = Math.abs(rect.y - rect.height) - gap;\n }\n if (treeMap.renderDirection === 'TopRightBottomLeft') {\n rect.x = (treemapItemRect.x + treemapItemRect.width) - rect.width - Math.abs(treemapItemRect.x - rect.x);\n }\n else if (treeMap.renderDirection === 'BottomLeftTopRight') {\n rect.y = (treemapItemRect.y + treemapItemRect.height) - rect.height - Math.abs(treemapItemRect.y - rect.y);\n }\n else if (treeMap.renderDirection === 'BottomRightTopLeft') {\n rect.x = (treemapItemRect.x + treemapItemRect.width) - rect.width - Math.abs(treemapItemRect.x - rect.x);\n rect.y = (treemapItemRect.y + treemapItemRect.height) - rect.height - Math.abs(treemapItemRect.y - rect.y);\n }\n colorMapping = isLeafItem ? leaf.colorMapping : levels[index].colorMapping;\n getItemColor = this_1.getItemColor(isLeafItem, item);\n fill = getItemColor['fill'];\n opacity = getItemColor['opacity'];\n format = isLeafItem ? leaf.labelFormat : (levels[index]).headerFormat;\n var levelName;\n txtVisible = isLeafItem ? leaf.showLabels : (levels[index]).showHeader;\n if (index === this_1.treemap.currentLevel) {\n if (this_1.treemap.enableBreadcrumb) {\n var re = /#/gi;\n connectorText = '#' + this_1.treemap.breadcrumbConnector + '#';\n levelName = item['levelOrderName'].replace(re, connectorText);\n levelName = index !== 0 ? '#' + levelName : levelName;\n }\n else {\n levelName = item['name'];\n }\n }\n else {\n if (this_1.treemap.enableBreadcrumb) {\n item['isDrilled'] = false;\n }\n levelName = item['name'];\n }\n renderText = textFormatter(format, item['data'], this_1.treemap) || levelName || 'undefined';\n childItems = findChildren(item)['values'];\n renderText = !isLeafItem && childItems && childItems.length > 0 && this_1.treemap.enableDrillDown ?\n !item['isDrilled'] ? treeMap.enableRtl ? renderText + ' [+]' : '[+] ' + renderText :\n treeMap.enableRtl ? renderText + ' [-]' : '[-] ' + renderText : renderText;\n textStyle = (isLeafItem ? leaf.labelStyle : levels[index].headerStyle);\n textStyle.fontFamily = this_1.treemap.themeStyle.labelFontFamily || textStyle.fontFamily;\n border = isLeafItem ? leaf.border : levels[index].border;\n position = !isLeafItem ? (levels[index].headerAlignment) === 'Near' ? 'TopLeft' : (levels[index].headerAlignment) === 'Center' ?\n 'TopCenter' : 'TopRight' : leaf.labelPosition;\n templatePosition = isLeafItem ? leaf.templatePosition : levels[index].templatePosition;\n template = isLeafItem ? leaf.labelTemplate : levels[index].headerTemplate;\n item['options'] = { border: border, opacity: opacity, fill: fill };\n eventArgs = {\n cancel: false, name: itemRendering, treemap: this_1.treemap, text: renderText,\n currentItem: item, RenderItems: this_1.renderItems, options: item['options']\n };\n this_1.treemap.trigger(itemRendering, eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n rectPath = ' M ' + rect.x + ' ' + rect.y + ' L ' + (rect.x + rect.width) + ' ' + rect.y +\n ' L ' + (rect.x + rect.width) + ' ' + (rect.y + rect.height) + ' L ' + rect.x + ' ' + (rect.y + rect.height) + 'z';\n pathOptions = new PathOption(groupId + '_RectPath', fill, border.width, border.color, opacity, null, rectPath);\n var path = _this.renderer.drawPath(pathOptions);\n itemGroup.appendChild(path);\n if (txtVisible) {\n if (eventArgs.text !== renderText) {\n eventArgs.text = textFormatter(eventArgs.text, item['data'], _this.treemap) || levelName;\n }\n _this.renderItemText(eventArgs.text.toString(), itemGroup, textStyle, rect, interSectAction, groupId, fill, position, connectorText);\n }\n if (template) {\n templateEle = _this.renderTemplate(secondaryEle, groupId, rect, templatePosition, template, item, isLeafItem);\n if (!isNullOrUndefined(templateEle)) {\n templateGroup.appendChild(templateEle);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.treemap.renderReactTemplates();\n }\n }\n itemGroup.setAttribute('aria-label', item['name']);\n itemGroup.setAttribute('tabindex', (_this.treemap.tabIndex + i + 2).toString());\n maintainSelection(_this.treemap, itemGroup, 'treeMapSelection');\n _this.layoutGroup.appendChild(itemGroup);\n }\n });\n };\n var this_1 = this;\n for (var i = 0; i < this.renderItems.length; i++) {\n _loop_1(i);\n }\n if (templateGroup.childNodes.length > 0) {\n secondaryEle.appendChild(templateGroup);\n }\n this.treemap.svgObject.appendChild(this.layoutGroup);\n };\n LayoutPanel.prototype.renderItemText = function (text, parentElement, textStyle, rect, interSectAction, groupId, fill, position, connectorText) {\n var level;\n var headerPosition;\n var secondaryEle = document.getElementById(this.treemap.element.id + '_Secondary_Element');\n var leaf = this.treemap.leafItemSettings;\n var padding = 5;\n var textSize;\n var textCollection = [];\n var customText;\n var templateEle;\n var tspanText = [];\n var height = 0;\n var textName;\n textCollection = ((text.indexOf('<br>')) !== -1) ? text.split('<br>') : null;\n customText = this.labelInterSectAction(rect, text, textStyle, interSectAction);\n textSize = measureText(textCollection && textCollection[0] || customText[0], textStyle);\n if (this.treemap.enableRtl) {\n var labelSize = measureText(text, textStyle);\n var drillSymbolCount = text.search('[+]') || text.search('[-]');\n if (rect.width < labelSize.width && drillSymbolCount > 0) {\n var label = text.substring(drillSymbolCount - 1, text.length);\n var drillSymbol = '[+]';\n var drillSymbolSize = measureText(drillSymbol, textStyle);\n customText['0'] = textTrim(rect.width - drillSymbolSize.width - padding, customText[0], textStyle) + label;\n }\n }\n var textLocation = findLabelLocation(rect, position, textSize, 'Text', this.treemap);\n if (!isNullOrUndefined(textCollection)) {\n var collection = [];\n var texts = null;\n var maxNumber = [];\n for (var i = 0; i < textCollection.length; i++) {\n texts = textTrim((rect.width - 5), textCollection[i], textStyle);\n textSize = measureText(texts, textStyle);\n height += textSize.height;\n maxNumber.push(textSize.width);\n collection.push(texts);\n }\n customText = collection;\n textSize.width = Math.max.apply(null, maxNumber);\n textSize.height = height;\n }\n if (interSectAction === 'WrapByWord' || interSectAction === 'Wrap' || interSectAction === 'Trim') {\n for (var j = 0; j < customText.length; j++) {\n textSize = measureText(customText[j], textStyle);\n height += textSize.height;\n if ((rect.height - padding) > height) {\n tspanText.push(customText[j]);\n }\n }\n if (interSectAction === 'Wrap' && customText.length !== tspanText.length && tspanText.length) {\n var collectionLength = tspanText.length - 1;\n var stringText = tspanText[collectionLength];\n stringText = stringText.substring(0, (stringText.length - 1)) + '...';\n tspanText.splice(collectionLength);\n if (stringText !== '...') {\n tspanText.push(stringText);\n }\n }\n }\n else {\n textName = customText;\n tspanText.push(textName);\n }\n var textOptions = new TextOption(groupId + '_Text', textLocation.x, textLocation.y, 'start', tspanText, '', '', connectorText);\n renderTextElement(textOptions, textStyle, textStyle.color || this.getSaturatedColor(fill), parentElement);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getItemColor = function (isLeafItem, item) {\n var treemap = this.treemap;\n var itemFill = isLeafItem ? treemap.leafItemSettings.fill : treemap.levels[item['groupIndex']].fill;\n var itemOpacity = isLeafItem ? treemap.leafItemSettings.opacity : treemap.levels[item['groupIndex']].opacity;\n if (!isNullOrUndefined(LevelsData.defaultLevelsData)) {\n if (LevelsData.defaultLevelsData.length > 0) {\n LevelsData.levelsData = LevelsData.defaultLevelsData;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentData = findChildren(LevelsData.levelsData[0])['values'];\n var colorMapping = isLeafItem ? treemap.leafItemSettings.colorMapping :\n treemap.levels[item['groupIndex']].colorMapping;\n if (colorMapping.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var option = colorMap(colorMapping, item['data'][this.treemap.equalColorValuePath], item['data'][this.treemap.rangeColorValuePath], item['data'][this.treemap.weightValuePath]);\n itemFill = !isNullOrUndefined(option['fill']) ? option['fill'] : treemap.leafItemSettings.fill;\n itemOpacity = option['opacity'];\n }\n else {\n for (var i = 0; i < parentData.length; i++) {\n if (parentData[i]['levelOrderName'] === item['levelOrderName'].split('#')[0]) {\n itemFill = !isNullOrUndefined(itemFill) ? itemFill : !isNullOrUndefined(treemap.colorValuePath) ?\n parentData[i]['data'][treemap.colorValuePath] : treemap.palette.length > 0 ?\n treemap.palette[i % treemap.palette.length] : '#808080';\n }\n }\n }\n return { fill: itemFill, opacity: itemOpacity };\n };\n /**\n * To find saturated color for datalabel\n *\n * @param {string} color - Specifies the color\n * @returns {string} - Returns the color\n */\n LayoutPanel.prototype.getSaturatedColor = function (color) {\n var saturatedColor = color;\n saturatedColor = (saturatedColor === 'transparent') ? window.getComputedStyle(document.body, null).backgroundColor : saturatedColor;\n var rgbValue = convertHexToColor(colorNameToHex(saturatedColor));\n var contrast = Math.round((rgbValue.r * 299 + rgbValue.g * 587 + rgbValue.b * 114) / 1000);\n return contrast >= 128 ? 'black' : 'white';\n };\n LayoutPanel.prototype.renderTemplate = function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n secondaryEle, groupId, rect, position, template, item, isLeafItem) {\n var templateId = isLeafItem ? groupId + '_LabelTemplate' : groupId + '_HeaderTemplate';\n var baseTemplateId = isLeafItem ? '_LabelTemplate' : '_HeaderTemplate';\n if (isNullOrUndefined(template['prototype'])) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var keys = Object.keys(item['data']);\n for (var i = 0; i < keys.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n template = template.replace(new RegExp('{{:' + keys[i] + '}}', 'g'), item['data'][keys[i].toString()]);\n }\n }\n var labelElement;\n if (!isNullOrUndefined(document.getElementById(this.treemap.element.id + '_Secondary_Element'))) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateFn = getTemplateFunction(template);\n var templateElement = templateFn(item['data'], this.treemap, template, this.treemap.element.id + baseTemplateId, false);\n labelElement = convertElement(templateElement, templateId, item['data']);\n var templateSize = measureElement(labelElement, secondaryEle);\n var templateLocation = findLabelLocation(rect, position, templateSize, 'Template', this.treemap);\n labelElement.style.left = templateLocation.x + 'px';\n labelElement.style.top = templateLocation.y + 'px';\n }\n return labelElement;\n };\n LayoutPanel.prototype.labelInterSectAction = function (rect, text, textStyle, alignment) {\n var textValue;\n var maxWidth = rect.width - 10;\n switch (alignment) {\n case 'Hide':\n textValue = [hide(maxWidth, rect.height, text, textStyle)];\n break;\n case 'Trim':\n textValue = [textTrim((maxWidth + 3), text, textStyle)];\n break;\n case 'WrapByWord':\n textValue = wordWrap(maxWidth, text, textStyle);\n break;\n case 'Wrap':\n textValue = textWrap(maxWidth, text, textStyle);\n break;\n }\n return textValue;\n };\n return LayoutPanel;\n}());\nexport { LayoutPanel };\n","import { print as printWindow, createElement } from '@syncfusion/ej2-base';\nimport { getElement } from '../utils/helper';\nimport { beforePrint } from '../model/constants';\n/**\n * Print module handles the print functionality for treemap.\n *\n * @hidden\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function Print(control) {\n this.control = control;\n }\n /**\n * This method is used to perform the print functionality in treemap.\n *\n * @param { string[] | string | Element} elements - Specifies the element.\n * @returns {void}\n * @private\n */\n Print.prototype.print = function (elements) {\n var _this = this;\n this.printWindow = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n this.printWindow.moveTo(0, 0);\n this.printWindow.resizeTo(screen.availWidth, screen.availHeight);\n var argsData = {\n cancel: false, htmlContent: this.getHTMLContent(elements), name: beforePrint\n };\n this.control.trigger(beforePrint, argsData, function () {\n if (!argsData.cancel) {\n printWindow(argsData.htmlContent, _this.printWindow);\n }\n });\n };\n /**\n * To get the html string of the Maps\n *\n * @param {string[] | string | Element} elements - Specifies the element\n * @returns {Element} - Returns the element\n * @private\n */\n Print.prototype.getHTMLContent = function (elements) {\n var div = createElement('div');\n if (elements) {\n if (elements instanceof Array) {\n elements.forEach(function (value) {\n div.appendChild(getElement(value).cloneNode(true));\n });\n }\n else if (elements instanceof Element) {\n div.appendChild(elements.cloneNode(true));\n }\n else {\n div.appendChild(getElement(elements).cloneNode(true));\n }\n }\n else {\n div.appendChild(this.control.element.cloneNode(true));\n }\n return div;\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n Print.prototype.getModuleName = function () {\n // Returns te module name\n return 'Print';\n };\n /**\n * To destroy the legend.\n *\n * @param {TreeMap} treemap - Specifies the treemap instance\n * @returns {void}\n * @private\n */\n Print.prototype.destroy = function (treemap) {\n /**\n * Destroy method performed here\n */\n };\n return Print;\n}());\nexport { Print };\n","import { createElement, Browser } from '@syncfusion/ej2-base';\nimport { triggerDownload } from '../utils/helper';\n/**\n * ImageExport module handles the export to image functionality for treemap.\n *\n * @hidden\n */\nvar ImageExport = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance\n */\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function ImageExport(control) {\n this.control = control;\n }\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {ExportType} type - Specifies the type of the image file.\n * @param {string} fileName - Specifies the file name of the image file.\n * @param {boolean} allowDownload - Specifies whether to download the file or not.\n * @returns {Promise} - Returns the promise string.\n * @private\n */\n ImageExport.prototype.export = function (type, fileName, allowDownload) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var promise = new Promise(function (resolve, reject) {\n var element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'height': _this.control.availableSize.height.toString(),\n 'width': _this.control.availableSize.width.toString()\n }\n });\n var isDownload = !(Browser.userAgent.toString().indexOf('HeadlessChrome') > -1);\n var svgData = '<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">' +\n _this.control.svgObject.outerHTML +\n '</svg>';\n var url = window.URL.createObjectURL(new Blob(type === 'SVG' ? [svgData] :\n [(new XMLSerializer()).serializeToString(_this.control.svgObject)], { type: 'image/svg+xml' }));\n if (type === 'SVG') {\n if (allowDownload) {\n triggerDownload(fileName, type, url, isDownload);\n }\n else {\n resolve(null);\n }\n }\n else {\n var image_1 = new Image();\n var context_1 = element.getContext('2d');\n image_1.onload = (function () {\n context_1.drawImage(image_1, 0, 0);\n window.URL.revokeObjectURL(url);\n if (allowDownload) {\n triggerDownload(fileName, type, element.toDataURL('image/png').replace('image/png', 'image/octet-stream'), isDownload);\n }\n else {\n if (type === 'JPEG') {\n resolve(element.toDataURL('image/jpeg'));\n }\n else if (type === 'PNG') {\n resolve(element.toDataURL('image/png'));\n }\n }\n });\n image_1.src = url;\n }\n });\n return promise;\n };\n ImageExport.prototype.getModuleName = function () {\n // Returns te module name\n return 'ImageExport';\n };\n /**\n * To destroy the ImageExport.\n *\n * @param {TreeMap} treemap - Specifies the instance of the treemap.\n * @returns {void}\n * @private\n */\n ImageExport.prototype.destroy = function (treemap) {\n // Destroy method performed here\n };\n return ImageExport;\n}());\nexport { ImageExport };\n","import { createElement, isNullOrUndefined, Browser } from '@syncfusion/ej2-base';\nimport { PdfPageOrientation, PdfDocument, PdfBitmap } from '@syncfusion/ej2-pdf-export';\n/**\n * PdfExport module handles the export to pdf functionality for treemap.\n *\n * @hidden\n */\nvar PdfExport = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance\n */\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function PdfExport(control) {\n this.control = control;\n }\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {ExportType} type - Specifies the type of the document.\n * @param {string} fileName - Specifies the name of the document.\n * @param {PdfPageOrientation} orientation - Specifies the orientation of the PDF document to export the component.\n * @param {boolean} allowDownload - Specifies whether to download the document or not.\n * @returns {Promise} - Returns the string.\n * @private\n */\n PdfExport.prototype.export = function (type, fileName, orientation, allowDownload) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var promise = new Promise(function (resolve, reject) {\n var element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'width': _this.control.availableSize.width.toString(),\n 'height': _this.control.availableSize.height.toString()\n }\n });\n var isDownload = !(Browser.userAgent.toString().indexOf('HeadlessChrome') > -1);\n orientation = isNullOrUndefined(orientation) ? PdfPageOrientation.Landscape : orientation;\n var exportElement = _this.control.svgObject.cloneNode(true);\n var backgroundElement = exportElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n var backgroundColor = backgroundElement.getAttribute('fill');\n if ((_this.control.theme === 'Tailwind' || _this.control.theme === 'TailwindDark' || _this.control.theme === 'Bootstrap5' || _this.control.theme === 'Bootstrap5Dark'\n || _this.control.theme === 'Fluent' || _this.control.theme === 'FluentDark') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n }\n var url = window.URL.createObjectURL(new Blob([(new XMLSerializer()).serializeToString(exportElement)], { type: 'image/svg+xml' }));\n var image = new Image();\n var context = element.getContext('2d');\n image.onload = (function () {\n context.drawImage(image, 0, 0);\n window.URL.revokeObjectURL(url);\n var document = new PdfDocument();\n var imageString = element.toDataURL('image/jpeg').replace('image/jpeg', 'image/octet-stream');\n document.pageSettings.orientation = orientation;\n imageString = imageString.slice(imageString.indexOf(',') + 1);\n document.pages.add().graphics.drawImage(new PdfBitmap(imageString), 0, 0, (_this.control.availableSize.width - 60), _this.control.availableSize.height);\n if (allowDownload) {\n document.save(fileName + '.pdf');\n document.destroy();\n }\n else {\n resolve(null);\n }\n });\n image.src = url;\n });\n return promise;\n };\n PdfExport.prototype.getModuleName = function () {\n // Returns te module name\n return 'PdfExport';\n };\n /**\n * To destroy the ImageExport.\n *\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @returns {void}\n * @private\n */\n PdfExport.prototype.destroy = function (treemap) {\n // Destroy method performed here\n };\n return PdfExport;\n}());\nexport { PdfExport };\n","/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable @typescript-eslint/dot-notation */\n/* eslint-disable brace-style */\n/* eslint-disable max-len */\n/**\n * Tree Map Components\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, NotifyPropertyChanges, Property, extend, Ajax } from '@syncfusion/ej2-base';\nimport { Complex, Collection } from '@syncfusion/ej2-base';\nimport { Event, Internationalization } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\nimport { isNullOrUndefined, createElement, EventHandler, Browser, remove } from '@syncfusion/ej2-base';\nimport { Border, Margin, TitleSettings, LegendSettings, InitialDrillSettings } from './model/base';\nimport { SelectionSettings, TooltipSettings, LevelSettings, LeafItemSettings, HighlightSettings } from './model/base';\nimport { Size, stringToNumber, RectOption, Rect, textTrim, measureText, findChildren, removeElement, setItemTemplateContent } from '../treemap/utils/helper';\nimport { removeClassNames, removeShape, textFormatter } from '../treemap/utils/helper';\nimport { findPosition, TextOption, renderTextElement, isContainsData, TreeMapAjax } from '../treemap/utils/helper';\nimport { load, loaded, drillStart, drillEnd } from '../treemap/model/constants';\nimport { itemClick, itemMove, click, mouseMove, resize, doubleClick, rightClick } from '../treemap/model/constants';\nimport { LayoutPanel } from './layout/render-panel';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { getThemeStyle } from './model/theme';\nimport { Print } from './model/print';\nimport { ImageExport } from './model/image-export';\nimport { PdfExport } from './model/pdf-export';\n/**\n * Represents the treemap component.\n * ```html\n * <div id=\"container\"/>\n * <script>\n * var treemap = new TreeMap();\n * treemap.appendTo(\"#container\");\n * </script>\n * ```\n */\nvar TreeMap = /** @class */ (function (_super) {\n __extends(TreeMap, _super);\n /**s\n * Constructor for TreeMap component.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function TreeMap(options, element) {\n var _this = _super.call(this, options, element) || this;\n /**\n * resize the treemap\n */\n _this.isResize = false;\n /** @private */\n _this.orientation = 'Horizontal';\n /** @private */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.drilledItems = [];\n /** @private */\n _this.isHierarchicalData = false;\n /** @private */\n _this.levelSelection = [];\n /** @private */\n _this.legendId = [];\n return _this;\n }\n TreeMap.prototype.preRender = function () {\n var _this = this;\n this.trigger(load, { treemap: this }, function () {\n _this.initPrivateVariable();\n _this.unWireEVents();\n _this.createSvg();\n _this.wireEVents();\n _this.setCulture();\n });\n };\n TreeMap.prototype.render = function () {\n this.renderElements();\n };\n TreeMap.prototype.renderElements = function () {\n LevelsData.levelsData = null;\n LevelsData.defaultLevelsData = null;\n LevelsData.hierarchyData = null;\n this.createSecondaryElement();\n this.addTabIndex();\n this.themeStyle = getThemeStyle(this.theme);\n this.renderBorder();\n this.renderTitle(this.titleSettings, 'title', null, null);\n if (!isNullOrUndefined(LevelsData.levelsData)) {\n LevelsData.defaultLevelsData = LevelsData.levelsData;\n }\n this.processDataManager();\n };\n TreeMap.prototype.processDataManager = function () {\n var _this = this;\n var dataModule;\n var queryModule;\n var ajaxModule;\n var localAjax;\n if (this.dataSource instanceof DataManager) {\n dataModule = this.dataSource;\n queryModule = this.query instanceof Query ? this.query : new Query();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataManager = dataModule.executeQuery(queryModule);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataManager.then(function (e) {\n _this.dataSource = e['result'];\n _this.renderTreeMapElements();\n });\n }\n else if (this.dataSource instanceof TreeMapAjax) {\n localAjax = this.dataSource;\n ajaxModule = new Ajax(localAjax.dataOptions, localAjax.type, localAjax.async, localAjax.contentType);\n ajaxModule.onSuccess = function (args) {\n _this.dataSource = JSON.parse('[' + args + ']')[0];\n _this.renderTreeMapElements();\n };\n ajaxModule.send(localAjax.sendData);\n }\n else {\n this.renderTreeMapElements();\n }\n };\n TreeMap.prototype.renderTreeMapElements = function () {\n this.processingData();\n if (this.treeMapLegendModule && this.legendSettings.visible) {\n this.treeMapLegendModule.renderLegend();\n }\n this.layout.processLayoutPanel();\n this.element.appendChild(this.svgObject);\n this.elementChange();\n this.trigger(loaded, { treemap: this, isResized: this.isResize });\n this.isResize = false;\n this.renderComplete();\n };\n TreeMap.prototype.createSvg = function () {\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n this.clearTemplate();\n var containerWidth = this.element.clientWidth;\n var containerHeight = this.element.clientHeight;\n this.availableSize = new Size(stringToNumber(this.width, containerWidth) || containerWidth || 600, stringToNumber(this.height, containerHeight) || containerHeight || 450);\n this.svgObject = this.renderer.createSvg({\n id: this.element.id + '_svg',\n width: this.availableSize.width,\n height: this.availableSize.height\n });\n };\n /**\n * To initilize the private varibales of treemap.\n *\n * @returns {void}\n */\n TreeMap.prototype.initPrivateVariable = function () {\n if (this.element.id === '') {\n var collection = document.getElementsByClassName('e-treemap').length;\n this.element.id = 'treemap_control_' + collection;\n }\n this.renderer = new SvgRenderer(this.element.id);\n this.layout = new LayoutPanel(this);\n };\n TreeMap.prototype.createSecondaryElement = function () {\n var secondaryEle = document.getElementById(this.element.id + '_Secondary_Element');\n if (secondaryEle && secondaryEle.childElementCount > 0) {\n secondaryEle.parentNode.removeChild(secondaryEle);\n }\n if (isNullOrUndefined(document.getElementById(this.element.id + '_Secondary_Element'))) {\n var secondaryElement = createElement('div', {\n id: this.element.id + '_Secondary_Element',\n styles: 'position: absolute;z-index:1;'\n });\n this.element.appendChild(secondaryElement);\n }\n };\n TreeMap.prototype.elementChange = function () {\n if (this.treeMapLegendModule && this.legendSettings.visible && this.treeMapLegendModule.legendGroup && this.layout.layoutGroup\n && !isNullOrUndefined(this.svgObject) && !isNullOrUndefined(document.getElementById(this.layout.layoutGroup.id))\n && !isNullOrUndefined(document.getElementById(this.treeMapLegendModule.legendGroup.id))) {\n this.svgObject.insertBefore(this.layout.layoutGroup, this.treeMapLegendModule.legendGroup);\n }\n };\n /**\n * @private\n * Render the treemap border\n *\n * @returns {void}\n */\n TreeMap.prototype.renderBorder = function () {\n var width = this.border.width;\n var borderElement = this.svgObject.querySelector('#' + this.element.id + '_TreeMap_Border');\n if ((this.border.width > 0 || (this.background || this.themeStyle.backgroundColor)) && isNullOrUndefined(borderElement)) {\n var borderRect = new RectOption(this.element.id + '_TreeMap_Border', this.background || this.themeStyle.backgroundColor, this.border, 1, new Rect(width / 2, width / 2, this.availableSize.width - width, this.availableSize.height - width));\n this.svgObject.appendChild(this.renderer.drawRectangle(borderRect));\n }\n else if (borderElement) {\n borderElement.setAttribute('fill', this.background || this.themeStyle.backgroundColor);\n }\n };\n TreeMap.prototype.renderTitle = function (title, type, bounds, groupEle) {\n var style = {\n color: title.textStyle.color, size: title.textStyle.size, fontFamily: title.textStyle.fontFamily,\n fontStyle: title.textStyle.fontStyle, fontWeight: title.textStyle.fontWeight, opacity: title.textStyle.opacity\n };\n var height;\n var titlePadding = 10;\n var width = (this.availableSize.width - this.margin.right - this.margin.left);\n style.fontFamily = style.fontFamily || this.themeStyle.fontFamily;\n style.size = style.size || (type === 'title' ? this.themeStyle.fontSize : this.themeStyle.subtitleFontSize);\n if (title.text) {\n if (isNullOrUndefined(groupEle)) {\n groupEle = this.renderer.createGroup({ id: this.element.id + '_Title_Group' });\n }\n var trimmedTitle = textTrim(width, title.text, style);\n var elementSize = measureText(trimmedTitle, style);\n var rect = (isNullOrUndefined(bounds)) ? new Rect(this.margin.left, this.margin.top, this.availableSize.width, this.availableSize.height) : bounds;\n var location_1 = findPosition(rect, title.alignment, elementSize, type);\n var options = new TextOption(this.element.id + '_TreeMap_' + type, location_1.x, location_1.y, 'start', trimmedTitle);\n var titleBounds = new Rect(location_1.x, location_1.y, elementSize.width, elementSize.height);\n var element = renderTextElement(options, style, style.color || (type === 'title' ? this.themeStyle.titleFontColor : this.themeStyle.subTitleFontColor), groupEle);\n element.setAttribute('aria-label', title.description || title.text);\n element.setAttribute('tabindex', (this.tabIndex + (type === 'title' ? 1 : 2)).toString());\n if ((type === 'title' && !title.subtitleSettings.text) || (type === 'subtitle')) {\n height = (this.availableSize.height - titleBounds.y - titlePadding - this.margin.bottom);\n this.areaRect = new Rect(this.margin.left, titleBounds.y + titlePadding, width, height);\n }\n if (type !== 'subtitle' && title.subtitleSettings.text) {\n this.renderTitle(title.subtitleSettings, 'subtitle', titleBounds, groupEle);\n }\n else {\n this.svgObject.appendChild(groupEle);\n }\n }\n else {\n height = (this.availableSize.height - this.margin.top - this.margin.bottom);\n this.areaRect = new Rect(this.margin.left, this.margin.top, width, height);\n }\n };\n TreeMap.prototype.processingData = function () {\n var _this = this;\n var path;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource = this.dataSource;\n if (!isNullOrUndefined(this.dataSource) && this.dataSource.length > 0 && this.weightValuePath) {\n LevelsData.levelsData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource.map(function (data) {\n data[_this.weightValuePath] = (data[_this.weightValuePath]) ? data[_this.weightValuePath].toString() :\n data[_this.weightValuePath];\n });\n this.leafItemSettings.labelPath = this.leafItemSettings.labelPath || this.weightValuePath;\n this.checkIsHierarchicalData();\n if (this.levels.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data_1 = {};\n data_1['level'] = 0;\n path = this.leafItemSettings.labelPath;\n data_1[path] = [];\n for (var i = 0; i < this.dataSource.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(this.dataSource[i])['values'];\n if (this.isHierarchicalData && child && child.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n child.forEach(function (currentData, dataIndex) {\n if (currentData[path]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data_1[path].push({\n groupIndex: 0, name: currentData[path], levelOrderName: currentData[path].toString(),\n data: currentData, weight: currentData[_this.weightValuePath]\n });\n }\n });\n }\n else {\n if (this.dataSource[i][path]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data_1[path].push({\n groupIndex: 0, name: this.dataSource[i][path], levelOrderName: this.dataSource[i][path].toString(), data: this.dataSource[i],\n weight: this.dataSource[i][this.weightValuePath]\n });\n }\n }\n }\n LevelsData.levelsData.push(data_1);\n }\n else {\n if (this.isHierarchicalData) {\n LevelsData.hierarchyData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LevelsData.hierarchyData = extend([], this.dataSource, LevelsData.hierarchyData, true);\n for (var i = 0; i < LevelsData.hierarchyData.length; i++) {\n this.processHierarchicalData(LevelsData.hierarchyData[i], i);\n }\n LevelsData.levelsData = LevelsData.hierarchyData;\n }\n else {\n this.processFlatJsonData();\n if (LevelsData.levelsData.length > 1) {\n this.reOrderLevelData(LevelsData.levelsData.length - 1);\n }\n }\n path = this.levels[0].groupPath;\n }\n if (!this.isHierarchicalData) {\n this.findTotalWeight(LevelsData.levelsData[0][path], 'Parent');\n }\n }\n };\n TreeMap.prototype.checkIsHierarchicalData = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child;\n this.dataSource = this.dataSource;\n for (var i = 0; i < this.dataSource.length; i++) {\n child = findChildren(this.dataSource[i])['values'];\n if (child && child.length) {\n this.isHierarchicalData = true;\n break;\n }\n else if (i === this.dataSource.length - 1) {\n this.isHierarchicalData = false;\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.processHierarchicalData = function (data, dataCount) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childData;\n var levelData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newData = {};\n var levelIndex;\n var path = this.leafItemSettings.labelPath ? this.leafItemSettings.labelPath : this.weightValuePath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = {};\n var level;\n var key;\n newData = findChildren(data);\n childData = newData ? newData['values'] : null;\n if (childData && childData.length > 0) {\n key = newData['key'];\n for (var i = 0; i < this.levels.length; i++) {\n if (key === this.levels[i].groupPath) {\n level = this.levels[i];\n levelIndex = i;\n }\n }\n for (var j = 0; j < childData.length; j++) {\n childData[j]['name'] = childData[j][path];\n childData[j]['levelOrderName'] = (levelIndex === 0 ? childData[j]['name'] :\n data['levelOrderName'] + '#' + childData[j]['name']) + '';\n var childItemLevel = childData[j]['levelOrderName'];\n var childLevel = void 0;\n if (childItemLevel.search('#') > 0) {\n childLevel = childItemLevel.split('#').length - 1;\n }\n childData[j]['groupIndex'] = isNullOrUndefined(levelIndex) ? childLevel === this.levels.length\n ? this.levels.length : childLevel : levelIndex;\n if (levelIndex !== 0) {\n childData[j]['parent'] = data;\n }\n childData[j]['groupName'] = key;\n childData[j]['data'] = childData[j];\n childData[j]['isDrilled'] = false;\n childData[j]['weight'] = childData[j][this.weightValuePath];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childData.forEach(function (currentData) {\n _this.processHierarchicalData(currentData, dataCount);\n });\n }\n if (dataCount === LevelsData.hierarchyData.length - 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var mainData_1 = LevelsData.hierarchyData[0][this.levels[0].groupPath];\n for (var k = 0; k < LevelsData.hierarchyData.length; k++) {\n childData = findChildren(LevelsData.hierarchyData[k])['values'];\n if (k !== 0 && childData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childData.forEach(function (currentData) { mainData_1.push(currentData); });\n LevelsData.hierarchyData.splice(k, 1);\n k -= 1;\n }\n }\n mainData_1 = LevelsData.hierarchyData[0][this.levels[0].groupPath];\n for (var l = 0; l < mainData_1.length; l++) {\n newData[this.levels[0].groupPath] = mainData_1;\n mainData_1[l]['parent'] = newData;\n }\n }\n };\n /* eslint-disable valid-jsdoc */\n /**\n * This method is used to perform the print functionality in treemap.\n *\n * @param id - Specifies the element to print the treemap.\n */\n TreeMap.prototype.print = function (id) {\n if (this.allowPrint && this.printModule) {\n this.printModule.print(id);\n }\n };\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param type - Specifies the index of the axis.\n * @param fileName - Specifies file name for exporting the rendered treemap.\n * @param orientation - Specifies the orientation of the pdf document.\n */\n TreeMap.prototype.export = function (type, fileName, orientation, allowDownload) {\n var _this = this;\n if (isNullOrUndefined(allowDownload)) {\n allowDownload = true;\n }\n if (type === 'PDF' && this.allowPdfExport && this.pdfExportModule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new Promise(function (resolve, reject) {\n resolve(_this.pdfExportModule.export(type, fileName, orientation, allowDownload));\n });\n }\n else if (this.allowImageExport && (type !== 'PDF') && this.imageExportModule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new Promise(function (resolve, reject) {\n resolve(_this.imageExportModule.export(type, fileName, allowDownload));\n });\n }\n return null;\n };\n TreeMap.prototype.processFlatJsonData = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource = this.dataSource;\n var groupPath;\n var childGroupPath;\n var orderNames = [];\n var process = false;\n for (var i = 0; i < this.levels.length + 1; i++) {\n groupPath = this.levels[i] ? this.levels[i].groupPath : this.leafItemSettings.labelPath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var level = {};\n level['level'] = i;\n level[groupPath] = [];\n LevelsData.levelsData.push(level);\n for (var j = 0; j < this.dataSource.length; j++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = {};\n var childName = '';\n if (!isNullOrUndefined(groupPath)) {\n var name_1 = this.dataSource[j][groupPath];\n if (i !== 0) {\n for (var k = 0; k <= i; k++) {\n var childGroupPath_1 = this.levels[k] ? this.levels[k].groupPath : groupPath;\n childName += (this.dataSource[j][childGroupPath_1]) + ((k === i) ? '' : '#');\n }\n }\n if (!(orderNames.length > 0 ? orderNames.indexOf(childName ?\n childName : name_1) !== -1 : false)) {\n currentData['name'] = name_1;\n currentData['levelOrderName'] = ((childName) ? childName : name_1) + '';\n currentData['groupIndex'] = i;\n currentData['isDrilled'] = false;\n currentData['groupName'] = groupPath;\n currentData['data'] = this.dataSource[j];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LevelsData.levelsData[LevelsData.levelsData.length - 1][groupPath].push(currentData);\n orderNames.push((childName) ? childName : name_1);\n }\n }\n }\n }\n };\n /**\n * This method orders the treemap level data.\n *\n * @param start - Specifies the start value of the treemap level.\n */\n TreeMap.prototype.reOrderLevelData = function (start) {\n var currentName;\n var currentPath = this.levels[start] ? this.levels[start].groupPath : this.leafItemSettings.labelPath;\n var prevPath = this.levels[start - 1].groupPath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = LevelsData.levelsData[start][currentPath];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var previousData = LevelsData.levelsData[start - 1][prevPath];\n for (var i = 0; i < currentData.length; i++) {\n currentName = currentData[i]['levelOrderName'];\n for (var j = 0; j < previousData.length; j++) {\n previousData[j][currentPath] = isNullOrUndefined(previousData[j][currentPath]) ? [] : previousData[j][currentPath];\n if (this.IsChildHierarchy(currentName.split('#'), previousData[j]['levelOrderName'].split('#'))) {\n if (isNullOrUndefined(currentData[i]['parent'])) {\n currentData[i]['parent'] = previousData[j];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n previousData[j][currentPath].push(currentData[i]);\n break;\n }\n }\n }\n this.findTotalWeight(LevelsData.levelsData[LevelsData.levelsData.length - 1][currentPath], 'Child');\n LevelsData.levelsData.splice(start, 1);\n if ((start - 1) > 0) {\n this.reOrderLevelData(start - 1);\n }\n };\n TreeMap.prototype.IsChildHierarchy = function (current, previous) {\n var isChild = false;\n for (var i = 0; i < previous.length; i++) {\n if (current.length < i || previous[i] !== current[i]) {\n return false;\n }\n else {\n isChild = true;\n }\n }\n return isChild;\n };\n /**\n * This method finds the weight value of the treemap level.\n *\n * @param processData - Specifies the treemap data.\n * @param type - Specifies the type of the data.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.findTotalWeight = function (processData, type) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var totalWeight;\n var childData = [];\n var levelName;\n var start = 0;\n var split;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var groupName;\n var groupObj = {};\n var _loop_1 = function (i) {\n totalWeight = 0;\n groupName = processData[i]['groupName'];\n split = processData[i]['levelOrderName'].split('#');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this_1.dataSource.forEach(function (data) {\n if (isContainsData(split, processData[i]['levelOrderName'], data, _this)) {\n totalWeight += parseFloat(data[_this.weightValuePath]);\n }\n });\n if (type === 'Parent') {\n groupObj[groupName] = processData;\n processData[i]['parent'] = groupObj;\n }\n processData[i]['weight'] = totalWeight;\n };\n var this_1 = this;\n for (var i = 0; i < processData.length; i++) {\n _loop_1(i);\n }\n };\n /**\n * To unbind event handlers for treemap.\n *\n * @returns {void}\n */\n TreeMap.prototype.unWireEVents = function () {\n EventHandler.remove(this.element, 'click', this.clickOnTreeMap);\n EventHandler.remove(this.element, 'dblclick', this.doubleClickOnTreeMap);\n EventHandler.remove(this.element, 'contextmenu', this.rightClickOnTreeMap);\n EventHandler.remove(this.element, Browser.touchStartEvent, this.mouseDownOnTreeMap);\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.mouseMoveOnTreeMap);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.mouseEndOnTreeMap);\n EventHandler.remove(this.element, 'pointerleave mouseleave', this.mouseLeaveOnTreeMap);\n window.removeEventListener('resize', this.resizeOnTreeMap);\n };\n /**\n * To bind event handlers for treemap.\n *\n * @returns {void}\n */\n TreeMap.prototype.wireEVents = function () {\n EventHandler.add(this.element, 'click', this.clickOnTreeMap, this);\n EventHandler.add(this.element, 'dblclick', this.doubleClickOnTreeMap, this);\n EventHandler.add(this.element, 'contextmenu', this.rightClickOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchStartEvent, this.mouseDownOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchMoveEvent, this.mouseMoveOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchEndEvent, this.mouseEndOnTreeMap, this);\n EventHandler.add(this.element, 'pointerleave mouseleave', this.mouseLeaveOnTreeMap, this);\n window.addEventListener('resize', this.resizeOnTreeMap.bind(this));\n };\n /**\n * Method to set culture for maps\n *\n * @returns {void}\n */\n TreeMap.prototype.setCulture = function () {\n this.intl = new Internationalization();\n };\n /**\n * To add tab index for treemap element\n *\n * @returns {void}\n */\n TreeMap.prototype.addTabIndex = function () {\n this.element.setAttribute('aria-label', this.description || 'TreeMap Element');\n this.element.setAttribute('tabindex', this.tabIndex.toString());\n };\n /**\n * This method handles the window resize event on treemap.\n *\n * @param e - Specifies the pointer event.\n */\n TreeMap.prototype.resizeOnTreeMap = function (e) {\n var _this = this;\n this.isResize = true;\n var args = {\n name: resize,\n cancel: false,\n previousSize: this.availableSize,\n currentSize: new Size(0, 0),\n treemap: this\n };\n if (this.resizeTo) {\n clearTimeout(this.resizeTo);\n }\n if (!isNullOrUndefined(this.element) && this.element.classList.contains('e-treemap')) {\n this.resizeTo = setTimeout(function () {\n _this.unWireEVents();\n _this.createSvg();\n _this.refreshing = true;\n _this.wireEVents();\n args.currentSize = _this.availableSize;\n _this.trigger(resize, args, function (observedArgs) {\n _this.render();\n });\n }, 500);\n }\n };\n /**\n * This method handles the click event on the treemap.\n *\n * @param e - Specifies the mouse click event in the treemap.\n */\n TreeMap.prototype.clickOnTreeMap = function (e) {\n var _this = this;\n var targetEle = e.target;\n var targetId = targetEle.id;\n var eventArgs;\n var itemIndex;\n var labelText = targetEle.innerHTML;\n var clickArgs = { cancel: false, name: click, treemap: this, mouseEvent: e };\n this.trigger(click, clickArgs);\n if (targetId.indexOf('_Item_Index') > -1) {\n e.preventDefault();\n itemIndex = parseFloat(targetId.split('_Item_Index_')[1]);\n eventArgs = {\n cancel: false, name: itemClick, treemap: this, item: this.layout.renderItems[itemIndex], mouseEvent: e,\n groupIndex: this.layout.renderItems[itemIndex]['groupIndex'], groupName: this.layout.renderItems[itemIndex]['name'],\n text: labelText, contentItemTemplate: labelText\n };\n this.trigger(itemClick, eventArgs, function (observedArgs) {\n if (observedArgs.text !== labelText || observedArgs.contentItemTemplate !== labelText) {\n if (isNullOrUndefined(_this.leafItemSettings.labelTemplate)) {\n observedArgs.text = textFormatter(observedArgs.text, observedArgs['item']['data'], observedArgs.treemap);\n targetEle.innerHTML = observedArgs.text;\n }\n else {\n setItemTemplateContent(targetId, targetEle, observedArgs.contentItemTemplate);\n }\n }\n });\n }\n var end = new Date().getMilliseconds();\n var doubleTapTimer1;\n if (!isNullOrUndefined(this.doubleClick)) {\n if (!isNullOrUndefined(doubleTapTimer1) && end - doubleTapTimer1 < 500) {\n this.doubleClickOnTreeMap(e);\n }\n doubleTapTimer1 = end;\n }\n };\n /**\n * This method handles the double click event in the treemap.\n *\n * @param e - Specifies the pointer event of mouse click.\n */\n TreeMap.prototype.doubleClickOnTreeMap = function (e) {\n var doubleClickArgs = { cancel: false, name: doubleClick, treemap: this, mouseEvent: e };\n this.trigger(doubleClick, doubleClickArgs);\n //this.notify('dblclick', e);\n };\n /**\n * This method handles the right click event in the treemap.\n *\n * @param e - Specifies the pointer event of mouse click.\n */\n TreeMap.prototype.rightClickOnTreeMap = function (e) {\n var rightClickArgs = { cancel: false, name: rightClick, treemap: this, mouseEvent: e };\n this.trigger(rightClick, rightClickArgs);\n };\n /**\n * This method handles the mouse down event in the treemap.\n *\n * @param e - Specifies the pointer event of mouse click.\n */\n TreeMap.prototype.mouseDownOnTreeMap = function (e) {\n if (e.target.id.indexOf('_Item_Index') > -1) {\n this.mouseDown = true;\n }\n this.notify(Browser.touchStartEvent, e);\n };\n /**\n * This method handles the mouse move event in the treemap.\n *\n * @param e - Specifies the pointer event of mouse click.\n */\n TreeMap.prototype.mouseMoveOnTreeMap = function (e) {\n var targetEle = e.target;\n var targetId = targetEle.id;\n var eventArgs;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n var moveArgs = { cancel: false, name: mouseMove, treemap: this, mouseEvent: e };\n this.trigger(mouseMove, moveArgs);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childItems;\n if (targetId.indexOf('_Item_Index') > -1) {\n item = this.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childItems = findChildren(item)['values'];\n this.element.style.cursor = (!item['isLeafItem'] && childItems && childItems.length > 0 && this.enableDrillDown) ?\n 'pointer' : 'auto';\n eventArgs = { cancel: false, name: itemMove, treemap: this, item: item, mouseEvent: e };\n this.trigger(itemMove, eventArgs);\n }\n this.notify(Browser.touchMoveEvent, e);\n };\n /**\n * This method calculates the selected treemap levels.\n *\n * @param labelText - Specifies the label text.\n * @param item - Specifies the treemap item.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.calculateSelectedTextLevels = function (labelText, item) {\n //to find the levels by clicking the particular text both for drillDownView as true / false.\n var drillLevel;\n var k;\n var text;\n var levelLabels = item['levelOrderName'];\n var levelText = levelLabels.split('#');\n for (var _i = 0, _a = Object.keys(levelText); _i < _a.length; _i++) {\n k = _a[_i];\n if (levelText[k] === labelText) {\n drillLevel = parseInt(k, 10);\n text = labelText;\n }\n }\n return { drillLevel: drillLevel, currentLevelLabel: text, levelText: levelText };\n };\n /**\n * This method calculates the previous level of child items in treemap.\n *\n * @param labelText - Specifies the label text in treemap\n * @param drillLevelValues - Specifies the values of drill level.\n * @param item - Specifies the treemap item.\n * @param directLevel - Specifies the current level.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.calculatePreviousLevelChildItems = function (labelText, drillLevelValues, item, directLevel) {\n //By clicking any child items drilldown to the particular level.\n //At the time store all the previous drilled level items in drilledItems\n // This condition satisfies while drilldown View is set as false and the text contains '[+]'\n var text;\n var p = 0;\n var levelItems;\n var text1;\n var drillTextLevel = this.layout.renderItems[0]['levelOrderName'].split('#').length;\n for (var h = 0; h < drillTextLevel; h++) {\n text1 = h === 0 ? drillLevelValues['levelText'][h] : text1 + '#' + drillLevelValues['levelText'][h];\n }\n p = drillTextLevel > 1 ? drillTextLevel : p;\n for (var _i = 0, _a = Object['values'](this.layout.renderItems); _i < _a.length; _i++) {\n levelItems = _a[_i];\n var drillLevelText = levelItems['levelOrderName'].split('#');\n if (drillLevelText[0] === drillLevelValues['levelText'][0]) {\n text = p === 0 ? isNullOrUndefined(text1) ? text1 : drillLevelValues['levelText'][p] :\n directLevel ? text1 : text1 + '#' + drillLevelValues['levelText'][p];\n if (text === levelItems['levelOrderName']) {\n this.drilledItems.push({ name: levelItems['levelOrderName'], data: levelItems });\n p++;\n directLevel = true;\n if (p <= item['groupIndex']) {\n text = text + '#' + drillLevelValues['levelText'][p];\n text1 = text;\n }\n }\n }\n }\n return directLevel;\n };\n /**\n * This method compares the selected labels with the drill down items.\n *\n * @param drillLevelValues - Specifies the values of drill level.\n * @param item - Specifies the treemap item.\n * @param i - Specifies the treemap item.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.compareSelectedLabelWithDrillDownItems = function (drillLevelValues, item, i) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var drillLevelChild;\n var newDrillItem = {};\n var b = drillLevelValues['drillLevel'] + 1;\n if (b === this.drilledItems[i]['data']['groupIndex']) {\n drillLevelChild = this.drilledItems[i]['data']['parent'];\n drillLevelChild['isDrilled'] = true;\n newDrillItem[drillLevelChild[this.drilledItems[i]['data']['groupName']]]\n = [drillLevelChild];\n // to remove all the items after matched drilled items\n this.drilledItems.splice(i, this.drilledItems.length);\n }\n else if (drillLevelValues['drillLevel'] === (this.drilledItems.length - 1)\n || drillLevelValues['drillLevel'] === item['groupIndex']) {\n newDrillItem[item['groupName']] = [item];\n }\n return newDrillItem;\n };\n /**\n * This method handles mouse end event in treemap.\n *\n * @param e - Specifies the pointer event of mouse.\n */\n TreeMap.prototype.mouseEndOnTreeMap = function (e) {\n var _this = this;\n var targetEle = e.target;\n var targetId = targetEle.id;\n var totalRect;\n var startEvent;\n var endEvent;\n var directLevel = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var index;\n var newDrillItem = {};\n var item;\n var process = true;\n var layoutID = this.element.id + '_TreeMap_' + this.layoutType + '_Layout';\n var drillLevel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateID = this.element.id + '_Label_Template_Group';\n var drillLevelValues;\n if (targetId.indexOf('_Item_Index') > -1 && this.enableDrillDown && !this.drillMouseMove) {\n if (e.cancelable) {\n e.preventDefault();\n }\n index = parseFloat(targetId.split('_Item_Index_')[1]);\n item = this.layout.renderItems[index];\n var labelText = targetEle.innerHTML;\n if (this.enableBreadcrumb) {\n drillLevelValues = this.calculateSelectedTextLevels(labelText, item);\n drillLevel = drillLevelValues['drillLevel'];\n if (!this.drillDownView && labelText.search('[+]') !== -1) {\n directLevel = this.calculatePreviousLevelChildItems(labelText, drillLevelValues, item, directLevel);\n }\n }\n if (this.levels.length !== 0 && !item['isLeafItem'] && findChildren(item)['values'] &&\n findChildren(item)['values'].length > 0) {\n if (this.drilledItems.length > 0) {\n item = directLevel ? this.drilledItems[this.drilledItems.length - 1]['data'] : item;\n for (var i = 0; i < this.drilledItems.length; i++) {\n if (!isNullOrUndefined(drillLevel)) { //Compare the selected text level with drilled items\n var drillLength = this.drilledItems.length;\n newDrillItem = this.compareSelectedLabelWithDrillDownItems(drillLevelValues, item, i);\n if (drillLength !== this.drilledItems.length) {\n i -= 1;\n break;\n }\n } //when clicking the levels drill back to the previous level process takes place\n if (item['levelOrderName'] === this.drilledItems[i]['name'] && !directLevel && isNullOrUndefined(drillLevel)) {\n if (item['groupIndex'] === 0 && item['parent'][item['groupName']] instanceof Array) {\n item['isDrilled'] = !(item['isDrilled']);\n if (!item['isDrilled']) {\n newDrillItem = item['parent'];\n }\n else {\n newDrillItem[item['groupName']] = [item];\n }\n }\n else {\n item['isDrilled'] = false;\n item['parent']['isDrilled'] = true;\n item = item['parent'];\n newDrillItem[item['groupName']] = [item];\n }\n this.drilledItems.splice(i, 1);\n i -= 1;\n break;\n }\n else if (i === this.drilledItems.length - 1 && isNullOrUndefined(drillLevel)) {\n item['isDrilled'] = true; // click the items move to next level.\n newDrillItem[item['groupName']] = [item];\n }\n }\n }\n else {\n item['isDrilled'] = true;\n newDrillItem[item['groupName']] = [item];\n }\n startEvent = {\n cancel: false, name: drillStart, treemap: this,\n element: targetEle, groupIndex: this.enableBreadcrumb &&\n this.drilledItems.length !== 0 && !isNullOrUndefined(drillLevel) ?\n this.drilledItems[this.drilledItems.length - 1]['data']['groupIndex'] : item['groupIndex'],\n groupName: this.enableBreadcrumb && this.drilledItems.length !== 0 && !isNullOrUndefined(drillLevel) ?\n this.drilledItems[this.drilledItems.length - 1]['data']['name'] : item['name'],\n rightClick: e.which === 3 ? true : false, childItems: null, item: newDrillItem\n };\n this.trigger(drillStart, startEvent, function (observedArgs) {\n _this.currentLevel = item['isDrilled'] && isNullOrUndefined(drillLevel) ? item['groupIndex'] :\n (!isNullOrUndefined(drillLevel) && _this.enableBreadcrumb && item['isDrilled']) ? drillLevel : null;\n if (!observedArgs.cancel) {\n if (document.getElementById(layoutID)) {\n var layerElementId = document.getElementById(layoutID);\n layerElementId.parentNode.removeChild(layerElementId);\n }\n totalRect = extend({}, _this.areaRect, totalRect, true);\n if (_this.legendSettings.visible && !isNullOrUndefined(_this.treeMapLegendModule)) {\n if (!isNullOrUndefined(newDrillItem)) {\n _this.treeMapLegendModule.legendGroup.textContent = '';\n _this.treeMapLegendModule.legendGroup = null;\n _this.treeMapLegendModule.widthIncrement = 0;\n _this.treeMapLegendModule.heightIncrement = 0;\n if (_this.enableBreadcrumb && !isNullOrUndefined(drillLevel)) {\n _this.drilledLegendItems = {\n name: _this.drilledItems[_this.drilledItems.length - 1]['data']['levelOrderName'],\n data: _this.drilledItems[_this.drilledItems.length - 1]['data']\n };\n }\n else {\n _this.drilledLegendItems = { name: item['levelOrderName'], data: item };\n }\n _this.treeMapLegendModule.renderLegend();\n }\n totalRect = !isNullOrUndefined(_this.totalRect) ? _this.totalRect : totalRect;\n }\n if (document.getElementById(templateID)) {\n var drillElementId = document.getElementById(templateID);\n drillElementId.parentNode.removeChild(drillElementId);\n }\n if (!isNullOrUndefined(observedArgs.childItems) && !observedArgs.cancel) {\n _this.layout.onDemandProcess(observedArgs.childItems);\n }\n else {\n _this.layout.calculateLayoutItems(newDrillItem, totalRect);\n _this.layout.renderLayoutItems(newDrillItem);\n }\n }\n });\n endEvent = { cancel: false, name: drillEnd, treemap: this, renderItems: this.layout.renderItems };\n this.trigger(drillEnd, endEvent);\n if (process) {\n if (!directLevel && isNullOrUndefined(drillLevel)) {\n this.drilledItems.push({ name: item['levelOrderName'], data: item });\n }\n }\n }\n }\n this.mouseDown = false;\n this.notify(Browser.touchEndEvent, e);\n };\n /**\n * This method handles mouse leave event in treemap.\n *\n * @param e - Specifies the pointer event of mouse.\n */\n TreeMap.prototype.mouseLeaveOnTreeMap = function (e) {\n if (this.treeMapTooltipModule) {\n this.treeMapTooltipModule.removeTooltip();\n }\n if (this.treeMapLegendModule) {\n this.treeMapLegendModule.removeInteractivePointer();\n }\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', this);\n if (this.treeMapHighlightModule) {\n removeShape(this.treeMapHighlightModule.shapeHighlightCollection, 'highlight');\n this.treeMapHighlightModule.highLightId = '';\n }\n };\n /**\n * This method is used to select or remove the selection of treemap item based on the provided selection settings.\n */\n TreeMap.prototype.selectItem = function (levelOrder, isSelected) {\n if (isNullOrUndefined(isSelected)) {\n isSelected = true;\n }\n var levelOrderName = '';\n for (var i = 0; i < levelOrder.length; i++) {\n if (i !== levelOrder.length - 1) {\n levelOrderName += levelOrder[i] + '#';\n }\n else {\n levelOrderName += levelOrder[i];\n }\n }\n if (this.treeMapSelectionModule && this.selectionSettings.enable) {\n this.treeMapSelectionModule.selectTreemapItem(levelOrderName, isSelected);\n }\n };\n /**\n * To provide the array of modules needed for maps rendering\n *\n * @returns {ModuleDeclaration[]} Returns the modules\n * @private\n */\n TreeMap.prototype.requiredModules = function () {\n var modules = [];\n if (this.tooltipSettings.visible) {\n modules.push({\n member: 'treeMapTooltip',\n args: [this]\n });\n }\n if (this.highlightSettings.enable) {\n modules.push({\n member: 'treeMapHighlight',\n args: [this]\n });\n }\n if (this.selectionSettings.enable) {\n modules.push({\n member: 'treeMapSelection',\n args: [this]\n });\n }\n if (this.legendSettings.visible) {\n modules.push({\n member: 'treeMapLegend',\n args: [this]\n });\n }\n if (this.allowPrint) {\n modules.push({\n member: 'Print',\n args: [this, Print]\n });\n }\n if (this.allowImageExport) {\n modules.push({\n member: 'ImageExport',\n args: [this, ImageExport]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this, PdfExport]\n });\n }\n return modules;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TreeMapModel} newProp - Specifies the new property\n * @param {TreeMapModel} oldProp - Specifies the old property\n * @returns {void}\n * @private\n */\n TreeMap.prototype.onPropertyChanged = function (newProp, oldProp) {\n var render = false;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'background':\n this.renderBorder();\n break;\n case 'height':\n case 'width':\n case 'layoutType':\n case 'levels':\n case 'drillDownView':\n case 'renderDirection':\n case 'leafItemSettings':\n case 'legendSettings':\n case 'dataSource':\n render = true;\n break;\n }\n }\n if (render) {\n this.createSvg();\n this.renderElements();\n }\n };\n /**\n * Gets component name.\n */\n TreeMap.prototype.getModuleName = function () {\n return 'treemap';\n };\n /**\n * This method is used to dispose the treemap component.\n */\n TreeMap.prototype.destroy = function () {\n this.unWireEVents();\n this.drilledItems = [];\n this.levelSelection = [];\n this.legendId = [];\n this.removeSvg();\n _super.prototype.destroy.call(this);\n };\n TreeMap.prototype.removeSvg = function () {\n removeElement(this.element.id + '_Secondary_Element');\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Returns the string value.\n * @private\n */\n TreeMap.prototype.getPersistData = function () {\n return '';\n };\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowPrint\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowImageExport\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"height\", void 0);\n __decorate([\n Complex({}, Border)\n ], TreeMap.prototype, \"border\", void 0);\n __decorate([\n Complex({}, Margin)\n ], TreeMap.prototype, \"margin\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"background\", void 0);\n __decorate([\n Property('Material')\n ], TreeMap.prototype, \"theme\", void 0);\n __decorate([\n Complex({}, TitleSettings)\n ], TreeMap.prototype, \"titleSettings\", void 0);\n __decorate([\n Property('Squarified')\n ], TreeMap.prototype, \"layoutType\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"weightValuePath\", void 0);\n __decorate([\n Property('')\n ], TreeMap.prototype, \"rangeColorValuePath\", void 0);\n __decorate([\n Property('')\n ], TreeMap.prototype, \"equalColorValuePath\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"colorValuePath\", void 0);\n __decorate([\n Property([])\n ], TreeMap.prototype, \"palette\", void 0);\n __decorate([\n Property('TopLeftBottomRight')\n ], TreeMap.prototype, \"renderDirection\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"enableDrillDown\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"enableBreadcrumb\", void 0);\n __decorate([\n Property(' - ')\n ], TreeMap.prototype, \"breadcrumbConnector\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"drillDownView\", void 0);\n __decorate([\n Complex({}, InitialDrillSettings)\n ], TreeMap.prototype, \"initialDrillDown\", void 0);\n __decorate([\n Complex({}, LeafItemSettings)\n ], TreeMap.prototype, \"leafItemSettings\", void 0);\n __decorate([\n Collection([], LevelSettings)\n ], TreeMap.prototype, \"levels\", void 0);\n __decorate([\n Complex({}, HighlightSettings)\n ], TreeMap.prototype, \"highlightSettings\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], TreeMap.prototype, \"selectionSettings\", void 0);\n __decorate([\n Complex({}, TooltipSettings)\n ], TreeMap.prototype, \"tooltipSettings\", void 0);\n __decorate([\n Complex({}, LegendSettings)\n ], TreeMap.prototype, \"legendSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"useGroupingSeparator\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"description\", void 0);\n __decorate([\n Property(1)\n ], TreeMap.prototype, \"tabIndex\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"format\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"drillStart\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"drillEnd\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemSelected\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemHighlight\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"tooltipRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemMove\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"doubleClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"rightClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"mouseMove\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"resize\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"legendItemRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"legendRendering\", void 0);\n TreeMap = __decorate([\n NotifyPropertyChanges\n ], TreeMap);\n return TreeMap;\n}(Component));\nexport { TreeMap };\n/**\n * @private\n */\nvar LevelsData = /** @class */ (function () {\n function LevelsData() {\n }\n return LevelsData;\n}());\nexport { LevelsData };\n","/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable @typescript-eslint/dot-notation */\n/* eslint-disable max-len */\nimport { LevelsData } from '../treemap';\nimport { findChildren, Location, Rect, Size, measureText, TextOption, PathOption, RectOption, drawSymbol, orderByArea, legendMaintain } from '../utils/helper';\nimport { Browser, isNullOrUndefined, EventHandler, extend } from '@syncfusion/ej2-base';\nimport { renderTextElement, textTrim } from '../utils/helper';\nimport { legendItemRendering, legendRendering } from '../model/constants';\n/**\n * Legend module class\n */\nvar TreeMapLegend = /** @class */ (function () {\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function TreeMapLegend(treemap) {\n this.page = 0;\n this.legendBorderRect = new Rect(0, 0, 0, 0);\n this.currentPage = 0;\n this.heightIncrement = 0;\n this.widthIncrement = 0;\n this.textMaxWidth = 0;\n this.legendInteractiveGradient = [];\n this.legendItemRect = new Rect(0, 0, 0, 0);\n this.treemap = treemap;\n this.addEventListener();\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * method for legend\n */\n TreeMapLegend.prototype.renderLegend = function () {\n var _this = this;\n this.legendRenderingCollections = [];\n this.legendCollections = [];\n this.legendNames = [];\n this.totalPages = [];\n this.gradientCount = 1;\n this.widthIncrement = 0;\n this.heightIncrement = 0;\n this.defsElement = this.treemap.renderer.createDefs();\n this.treemap.svgObject.appendChild(this.defsElement);\n var eventArgs;\n eventArgs = {\n cancel: false, name: legendRendering, treemap: this.treemap, _changePosition: this.treemap.legendSettings.position,\n position: this.treemap.legendSettings.position\n };\n this.treemap.trigger(legendRendering, eventArgs, function (observedArgs) {\n // eslint-disable-next-line no-underscore-dangle\n if (!observedArgs.cancel && observedArgs._changePosition !== _this.treemap.legendSettings.position) {\n // eslint-disable-next-line no-underscore-dangle\n _this.treemap.legendSettings.position = observedArgs._changePosition;\n }\n _this.calculateLegendBounds();\n if (_this.legendCollections.length > 0) {\n _this.drawLegend();\n }\n });\n };\n TreeMapLegend.prototype.calculateLegendBounds = function () {\n var _this = this;\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n this.findColorMappingLegendItems(LevelsData.levelsData[0]);\n if ((this.treemap.palette.length > 0 || !isNullOrUndefined(this.treemap.colorValuePath))\n && this.legendCollections.length === 0) {\n this.findPaletteLegendItems(LevelsData.levelsData[0], 'Parent');\n }\n if (this.legendCollections.length > 0) {\n var defaultSize = 25;\n var textPadding = 10;\n var position = legend.position;\n var legendTitle = legend.title.text;\n var titleTextStyle = legend.titleStyle;\n var legendMode = legend.mode;\n var shapeX = 0;\n var shapeY = 0;\n var textX = 0;\n var textY = 0;\n var shapeHeight = legend.shapeHeight;\n var shapeWidth = legend.shapeWidth;\n var shapeLocation = [];\n var textLocation = [];\n var orientation_1 = (legend.orientation === 'None') ? ((position === 'Top' || position === 'Bottom'\n || (position === 'Auto' && treemap.availableSize.width <= treemap.availableSize.height))\n ? 'Horizontal' : 'Vertical') : legend.orientation;\n var leftPadding = 10;\n var topPadding = 10;\n var spacing = 10;\n var legendWidth = (legend.width.length > 1) ? (legend.width.indexOf('%') > -1) ? (treemap.availableSize.width / 100)\n * parseFloat(legend.width) : parseFloat(legend.width) : null;\n var legendHeight = (legend.height.length > 1) ? (legend.height.indexOf('%') > -1) ?\n (treemap.availableSize.height / 100) * parseFloat(legend.height) : parseFloat(legend.height) : null;\n titleTextStyle.fontFamily = treemap.themeStyle.fontFamily || titleTextStyle.fontFamily;\n titleTextStyle.size = treemap.themeStyle.legendFontSize || titleTextStyle.size;\n var legendTitleSize = measureText(legendTitle, titleTextStyle);\n var startX_1 = 0;\n var startY_1 = 0;\n var shapePadding = legend.shapePadding;\n var rectWidth = void 0;\n var rectHeight = void 0;\n var itemTextStyle = legend.textStyle;\n var legendLength = this.legendCollections.length;\n itemTextStyle.size = itemTextStyle.size || treemap.themeStyle.legendFontSize;\n itemTextStyle.fontFamily = itemTextStyle.fontFamily || treemap.themeStyle.fontFamily;\n if (legendMode === 'Default') {\n legendWidth = (isNullOrUndefined(legendWidth)) ? treemap.areaRect.width : legendWidth;\n legendHeight = (isNullOrUndefined(legendHeight)) ? treemap.areaRect.height : legendHeight;\n var j = 0;\n for (var i = 0; i < this.legendCollections.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var legendItem = this.legendCollections[i];\n if (isNullOrUndefined(this.totalPages[this.page])) {\n this.totalPages[this.page] = { Page: (this.page + 1), Collection: [] };\n }\n var legendTextSize = measureText(legendItem['legendName'], itemTextStyle);\n this.textMaxWidth = Math.max(this.textMaxWidth, legendTextSize.width);\n if (i === 0) {\n startX_1 = shapeX = (leftPadding + (shapeWidth / 2));\n startY_1 = shapeY = topPadding + legendTitleSize.height + (shapeHeight > legendTextSize.height ? shapeHeight / 2\n : (legendTextSize.height / 4));\n }\n else {\n var maxSize = (legendTextSize.height > shapeHeight) ? legendTextSize.height : shapeHeight;\n if (orientation_1 === 'Horizontal') {\n var prvePositionX = (textLocation[j - 1].x + textLocation[j - 1].width) + textPadding + shapeWidth;\n if ((prvePositionX + shapePadding + legendTextSize.width) > legendWidth) {\n var nextPositionY = (textLocation[j - 1].y > (shapeLocation[j - 1].y + (shapeHeight / 2)) ?\n textLocation[j - 1].y : (shapeLocation[j - 1].y + (shapeHeight / 2))) + topPadding;\n if ((nextPositionY + maxSize) > legendHeight) {\n this.getPageChanged();\n j = 0;\n shapeLocation = [];\n textLocation = [];\n shapeX = startX_1;\n shapeY = startY_1;\n }\n else {\n shapeX = (shapeLocation[0].x);\n shapeY = (nextPositionY + (maxSize / 2));\n }\n }\n else {\n shapeX = (prvePositionX - (shapeWidth / 2));\n shapeY = (shapeLocation[j - 1]).y;\n }\n }\n else {\n var prevPositionY = textLocation[j - 1].y > shapeLocation[j - 1].y + (shapeHeight / 2) ?\n textLocation[j - 1].y : shapeLocation[j - 1].y + (shapeHeight / 2);\n if ((prevPositionY + topPadding + maxSize) > legendHeight) {\n var nextPositionX = (textLocation[j - 1].x + this.textMaxWidth + textPadding);\n if ((nextPositionX + shapePadding + legendTextSize.width) > legendWidth) {\n shapeX = startX_1;\n shapeY = startY_1;\n textLocation = [];\n shapeLocation = [];\n this.getPageChanged();\n j = 0;\n }\n else {\n shapeX = nextPositionX + (shapeWidth / 2);\n shapeY = (shapeLocation[0].y);\n }\n }\n else {\n shapeX = shapeLocation[j - 1].x;\n shapeY = prevPositionY + topPadding + (shapeHeight / 2);\n }\n }\n }\n textX = shapeX + (shapeWidth / 2) + shapePadding;\n textY = shapeY + (legendTextSize.height / 4);\n shapeLocation.push({ x: shapeX, y: shapeY });\n textLocation.push({ x: textX, y: textY, width: legendTextSize.width, height: (legendTextSize.height / 2) });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalPages[this.page]['Collection'].push({\n DisplayText: legendItem['legendName'], element: legendItem['gradientElement'],\n Shape: { x: shapeX, y: shapeY },\n Text: { x: textX, y: textY },\n Fill: legendItem['legendFill'],\n Data: legendItem['legendData'],\n Rect: {\n x: shapeLocation[j].x - (shapeWidth / 2),\n y: (shapeLocation[j].y - (shapeHeight / 2)) < (textY - legendTextSize.height) ?\n (shapeLocation[j].y - (shapeHeight / 2)) : (textY - legendTextSize.height),\n width: Math.abs((shapeLocation[j].x - (shapeWidth / 2)) - (textX + legendTextSize.width)),\n height: ((shapeHeight > legendTextSize.height) ? shapeHeight : legendTextSize.height)\n }\n });\n j++;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.totalPages[0]['Collection'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n collection.forEach(function (legendObj, index) {\n var legendRect = new Rect(legendObj['Rect']['x'], legendObj['Rect']['y'], legendObj['Rect']['width'], legendObj['Rect']['height']);\n if (index === 0) {\n startX_1 = legendRect.x;\n startY_1 = legendRect.y;\n }\n _this.widthIncrement = Math.max(_this.widthIncrement, Math.abs(startX_1 - (legendRect.x + legendRect.width)));\n _this.heightIncrement = Math.max(_this.heightIncrement, Math.abs(startY_1 - (legendRect.y + legendRect.height)));\n });\n legendWidth = ((this.widthIncrement < legendWidth) ? this.widthIncrement : legendWidth);\n legendHeight = ((this.heightIncrement < legendHeight) ? this.heightIncrement : legendHeight);\n this.legendItemRect = {\n x: collection[0]['Rect']['x'], y: collection[0]['Rect']['y'],\n width: legendWidth, height: legendHeight\n };\n }\n else {\n var legendLength_1 = this.legendCollections.length;\n var rectWidth_1 = (orientation_1 === 'Horizontal') ? (isNullOrUndefined(legendWidth)) ? (treemap.areaRect.width / legendLength_1) :\n (legendWidth / legendLength_1) : (isNullOrUndefined(legendWidth)) ? defaultSize : legendWidth;\n var rectHeight_1 = (orientation_1 === 'Horizontal') ? (isNullOrUndefined(legendHeight)) ? defaultSize : legendHeight :\n (isNullOrUndefined(legendHeight)) ? (treemap.areaRect.height / legendLength_1) : (legendHeight / legendLength_1);\n startX_1 = 0;\n startY_1 = legendTitleSize.height + spacing;\n var textPadding_1 = 10;\n var placement = legend.labelPosition;\n var itemStartX = 0;\n var itemStartY = 0;\n var labelAction = legend.labelDisplayMode;\n var maxTextHeight = 0;\n var maxTextWidth = 0;\n for (var i = 0; i < this.legendCollections.length; i++) {\n startX_1 = (orientation_1 === 'Horizontal') ? (startX_1 + rectWidth_1) : startX_1;\n startY_1 = (orientation_1 === 'Horizontal') ? startY_1 : (startY_1 + rectHeight_1);\n var legendText = this.legendCollections[i]['legendName'];\n var itemTextSize = new Size(0, 0);\n if (labelAction === 'None') {\n itemTextSize = measureText(legendText, itemTextStyle);\n }\n else if (labelAction === 'Trim') {\n legendText = textTrim((orientation_1 === 'Horizontal' ? rectWidth_1 : rectHeight_1), legendText, itemTextStyle);\n itemTextSize = measureText(legendText, itemTextStyle);\n }\n else {\n legendText = '';\n }\n maxTextHeight = Math.max(maxTextHeight, itemTextSize.height);\n maxTextWidth = Math.max(maxTextWidth, itemTextSize.width);\n if (itemTextSize.width > 0 && itemTextSize.height > 0) {\n if (orientation_1 === 'Horizontal') {\n textX = startX_1 + (rectWidth_1 / 2);\n textY = (placement === 'After') ? (startY_1 + rectHeight_1 + (itemTextSize.height / 2)) + textPadding_1 :\n (startY_1 - textPadding_1);\n }\n else {\n textX = (placement === 'After') ? startX_1 - (itemTextSize.width / 2) - textPadding_1\n : (startX_1 + rectWidth_1 + itemTextSize.width / 2) + textPadding_1;\n textY = startY_1 + (rectHeight_1 / 2) + (itemTextSize.height / 4);\n }\n }\n if (i === 0) {\n itemStartX = (orientation_1 === 'Horizontal') ? startX_1 : (placement === 'After') ?\n textX - (itemTextSize.width / 2) : startX_1;\n itemStartY = (orientation_1 === 'Horizontal') ? (placement === 'After') ? startY_1 :\n textY - (itemTextSize.height / 2) : startY_1;\n }\n if (i === legendLength_1 - 1) {\n legendWidth = (orientation_1 === 'Horizontal') ? Math.abs((startX_1 + rectWidth_1) - itemStartX) :\n (rectWidth_1 + maxTextWidth + textPadding_1);\n legendHeight = (orientation_1 === 'Horizontal') ? (rectHeight_1 + (maxTextHeight / 2) + textPadding_1) :\n Math.abs((startY_1 + rectHeight_1) - itemStartY);\n }\n this.legendRenderingCollections.push({\n fill: this.legendCollections[i]['legendFill'], x: startX_1, y: startY_1,\n width: rectWidth_1, height: rectHeight_1, element: this.legendCollections[i]['gradientElement'],\n text: legendText, textX: textX, textY: textY,\n textWidth: itemTextSize.width, textHeight: itemTextSize.height,\n data: this.legendCollections[i]['legendData']\n });\n }\n this.legendItemRect = { x: itemStartX, y: itemStartY, width: legendWidth, height: legendHeight };\n }\n }\n };\n TreeMapLegend.prototype.getPageChanged = function () {\n this.page++;\n if (isNullOrUndefined(this.totalPages[this.page])) {\n this.totalPages[this.page] = { Page: (this.page + 1), Collection: [] };\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.findColorMappingLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n if (child && child.length > 0) {\n this.calculateLegendItems(child);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < child.length; i++) {\n this.findColorMappingLegendItems(child[i]);\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.findPaletteLegendItems = function (data, type) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child;\n var legendFillColor;\n if (!isNullOrUndefined(this.treemap.drilledItems)) {\n if (this.treemap.drilledItems.length === 0 && !isNullOrUndefined(this.treemap.initialDrillDown.groupName)\n && isNullOrUndefined(this.treemap.drilledLegendItems)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var items = findChildren(data)['values'];\n for (var k = 0; k < items.length; k++) {\n if (items[k]['Name'] === this.treemap.initialDrillDown.groupName) {\n items[k]['isDrilled'] = !items[k]['isDrilled'];\n data = items[k];\n this.treemap.currentLevel = this.treemap.initialDrillDown.groupIndex;\n legendFillColor = this.treemap.palette.length > 0 ? this.treemap.palette[k % this.treemap.palette.length] :\n items[k]['data'][this.treemap.colorValuePath];\n break;\n }\n }\n }\n }\n if (this.treemap.enableDrillDown && !isNullOrUndefined(this.treemap.drilledLegendItems)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childElement = this.treemap.drilledLegendItems;\n legendFillColor = childElement['data']['options']['fill'];\n if (childElement['data']['isDrilled']) {\n child = findChildren(childElement['data'])['values'];\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentElement = childElement['data']['parent'];\n child = findChildren(parentElement)['values'];\n }\n }\n else {\n child = findChildren(data)['values'];\n }\n var isDuplicate;\n var legendName;\n if (child && child.length > 0) {\n for (var i = 0; i < child.length; i++) {\n if (isNullOrUndefined(child[i]['data'][this.treemap.legendSettings.showLegendPath]) ||\n child[i]['data'][this.treemap.legendSettings.showLegendPath]) {\n legendName = child[i]['data'][this.treemap.legendSettings.valuePath] ?\n child[i]['data'][this.treemap.legendSettings.valuePath] : child[i]['name'];\n isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, legendName) : false;\n if (!isDuplicate) {\n this.legendCollections.push({\n legendName: legendName,\n legendFill: this.treemap.palette.length > 0 ? !isNullOrUndefined(this.treemap.currentLevel)\n ? legendFillColor : this.treemap.palette[i % this.treemap.palette.length] :\n child[i]['data'][this.treemap.colorValuePath],\n legendData: [],\n itemArea: child[i]['weight']\n });\n }\n }\n }\n this.legendCollections.sort(orderByArea);\n if (this.treemap.palette.length > 0) {\n for (var j = 0; j < this.legendCollections.length; j++) {\n this.legendCollections[j]['legendFill'] = !isNullOrUndefined(this.treemap.currentLevel)\n ? legendFillColor : this.treemap.palette[j % this.treemap.palette.length];\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.calculateLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isAddData;\n var fill;\n var rangeValue;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData;\n var legendText;\n var itemValue;\n var isLeafItem;\n var colorMapProcess = false;\n var colorMapping;\n var groupIndex;\n var leaf = this.treemap.leafItemSettings;\n var levels = this.treemap.levels;\n var equalValue;\n var position = this.treemap.legendSettings.position;\n var gradientElement;\n var x2;\n var y2;\n var actualValue;\n var isDuplicate;\n var isEqualColor;\n var isRange;\n var isDesaturation = false;\n var legendIndex = 0;\n var outfill;\n var labelLegend;\n var otherIndex;\n this.outOfRangeLegend = null;\n for (var i = 0; i < data.length; i++) {\n fill = '';\n isEqualColor = false;\n isRange = false;\n isDesaturation = false;\n currentData = data[i]['data'];\n groupIndex = data[i]['groupIndex'];\n isLeafItem = (this.treemap.levels.length === 0 || groupIndex === this.treemap.levels.length);\n colorMapping = isLeafItem ? leaf.colorMapping : levels[groupIndex].colorMapping;\n for (var _i = 0, colorMapping_1 = colorMapping; _i < colorMapping_1.length; _i++) {\n var colorMap = colorMapping_1[_i];\n gradientElement = null;\n rangeValue = Number(currentData[this.treemap.rangeColorValuePath]);\n equalValue = currentData[this.treemap.equalColorValuePath];\n colorMap.value = !isNullOrUndefined(colorMap.value) ? colorMap.value.toString() : colorMap.value;\n if (!isNullOrUndefined(colorMap.from) && !isNullOrUndefined(colorMap.to) &&\n rangeValue >= colorMap.from && rangeValue <= colorMap.to && colorMap.showLegend) {\n colorMapProcess = true;\n isRange = true;\n actualValue = colorMap.from + ' - ' + colorMap.to;\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : colorMap.from + ' - ' + colorMap.to;\n fill = isNullOrUndefined(colorMap.color) ? fill : colorMap.color;\n isAddData = this.isAddNewLegendData(actualValue);\n }\n else if (!isNullOrUndefined(colorMap.value) && equalValue === colorMap.value && colorMap.showLegend) {\n colorMapProcess = true;\n isEqualColor = true;\n actualValue = colorMap.value.toString();\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : colorMap.value.toString();\n fill = isNullOrUndefined(colorMap.color) ? fill :\n Object.prototype.toString.call(colorMap.color) === '[object Array]' ? colorMap.color[0] : colorMap.color;\n isAddData = this.isAddNewLegendData(actualValue);\n }\n if (colorMapProcess && isNullOrUndefined(colorMap.value) && colorMap.maxOpacity && colorMap.minOpacity\n && this.treemap.legendSettings.mode === 'Interactive') {\n var colors = [];\n isDesaturation = true;\n if (Object.prototype.toString.call(colorMap.color) === '[object Array]') {\n for (var q = 0; q < colorMap.color.length; q++) {\n var offsetColor = 100 / (colorMap.color.length - 1);\n var offsetValue = q * offsetColor + '%';\n var stop1Color = { colorStop: offsetValue.toString(), color: colorMap.color[q] };\n colors.push(stop1Color);\n }\n }\n else {\n var stop1Color = { colorStop: '0%', color: fill };\n var stop2Color = { colorStop: '100%', color: fill };\n colors.push(stop1Color);\n colors.push(stop2Color);\n }\n x2 = position === 'Top' || position === 'Bottom' ? '100%' : '0%';\n y2 = position === 'Top' || position === 'Bottom' ? '0%' : '100%';\n var gradient = {\n id: 'groupIndex_' + groupIndex + '_colorIndex_' + this.gradientCount, x1: '0%', y1: '0%', x2: x2, y2: y2\n };\n gradientElement = this.treemap.renderer.drawGradient('linearGradient', gradient, colors).childNodes[0];\n if (Object.prototype.toString.call(colorMap.color) !== '[object Array]') {\n gradientElement.childNodes[0].setAttribute('stop-opacity', colorMap.minOpacity.toString());\n gradientElement.childNodes[1].setAttribute('stop-opacity', colorMap.maxOpacity.toString());\n }\n this.defsElement.appendChild(gradientElement);\n this.gradientCount++;\n }\n isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, legendText) : false;\n if (isAddData && isAddData['process'] && colorMapProcess && !isDuplicate) {\n colorMapProcess = false;\n fill = ((Object.prototype.toString.call(colorMap.color) === '[object Array]')) && isNullOrUndefined(gradientElement)\n && isNullOrUndefined(colorMap.value) ? this.legendGradientColor(colorMap, legendIndex) : fill;\n this.legendCollections.push({\n actualValue: actualValue,\n legendName: legendText, legendFill: fill, legendData: [],\n gradientElement: !isNullOrUndefined(gradientElement) ? gradientElement : isNullOrUndefined(colorMap.value)\n ? this.legendLinearGradient : null, name: data[i]['name'],\n opacity: this.treemap.legendSettings.opacity, borderColor: this.treemap.legendSettings.border.color,\n borderWidth: this.treemap.legendSettings.border.width\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[this.legendCollections.length - 1]['legendData'].push(data[i]);\n legendIndex++;\n }\n else if (colorMapProcess && !isDuplicate) {\n colorMapProcess = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[isAddData['value']]['legendData'].push(data[i]);\n }\n if (!isRange && !isDesaturation && !isEqualColor) {\n if (isNullOrUndefined(colorMap.from) && isNullOrUndefined(colorMap.to)\n && isNullOrUndefined(colorMap.minOpacity) &&\n isNullOrUndefined(colorMap.maxOpacity) && isNullOrUndefined(colorMap.value) &&\n !isNullOrUndefined(colorMap.color)) {\n outfill = ((Object.prototype.toString.call(colorMap.color) === '[object Array]'))\n ? colorMap.color[0] : colorMap.color;\n labelLegend = !isNullOrUndefined(colorMap.label) ? colorMap.label : 'Others';\n if (isNullOrUndefined(this.outOfRangeLegend)) {\n this.legendCollections.push({\n actualValue: labelLegend, legendData: [],\n legendName: labelLegend, legendFill: outfill\n });\n otherIndex = this.legendCollections.length;\n this.outOfRangeLegend = this.legendCollections[otherIndex - 1];\n legendIndex++;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[otherIndex - 1]['legendData'].push(data[i]);\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.removeDuplicates = function (legendCollection, text) {\n var isDuplicate = false;\n for (var i = 0; i < legendCollection.length; i++) {\n if (legendCollection[i]['legendName'] === text) {\n isDuplicate = true;\n break;\n }\n else {\n continue;\n }\n }\n return isDuplicate;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.isAddNewLegendData = function (legendText) {\n var newDataProcess;\n var itemValue;\n if (this.legendCollections.length === 0) {\n newDataProcess = true;\n }\n else {\n for (var j = 0; j < this.legendCollections.length; j++) {\n if (legendText === this.legendCollections[j]['actualValue']) {\n newDataProcess = false;\n itemValue = j;\n break;\n }\n else if (j === this.legendCollections.length - 1) {\n newDataProcess = true;\n }\n }\n }\n return { process: newDataProcess, value: itemValue };\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To draw the legend\n */\n TreeMapLegend.prototype.drawLegend = function () {\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n var render = treemap.renderer;\n var fill;\n var textOptions;\n var gradientElement;\n var textFont = legend.textStyle;\n this.legendGroup = render.createGroup({ id: treemap.element.id + '_Legend_Group' });\n this.renderLegendBorder();\n this.renderLegendTitle();\n if (legend.mode === 'Default') {\n this.drawLegendItem(this.currentPage);\n }\n else {\n for (var i = 0; i < this.legendRenderingCollections.length; i++) {\n var itemId = treemap.element.id + '_Legend_Index_' + i;\n var textId = treemap.element.id + '_Legend_Index_' + i + '_Text';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = this.legendRenderingCollections[i];\n gradientElement = item['element'];\n fill = gradientElement ? 'url(#' + gradientElement.id + ')' : item['fill'];\n var bounds = new Rect(item['x'], item['y'], item['width'], item['height']);\n var textLocation = new Location(item['textX'], item['textY']);\n var rectOptions = new RectOption(itemId, fill, legend.shapeBorder, legend.opacity, bounds);\n if (this.treemap.enableRtl) {\n if (treemap.legendSettings.position === 'Left' || treemap.legendSettings.position === 'Right'\n || (treemap.legendSettings.position === 'Auto'\n && this.treemap.availableSize.width >= this.treemap.availableSize.height)) {\n rectOptions.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - (this.translate.y + rectOptions.height) - Math.abs(this.legendBorderRect.y - rectOptions.y);\n textLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - (this.translate.y) + (item['textHeight'] / 2)\n - Math.abs(this.legendBorderRect.y - textLocation.y);\n }\n else {\n rectOptions.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + rectOptions.width)\n - Math.abs(this.legendBorderRect.x - rectOptions.x);\n textLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - this.translate.x - Math.abs(this.legendBorderRect.x - textLocation.x);\n }\n }\n textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'middle', item['text'], '', '');\n renderTextElement(textOptions, textFont, textFont.color || this.treemap.themeStyle.legendTextColor, this.legendGroup);\n this.legendGroup.appendChild(render.drawRectangle(rectOptions));\n }\n }\n legendMaintain(this.treemap, this.legendGroup);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.defaultLegendRtlLocation = function (collection, spacing, treemap, legend) {\n var shapeLocation = collection['Shape'];\n var textLocation = collection['Text'];\n var legendText = collection['DisplayText'];\n var textSize = measureText(legendText, legend.textStyle);\n shapeLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + spacing) - Math.abs(this.legendBorderRect.x - shapeLocation.x);\n textLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + textSize.width + spacing) - Math.abs(this.legendBorderRect.x - textLocation.x);\n if (treemap.legendSettings.position === 'Left' || treemap.legendSettings.position === 'Right'\n || (treemap.legendSettings.position === 'Auto'\n && this.treemap.availableSize.width >= this.treemap.availableSize.height)) {\n shapeLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - this.translate.y - Math.abs(Math.abs(this.legendBorderRect.y) - shapeLocation.y) - (legend.shapeHeight / 2);\n textLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - this.translate.y - Math.abs(Math.abs(this.legendBorderRect.y) - textLocation.y);\n }\n return { shapeLocation: shapeLocation, textLocation: textLocation };\n };\n TreeMapLegend.prototype.drawLegendItem = function (page) {\n var _this = this;\n var treemap = this.treemap;\n var spacing = 10;\n var legend = treemap.legendSettings;\n var shapeSize = new Size(legend.shapeWidth, legend.shapeHeight);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var textOptions;\n var legendRtlLocation;\n var renderOptions;\n var render = treemap.renderer;\n var shapeBorder = legend.shapeBorder;\n var eventArgs;\n if (page >= 0 && page < this.totalPages.length) {\n if (document.getElementById(this.legendGroup.id)) {\n document.getElementById(this.legendGroup.id).remove();\n }\n var isLineShape_1 = (legend.shape === 'HorizontalLine' || legend.shape === 'VerticalLine' || legend.shape === 'Cross');\n var strokeColor_1 = isLineShape_1 ? isNullOrUndefined(legend.fill) ? '#000000' : legend.fill : shapeBorder.color;\n var strokeWidth_1 = isLineShape_1 ? (shapeBorder.width === 0) ? 1 : shapeBorder.width : shapeBorder.width;\n var _loop_1 = function (i) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this_1.totalPages[page]['Collection'][i];\n var legendElement = render.createGroup({ id: treemap.element.id + '_Legend_Index_' + i });\n var legendText = collection['DisplayText'];\n var shapeId = treemap.element.id + '_Legend_Shape_Index_' + i;\n var textId = treemap.element.id + '_Legend_Text_Index_' + i;\n var shapeLocation = collection['Shape'];\n var textLocation = collection['Text'];\n if (treemap.enableRtl) {\n legendRtlLocation = this_1.defaultLegendRtlLocation(collection, spacing, treemap, legend);\n shapeLocation = legendRtlLocation['shapeLocation'];\n textLocation = legendRtlLocation['textLocation'];\n }\n eventArgs = {\n cancel: false, name: legendItemRendering, treemap: treemap, fill: collection['Fill'],\n shape: legend.shape, imageUrl: legend.imageUrl\n };\n this_1.treemap.trigger(legendItemRendering, eventArgs, function (observedArgs) {\n var renderOptions = new PathOption(shapeId, observedArgs.fill, strokeWidth_1, isLineShape_1 ? collection['Fill'] : strokeColor_1, legend.opacity, '');\n legendElement.appendChild(drawSymbol(shapeLocation, observedArgs.shape, shapeSize, observedArgs.imageUrl, renderOptions, legendText));\n textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'start', legendText, '', '');\n renderTextElement(textOptions, legend.textStyle, legend.textStyle.color || _this.treemap.themeStyle.legendTextColor, legendElement);\n _this.legendGroup.appendChild(legendElement);\n });\n };\n var this_1 = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (var i = 0; i < this.totalPages[page]['Collection'].length; i++) {\n _loop_1(i);\n }\n var pagingGroup = void 0;\n var width = spacing;\n var height = (spacing / 2);\n if (this.page !== 0) {\n var pagingText = (page + 1) + '/' + this.totalPages.length;\n var pagingFont = legend.textStyle;\n var pagingTextSize = measureText(pagingText, pagingFont);\n var leftPageX = (this.legendItemRect.x + this.legendItemRect.width) - pagingTextSize.width -\n (width * 2) - spacing;\n var rightPageX = (this.legendItemRect.x + this.legendItemRect.width);\n var locY = (this.legendItemRect.y + this.legendItemRect.height) + (height / 2) + spacing;\n var pageTextX = rightPageX - width - (pagingTextSize.width / 2) - (spacing / 2);\n pagingGroup = render.createGroup({ id: treemap.element.id + '_Legend_Paging_Group' });\n var leftPageElement = render.createGroup({ id: treemap.element.id + '_Legend_Left_Paging_Group' });\n var rightPageElement = render.createGroup({ id: treemap.element.id + '_Legend_Right_Paging_Group' });\n var rightPath = ' M ' + rightPageX + ' ' + locY + ' L ' + (rightPageX - width) + ' ' + (locY - height) +\n ' L ' + (rightPageX - width) + ' ' + (locY + height) + ' z ';\n var leftPath = ' M ' + leftPageX + ' ' + locY + ' L ' + (leftPageX + width) + ' ' + (locY - height) +\n ' L ' + (leftPageX + width) + ' ' + (locY + height) + ' z ';\n var leftPageOptions = new PathOption(treemap.element.id + '_Left_Page', '#a6a6a6', 0, '#a6a6a6', 1, '', leftPath);\n leftPageElement.appendChild(render.drawPath(leftPageOptions));\n var leftRectPageOptions = new RectOption(treemap.element.id + '_Left_Page_Rect', 'transparent', {}, 1, new Rect(leftPageX - (width / 2), (locY - (height * 2)), width * 2, spacing * 2), '');\n leftPageElement.appendChild(render.drawRectangle(leftRectPageOptions));\n this.wireEvents(leftPageElement);\n var rightPageOptions = new PathOption(treemap.element.id + '_Right_Page', '#a6a6a6', 0, '#a6a6a6', 1, '', rightPath);\n rightPageElement.appendChild(render.drawPath(rightPageOptions));\n var rightRectPageOptions = new RectOption(treemap.element.id + '_Right_Page_Rect', 'transparent', {}, 1, new Rect((rightPageX - width), (locY - height), width, spacing), '');\n rightPageElement.appendChild(render.drawRectangle(rightRectPageOptions));\n this.wireEvents(rightPageElement);\n pagingGroup.appendChild(leftPageElement);\n pagingGroup.appendChild(rightPageElement);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var pageTextOptions = {\n 'id': treemap.element.id + '_Paging_Text',\n 'x': pageTextX,\n 'y': locY + (pagingTextSize.height / 4),\n 'fill': '#a6a6a6',\n 'font-size': '14px',\n 'font-style': pagingFont.fontStyle,\n 'font-family': pagingFont.fontFamily,\n 'font-weight': pagingFont.fontWeight,\n 'text-anchor': 'middle',\n 'transform': '',\n 'opacity': 1,\n 'dominant-baseline': ''\n };\n pagingGroup.appendChild(render.createText(pageTextOptions, pagingText));\n this.legendGroup.appendChild(pagingGroup);\n }\n }\n };\n TreeMapLegend.prototype.renderLegendBorder = function () {\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n var legendTitle = legend.title.text;\n var spacing = 10;\n var textStyle = legend.titleStyle;\n var textOptions;\n var title = textTrim((this.legendItemRect.width + (spacing * 2)), legendTitle, textStyle);\n var textSize = measureText(title, textStyle);\n this.legendBorderRect = new Rect((this.legendItemRect.x - spacing), (this.legendItemRect.y - spacing - textSize.height), (this.legendItemRect.width) + (spacing * 2), (this.legendItemRect.height) + (spacing * 2) + textSize.height +\n (legend.mode === 'Interactive' ? 0 : (this.page !== 0) ? spacing : 0));\n var renderOptions = new RectOption(treemap.element.id + '_Legend_Border', legend.background, legend.border, 1, this.legendBorderRect, '');\n var legendBorder = treemap.renderer.drawRectangle(renderOptions);\n legendBorder.style.pointerEvents = 'none';\n this.legendGroup.appendChild(legendBorder);\n this.getLegendAlignment(treemap, this.legendBorderRect.width, this.legendBorderRect.height, legend);\n this.legendGroup.setAttribute('transform', 'translate( ' + (this.translate.x + (-(this.legendBorderRect.x))) + ' ' +\n (this.translate.y + (-(this.legendBorderRect.y))) + ' )');\n treemap.svgObject.appendChild(this.legendGroup);\n };\n TreeMapLegend.prototype.renderLegendTitle = function () {\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n var textStyle = legend.titleStyle;\n var legendTitle = legend.title.text;\n var textOptions;\n var spacing = 10;\n var trimTitle = textTrim((this.legendItemRect.width + (spacing * 2)), legendTitle, textStyle);\n var textSize = measureText(trimTitle, textStyle);\n if (legendTitle) {\n textOptions = new TextOption(treemap.element.id + '_LegendTitle', (this.legendItemRect.x) + (this.legendItemRect.width / 2), this.legendItemRect.y - (textSize.height / 2) - (spacing / 2), 'middle', trimTitle, '');\n renderTextElement(textOptions, textStyle, textStyle.color || this.treemap.themeStyle.legendTitleColor, this.legendGroup);\n }\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To rendered the interactive pointer\n */\n TreeMapLegend.prototype.renderInteractivePointer = function (e) {\n var treemap = this.treemap;\n var target = e.target;\n var interactiveId = treemap.element.id + '_Interactive_Legend';\n target = !(e.type.indexOf('touch') > -1) ? target :\n document.elementFromPoint(e.changedTouches[0].clientX, e.changedTouches[0].clientY);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetItem;\n var legend = treemap.legendSettings;\n if (target.id.indexOf('_Item_Index') > -1 && legend.visible && this.legendRenderingCollections.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = void 0;\n var legendRect = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var rect = void 0;\n var data = void 0;\n var fill = void 0;\n var stroke = void 0;\n var strokeWidth = void 0;\n var legendElement = void 0;\n targetItem = treemap.layout.renderItems[parseFloat(target.id.split('_Item_Index_')[1])];\n var svgRect = treemap.svgObject.getBoundingClientRect();\n for (var i = 0; i < this.legendCollections.length; i++) {\n currentData = this.legendCollections[i];\n legendElement = document.getElementById(treemap.element.id + '_Legend_Index_' + i);\n legendRect = legendElement.getBoundingClientRect();\n var rect_1 = new Rect(Math.abs(legendRect.left - svgRect.left), Math.abs(legendRect.top - svgRect.top), legendRect.width, legendRect.height);\n fill = legendElement.getAttribute('fill');\n stroke = legend.shapeBorder.color;\n strokeWidth = legend.shapeBorder.width;\n if (!isNullOrUndefined(currentData['legendData'])) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data = currentData['legendData'];\n for (var j = 0; j < data.length; j++) {\n if (data[j]['levelOrderName'] === targetItem['levelOrderName']) {\n this.drawInteractivePointer(legend, fill, stroke, interactiveId, strokeWidth, rect_1);\n break;\n }\n }\n }\n }\n }\n else {\n this.removeInteractivePointer();\n }\n };\n TreeMapLegend.prototype.drawInteractivePointer = function (legend, fill, stroke, id, strokeWidth, rect) {\n var path;\n var locX;\n var locY;\n var height = 10;\n var width = 10;\n var direction = (legend.orientation === 'None') ? (legend.position === 'Top' || legend.position === 'Bottom')\n ? 'Horizontal' : 'Vertical' : legend.orientation;\n if (direction === 'Horizontal') {\n if (!legend.invertedPointer) {\n locX = rect.x + (rect.width / 2);\n locY = rect.y;\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX - width) + ' ' + (locY - height) +\n ' L ' + (locX + width) + ' ' + (locY - height) + ' Z ';\n }\n else {\n locX = rect.x + (rect.width / 2);\n locY = rect.y + (rect.height);\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX - width) + ' ' + (locY + height) +\n ' L ' + (locX + width) + ' ' + (locY + height) + ' Z ';\n }\n }\n else {\n if (!legend.invertedPointer) {\n locX = rect.x + (rect.width);\n locY = rect.y + (rect.height / 2);\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX + width) + ' ' + (locY - height) +\n ' L ' + (locX + width) + ' ' + (locY + height) + ' z ';\n }\n else {\n locX = rect.x;\n locY = rect.y + (rect.height / 2);\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX - width) + ' ' + (locY - height) +\n ' L ' + (locX - width) + ' ' + (locY + height) + ' z ';\n }\n }\n var pathOptions = new PathOption(id, fill, strokeWidth, stroke, 1, '', path);\n this.treemap.svgObject.appendChild(this.treemap.renderer.drawPath(pathOptions));\n };\n TreeMapLegend.prototype.getLegendAlignment = function (treemap, width, height, legend) {\n var x;\n var y;\n var spacing = 10;\n var totalRect;\n // eslint-disable-next-line prefer-const\n totalRect = extend({}, treemap.areaRect, totalRect, true);\n var areaX = totalRect.x;\n var areaY = totalRect.y;\n var areaHeight = totalRect.height;\n var areaWidth = totalRect.width;\n var totalWidth = treemap.availableSize.width;\n var totalHeight = treemap.availableSize.height;\n var position = legend.position === 'Auto' ? (totalWidth > totalHeight) ? 'Right' : 'Bottom' : legend.position;\n if (legend.position === 'Float') {\n this.translate = legend.location;\n }\n else {\n switch (position) {\n case 'Top':\n case 'Bottom':\n totalRect.height = (areaHeight - height);\n x = (totalWidth / 2) - (width / 2);\n y = (position === 'Top') ? areaY : (areaY + totalRect.height) + spacing;\n totalRect.y = (position === 'Top') ? areaY + height + spacing : areaY;\n break;\n case 'Left':\n case 'Right':\n totalRect.width = (areaWidth - width);\n x = (position === 'Left') ? areaX : areaX + totalRect.width;\n y = (totalHeight / 2) - (height / 2);\n totalRect.x = (position === 'Left') ? areaX + width : areaX;\n break;\n }\n switch (legend.alignment) {\n case 'Near':\n if (position === 'Top' || position === 'Bottom') {\n x = totalRect.x;\n }\n else {\n y = totalRect.y;\n }\n break;\n case 'Far':\n if (position === 'Top' || position === 'Bottom') {\n x = totalWidth - width;\n }\n else {\n y = totalHeight - height;\n }\n break;\n }\n this.treemap.totalRect = totalRect;\n this.translate = new Location(x, y);\n }\n };\n TreeMapLegend.prototype.mouseUpHandler = function (e) {\n this.renderInteractivePointer(e);\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeInteractivePointer.bind(this), 3000);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To remove the interactive pointer\n */\n TreeMapLegend.prototype.removeInteractivePointer = function () {\n if (document.getElementById(this.treemap.element.id + '_Interactive_Legend')) {\n var legendElementId = document.getElementById(this.treemap.element.id + '_Interactive_Legend');\n legendElementId.parentNode.removeChild(legendElementId);\n }\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To change the next page\n */\n TreeMapLegend.prototype.changeNextPage = function (e) {\n this.currentPage = (e.target.id.indexOf('_Left_Page_') > -1) ? (this.currentPage - 1) :\n (this.currentPage + 1);\n this.drawLegend();\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * Wire events for event handler\n */\n TreeMapLegend.prototype.wireEvents = function (element) {\n EventHandler.add(element, Browser.touchStartEvent, this.changeNextPage, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To add the event listener\n */\n TreeMapLegend.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.renderInteractivePointer, this);\n this.treemap.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To remove the event listener\n */\n TreeMapLegend.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.renderInteractivePointer);\n this.treemap.off(Browser.touchEndEvent, this.mouseUpHandler);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * Get module name.\n */\n TreeMapLegend.prototype.getModuleName = function () {\n return 'treeMapLegend';\n };\n /**\n * To destroy the legend.\n *\n * @param {TreeMap} treemap - Specifies treemap instance\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.destroy = function (treemap) {\n /**\n * Destroy method performed here\n */\n this.removeEventListener();\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * Get the gradient color for interactive legend.\n */\n TreeMapLegend.prototype.legendGradientColor = function (colorMap, legendIndex) {\n var legendFillColor;\n var xmlns = 'http://www.w3.org/2000/svg';\n if (!isNullOrUndefined(colorMap.color) && Object.prototype.toString.call(colorMap.color) === '[object Array]') {\n var defElement = this.treemap.renderer.createDefs();\n var linerGradientEle = document.createElementNS(xmlns, 'linearGradient');\n var opacity = 1;\n var position = this.treemap.legendSettings.position;\n var x2 = position === 'Top' || position === 'Bottom' ? '100' : '0';\n var y2 = position === 'Top' || position === 'Bottom' ? '0' : '100';\n linerGradientEle.setAttribute('id', 'linear_' + legendIndex);\n linerGradientEle.setAttribute('x1', 0 + '%');\n linerGradientEle.setAttribute('y1', 0 + '%');\n linerGradientEle.setAttribute('x2', x2 + '%');\n linerGradientEle.setAttribute('y2', y2 + '%');\n for (var b = 0; b < colorMap.color.length; b++) {\n var offsetColor = 100 / (colorMap.color.length - 1);\n var stopEle = document.createElementNS(xmlns, 'stop');\n stopEle.setAttribute('offset', b * offsetColor + '%');\n stopEle.setAttribute('stop-color', colorMap.color[b]);\n stopEle.setAttribute('stop-opacity', opacity.toString());\n linerGradientEle.appendChild(stopEle);\n }\n defElement.appendChild(linerGradientEle);\n this.legendLinearGradient = linerGradientEle;\n var color = 'url(' + '#linear_' + legendIndex + ')';\n this.defsElement.appendChild(linerGradientEle);\n legendFillColor = color;\n }\n return legendFillColor;\n };\n return TreeMapLegend;\n}());\nexport { TreeMapLegend };\n","import { Browser } from '@syncfusion/ej2-base';\nimport { itemHighlight, itemSelected } from '../model/constants';\nimport { findHightLightItems, removeClassNames, applyOptions, removeShape, removeLegend, removeSelectionWithHighlight, setColor, getLegendIndex, pushCollection, setItemTemplateContent } from '../utils/helper';\n/**\n * Performing treemap highlight\n */\nvar TreeMapHighlight = /** @class */ (function () {\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function TreeMapHighlight(treeMap) {\n this.target = 'highlight';\n this.shapeTarget = 'highlight';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.shapeHighlightCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendHighlightCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentElement = [];\n this.treemap = treeMap;\n this.addEventListener();\n }\n /* eslint-disable max-len */\n // eslint-disable-next-line valid-jsdoc\n /**\n * Mouse down event in highlight\n */\n TreeMapHighlight.prototype.mouseMove = function (e) {\n var treemap = this.treemap;\n var processHighlight;\n var targetId = e.target.id;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var eventArgs;\n var items = [];\n var highlight = this.treemap.highlightSettings;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n var highLightElements = [];\n var process;\n var treeMapElement;\n var element;\n var orders;\n var selectionModule = this.treemap.treeMapSelectionModule;\n if (targetId.indexOf('_Item_Index') > -1 && (selectionModule ? this.treemap.selectionId !== targetId : true)) {\n if (this.highLightId !== targetId) {\n treeMapElement = document.getElementById(treemap.element.id + '_TreeMap_' + treemap.layoutType + '_Layout');\n var selectionElements = document.getElementsByClassName('treeMapSelection');\n item = this.treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n var index = void 0;\n if (this.treemap.legendSettings.visible) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n var length_1 = this.treemap.treeMapLegendModule.legendCollections.length;\n index = getLegendIndex(length_1, item, treemap);\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index) : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index);\n if (this.shapeElement !== null && (selectionModule ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true)) {\n if (selectionModule ? this.shapeElement !== selectionModule.shapeElement : true) {\n this.currentElement.push({ currentElement: this.shapeElement });\n removeShape(this.shapeHighlightCollection, 'highlight');\n this.shapeHighlightCollection.push({ legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n setColor(this.shapeElement, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n this.target = 'highlight';\n }\n else if (this.currentElement.length > 0 && this.currentElement[this.currentElement.length - 1]['currentElement'] !== this.shapeElement) {\n removeSelectionWithHighlight(this.shapeHighlightCollection, this.currentElement, treemap);\n this.highLightId = '';\n }\n }\n else if (this.currentElement.length > 0 && this.currentElement[this.currentElement.length - 1]['currentElement'] !== this.shapeElement) {\n removeSelectionWithHighlight(this.shapeHighlightCollection, this.currentElement, treemap);\n this.highLightId = '';\n }\n }\n orders = findHightLightItems(item, [], highlight.mode, treemap);\n if (this.treemap.legendSettings.visible ? selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true : true) {\n if (this.treemap.legendSettings.visible ? selectionModule ? this.shapeElement !== selectionModule.shapeElement : true : true) {\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n process = true;\n item = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])];\n for (var j = 0; j < selectionElements.length; j++) {\n if (element.id === selectionElements[j].id) {\n process = false;\n break;\n }\n }\n if (orders.indexOf(item['levelOrderName']) > -1 && process) {\n highLightElements.push(element);\n items.push(item);\n }\n }\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n for (var k = 0; k < highLightElements.length; k++) {\n element = highLightElements[k];\n applyOptions(element.childNodes[0], { border: highlight.border, fill: highlight.fill, opacity: highlight.opacity });\n element.classList.add('treeMapHighLight');\n this.highLightId = targetId;\n }\n eventArgs = { cancel: false, name: itemHighlight, treemap: treemap, items: items, elements: highLightElements };\n treemap.trigger(itemHighlight, eventArgs);\n }\n else {\n processHighlight = false;\n }\n }\n }\n }\n else if (targetId.indexOf('_Legend_Shape') > -1 || targetId.indexOf('_Legend_Index') > -1) {\n if (this.treemap.legendSettings.visible && (selectionModule ? selectionModule.legendSelectId !== targetId : true) && (selectionModule ? selectionModule.shapeSelectId !== targetId : true)) {\n var itemIndex = void 0;\n var groupIndex = void 0;\n var length_2;\n var targetEle = document.getElementById(targetId);\n if (this.shapeTarget === 'highlight') {\n removeLegend(this.legendHighlightCollection, 'highlight');\n }\n this.shapeTarget = 'highlight';\n var index = this.treemap.legendSettings.mode === 'Default' ? parseFloat(targetId.split('_Legend_Shape_Index_')[1]) : parseFloat(targetId.split('_Legend_Index_')[1]);\n var dataLength = this.treemap.treeMapLegendModule.legendCollections[index]['legendData'].length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n var legendIndex = parseInt(targetId[targetId.length - 1], 10);\n for (var i = 0; i < dataLength; i++) {\n for (var j = 0; j < this.treemap.layout.renderItems.length; j++) {\n if (this.treemap.treeMapLegendModule.legendCollections[index]['legendData'][i]['levelOrderName'] === this.treemap.layout.renderItems[j]['levelOrderName']) {\n itemIndex = j;\n groupIndex = this.treemap.layout.renderItems[j]['groupIndex'];\n var nodeEle = document.getElementById(this.treemap.element.id + '_Level_Index_' + groupIndex + '_Item_Index_' + itemIndex + '_RectPath');\n if (i === 0) {\n this.legendHighlightCollection = [];\n pushCollection(this.legendHighlightCollection, legendIndex, j, targetEle, nodeEle, this.treemap.layout.renderItems, collection);\n length_2 = this.legendHighlightCollection.length;\n this.legendHighlightCollection[length_2 - 1]['ShapeCollection'] = { Elements: [] };\n }\n setColor(targetEle, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n setColor(nodeEle, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n length_2 = this.legendHighlightCollection.length;\n this.legendHighlightCollection[length_2 - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n }\n }\n else {\n if (selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true) {\n if (selectionModule ? this.shapeElement !== selectionModule.shapeElement : true && this.treemap.legendSettings.visible) {\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n }\n }\n if ((this.shapeTarget === 'highlight' || this.target === 'highlight') && this.treemap.legendSettings.visible) {\n if (selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true) {\n if (selectionModule ? this.shapeElement !== selectionModule.shapeElement : true && selectionModule ? selectionModule.legendSelect : true) {\n removeShape(this.shapeHighlightCollection, 'highlight');\n this.shapeHighlightCollection = [];\n }\n }\n }\n if (this.shapeTarget === 'highlight' && this.treemap.legendSettings.visible) {\n removeLegend(this.legendHighlightCollection, 'highlight');\n }\n this.highLightId = '';\n processHighlight = false;\n }\n return processHighlight;\n };\n /**\n * To bind events for highlight\n *\n * @returns {void}\n */\n TreeMapHighlight.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.mouseMove, this);\n };\n /**\n * To unbind events for highlight\n *\n * @returns {void}\n */\n TreeMapHighlight.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.mouseMove);\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name\n */\n TreeMapHighlight.prototype.getModuleName = function () {\n return 'treeMapHighlight';\n };\n /**\n * To destroy the hightlight.\n *\n * @param {TreeMap} treeMap - Specifies the instance of the treemap.\n * @returns {void}\n * @private\n */\n TreeMapHighlight.prototype.destroy = function (treeMap) {\n this.removeEventListener();\n };\n return TreeMapHighlight;\n}());\nexport { TreeMapHighlight };\n/**\n * Performing treemap selection\n */\nvar TreeMapSelection = /** @class */ (function () {\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function TreeMapSelection(treeMap) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.shapeSelectionCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendSelectionCollection = [];\n this.shapeSelect = true;\n this.legendSelect = true;\n this.treemap = treeMap;\n this.addEventListener();\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * Mouse down event in selection\n */\n TreeMapSelection.prototype.mouseDown = function (e) {\n var targetEle = e.target;\n var eventArgs;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var treemap = this.treemap;\n treemap.levelSelection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var items = [];\n var targetId = targetEle.id;\n var labelText = targetEle.innerHTML;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n var selectionElements = [];\n var opacity;\n var treeMapElement;\n var element;\n var orders;\n var selection = treemap.selectionSettings;\n var highlightModule = this.treemap.treeMapHighlightModule;\n var layoutID = treemap.element.id + '_TreeMap_' + treemap.layoutType + '_Layout';\n if (targetId.indexOf('_Item_Index') > -1) {\n e.preventDefault();\n if (this.treemap.selectionId !== targetId && this.legendSelect) {\n treeMapElement = document.getElementById(layoutID);\n item = treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n var index = void 0;\n if (this.treemap.legendSettings.visible) {\n this.shapeSelect = false;\n var length_3 = this.treemap.treeMapLegendModule.legendCollections.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n this.shapeElement = undefined;\n removeShape(this.shapeSelectionCollection, 'selection');\n if (highlightModule) {\n highlightModule.shapeTarget = 'selection';\n highlightModule.shapeHighlightCollection = [];\n }\n index = getLegendIndex(length_3, item, treemap);\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index) : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index);\n if (this.shapeElement !== null) {\n this.shapeSelectId = this.shapeElement.getAttribute('id');\n this.shapeSelectionCollection.push({ legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n setColor(this.shapeElement, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n }\n }\n orders = findHightLightItems(item, [], selection.mode, treemap);\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n item = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])];\n if (orders.indexOf(item['levelOrderName']) > -1) {\n selectionElements.push(element);\n treemap.levelSelection.push(element.id);\n items.push(item);\n }\n }\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', treemap);\n this.treemap.selectionId = targetId;\n var highLightElements = document.getElementsByClassName('treeMapHighLight');\n for (var k = 0; k < selectionElements.length; k++) {\n element = selectionElements[k];\n if (highLightElements.length > 0) {\n for (var j = 0; j < highLightElements.length; j++) {\n if (highLightElements[j].id === element.id) {\n highLightElements[j].classList.remove('treeMapHighLight');\n }\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n else {\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n eventArgs = { cancel: false, name: itemSelected, treemap: treemap, items: items, elements: selectionElements,\n text: labelText, contentItemTemplate: labelText };\n treemap.trigger(itemSelected, eventArgs, function (observedArgs) {\n if (observedArgs.contentItemTemplate !== labelText) {\n setItemTemplateContent(targetId, targetEle, observedArgs.contentItemTemplate);\n }\n });\n }\n }\n else {\n removeShape(this.shapeSelectionCollection, 'selection');\n this.shapeSelectionCollection = [];\n this.shapeElement = undefined;\n this.shapeSelect = true;\n this.shapeSelectId = '';\n this.treemap.legendId = [];\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', treemap);\n this.treemap.selectionId = '';\n }\n }\n else if (targetId.indexOf('_Legend_Shape') > -1 || targetId.indexOf('_Legend_Index') > -1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n if (this.treemap.legendSettings.visible && this.legendSelectId !== targetId && this.shapeSelect) {\n var itemIndex = void 0;\n var groupIndex = void 0;\n var length_4;\n this.legendSelectId = targetId;\n this.legendSelect = false;\n var legendIndex = parseInt(targetId[targetId.length - 1], 10);\n var targetEle_1 = document.getElementById(targetId);\n removeLegend(this.legendSelectionCollection, 'selection');\n if (highlightModule) {\n highlightModule.shapeTarget = 'selection';\n }\n var index = this.treemap.legendSettings.mode === 'Default' ? parseFloat(targetId.split('_Legend_Shape_Index_')[1]) : parseFloat(targetId.split('_Legend_Index_')[1]);\n var dataLength = this.treemap.treeMapLegendModule.legendCollections[index]['legendData'].length;\n for (var k = 0; k < dataLength; k++) {\n for (var l = 0; l < this.treemap.layout.renderItems.length; l++) {\n if (this.treemap.treeMapLegendModule.legendCollections[index]['legendData'][k]['levelOrderName'] === this.treemap.layout.renderItems[l]['levelOrderName']) {\n itemIndex = l;\n groupIndex = this.treemap.layout.renderItems[l]['groupIndex'];\n var nodeEle = document.getElementById(this.treemap.element.id + '_Level_Index_' + groupIndex + '_Item_Index_' + itemIndex + '_RectPath');\n if (k === 0) {\n pushCollection(this.legendSelectionCollection, legendIndex, l, targetEle_1, nodeEle, this.treemap.layout.renderItems, collection);\n length_4 = this.legendSelectionCollection.length;\n this.legendSelectionCollection[length_4 - 1]['ShapeCollection'] = { Elements: [] };\n }\n setColor(targetEle_1, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n setColor(nodeEle, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n length_4 = this.legendSelectionCollection.length;\n this.legendSelectionCollection[length_4 - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n }\n else {\n removeLegend(this.legendSelectionCollection, 'Selection');\n if (highlightModule) {\n highlightModule.shapeTarget = 'highlight';\n }\n this.legendSelect = true;\n this.legendSelectId = '';\n }\n }\n };\n /**\n * @param {string} levelOrder - Specifies the level order of treemap item\n * @param {boolean} enable - Specifies the boolean value\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.selectTreemapItem = function (levelOrder, enable) {\n if (enable) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = void 0;\n for (var s = 0; s < this.treemap.layout.renderItems.length; s++) {\n if (levelOrder === this.treemap.layout.renderItems[s]['levelOrderName']) {\n item = this.treemap.layout.renderItems[s];\n break;\n }\n }\n var selection = this.treemap.selectionSettings;\n var selectionElements = [];\n var element = void 0;\n var index = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var items = [];\n this.treemap.levelSelection = [];\n var layoutID = this.treemap.element.id + '_TreeMap_' + this.treemap.layoutType + '_Layout';\n var treeMapElement = document.getElementById(layoutID);\n var orders = findHightLightItems(item, [], selection.mode, this.treemap);\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n item = this.treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])];\n if (orders.indexOf(item['levelOrderName']) > -1) {\n selectionElements.push(element);\n this.treemap.levelSelection.push(element.id);\n items.push(item);\n }\n }\n if (this.treemap.legendSettings.visible) {\n for (var m = 0; m < items.length; m++) {\n this.shapeSelect = false;\n var length_5 = this.treemap.treeMapLegendModule.legendCollections.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n this.shapeElement = undefined;\n removeShape(this.shapeSelectionCollection, 'selection');\n index = getLegendIndex(length_5, items[m], this.treemap);\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index) : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index);\n if (this.shapeElement !== null) {\n this.shapeSelectId = this.shapeElement.getAttribute('id');\n this.treemap.legendId.push(this.shapeSelectId);\n this.shapeSelectionCollection.push({\n legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n setColor(this.shapeElement, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n }\n }\n }\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', this.treemap);\n var selectionElement = document.getElementById(this.treemap.levelSelection[0]);\n this.treemap.selectionId = selectionElement.childNodes[0]['id'];\n var highLightElements = document.getElementsByClassName('treeMapHighLight');\n for (var k = 0; k < selectionElements.length; k++) {\n element = selectionElements[k];\n if (highLightElements.length > 0) {\n for (var j = 0; j < highLightElements.length; j++) {\n if (highLightElements[j].id === element.id) {\n highLightElements[j].classList.remove('treeMapHighLight');\n }\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n else {\n selection.fill = selection.fill === 'null' ?\n this.treemap.layout.renderItems[parseInt(element.id.split('Item_Index_')[1], 10)]['options']['fill']\n : selection.fill;\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n }\n else {\n removeShape(this.shapeSelectionCollection, 'selection');\n this.shapeElement = undefined;\n this.treemap.levelSelection = [];\n this.shapeSelect = true;\n this.shapeSelectId = '';\n this.treemap.legendId = [];\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', this.treemap);\n this.treemap.selectionId = '';\n }\n };\n /**\n * To bind events for selection\n *\n * @returns {void}\n */\n TreeMapSelection.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchStartEvent, this.mouseDown, this);\n };\n /**\n * To unbind events for selection\n *\n * @returns {void}\n */\n TreeMapSelection.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchStartEvent, this.mouseDown);\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n TreeMapSelection.prototype.getModuleName = function () {\n return 'treeMapSelection';\n };\n /**\n * To destroy the selection.\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.destroy = function (treeMap) {\n this.removeEventListener();\n };\n return TreeMapSelection;\n}());\nexport { TreeMapSelection };\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport { Tooltip } from '@syncfusion/ej2-svg-base';\nimport { Browser, createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getMousePosition, textFormatter, formatValue } from '../utils/helper';\nimport { tooltipRendering } from '../model/constants';\n/**\n * Render Tooltip\n */\nvar TreeMapTooltip = /** @class */ (function () {\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n function TreeMapTooltip(treeMap) {\n this.treemap = treeMap;\n this.tooltipSettings = this.treemap.tooltipSettings;\n this.tooltipId = this.treemap.element.id + '_TreeMapTooltip';\n this.addEventListener();\n }\n TreeMapTooltip.prototype.renderTooltip = function (e) {\n var _this = this;\n var pageX;\n var pageY;\n var target;\n var touchArg;\n var tootipArgs;\n if (e.type.indexOf('touch') !== -1) {\n this.isTouch = true;\n touchArg = e;\n pageX = touchArg.changedTouches[0].pageX;\n pageY = touchArg.changedTouches[0].pageY;\n target = touchArg.target;\n }\n else {\n this.isTouch = e.pointerType === 'touch';\n pageX = e.pageX;\n pageY = e.pageY;\n target = e.target;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value;\n var targetId = target.id;\n var item = {};\n var tooltipEle;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var location;\n var toolTipHeader;\n var toolTipData = {};\n var tooltipContent = [];\n var markerFill;\n if (targetId.indexOf('_Item_Index') > -1) {\n item = this.treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n if (!isNullOrUndefined(item)) {\n toolTipHeader = item['name'];\n value = item['weight'];\n toolTipData = item['data'];\n markerFill = item['options']['fill'];\n if (this.treemap.enableRtl) {\n tooltipContent = [textFormatter(this.tooltipSettings.format, toolTipData, this.treemap) ||\n formatValue(value, this.treemap) + ' : ' + this.treemap.weightValuePath.toString()];\n }\n else {\n tooltipContent = [textFormatter(this.tooltipSettings.format, toolTipData, this.treemap) ||\n this.treemap.weightValuePath.toString() + ' : ' + formatValue(value, this.treemap)];\n }\n if (document.getElementById(this.tooltipId)) {\n tooltipEle = document.getElementById(this.tooltipId);\n }\n else {\n tooltipEle = createElement('div', {\n id: this.treemap.element.id + '_TreeMapTooltip',\n className: 'EJ2-TreeMap-Tooltip',\n styles: 'position: absolute;pointer-events:none;'\n });\n document.getElementById(this.treemap.element.id + '_Secondary_Element').appendChild(tooltipEle);\n }\n location = getMousePosition(pageX, pageY, this.treemap.svgObject);\n location.y = (this.tooltipSettings.template) ? location.y + 10 : location.y;\n this.tooltipSettings.textStyle.fontFamily = this.treemap.themeStyle.fontFamily;\n this.tooltipSettings.textStyle.color = this.treemap.themeStyle.tooltipFontColor\n || this.tooltipSettings.textStyle.color;\n this.tooltipSettings.textStyle.opacity = this.treemap.themeStyle.tooltipTextOpacity\n || this.tooltipSettings.textStyle.opacity;\n tootipArgs = {\n cancel: false, name: tooltipRendering, item: item,\n options: {\n location: location, text: tooltipContent, data: toolTipData,\n textStyle: this.tooltipSettings.textStyle, template: this.tooltipSettings.template\n },\n treemap: this.treemap,\n element: target, eventArgs: e\n };\n this.treemap.trigger(tooltipRendering, tootipArgs, function (args) {\n _this.addTooltip(tootipArgs, markerFill, tooltipEle);\n });\n }\n }\n else {\n this.removeTooltip();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.clearTemplate();\n }\n };\n TreeMapTooltip.prototype.addTooltip = function (tootipArgs, markerFill, tooltipEle, eventArgs) {\n var cancel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var args;\n if (!isNullOrUndefined(tootipArgs)) {\n var c = tootipArgs.cancel, otherArgs = __rest(tootipArgs, [\"cancel\"]);\n cancel = c;\n args = otherArgs.options;\n }\n else {\n cancel = eventArgs.cancel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args = eventArgs;\n }\n if (!cancel) {\n this.svgTooltip = new Tooltip({\n enable: true,\n header: '',\n data: args['data'],\n template: args['template'],\n content: args['text'],\n shapes: [],\n location: args['location'],\n palette: [markerFill],\n areaBounds: this.treemap.areaRect,\n textStyle: args['textStyle'],\n fill: this.treemap.tooltipSettings.fill ? this.treemap.tooltipSettings.fill : this.treemap.themeStyle.tooltipFillColor\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.treemap.isVue || this.treemap.isVue3) {\n this.svgTooltip.controlInstance = this.treemap;\n }\n this.svgTooltip.opacity = this.treemap.themeStyle.tooltipFillOpacity || this.svgTooltip.opacity;\n this.svgTooltip.appendTo(tooltipEle);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.renderReactTemplates();\n }\n else {\n this.removeTooltip();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.clearTemplate();\n }\n };\n TreeMapTooltip.prototype.mouseUpHandler = function (e) {\n this.renderTooltip(e);\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeTooltip.bind(this), 2000);\n };\n TreeMapTooltip.prototype.removeTooltip = function () {\n if (document.getElementsByClassName('EJ2-TreeMap-Tooltip').length > 0) {\n var tooltipElementId = document.getElementsByClassName('EJ2-TreeMap-Tooltip')[0];\n tooltipElementId.parentNode.removeChild(tooltipElementId);\n }\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To bind events for tooltip module\n */\n TreeMapTooltip.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.renderTooltip, this);\n this.treemap.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To unbind events for tooltip module\n */\n TreeMapTooltip.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.renderTooltip);\n this.treemap.off(Browser.touchEndEvent, this.mouseUpHandler);\n };\n /**\n * Get module name.\n *\n * @returns {string} returns string\n */\n TreeMapTooltip.prototype.getModuleName = function () {\n return 'treeMapTooltip';\n };\n /**\n * To destroy the tooltip.\n *\n * @param {TreeMap} treeMap - Specifies the instance of the treemap\n * @returns {void}\n * @private\n */\n TreeMapTooltip.prototype.destroy = function (treeMap) {\n /**\n * Destroy method performed here\n */\n this.removeEventListener();\n };\n return TreeMapTooltip;\n}());\nexport { TreeMapTooltip };\n","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","styles","elementLength","templateHtml","RegExp","toString","findLabelLocation","rect","labelSize","getBoundingClientRect","areaRect","Math","abs","enableDrillDown","renderDirection","measureElement","parentElement","offsetHeight","offsetWidth","measureElementId","parentNode","removeChild","getArea","getShortestEdge","input","container","convertToContainer","min","convertToRect","xOffset","yOffset","getMousePosition","pageX","pageY","elementRect","pageXOffset","ownerDocument","defaultView","pageYOffset","clientTop","documentElement","clientLeft","positionX","positionY","colorMap","colorMapping","equalValue","paths","isNaN","isEqualColor","dataValue","from","to","prototype","call","colorCollections","minOpacity","maxOpacity","deSaturationColor","rangeValue","getColorByValue","rgbToHex","r","g","componentToHex","rbg","Number","getGradientColor","previousOffset","nextOffset","percent","full","previousColor","nextColor","charAt","colorNameToHex","length_1","splitColorValueOffset","splitColor","getPercentageColor","previous","next","prevColor","getPercentage","substr","ColorValue","round","wordWrap","maximumWidth","dataLabel","textCollection","labelCollection","concat","textWrap","resultText","currentLength","totalWidth","totalLength","sliceString","slice","hide","maxHeight","orderByArea","maintainSelection","className","elementId","levelSelection","index","getAttribute","childElementCount","setAttribute","applyOptions","childNodes","border","selectionSettings","legendMaintain","legendGroup","legendId","removeClassNames","elements","parseFloat","classList","remove","textFormatter","format","_i","keys_1","key","join","formatValue","intl","getNumberFormat","useGrouping","useGroupingSeparator","convertToHexCode","hex","convertHexToColor","result","exec","window","getComputedStyle","isRGBValue","drawSymbol","shape","url","svgRenderer","temp","renderLegendShape","htmlElement","functionName","renderOption","renderPath","shapeWidth","shapeHeight","shapeX","shapeY","merge","rx","ry","cx","cy","d","xValue","yValue","cos","PI","sin","href","isParentItem","item","removeShape","collection","setColor","removeLegend","dataCount","k","borderColor","borderWidth","removeSelectionWithHighlight","getElementsByClassName","getLegendIndex","dataLength","treeMapLegendModule","legendCollections","pushCollection","number","legendElement","shapeElement","legendCollection","legendEle","oldFill","oldOpacity","oldBorderColor","oldBorderWidth","shapeOldFill","shapeOldOpacity","shapeOldBorderColor","shapeOldBorderWidth","triggerDownload","fileName","isDownload","attrs","download","toLocaleLowerCase","dispatchEvent","MouseEvent","view","bubbles","cancelable","removeElement","getThemeStyle","theme","toLowerCase","backgroundColor","titleFontColor","subTitleFontColor","tooltipFillColor","tooltipFontColor","legendTitleColor","legendTextColor","subtitleFontSize","legendFontSize","tooltipFillOpacity","tooltipTextOpacity","labelFontFamily","defaultFont","__extends","extendStatics","setPrototypeOf","__proto__","p","hasOwnProperty","__","this","constructor","create","__decorate","decorators","target","desc","c","arguments","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","Border","_super","apply","Property","ChildProperty","Margin","Font","CommonTitleSettings","SubTitleSettings","Complex","TitleSettings","ColorMapping","LegendSettings","InitialDrillSettings","LeafItemSettings","Collection","TooltipSettings","SelectionSettings","HighlightSettings","LevelSettings","Rect","RectOption","dashArray","stroke","PathOption","TextOption","TreeMapAjax","async","contentType","sendData","dataOptions","LayoutPanel","processLayoutPanel","totalRect","LevelsData","levelsData","initialDrillDown","groupIndex","groupName","drilledItems","getDrilldownData","extend","legendSettings","currentLevel","calculateLayoutItems","renderLayoutItems","count","enableBreadcrumb","drillData","newData","child","parentData","layoutType","computeSliceAndDiceDimensional","computeSquarifyDimensional","coords","gap","headerHeight","leafItem","groups","sliceAndDiceProcess","groupGap","showHeader","childValue","parentArea","alottedValue","totalWeight","forEach","isHorizontal","sort","isHierarchicalData","padding","calculateChildrenLayout","groupPadding","computeTotalArea","performRowsLayout","currentRow","stack","newCoordinates","getCoordinates","newStack","nextDatum","restData","aspectRatio","newRow","currentRowLength","valueSum","newContainer","cutArea","findMaxAspectRatio","row","rowLength","minArea","Infinity","maxArea","sumArea","area","max","pow","areaWidth","areaHeight","isParent","parentRect","subXOffset","subYOffset","coordinates","y1","x1","dataLength_1","dataSum_1","i_1","multiplier","datum","onDemandProcess","childItems","parentItem","parentItemGroupname","splice","renderData","txtVisible","getItemColor","eventArgs","_this","pathOptions","templatePosition","renderText","groupId","templateEle","textStyle","elementID","interSectAction","rectPath","secondaryEle","layoutGroup","createGroup","itemGroup","templateGroup","isLeafItem","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","Theme","mapsTitleFont","Print","control","print","printWindow","open","outerHeight","outerWidth","moveTo","resizeTo","screen","availWidth","availHeight","argsData","htmlContent","getHTMLContent","div","cloneNode","Element","getModuleName","destroy","ImageExport","export","allowDownload","Promise","resolve","reject","availableSize","Browser","userAgent","svgData","outerHTML","URL","createObjectURL","Blob","XMLSerializer","serializeToString","image_1","Image","context_1","getContext","onload","drawImage","revokeObjectURL","toDataURL","src","PdfExport","orientation","PdfPageOrientation","Landscape","exportElement","backgroundElement","image","context","PdfDocument","imageString","pageSettings","pages","add","graphics","PdfBitmap","save","TreeMap","isResize","preRender","initPrivateVariable","unWireEVents","createSvg","wireEVents","setCulture","render","renderElements","hierarchyData","createSecondaryElement","addTabIndex","renderBorder","renderTitle","titleSettings","processDataManager","dataModule","queryModule","ajaxModule","localAjax","dataSource","DataManager","query","Query","executeQuery","then","renderTreeMapElements","Ajax","onSuccess","args","JSON","parse","send","processingData","visible","renderLegend","elementChange","isResized","renderComplete","firstChild","hasChildNodes","clearTemplate","containerWidth","containerHeight","secondaryElement","insertBefore","borderElement","background","borderRect","drawRectangle","title","bounds","groupEle","margin","right","trimmedTitle","elementSize","location_1","titleBounds","description","subtitleSettings","bottom","map","checkIsHierarchicalData","data_1","currentData","dataIndex","levelOrderName","weight","processHierarchicalData","processFlatJsonData","reOrderLevelData","findTotalWeight","childData","levelIndex","childItemLevel","childLevel","mainData_1","l","allowPrint","printModule","allowPdfExport","pdfExportModule","allowImageExport","imageExportModule","orderNames","level","childName","name_1","childGroupPath_1","start","currentName","currentPath","prevPath","previousData","IsChildHierarchy","current","isChild","groupObj","EventHandler","clickOnTreeMap","doubleClickOnTreeMap","rightClickOnTreeMap","touchStartEvent","mouseDownOnTreeMap","touchMoveEvent","mouseMoveOnTreeMap","touchEndEvent","mouseEndOnTreeMap","mouseLeaveOnTreeMap","removeEventListener","resizeOnTreeMap","addEventListener","bind","Internationalization","previousSize","currentSize","clearTimeout","contains","setTimeout","refreshing","itemIndex","targetEle","labelText","clickArgs","mouseEvent","preventDefault","doubleTapTimer1","end","Date","getMilliseconds","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","legendTitle","titleTextStyle","titleStyle","legendMode","textX","textY","shapeLocation","orientation_1","legendWidth","legendHeight","legendTitleSize","startX_1","startY_1","shapePadding","itemTextStyle","legendItem","Page","legendTextSize","maxSize","prvePositionX","nextPositionY","getPageChanged","prevPositionY","nextPositionX","DisplayText","Shape","Text","Fill","Data","legendObj","legendRect","legendLength_1","rectWidth_1","rectHeight_1","placement","itemStartX","itemStartY","labelAction","labelDisplayMode","maxTextHeight","maxTextWidth","legendText","itemTextSize","textWidth","textHeight","calculateLegendItems","legendFillColor","legendName","showLegendPath","valuePath","removeDuplicateLegend","removeDuplicates","legendFill","legendData","itemArea","isAddData","gradientElement","x2","y2","actualValue","isDuplicate","isRange","outfill","labelLegend","otherIndex","colorMapProcess","isDesaturation","legendIndex","outOfRangeLegend","colorMapping_1","showLegend","isAddNewLegendData","colors","q","stop1Color","colorStop","stop2Color","gradient","drawGradient","legendGradientColor","legendLinearGradient","newDataProcess","itemValue","process","textFont","renderLegendBorder","renderLegendTitle","drawLegendItem","itemId","textId","rectOptions","shapeBorder","translate","defaultLegendRtlLocation","spacing","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","rect_1","drawInteractivePointer","locX","invertedPointer","areaX","areaY","totalHeight","mouseUpHandler","legendElementId","changeNextPage","isDestroyed","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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"}
|