@syncfusion/ej2-treemap 22.2.5 → 23.2.4
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 +0 -8
- package/dist/ej2-treemap.min.js +3 -3
- package/dist/ej2-treemap.umd.min.js +3 -3
- package/dist/ej2-treemap.umd.min.js.map +1 -1
- package/dist/es6/ej2-treemap.es2015.js +39 -8
- package/dist/es6/ej2-treemap.es2015.js.map +1 -1
- package/dist/es6/ej2-treemap.es5.js +39 -8
- package/dist/es6/ej2-treemap.es5.js.map +1 -1
- package/dist/global/ej2-treemap.min.js +3 -3
- package/dist/global/ej2-treemap.min.js.map +1 -1
- package/dist/global/index.d.ts +2 -2
- package/package.json +12 -12
- package/src/treemap/layout/legend.js +2 -0
- package/src/treemap/layout/render-panel.js +11 -3
- package/src/treemap/treemap-model.d.ts +12 -12
- package/src/treemap/treemap.js +24 -5
- package/src/treemap/user-interaction/tooltip.js +1 -0
- package/src/treemap/utils/helper.js +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ej2-treemap.umd.min.js","sources":["../src/treemap/utils/helper.js","../src/treemap/model/theme.js","../src/treemap/model/constants.js","../src/treemap/model/base.js","../src/treemap/layout/render-panel.js","../src/treemap/model/print.js","../src/treemap/model/image-export.js","../src/treemap/model/pdf-export.js","../src/treemap/treemap.js","../src/treemap/layout/legend.js","../src/treemap/user-interaction/highlight-selection.js","../src/treemap/user-interaction/tooltip.js"],"sourcesContent":["import { createElement, compile, merge, isNullOrUndefined, remove, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\n/**\n * Specifies the size parameters.\n */\nvar Size = /** @class */ (function () {\n function Size(width, height) {\n this.width = width;\n this.height = height;\n }\n return Size;\n}());\nexport { Size };\n/**\n *\n * @param {string} value - specifies the text.\n * @param {number} containerSize - specifies the container size value.\n * @returns {number} - Returns the number value which is converted from string.\n */\nexport function stringToNumber(value, containerSize) {\n if (value !== null && value !== undefined) {\n return value.indexOf('%') !== -1 ? (containerSize / 100) * parseInt(value, 10) : parseInt(value, 10);\n }\n return null;\n}\n/**\n * Internal use of type rect\n *\n * @private\n */\nvar Rect = /** @class */ (function () {\n function Rect(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n return Rect;\n}());\nexport { Rect };\n/**\n * Internal use of rectangle options\n *\n * @private\n */\nvar RectOption = /** @class */ (function () {\n function RectOption(id, fill, border, opacity, rect, dashArray) {\n this.y = rect.y;\n this.x = rect.x;\n this.height = rect.height;\n this.width = rect.width;\n this.id = id;\n this.fill = fill;\n this.opacity = opacity;\n this.stroke = border.color;\n this['stroke-width'] = border.width;\n this['stroke-dasharray'] = dashArray;\n }\n return RectOption;\n}());\nexport { RectOption };\nvar PathOption = /** @class */ (function () {\n function PathOption(id, fill, width, color, opacity, dashArray, d) {\n this.id = id;\n this.opacity = opacity;\n this.fill = fill;\n this.stroke = color;\n this['stroke-width'] = width;\n this['stroke-dasharray'] = dashArray;\n this.d = d;\n }\n return PathOption;\n}());\nexport { PathOption };\n/**\n * Function to measure the height and width of the text.\n *\n * @param {string} text - Specifies the text.\n * @param {FontModel} font - Specifies the font.\n * @returns {Size} - Returns the size.\n * @private\n */\nexport function measureText(text, font) {\n var measureObject = document.getElementById('treeMapMeasureText');\n if (measureObject === null) {\n measureObject = createElement('text', { id: 'treeMapMeasureText' });\n document.body.appendChild(measureObject);\n }\n measureObject.innerHTML = SanitizeHtmlHelper.sanitize(text);\n measureObject.style.position = 'absolute';\n measureObject.style.fontSize = font.size;\n measureObject.style.fontWeight = font.fontWeight;\n measureObject.style.fontStyle = font.fontStyle;\n measureObject.style.fontFamily = font.fontFamily;\n measureObject.style.visibility = 'hidden';\n measureObject.style.top = '-100';\n measureObject.style.left = '0';\n measureObject.style.whiteSpace = 'nowrap';\n // For bootstrap line height issue\n measureObject.style.lineHeight = 'normal';\n return new Size(measureObject.clientWidth, measureObject.clientHeight);\n}\n/**\n * Internal use of text options\n *\n * @private\n */\nvar TextOption = /** @class */ (function () {\n function TextOption(id, x, y, anchor, text, transform, baseLine, connectorText) {\n if (transform === void 0) { transform = ''; }\n this.transform = '';\n this.baseLine = 'auto';\n this.id = id;\n this.text = text;\n this.transform = transform;\n this.anchor = anchor;\n this.x = x;\n this.y = y;\n this.baseLine = baseLine;\n this.connectorText = connectorText;\n }\n return TextOption;\n}());\nexport { TextOption };\n/**\n * Trim the title text\n *\n * @param {number} maxWidth - Specifies the maximum width\n * @param {string} text - Specifies the text\n * @param {FontModel} font - Specifies the font\n * @returns {string} - Returns the string\n * @private\n */\nexport function textTrim(maxWidth, text, font) {\n var label = text;\n var size = measureText(text, font).width;\n if (size > maxWidth) {\n var textLength = text.length;\n for (var i = textLength - 1; i >= 0; --i) {\n label = text.substring(0, i) + '...';\n size = measureText(label, font).width;\n if (size <= maxWidth || label.length < 4) {\n if (label.length < 4) {\n label = ' ';\n }\n return label;\n }\n }\n }\n return label;\n}\n/**\n * Specifies the location parameters.\n */\nvar Location = /** @class */ (function () {\n function Location(x, y) {\n this.x = x;\n this.y = y;\n }\n return Location;\n}());\nexport { Location };\n/**\n * Method to calculate x position of title\n *\n * @param {Rect} location - Specifies the location of text.\n * @param {Alignment} alignment - Specifies the alignment of the text.\n * @param {Size} textSize - Specifies the size of the text.\n * @param {type} type - Specifies whether the provided text is title or subtitle.\n * @returns {Location} - Returns the location of text.\n * @private\n */\nexport function findPosition(location, alignment, textSize, type) {\n var x;\n switch (alignment) {\n case 'Near':\n x = location.x;\n break;\n case 'Center':\n x = (type === 'title') ? (location.width / 2 - textSize.width / 2) :\n ((location.x + (location.width / 2)) - textSize.width / 2);\n break;\n case 'Far':\n x = (type === 'title') ? (location.width - location.y - textSize.width) :\n ((location.x + location.width) - textSize.width);\n break;\n }\n var y = (type === 'title') ? location.y + (textSize.height / 2) : ((location.y + location.height / 2) + textSize.height / 2);\n return new Location(x, y);\n}\n/**\n *\n * @param {SvgRenderer} renderer - Specifies the rendering element of the SVG.\n * @param {any} renderOptions - Specifies the settings of the text.\n * @param {string} text - Specifies the text.\n * @returns {HTMLElement} - Returns the HTML element for the text.\n */\nexport function createTextStyle(renderer, renderOptions, text) {\n var htmlObject = renderer.createText(renderOptions, text);\n htmlObject.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n htmlObject.style['user-select'] = 'none';\n htmlObject.style['-moz-user-select'] = 'none';\n htmlObject.style['-webkit-touch-callout'] = 'none';\n htmlObject.style['-webkit-user-select'] = 'none';\n htmlObject.style['-khtml-user-select'] = 'none';\n htmlObject.style['-ms-user-select'] = 'none';\n htmlObject.style['-o-user-select'] = 'none';\n return htmlObject;\n}\n/**\n * Internal rendering of text\n *\n * @param {TextOption} options - Specifies the text option\n * @param {FontModel} font - Specifies the font model\n * @param {string} color - Specifies the color\n * @param {HTMLElement | Element} parent - Specifies the parent element of the text\n * @param {boolean} isMinus - Specifies the boolean value\n * @returns {Element} - Returns the element\n * @private\n */\nexport function renderTextElement(options, font, color, parent, isMinus) {\n if (isMinus === void 0) { isMinus = false; }\n var renderOptions = {\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily,\n 'font-weight': font.fontWeight,\n 'text-anchor': options.anchor,\n 'transform': options.transform,\n 'opacity': font.opacity,\n 'dominant-baseline': options.baseLine,\n 'id': options.id,\n 'x': options.x,\n 'y': options.y,\n 'fill': color\n };\n var text = typeof options.text === 'string' ? options.text : isMinus ? options.text[options.text.length - 1] : options.text[0];\n var tspanElement;\n var renderer = new SvgRenderer('');\n var height;\n var htmlObject;\n var breadCrumbText = !isNullOrUndefined(text) && !isNullOrUndefined(options.connectorText) ?\n (text.search(options.connectorText[1]) >= 0) : false;\n if (breadCrumbText) {\n var drilledLabel = text;\n var spacing = 5;\n var drillLevelText = drilledLabel.split('#');\n for (var z = 0; z < drillLevelText.length; z++) {\n var drillText = (drillLevelText[z].search(options.connectorText) !== -1 &&\n !isNullOrUndefined(options.connectorText)) ?\n options.connectorText : drillLevelText[z];\n renderOptions['id'] = options.id + '_' + z;\n htmlObject = createTextStyle(renderer, renderOptions, drillText);\n if (z % 2 === 0 && z !== 0) {\n var re = /\\s+/g;\n drillText = drillText.replace(re, ' ');\n }\n var size = measureText(drillText, font);\n renderOptions['x'] = z !== 0 ? renderOptions['x'] + size.width : renderOptions['x'] + size.width + spacing;\n parent.appendChild(htmlObject);\n }\n }\n else {\n htmlObject = createTextStyle(renderer, renderOptions, text);\n parent.appendChild(htmlObject);\n }\n if (typeof options.text !== 'string' && options.text.length > 1) {\n for (var i = 1, len = options.text.length; i < len; i++) {\n height = (measureText(options.text[i], font).height);\n tspanElement = renderer.createTSpan({\n 'x': options.x, 'id': options.id,\n 'y': (options.y) + (i * height)\n }, options.text[i]);\n htmlObject.appendChild(tspanElement);\n }\n parent.appendChild(htmlObject);\n }\n return htmlObject;\n}\n/**\n *\n * @param {string} targetId - Specifies the id of the element to which template is to be appended.\n * @param {Element} targetElement - Specifies the element to which template is to be appended.\n * @param {string} contentItemTemplate - Specifies the content to be appended as template.\n * @returns {void}\n */\nexport function setItemTemplateContent(targetId, targetElement, contentItemTemplate) {\n var itemSelect = targetId.split('_RectPath')[0];\n var itemTemplate;\n if (targetId.indexOf('_LabelTemplate') > -1) {\n itemTemplate = targetElement;\n }\n else {\n itemTemplate = document.querySelector('#' + itemSelect + '_LabelTemplate');\n }\n if (!isNullOrUndefined(itemTemplate)) {\n itemTemplate.innerHTML = contentItemTemplate;\n }\n}\n/**\n *\n * @param {string} id - Specifies the id of the element.\n * @returns {Element} - Returns the element.\n */\nexport function getElement(id) {\n return document.getElementById(id);\n}\n/**\n *\n * @param {any} a - Specifies the first order of TreeMap leaf elements.\n * @param {any} b - Specifies the second order of TreeMap leaf elements.\n * @returns {number} - Returns the order of the TreeMap leaf element.\n */\nexport function itemsToOrder(a, b) {\n return a['weight'] === b['weight'] ? 0 : a['weight'] < b['weight'] ? 1 : -1;\n}\n/**\n *\n * @param {string[]} source - Specifies the data from the data source.\n * @param {string} pathName - Specifies the path name in the data source.\n * @param {any} processData - Specifies the data source object.\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @returns {boolean} - Specifies whether data is available in the data source or not.\n */\nexport function isContainsData(source, pathName, processData, treemap) {\n var isExist = false;\n var name = '';\n var path;\n var leaf = treemap.leafItemSettings;\n for (var i = 0; i < source.length; i++) {\n path = treemap.levels[i] ? treemap.levels[i].groupPath : leaf.labelPath ? leaf.labelPath :\n treemap.weightValuePath;\n var data = processData[path] || 'undefined';\n if (source[i] === data) {\n name += data + (i === source.length - 1 ? '' : '#');\n if (name === pathName) {\n isExist = true;\n break;\n }\n }\n }\n return isExist;\n}\n/**\n *\n * @param {any} data - Specifies the data to which the children elements to be found.\n * @returns {any} - Returns the children elements of the TreeMap leaf element.\n */\nexport function findChildren(data) {\n var children;\n if (data) {\n var keys = Object.keys(data);\n children = {};\n for (var i = 0; i < keys.length; i++) {\n if (data[keys[i]] instanceof Array) {\n children['values'] = data[keys[i]];\n children['key'] = keys[i];\n break;\n }\n }\n }\n return children;\n}\n/**\n *\n * @param {any} data - Specifies the data to which highlight must be done.\n * @param {items} items - Specifies the data source items.\n * @param {string} mode - Specifies the mode of highlight.\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @returns {string[]} - Returns the highlighted items.\n */\nexport function findHightLightItems(data, items, mode, treeMap) {\n if (mode === 'Child') {\n items.push(data['levelOrderName']);\n var children = findChildren(data)['values'];\n if (children && children.length > 0) {\n for (var i = 0; i < children.length; i++) {\n if (items.indexOf(children[i]['levelOrderName']) === -1) {\n items.push(children[i]['levelOrderName']);\n }\n }\n for (var j = 0; j < children.length; j++) {\n findHightLightItems(children[j], items, mode, treeMap);\n }\n }\n }\n else if (mode === 'Parent') {\n if (typeof data['levelOrderName'] === 'string' && items.indexOf(data['levelOrderName']) === -1) {\n items.push(data['levelOrderName']);\n findHightLightItems(data['parent'], items, mode, treeMap);\n }\n }\n else if (mode === 'All') {\n var parentName = data['levelOrderName'].split('#')[0];\n var currentItem = void 0;\n for (var i = 0; i < treeMap.layout.renderItems.length; i++) {\n currentItem = treeMap.layout.renderItems[i];\n if ((currentItem['levelOrderName']).indexOf(parentName) > -1 && items.indexOf(currentItem['levelOrderName']) === -1) {\n items.push(currentItem['levelOrderName']);\n }\n }\n }\n else {\n items.push(data['levelOrderName']);\n }\n return items;\n}\n/**\n * Function to compile the template function for maps.\n *\n * @param {string} template - Specifies the template\n * @returns {Function} - Returns the template function\n * @private\n */\nexport function getTemplateFunction(template) {\n var templateFn = null;\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n templateFn = compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n templateFn = compile(template);\n }\n }\n catch (e) {\n templateFn = compile(template);\n }\n return templateFn;\n}\n/**\n * @private\n * @param {HTMLCollection} element - Specifies the element\n * @param {string} labelId - Specifies the label id\n * @param {Object} data - Specifies the data\n * @returns {HTMLElement} - Returns the element\n */\nexport function convertElement(element, labelId, data) {\n var childElement = createElement('div', {\n id: labelId\n });\n childElement.style.cssText = 'position: absolute;pointer-events: auto;';\n var elementLength = element.length;\n while (elementLength > 0) {\n childElement.appendChild(element[0]);\n elementLength--;\n }\n var templateHtml = childElement.innerHTML;\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n var regExp = RegExp;\n templateHtml = templateHtml.replace(new regExp('{{:' + keys[i] + '}}', 'g'), data[keys[i].toString()]);\n }\n childElement.innerHTML = templateHtml;\n return childElement;\n}\n/**\n *\n * @param {Rect} rect - Specifies the area.\n * @param {LabelPosition} position - Specifies the position\n * @param {Size} labelSize - Specifies the label size.\n * @param {string} type - Specifies the type.\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @returns {Location} - Returns the text location.\n */\nexport function findLabelLocation(rect, position, labelSize, type, treemap) {\n var location = new Location(0, 0);\n var padding = 5;\n var paddings = 2;\n var x = (type === 'Template') ? treemap.areaRect.x : 0;\n var y = (type === 'Template') ? treemap.areaRect.y : 0;\n location.x = (Math.abs(x - ((position.indexOf('Left') > -1) ? rect.x + padding : !(position.indexOf('Right') > -1) ?\n rect.x + ((rect.width / 2) - (labelSize.width / 2)) : (rect.x + rect.width) - labelSize.width))) - paddings;\n if (treemap.enableDrillDown && (treemap.renderDirection === 'BottomLeftTopRight'\n || treemap.renderDirection === 'BottomRightTopLeft')) {\n location.y = Math.abs((rect.y + rect.height) - labelSize.height + padding);\n }\n else {\n location.y = Math.abs(y - ((position.indexOf('Top') > -1) ? (type === 'Template' ? rect.y : rect.y + labelSize.height) :\n !(position.indexOf('Bottom') > -1) ? type === 'Template' ? (rect.y + ((rect.height / 2) - (labelSize.height / 2))) :\n (rect.y + (rect.height / 2) + labelSize.height / 4) : (rect.y + rect.height) - labelSize.height));\n }\n return location;\n}\n/**\n *\n * @param {HTMLElement} element - Specifies the element to be measured.\n * @param {HTMLElement} parentElement - Specifies the parent element of the element to be measured.\n * @returns {Size} - Returns the element size.\n */\nexport function measureElement(element, parentElement) {\n var size = new Size(0, 0);\n parentElement.appendChild(element);\n size.height = element.offsetHeight;\n size.width = element.offsetWidth;\n var measureElementId = document.getElementById(element.id);\n measureElementId.parentNode.removeChild(measureElementId);\n return size;\n}\n/**\n *\n * @param {Rect} rect - Specifies the area.\n * @returns {number} - Returns the area width.\n */\nexport function getArea(rect) {\n return (rect.width - rect.x) * (rect.height - rect.y);\n}\n/**\n *\n * @param {Rect} input - Specifies input for the calculation.\n * @returns {number} - Returns the shortest edge.\n */\nexport function getShortestEdge(input) {\n var container = convertToContainer(input);\n var width = container.width;\n var height = container.height;\n var result = Math.min(width, height);\n return result;\n}\n/**\n *\n * @param {Rect} rect - Specifies the rectangle bounds of the container.\n * @returns {Rect} - Returns the rectangle bounds.\n */\nexport function convertToContainer(rect) {\n var x = rect.x;\n var y = rect.y;\n var width = rect.width;\n var height = rect.height;\n return {\n x: x,\n y: y,\n width: width - x,\n height: height - y\n };\n}\n/**\n *\n * @param {Rect} container - Specifies the rectangle bounds of the container.\n * @returns {Rect} - Returns the rectangle bounds.\n */\nexport function convertToRect(container) {\n var xOffset = container.x;\n var yOffset = container.y;\n var width = container.width;\n var height = container.height;\n return {\n x: xOffset,\n y: yOffset,\n width: xOffset + width,\n height: yOffset + height\n };\n}\n/**\n *\n * @param {number} pageX - Specifies the horizontal position of the mouse location.\n * @param {number} pageY - Specifies the vertical position of the mouse location.\n * @param {Element} element - Specifies the element to which the click is done.\n * @returns {Location} - Returns the clicked location.\n */\nexport function getMousePosition(pageX, pageY, element) {\n var elementRect = element.getBoundingClientRect();\n var pageXOffset = element.ownerDocument.defaultView.pageXOffset;\n var pageYOffset = element.ownerDocument.defaultView.pageYOffset;\n var clientTop = element.ownerDocument.documentElement.clientTop;\n var clientLeft = element.ownerDocument.documentElement.clientLeft;\n var positionX = elementRect.left + pageXOffset - clientLeft;\n var positionY = elementRect.top + pageYOffset - clientTop;\n return new Location((pageX - positionX), (pageY - positionY));\n}\n/**\n *\n * @param {ColorMappingModel[]} colorMapping - Specifies the color mapping instance.\n * @param {string} equalValue - Specifies the equal value.\n * @param {number | string} value - Specifies the range value.\n * @returns {any} - Returns the color mapping object.\n * @private\n */\nexport function colorMap(colorMapping, equalValue, value) {\n var fill;\n var paths = [];\n var opacity;\n if (isNullOrUndefined(equalValue) && (isNullOrUndefined(value) && isNaN(value))) {\n return null;\n }\n for (var i = 0; i < colorMapping.length; i++) {\n var isEqualColor = false;\n var dataValue = value;\n if (!isNullOrUndefined(colorMapping[i].from) && !isNullOrUndefined(colorMapping[i].to)\n && !isNullOrUndefined(colorMapping[i].value)) {\n if ((value >= colorMapping[i].from && colorMapping[i].to >= value) &&\n (colorMapping[i].value === equalValue)) {\n isEqualColor = true;\n if (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') {\n fill = !isEqualColor ? colorCollections(colorMapping[i], dataValue) : colorMapping[i].color[0];\n }\n else {\n fill = colorMapping[i].color;\n }\n }\n }\n else if ((!isNullOrUndefined(colorMapping[i].from) && !isNullOrUndefined(colorMapping[i].to))\n || !isNullOrUndefined((colorMapping[i].value))) {\n if ((value >= colorMapping[i].from && colorMapping[i].to >= value)\n || (colorMapping[i].value === equalValue)) {\n if (colorMapping[i].value === equalValue) {\n isEqualColor = true;\n }\n if (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') {\n fill = !isEqualColor ? colorCollections(colorMapping[i], dataValue) : colorMapping[i].color[0];\n }\n else {\n fill = colorMapping[i].color;\n }\n }\n }\n if (((value >= colorMapping[i].from && value <= colorMapping[i].to)\n || (colorMapping[i].value === equalValue))\n && !isNullOrUndefined(colorMapping[i].minOpacity) && !isNullOrUndefined(colorMapping[i].maxOpacity)\n && fill) {\n opacity = deSaturationColor(colorMapping[i], value);\n }\n if ((fill === '' || isNullOrUndefined(fill))\n && isNullOrUndefined(colorMapping[i].from) && isNullOrUndefined(colorMapping[i].to)\n && isNullOrUndefined(colorMapping[i].minOpacity) && isNullOrUndefined(colorMapping[i].maxOpacity)\n && isNullOrUndefined(colorMapping[i].value)) {\n fill = (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') ?\n colorMapping[i].color[0] : colorMapping[i].color;\n }\n opacity = !isNullOrUndefined(opacity) ? opacity : '1';\n paths.push(fill);\n }\n for (var j = paths.length - 1; j >= 0; j--) {\n fill = paths[j];\n j = (fill) ? -1 : j;\n }\n return { fill: fill, opacity: opacity };\n}\n/**\n *\n * @param {ColorMappingModel} colorMapping - Specifies the color mapping object.\n * @param {number} rangeValue - Specifies the range value.\n * @returns {string} - Returns the opacity for the color mapping.\n * @private\n */\nexport function deSaturationColor(colorMapping, rangeValue) {\n var opacity = 1;\n if ((rangeValue >= colorMapping.from && rangeValue <= colorMapping.to)) {\n var ratio = (rangeValue - colorMapping.from) / (colorMapping.to - colorMapping.from);\n opacity = (ratio * (colorMapping.maxOpacity - colorMapping.minOpacity)) + colorMapping.minOpacity;\n }\n return opacity.toString();\n}\n/**\n *\n * @param {ColorMappingModel} colorMap - Specifies the color mapping object.\n * @param {number} value - Specifies the range value.\n * @returns {string} - Returns the fill color.\n */\nexport function colorCollections(colorMap, value) {\n var gradientFill = getColorByValue(colorMap, value);\n return gradientFill;\n}\n/**\n *\n * @param {number} r - Specifies the red color value.\n * @param {number} g - Specifies the green color value.\n * @param {number} b - Specifies the blue color value.\n * @returns {string} - Returns the fill color.\n */\nexport function rgbToHex(r, g, b) {\n return '#' + componentToHex(r) + componentToHex(g) + componentToHex(b);\n}\n/**\n *\n * @param {ColorMappingModel} colorMap - Specifies the color mapping.\n * @param {number} value - Specifies the range value.\n * @returns {string} - Returns the fill color.\n */\nexport function getColorByValue(colorMap, value) {\n var color = '';\n var rbg;\n if (Number(value) === colorMap.from) {\n color = colorMap.color[0];\n }\n else if (Number(value) === colorMap.to) {\n color = colorMap.color[colorMap.color.length - 1];\n }\n else {\n rbg = getGradientColor(Number(value), colorMap);\n color = rgbToHex(rbg.r, rbg.g, rbg.b);\n }\n return color;\n}\n/**\n *\n * @param {number} value - Specifies the range value.\n * @param {ColorMappingModel} colorMap - Specifies the color mapping.\n * @returns {ColorValue} - Returns the color value object.\n */\nexport function getGradientColor(value, colorMap) {\n var previousOffset = colorMap.from;\n var nextOffset = colorMap.to;\n var percent = 0;\n var full = nextOffset - previousOffset;\n var midColor;\n percent = (value - previousOffset) / full;\n var previousColor;\n var nextColor;\n if (colorMap.color.length <= 2) {\n previousColor = colorMap.color[0].charAt(0) === '#' ? colorMap.color[0] : colorNameToHex(colorMap.color[0]);\n nextColor = colorMap.color[colorMap.color.length - 1].charAt(0) === '#' ?\n colorMap.color[colorMap.color.length - 1] : colorNameToHex(colorMap.color[colorMap.color.length - 1]);\n }\n else {\n previousColor = colorMap.color[0].charAt(0) === '#' ? colorMap.color[0] : colorNameToHex(colorMap.color[0]);\n nextColor = colorMap.color[colorMap.color.length - 1].charAt(0) === '#' ?\n colorMap.color[colorMap.color.length - 1] : colorNameToHex(colorMap.color[colorMap.color.length - 1]);\n var a = full / (colorMap.color.length - 1);\n var b = void 0;\n var c = void 0;\n var length_1 = colorMap.color.length - 1;\n var splitColorValueOffset = [];\n var splitColor = {};\n for (var j = 1; j < length_1; j++) {\n c = j * a;\n b = previousOffset + c;\n splitColor = { b: b, color: colorMap.color[j] };\n splitColorValueOffset.push(splitColor);\n }\n for (var i = 0; i < splitColorValueOffset.length; i++) {\n if (previousOffset <= value && value <= splitColorValueOffset[i]['b'] && i === 0) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n nextColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ? 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a)\n : (value - splitColorValueOffset[i]['b']) / a;\n }\n else if (splitColorValueOffset[i]['b'] <= value && value <= nextOffset && i === (splitColorValueOffset.length - 1)) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ?\n 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a) : (value - splitColorValueOffset[i]['b']) / a;\n }\n if (i !== splitColorValueOffset.length - 1 && i < splitColorValueOffset.length) {\n if (splitColorValueOffset[i]['b'] <= value && value <= splitColorValueOffset[i + 1]['b']) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n nextColor = splitColorValueOffset[i + 1]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i + 1]['color'] : colorNameToHex(splitColorValueOffset[i + 1]['color']);\n percent = Math.abs((value - splitColorValueOffset[i + 1]['b'])) / a;\n }\n }\n }\n }\n return getPercentageColor(percent, previousColor, nextColor);\n}\n/**\n *\n * @param {number} percent - Specifies the percentage of the color.\n * @param {number} previous - Specifies the previous color.\n * @param {number} next - Specifies the next color.\n * @returns {ColorValue} - Returns the color value object.\n */\nexport function getPercentageColor(percent, previous, next) {\n var nextColor = next.split('#')[1];\n var prevColor = previous.split('#')[1];\n var r = getPercentage(percent, parseInt(prevColor.substr(0, 2), 16), parseInt(nextColor.substr(0, 2), 16));\n var g = getPercentage(percent, parseInt(prevColor.substr(2, 2), 16), parseInt(nextColor.substr(2, 2), 16));\n var b = getPercentage(percent, parseInt(prevColor.substr(4, 2), 16), parseInt(nextColor.substr(4, 2), 16));\n return new ColorValue(r, g, b);\n}\n/**\n *\n * @param {number} percent - Specifies the percentage of the color.\n * @param {number} previous - Specifies the previous color.\n * @param {number} next - Specifies the next color.\n * @returns {number} - Returns the color value.\n */\nexport function getPercentage(percent, previous, next) {\n var full = next - previous;\n return Math.round((previous + (full * percent)));\n}\n/**\n *\n * @param {number} maximumWidth - Specifies the length of the text.\n * @param {string} dataLabel - Specifies the label.\n * @param {FontModel} font - Specifies the font of the label.\n * @returns {string[]} - Returns the labels.\n */\nexport function wordWrap(maximumWidth, dataLabel, font) {\n var textCollection = dataLabel.split(' ');\n var label = '';\n var labelCollection = [];\n var text;\n for (var i = 0, len = textCollection.length; i < len; i++) {\n text = textCollection[i];\n if (measureText(label.concat(text), font).width < maximumWidth) {\n label = label.concat((label === '' ? '' : ' ') + text);\n }\n else {\n if (label !== '') {\n labelCollection.push(textTrim(maximumWidth, label, font));\n label = text;\n }\n else {\n labelCollection.push(textTrim(maximumWidth, text, font));\n text = '';\n }\n }\n if (label && i === len - 1) {\n labelCollection.push(textTrim(maximumWidth, label, font));\n }\n }\n return labelCollection;\n}\n/**\n *\n * @param {number} maxWidth - Specifies the length of the text.\n * @param {string} label - Specifies the label.\n * @param {FontModel} font - Specifies the font of the label.\n * @returns {string[]} - Returns the labels.\n */\nexport function textWrap(maxWidth, label, font) {\n var resultText = [];\n var currentLength = 0;\n var totalWidth = measureText(label, font).width;\n var totalLength = label.length;\n if (maxWidth >= totalWidth) {\n resultText.push(label);\n return resultText;\n }\n else {\n for (var i = label.length; i > currentLength; i--) {\n var sliceString = label.slice(currentLength, i);\n totalWidth = measureText(sliceString, font).width;\n if (totalWidth <= maxWidth) {\n resultText.push(sliceString);\n currentLength += sliceString.length;\n if (totalLength === currentLength) {\n return resultText;\n }\n i = totalLength + 1;\n }\n }\n }\n return resultText;\n}\n/**\n * hide function\n *\n * @param {number} maxWidth - Specifies the maximum width.\n * @param {number} maxHeight - Specifies the maximum height.\n * @param {string} text - Specifies the text.\n * @param {FontModel} font - Specifies the font.\n * @returns {string} - Returns the hidden text.\n * @private\n */\nexport function hide(maxWidth, maxHeight, text, font) {\n var hideText = text;\n var textSize = measureText(text, font);\n hideText = (textSize.width > maxWidth || textSize.height > maxHeight) ? ' ' : text;\n return hideText;\n}\n/**\n *\n * @param {number} a - Specifies the first value of the leaf.\n * @param {number} b - Specifies the second value of the leaf.\n * @returns {number} - Returns whether values are equal or not.\n */\nexport function orderByArea(a, b) {\n if (a['itemArea'] === b['itemArea']) {\n return 0;\n }\n else if (a['itemArea'] < b['itemArea']) {\n return 1;\n }\n return -1;\n}\n/**\n *\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @param {Element} element - Specifies the selected TreeMap leaf item.\n * @param {string} className -Specifies the selected class name.\n * @returns {void}\n */\nexport function maintainSelection(treemap, element, className) {\n var elementId = treemap.levelSelection;\n if (elementId) {\n for (var index = 0; index < elementId.length; index++) {\n if (element.getAttribute('id') === elementId[index]) {\n if (element.childElementCount > 0) {\n element.children[0].setAttribute('class', className);\n applyOptions(element.childNodes[0], {\n border: treemap.selectionSettings.border, fill: treemap.selectionSettings.fill,\n opacity: treemap.selectionSettings.opacity\n });\n }\n }\n else {\n element.setAttribute('class', '');\n }\n }\n }\n}\n/**\n *\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @param {Element} legendGroup - Specifies the selected element.\n * @returns {void}\n */\nexport function legendMaintain(treemap, legendGroup) {\n var elementId = treemap.legendId;\n if (elementId) {\n for (var i = 0; i < elementId.length; i++) {\n for (var j = 0; j < legendGroup.childElementCount; j++) {\n if (legendGroup.childNodes[j]['id'] === elementId[i]) {\n var treemapSVGRectElement = legendGroup.childNodes[j];\n treemapSVGRectElement.setAttribute('fill', treemap.selectionSettings.fill);\n treemapSVGRectElement.setAttribute('stroke', treemap.selectionSettings.border.color);\n treemapSVGRectElement.setAttribute('stroke-width', (treemap.selectionSettings.border.width).toString());\n treemapSVGRectElement.setAttribute('opacity', treemap.selectionSettings.opacity);\n }\n }\n }\n }\n}\n/**\n *\n * @param {HTMLCollection} elements - Specifies the selected TreeMap element.\n * @param {string} type - Specifies the selection type.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {void}\n */\nexport function removeClassNames(elements, type, treemap) {\n var element;\n var options = {};\n for (var j = 0; j < elements.length; j++) {\n element = isNullOrUndefined(elements[j].childNodes[0]) ? elements[j] :\n elements[j].childNodes[0];\n options = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])]['options'];\n applyOptions(element, options);\n elements[j].classList.remove(type);\n j -= 1;\n }\n}\n/**\n *\n * @param {SVGPathElement} element - Specifies the SVG path element.\n * @param {any} options - Specifies the settings for the SVG path element.\n * @returns {void}\n */\nexport function applyOptions(element, options) {\n element.setAttribute('opacity', options['opacity']);\n if (!isNullOrUndefined(options['fill'])) {\n element.setAttribute('fill', options['fill']);\n }\n element.setAttribute('stroke', options['border']['color']);\n element.setAttribute('stroke-width', options['border']['width']);\n}\n/**\n *\n * @param {string} format - Specifies the format value.\n * @param {any} data - Specifies the data source object.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {string} - Returns the formatted text.\n */\nexport function textFormatter(format, data, treemap) {\n if (isNullOrUndefined(format)) {\n return null;\n }\n var keys = Object.keys(data);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n format = format.split('${' + key + '}').join(formatValue(data[key], treemap).toString());\n }\n return format;\n}\n/**\n *\n * @param {number} value - Specifies the text to be formatted.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {string | number} - Returns the formatted text.\n */\nexport function formatValue(value, treemap) {\n var formatValue;\n var formatFunction;\n if (treemap.format && !isNaN(Number(value))) {\n formatFunction = treemap.intl.getNumberFormat({ format: treemap.format, useGrouping: treemap.useGroupingSeparator });\n formatValue = formatFunction(Number(value));\n }\n else {\n formatValue = value;\n }\n return formatValue ? formatValue : '';\n}\n/**\n * @private\n */\nvar ColorValue = /** @class */ (function () {\n function ColorValue(r, g, b) {\n this.r = r;\n this.g = g;\n this.b = b;\n }\n return ColorValue;\n}());\nexport { ColorValue };\n/**\n * @param {ColorValue} value - Specfies the color value\n * @returns {string} - Returns the string\n * @private\n */\nexport function convertToHexCode(value) {\n return '#' + componentToHex(value.r) + componentToHex(value.g) + componentToHex(value.b);\n}\n/**\n * @param {number} value - Specifies the value\n * @returns {string} - Returns the string\n * @private */\nexport function componentToHex(value) {\n var hex = value.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n}\n/**\n * @param {string} hex - Specifies the hex value\n * @returns {ColorValue} - Returns the color value\n * @private\n */\nexport function convertHexToColor(hex) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? new ColorValue(parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)) :\n new ColorValue(255, 255, 255);\n}\n/**\n * @param {string} color - Specifies the color\n * @returns {string} - Returns the string\n * @private\n */\nexport function colorNameToHex(color) {\n color = color === 'transparent' ? 'white' : color;\n var element = document.getElementById('treeMapMeasureText');\n element.style.color = color;\n color = window.getComputedStyle(element).color;\n var isRGBValue = color.replace(/[()RGBrgba ]/g, '').split(',');\n return convertToHexCode(new ColorValue(parseInt(isRGBValue[0], 10), parseInt(isRGBValue[1], 10), parseInt(isRGBValue[2], 10)));\n}\n/**\n * @param {Location} location - Specifies the location\n * @param {string} shape - Specifies the shape\n * @param {Size} size - Specifies the size\n * @param {string} url - Specifies the url\n * @param {PathOption} options - Specifies the options\n * @param {string} label - Specifies the label\n * @returns {Element} - Returns the element\n * @private\n */\nexport function drawSymbol(location, shape, size, url, options, label) {\n var svgRenderer = new SvgRenderer('');\n var temp = renderLegendShape(location, size, shape, options, url);\n var htmlElement = svgRenderer['draw' + temp.functionName](temp.renderOption);\n htmlElement.setAttribute('aria-label', label);\n return htmlElement;\n}\n/**\n * @param {Location} location - Specifies the location\n * @param {Size} size - Specifies the size\n * @param {string} shape - Specifies the shape\n * @param {PathOption} options - Specifies the path option\n * @param {string} url - Specifies the string\n * @returns {IShapes} - Returns the shapes\n * @private\n */\nexport function renderLegendShape(location, size, shape, options, url) {\n var renderPath;\n var functionName = 'Path';\n var shapeWidth = size.width;\n var shapeHeight = size.height;\n var shapeX = location.x;\n var shapeY = location.y;\n var x = location.x + (-shapeWidth / 2);\n var y = location.y + (-shapeHeight / 2);\n switch (shape) {\n case 'Circle':\n case 'Bubble':\n functionName = 'Ellipse';\n merge(options, { 'rx': shapeWidth / 2, 'ry': shapeHeight / 2, 'cx': shapeX, 'cy': shapeY });\n break;\n case 'VerticalLine':\n renderPath = 'M' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' + 'L' + ' ' + shapeX + ' '\n + (shapeY + (-shapeHeight / 2));\n merge(options, { 'd': renderPath });\n break;\n case 'Diamond':\n renderPath = 'M' + ' ' + x + ' ' + shapeY + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + shapeY + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + shapeY + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Rectangle':\n renderPath = 'M' + ' ' + x + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (-shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Triangle':\n renderPath = 'M' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'InvertedTriangle':\n renderPath = 'M' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX - (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Pentagon':\n // eslint-disable-next-line no-case-declarations\n var eq = 72;\n // eslint-disable-next-line no-case-declarations\n var xValue = void 0;\n // eslint-disable-next-line no-case-declarations\n var yValue = void 0;\n for (var i = 0; i <= 5; i++) {\n xValue = (shapeWidth / 2) * Math.cos((Math.PI / 180) * (i * eq));\n yValue = (shapeWidth / 2) * Math.sin((Math.PI / 180) * (i * eq));\n if (i === 0) {\n renderPath = 'M' + ' ' + (shapeX + xValue) + ' ' + (shapeY + yValue) + ' ';\n }\n else {\n renderPath = renderPath.concat('L' + ' ' + (shapeX + xValue) + ' ' + (shapeY + yValue) + ' ');\n }\n }\n renderPath = renderPath.concat('Z');\n merge(options, { 'd': renderPath });\n break;\n case 'Star':\n renderPath = 'M ' + (location.x + size.width / 3) + ' ' + (location.y - size.height / 2) + ' L ' + (location.x - size.width / 2)\n + ' ' + (location.y + size.height / 6) + ' L ' + (location.x + size.width / 2) + ' ' + (location.y + size.height / 6)\n + ' L ' + (location.x - size.width / 3) + ' ' + (location.y - size.height / 2) + ' L ' + location.x + ' ' +\n (location.y + size.height / 2) + ' L ' + (location.x + size.width / 3) + ' ' + (location.y - size.height / 2) + ' Z';\n merge(options, { 'd': renderPath });\n break;\n case 'Cross':\n renderPath = 'M' + ' ' + x + ' ' + shapeY + ' ' + 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + shapeY + ' ' +\n 'M' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' + 'L' + ' ' + shapeX + ' ' +\n (shapeY + (-shapeHeight / 2));\n merge(options, { 'd': renderPath });\n break;\n case 'Image':\n functionName = 'Image';\n merge(options, { 'href': url, 'height': shapeHeight, 'width': shapeWidth, x: x, y: y });\n break;\n }\n return { renderOption: options, functionName: functionName };\n}\n/**\n *\n * @param {any} data - Specifies the data source object.\n * @param {any} item - Specifies the leaf item.\n * @returns {boolean} - Returns whether the TreeMap item is level item or leaf item.\n */\nexport function isParentItem(data, item) {\n var isParentItem = false;\n for (var j = 0; j < data.length; j++) {\n if (item['levelOrderName'] === data[j]['levelOrderName']) {\n isParentItem = true;\n break;\n }\n }\n return isParentItem;\n}\n/**\n * Specifies the data to be received through Ajax request for treemap.\n */\nvar TreeMapAjax = /** @class */ (function () {\n function TreeMapAjax(options, type, async, contentType, sendData) {\n this.dataOptions = options;\n this.type = type || 'GET';\n this.async = async || true;\n this.contentType = contentType;\n this.sendData = sendData;\n }\n return TreeMapAjax;\n}());\nexport { TreeMapAjax };\n/**\n *\n * @param {any[]} collection - Specifies the legend collection.\n * @returns {void}\n * @private\n */\nexport function removeShape(collection) {\n if (collection.length > 0) {\n for (var i = 0; i < collection.length; i++) {\n var item = collection[i];\n setColor(item['legendEle'], item['oldFill'], item['oldOpacity'], item['oldBorderColor'], item['oldBorderWidth']);\n }\n }\n}\n/**\n *\n * @param {any[]} collection - Specifies the legend collection.\n * @returns {void}\n * @private\n */\nexport function removeLegend(collection) {\n if (collection.length > 0) {\n for (var j = 0; j < collection.length; j++) {\n var item = collection[j];\n setColor(item['legendEle'], item['oldFill'], item['oldOpacity'], item['oldBorderColor'], item['oldBorderWidth']);\n var dataCount = item['ShapeCollection']['Elements'].length;\n for (var k = 0; k < dataCount; k++) {\n setColor(item['ShapeCollection']['Elements'][k], item['shapeOldFill'], item['shapeOldOpacity'], item['shapeOldBorderColor'], item['shapeOldBorderWidth']);\n }\n }\n }\n}\n/**\n *\n * @param {Element} element - Specifies the selected element.\n * @param {string} fill - Specifies the fill color.\n * @param {string} opacity - Specifies the opacity.\n * @param {string} borderColor - Specifies the border color.\n * @param {string} borderWidth - Specifies the border width.\n * @returns {void}\n */\nexport function setColor(element, fill, opacity, borderColor, borderWidth) {\n element.setAttribute('fill', fill);\n element.setAttribute('opacity', opacity);\n element.setAttribute('stroke', borderColor);\n element.setAttribute('stroke-width', borderWidth);\n}\n/**\n *\n * @param {any[]} collection - Specifies the selected item collection.\n * @param {any[]} element - Specifies the selected element collection.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {void}\n */\nexport function removeSelectionWithHighlight(collection, element, treemap) {\n removeShape(collection);\n element = [];\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n}\n/**\n *\n * @param {number} length - Specifies the length of the legend group.\n * @param {any} item - Specifies the legend item.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {number} - Returns the legend index.\n */\nexport function getLegendIndex(length, item, treemap) {\n var index;\n for (var i = 0; i < length; i++) {\n var dataLength = treemap.treeMapLegendModule.legendCollections[i]['legendData'].length;\n for (var j = 0; j < dataLength; j++) {\n if (treemap.treeMapLegendModule.legendCollections[i]['legendData'][j]['levelOrderName'] === item['levelOrderName']) {\n index = i;\n break;\n }\n }\n }\n return index;\n}\n/**\n *\n * @param {any[]} collection - Specifies the legend collection.\n * @param {number} index - Specifies the index of legend.\n * @param {number} number - Specifies the leaf item index.\n * @param {Element} legendElement - Specifies the legend element.\n * @param {Element} shapeElement - Specifies the shape element.\n * @param {any[]} renderItems - Specifies the item index.\n * @param {any[]} legendCollection - Specifies the legend collection.\n * @returns {void}\n */\nexport function pushCollection(collection, index, number, legendElement, shapeElement, renderItems, legendCollection) {\n collection.push({\n legendEle: legendElement, oldFill: legendCollection[index]['legendFill'],\n oldOpacity: legendCollection[index]['opacity'], oldBorderColor: legendCollection[index]['borderColor'],\n oldBorderWidth: legendCollection[index]['borderWidth'],\n shapeElement: shapeElement, shapeOldFill: renderItems[number]['options']['fill'],\n shapeOldOpacity: renderItems[number]['options']['opacity'],\n shapeOldBorderColor: renderItems[number]['options']['border']['color'],\n shapeOldBorderWidth: renderItems[number]['options']['border']['width']\n });\n}\n/**\n * To trigger the download element\n *\n * @param {string} fileName - Specifies the file name\n * @param {ExportType} type - Specifies the type\n * @param {string} url - Specifies the url\n * @param {boolean} isDownload - Specifies the boolean value\n * @returns {void}\n * @private\n */\nexport function triggerDownload(fileName, type, url, isDownload) {\n createElement('a', {\n attrs: {\n 'download': fileName + '.' + type.toLocaleLowerCase(),\n 'href': url\n }\n }).dispatchEvent(new MouseEvent(isDownload ? 'click' : 'move', {\n view: window,\n bubbles: false,\n cancelable: true\n }));\n}\n/**\n *\n * @param {string} id - Specifies the id of the element to be removed.\n * @returns {void}\n */\nexport function removeElement(id) {\n var element = document.getElementById(id);\n return element ? remove(element) : null;\n}\n","/**\n * Maps Themes doc\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Theme;\n(function (Theme) {\n /**\n * @private\n */\n Theme.mapsTitleFont = {\n size: '14px',\n fontWeight: 'Medium',\n color: '#424242',\n fontStyle: 'Medium',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n})(Theme || (Theme = {}));\n/**\n * To get the theme style based on treemap theme.\n *\n * @param {TreeMapTheme} theme Specifies the theme of the treemap control.\n * @returns {IThemeStyle} Returns the theme.\n * @private\n */\nexport function getThemeStyle(theme) {\n var style;\n var color;\n switch (theme.toLowerCase()) {\n case 'materialdark':\n color = '#303030';\n break;\n case 'fabricdark':\n color = '#201F1F';\n break;\n case 'bootstrapdark':\n color = '#1A1A1A';\n break;\n }\n switch (theme.toLowerCase()) {\n case 'bootstrapdark':\n case 'fabricdark':\n case 'materialdark':\n style = {\n backgroundColor: color,\n titleFontColor: '#FFFFFF',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n tooltipFontSize: '13px',\n legendTitleColor: '#DADADA',\n legendTextColor: '#DADADA',\n fontSize: '15px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n break;\n case 'highcontrast':\n style = {\n backgroundColor: '#000000',\n titleFontColor: '#FFFFFF',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n tooltipFontSize: '13px',\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontSize: '15px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n break;\n case 'bootstrap4':\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#212529',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#212529',\n tooltipFillColor: '#000000',\n tooltipFontColor: '#FFFFFF',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 0.9,\n legendTitleColor: '#212529',\n legendTextColor: '#212529',\n fontFamily: 'HelveticaNeue-Medium',\n fontSize: '16px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'HelveticaNeue'\n };\n break;\n case 'tailwind':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#374151',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#374151',\n tooltipFillColor: '#111827',\n tooltipFontColor: '#F9FAFB',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#374151',\n legendTextColor: '#374151',\n fontFamily: 'Inter',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter'\n };\n break;\n case 'tailwinddark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#D1D5DB',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#D1D5DB',\n tooltipFillColor: '#F9FAFB',\n tooltipFontColor: '#1F2937',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#D1D5DB',\n legendTextColor: '#D1D5DB',\n fontFamily: 'Inter',\n fontWeight: 'Normal',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter'\n };\n break;\n case 'bootstrap5':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#212529',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#212529',\n tooltipFillColor: '#212529',\n tooltipFontColor: '#F9FAFB',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#212529',\n legendTextColor: '#212529',\n fontFamily: 'Helvetica Neue',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Helvetica Neue'\n };\n break;\n case 'bootstrap5dark':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#FFFFFF',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#E9ECEF',\n tooltipFontColor: '#212529',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontFamily: 'Helvetica Neue',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Helvetica Neue'\n };\n break;\n case 'fluent':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#201F1E',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#201F1E',\n tooltipFillColor: '#FFFFFF',\n tooltipFontColor: '#323130',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#201F1E',\n legendTextColor: '#201F1E',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI'\n };\n break;\n case 'fluentdark':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#F3F2F1',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#F3F2F1',\n tooltipFillColor: '#252423',\n tooltipFontColor: '#F3F2F1',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#F3F2F1',\n legendTextColor: '#F3F2F1',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI'\n };\n break;\n case 'material3':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#1C1B1F',\n titleFontWeight: '500',\n subTitleFontColor: '#1C1B1F',\n tooltipFillColor: '#313033',\n tooltipFontColor: '#F4EFF4',\n tooltipFontSize: '14px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#1C1B1F',\n legendTextColor: '#49454E',\n fontFamily: 'Roboto',\n fontSize: '16px',\n fontWeight: '400',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'Roboto'\n };\n break;\n case 'material3dark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#E6E1E5',\n titleFontWeight: '500',\n subTitleFontColor: '#E6E1E5',\n tooltipFillColor: '#E6E1E5',\n tooltipFontColor: '#313033',\n tooltipFontSize: '14px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#E6E1E5',\n legendTextColor: '#CAC4D0',\n fontFamily: 'Roboto',\n fontSize: '16px',\n fontWeight: '400',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'Roboto'\n };\n break;\n default:\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#424242',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#424242',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n tooltipFontSize: '13px',\n legendTitleColor: '#353535',\n legendTextColor: '#353535',\n fontSize: '15px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n break;\n }\n return style;\n}\n","/**\n * TreeMap constants doc\n */\n/**\n * Triggers when the treemap is on load.\n *\n * @private\n */\nexport var load = 'load';\n/**\n * Triggers after treemap rendered.\n *\n * @private\n */\nexport var loaded = 'loaded';\n/**\n * Trigger before call the print method.\n *\n * @private\n */\nexport var beforePrint = 'beforePrint';\n/**\n * Trigger before each treemap item rendered.\n *\n * @private\n */\nexport var itemRendering = 'itemRendering';\n/**\n * Trigger after click on treemap item.\n *\n * @private\n */\nexport var drillStart = 'drillStart';\n/**\n * Trigger after drill start event completed.\n *\n * @private\n */\nexport var drillEnd = 'drillEnd';\n/**\n * Trigger after select the treemap item.\n *\n * @private\n */\nexport var itemSelected = 'itemSelected';\n/**\n * Trigger after hover on the treemap item.\n *\n * @private\n */\nexport var itemHighlight = 'itemHighlight';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport var tooltipRendering = 'tooltipRendering';\n/**\n * Trigger after click on the treemap item.\n *\n * @private\n */\nexport var itemClick = 'itemClick';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport var itemMove = 'itemMove';\n/**\n * Trigger after click on the treemap item.\n *\n * @private\n */\nexport var click = 'click';\n/**\n * Trigger after double click on the treemap item.\n *\n * @private\n */\nexport var doubleClick = 'doubleClick';\n/**\n * Trigger after right click on the treemap item.\n *\n * @private\n */\nexport var rightClick = 'rightClick';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport var mouseMove = 'mouseMove';\n/**\n * Trigger before each treemap item.\n *\n * @private\n */\nexport var legendItemRendering = 'legendItemRendering';\n/**\n * Trigger before legend items.\n *\n * @private\n */\nexport var legendRendering = 'legendRendering';\n/**\n * Trigger after resize the treemap.\n *\n * @private\n */\nexport var resize = 'resize';\n/**\n * Define the font family in treemap.\n *\n * @private\n */\nexport var defaultFont = 'Roboto, Segoe UI, Noto, Sans-serif';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * Maps base doc\n */\nimport { Property, ChildProperty, Complex, Collection } from '@syncfusion/ej2-base';\nimport { defaultFont } from './constants';\n/**\n * Sets and gets the options for customizing the color and width of the border in treemap.\n */\nvar Border = /** @class */ (function (_super) {\n __extends(Border, _super);\n function Border() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('#808080')\n ], Border.prototype, \"color\", void 0);\n __decorate([\n Property(0)\n ], Border.prototype, \"width\", void 0);\n return Border;\n}(ChildProperty));\nexport { Border };\n/**\n * Sets and gets the margin for the treemap.\n */\nvar Margin = /** @class */ (function (_super) {\n __extends(Margin, _super);\n function Margin() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(10)\n ], Margin.prototype, \"left\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"right\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"top\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"bottom\", void 0);\n return Margin;\n}(ChildProperty));\nexport { Margin };\n/**\n * Sets and gets the options to customize the style of the text contents in the treemap.\n */\nvar Font = /** @class */ (function (_super) {\n __extends(Font, _super);\n function Font() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], Font.prototype, \"size\", void 0);\n __decorate([\n Property(null)\n ], Font.prototype, \"color\", void 0);\n __decorate([\n Property(defaultFont)\n ], Font.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('')\n ], Font.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontStyle\", void 0);\n __decorate([\n Property(1)\n ], Font.prototype, \"opacity\", void 0);\n return Font;\n}(ChildProperty));\nexport { Font };\n/**\n * Sets and gets the options for customizing the title of the treemap.\n */\nvar CommonTitleSettings = /** @class */ (function (_super) {\n __extends(CommonTitleSettings, _super);\n function CommonTitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], CommonTitleSettings.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], CommonTitleSettings.prototype, \"description\", void 0);\n return CommonTitleSettings;\n}(ChildProperty));\nexport { CommonTitleSettings };\n/**\n * Sets and gets the options for customizing the subtitle of the treemap.\n */\nvar SubTitleSettings = /** @class */ (function (_super) {\n __extends(SubTitleSettings, _super);\n function SubTitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ fontFamily: null, fontWeight: null }, Font)\n ], SubTitleSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property('Center')\n ], SubTitleSettings.prototype, \"alignment\", void 0);\n return SubTitleSettings;\n}(CommonTitleSettings));\nexport { SubTitleSettings };\n/**\n * Sets and gets the options for customizing the title of the treemap.\n */\nvar TitleSettings = /** @class */ (function (_super) {\n __extends(TitleSettings, _super);\n function TitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ fontFamily: null, fontWeight: null }, Font)\n ], TitleSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property('Center')\n ], TitleSettings.prototype, \"alignment\", void 0);\n __decorate([\n Complex({}, SubTitleSettings)\n ], TitleSettings.prototype, \"subtitleSettings\", void 0);\n return TitleSettings;\n}(CommonTitleSettings));\nexport { TitleSettings };\n/**\n * Sets and gets the options to customize the color-mapping in treemap.\n */\nvar ColorMapping = /** @class */ (function (_super) {\n __extends(ColorMapping, _super);\n function ColorMapping() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"from\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"to\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"color\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"label\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"minOpacity\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"maxOpacity\", void 0);\n __decorate([\n Property(true)\n ], ColorMapping.prototype, \"showLegend\", void 0);\n return ColorMapping;\n}(ChildProperty));\nexport { ColorMapping };\n/**\n * Sets and gets the options for customizing the legend of the treemap.\n */\nvar LegendSettings = /** @class */ (function (_super) {\n __extends(LegendSettings, _super);\n function LegendSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('Default')\n ], LegendSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('transparent')\n ], LegendSettings.prototype, \"background\", void 0);\n __decorate([\n Property('Circle')\n ], LegendSettings.prototype, \"shape\", void 0);\n __decorate([\n Property('')\n ], LegendSettings.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], LegendSettings.prototype, \"height\", void 0);\n __decorate([\n Complex({ size: '12px', fontFamily: null, fontWeight: null }, Font)\n ], LegendSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], LegendSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(15)\n ], LegendSettings.prototype, \"shapeWidth\", void 0);\n __decorate([\n Property(15)\n ], LegendSettings.prototype, \"shapeHeight\", void 0);\n __decorate([\n Property(10)\n ], LegendSettings.prototype, \"shapePadding\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"imageUrl\", void 0);\n __decorate([\n Complex({ color: '#000000', width: 0 }, Border)\n ], LegendSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ color: '#000000', width: 0 }, Border)\n ], LegendSettings.prototype, \"shapeBorder\", void 0);\n __decorate([\n Complex({}, CommonTitleSettings)\n ], LegendSettings.prototype, \"title\", void 0);\n __decorate([\n Complex({ size: '14px' }, Font)\n ], LegendSettings.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('Bottom')\n ], LegendSettings.prototype, \"position\", void 0);\n __decorate([\n Property('None')\n ], LegendSettings.prototype, \"orientation\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"invertedPointer\", void 0);\n __decorate([\n Property('After')\n ], LegendSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('None')\n ], LegendSettings.prototype, \"labelDisplayMode\", void 0);\n __decorate([\n Property('Center')\n ], LegendSettings.prototype, \"alignment\", void 0);\n __decorate([\n Property({ x: 0, y: 0 })\n ], LegendSettings.prototype, \"location\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"showLegendPath\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"valuePath\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"removeDuplicateLegend\", void 0);\n return LegendSettings;\n}(ChildProperty));\nexport { LegendSettings };\n/**\n * Sets and gets the settings for drill down to visualize the treemap rendered in the initial state.\n */\nvar InitialDrillSettings = /** @class */ (function (_super) {\n __extends(InitialDrillSettings, _super);\n function InitialDrillSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], InitialDrillSettings.prototype, \"groupIndex\", void 0);\n __decorate([\n Property(null)\n ], InitialDrillSettings.prototype, \"groupName\", void 0);\n return InitialDrillSettings;\n}(ChildProperty));\nexport { InitialDrillSettings };\n/**\n * Sets and gets the options for customizing the leaf item of the treemap.\n */\nvar LeafItemSettings = /** @class */ (function (_super) {\n __extends(LeafItemSettings, _super);\n function LeafItemSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(false)\n ], LeafItemSettings.prototype, \"autoFill\", void 0);\n __decorate([\n Complex({}, Border)\n ], LeafItemSettings.prototype, \"border\", void 0);\n __decorate([\n Property(0)\n ], LeafItemSettings.prototype, \"gap\", void 0);\n __decorate([\n Property(10)\n ], LeafItemSettings.prototype, \"padding\", void 0);\n __decorate([\n Property(1)\n ], LeafItemSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LeafItemSettings.prototype, \"showLabels\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelPath\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelFormat\", void 0);\n __decorate([\n Property('TopLeft')\n ], LeafItemSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Complex({ color: null, size: '12px' }, Font)\n ], LeafItemSettings.prototype, \"labelStyle\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelTemplate\", void 0);\n __decorate([\n Property('Center')\n ], LeafItemSettings.prototype, \"templatePosition\", void 0);\n __decorate([\n Property('Trim')\n ], LeafItemSettings.prototype, \"interSectAction\", void 0);\n __decorate([\n Collection([], ColorMapping)\n ], LeafItemSettings.prototype, \"colorMapping\", void 0);\n return LeafItemSettings;\n}(ChildProperty));\nexport { LeafItemSettings };\n/**\n * Sets and gets the options for customizing the tooltip of the treemap.\n */\nvar TooltipSettings = /** @class */ (function (_super) {\n __extends(TooltipSettings, _super);\n function TooltipSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('')\n ], TooltipSettings.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(0.75)\n ], TooltipSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(['Circle'])\n ], TooltipSettings.prototype, \"markerShapes\", void 0);\n __decorate([\n Complex({}, Border)\n ], TooltipSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ fontFamily: defaultFont, size: null, fontWeight: null }, Font)\n ], TooltipSettings.prototype, \"textStyle\", void 0);\n return TooltipSettings;\n}(ChildProperty));\nexport { TooltipSettings };\n/**\n * Sets and gets the options for customizing the selection of the leaf items in treemap.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], SelectionSettings.prototype, \"fill\", void 0);\n __decorate([\n Property('0.5')\n ], SelectionSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, Border)\n ], SelectionSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Item')\n ], SelectionSettings.prototype, \"mode\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Sets and gets the options for customizing the highlighting of the treemap item,\n * when the mouse hover is performed in it.\n */\nvar HighlightSettings = /** @class */ (function (_super) {\n __extends(HighlightSettings, _super);\n function HighlightSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], HighlightSettings.prototype, \"enable\", void 0);\n __decorate([\n Property('#808080')\n ], HighlightSettings.prototype, \"fill\", void 0);\n __decorate([\n Property('0.5')\n ], HighlightSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, Border)\n ], HighlightSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Item')\n ], HighlightSettings.prototype, \"mode\", void 0);\n return HighlightSettings;\n}(ChildProperty));\nexport { HighlightSettings };\n/**\n * Sets and gets the options for customizing the level leaf items of the treemap.\n */\nvar LevelSettings = /** @class */ (function (_super) {\n __extends(LevelSettings, _super);\n function LevelSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"groupPath\", void 0);\n __decorate([\n Property(0)\n ], LevelSettings.prototype, \"groupGap\", void 0);\n __decorate([\n Property(10)\n ], LevelSettings.prototype, \"groupPadding\", void 0);\n __decorate([\n Complex({}, Border)\n ], LevelSettings.prototype, \"border\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(false)\n ], LevelSettings.prototype, \"autoFill\", void 0);\n __decorate([\n Property(1)\n ], LevelSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LevelSettings.prototype, \"showHeader\", void 0);\n __decorate([\n Property(20)\n ], LevelSettings.prototype, \"headerHeight\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"headerFormat\", void 0);\n __decorate([\n Property('Near')\n ], LevelSettings.prototype, \"headerAlignment\", void 0);\n __decorate([\n Complex({ color: null, size: '13px' }, Font)\n ], LevelSettings.prototype, \"headerStyle\", void 0);\n __decorate([\n Property('TopLeft')\n ], LevelSettings.prototype, \"templatePosition\", void 0);\n __decorate([\n Collection([], ColorMapping)\n ], LevelSettings.prototype, \"colorMapping\", void 0);\n return LevelSettings;\n}(ChildProperty));\nexport { LevelSettings };\n","import { Rect, itemsToOrder, TextOption, measureText, textTrim, hide, wordWrap, textWrap, getTemplateFunction, convertElement, findLabelLocation, PathOption, textFormatter, colorNameToHex, convertHexToColor, colorMap, measureElement, convertToContainer, convertToRect, getShortestEdge, getArea, orderByArea, isParentItem, maintainSelection } from '../utils/helper';\nimport { isNullOrUndefined, createElement, extend } from '@syncfusion/ej2-base';\nimport { findChildren, renderTextElement } from '../utils/helper';\nimport { itemRendering } from '../model/constants';\n/**\n * To calculate and render the shape layer\n */\nvar LayoutPanel = /** @class */ (function () {\n function LayoutPanel(treemap) {\n this.treemap = treemap;\n }\n LayoutPanel.prototype.processLayoutPanel = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data;\n var totalRect;\n if (this.treemap.treemapLevelData.levelsData && this.treemap.treemapLevelData.levelsData.length > 0) {\n data = (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) &&\n !isNullOrUndefined(this.treemap.initialDrillDown.groupName)) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length === 0) ?\n this.getDrilldownData(this.treemap.treemapLevelData.levelsData[0], [])[0] : this.treemap.treemapLevelData.levelsData[0];\n totalRect = extend({}, this.treemap.areaRect, totalRect, false);\n if (!isNullOrUndefined(this.treemap.treeMapLegendModule) && !isNullOrUndefined(this.treemap.totalRect)) {\n if (this.treemap.legendSettings.position !== 'Float') {\n totalRect = this.treemap.totalRect;\n }\n }\n if (!isNullOrUndefined(this.treemap.currentLevel) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? !isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length !== 0)) {\n var count = this.treemap.drilledItems.length - 1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var x = this.treemap.drilledItems[count]['data'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var y = {};\n y[this.treemap.drilledItems[count]['data']['groupName']] = [x];\n if (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) && !this.treemap.enableBreadcrumb) {\n this.treemap.currentLevel = this.treemap.drilledItems[count]['data']['groupIndex'];\n }\n this.calculateLayoutItems(y || this.treemap.treemapLevelData.levelsData[0], totalRect);\n this.renderLayoutItems();\n }\n else {\n if (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length === 0)) {\n this.treemap.currentLevel = this.treemap.initialDrillDown.groupIndex;\n }\n this.calculateLayoutItems(data || this.treemap.treemapLevelData.levelsData[0], totalRect);\n this.renderLayoutItems();\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getDrilldownData = function (data, drillData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var treemap = this.treemap;\n var newData = {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n if (child && child.length > 0 && drillData.length === 0) {\n for (var i = 0; i < child.length; i++) {\n if (child[i]['groupIndex'] === treemap.initialDrillDown.groupIndex &&\n child[i]['name'] === treemap.initialDrillDown.groupName) {\n child[i]['isDrilled'] = true;\n newData[child[i]['groupName']] = [child[i]];\n drillData.push(newData);\n }\n }\n for (var j = 0; j < child.length; j++) {\n this.getDrilldownData(child[j], drillData);\n }\n }\n return drillData;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n LayoutPanel.prototype.calculateLayoutItems = function (data, rect) {\n this.renderItems = [];\n this.parentData = [];\n if (!isNullOrUndefined(this.treemap.weightValuePath)) {\n if (this.treemap.layoutType.indexOf('SliceAndDice') > -1) {\n this.computeSliceAndDiceDimensional(data, rect);\n }\n else {\n rect.height = rect.height + rect.y;\n rect.width = rect.width + rect.x;\n this.computeSquarifyDimensional(data, rect);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeSliceAndDiceDimensional = function (data, coords) {\n var leafItem = this.treemap.leafItemSettings;\n var rect;\n var groups = this.treemap.levels;\n var groupIndex;\n var isLeafItem = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var children = findChildren(data)['values'];\n var gap;\n var headerHeight;\n if (children && children.length > 0) {\n this.sliceAndDiceProcess(children, coords);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < children.length; i++) {\n groupIndex = children[i]['groupIndex'];\n isLeafItem = (groups.length === 0 || groupIndex === groups.length);\n gap = isLeafItem ? leafItem.gap : groups[groupIndex].groupGap;\n headerHeight = groups.length === 0 ? 0 : groups[groupIndex] ? groups[groupIndex].showHeader ?\n groups[groupIndex].headerHeight : 0 : groups[groupIndex - 1].showHeader ?\n groups[groupIndex - 1].headerHeight : 0;\n rect = children[i]['rect'];\n rect = new Rect(rect.x + (gap / 2), rect.y + (headerHeight + (gap / 2)), rect.width - gap, Math.abs(rect.height - (gap + headerHeight)));\n this.computeSliceAndDiceDimensional(children[i], rect);\n }\n }\n }\n return data;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.sliceAndDiceProcess = function (processData, rect) {\n var parentArea = rect.height * rect.width;\n var levels = this.treemap.levels;\n var childValue;\n var alottedValue = 0;\n var totalWeight = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n processData.forEach(function (data) { totalWeight += data['weight']; });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n processData.forEach(function (child) {\n child['weightArea'] = parentArea * child['weight'] / totalWeight;\n });\n var isHorizontal = (this.treemap.layoutType === 'SliceAndDiceAuto') ? (rect.width > rect.height) :\n (this.treemap.layoutType === 'SliceAndDiceHorizontal');\n processData.sort(itemsToOrder);\n for (var i = 0; i < processData.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = processData[i];\n item['isLeafItem'] = (levels.length === 0) || ((this.treemap.isHierarchicalData ||\n isNullOrUndefined(this.treemap.leafItemSettings.labelPath)) ?\n item['groupIndex'] === levels.length - 1 : item['groupIndex'] === this.treemap.levels.length);\n if (isHorizontal) {\n childValue = ((parentArea / totalWeight) * processData[i]['weight']) / rect.height;\n if (alottedValue <= rect.width) {\n processData[i]['rect'] = new Rect(alottedValue + rect.x, rect.y, childValue, rect.height);\n }\n }\n else {\n childValue = ((parentArea / totalWeight) * processData[i]['weight']) / rect.width;\n if (alottedValue <= rect.height) {\n processData[i]['rect'] = new Rect(rect.x, alottedValue + rect.y, rect.width, childValue);\n }\n }\n alottedValue += childValue;\n this.renderItems.push(processData[i]);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeSquarifyDimensional = function (data, coords) {\n var leaf = this.treemap.leafItemSettings;\n var rect;\n var levels = this.treemap.levels;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n var index;\n var padding;\n var headerHeight;\n if (child && child.length > 0) {\n if (this.parentData.length === 0) {\n this.parentData = [];\n this.parentData.push(child);\n }\n this.calculateChildrenLayout(data, child, coords);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < child.length; i++) {\n item = child[i];\n index = item['groupIndex'];\n rect = item['rect'];\n padding = (item['isLeafItem'] ? leaf.padding : levels[index].groupPadding) / 2;\n headerHeight = this.treemap.isHierarchicalData ? index === 0 && item['isLeafItem'] ? 0 : levels[index] ?\n levels[index].showHeader ? levels[index].headerHeight : 0 : 0 :\n (levels.length === 0) ? 0 : levels[index] ?\n levels[index].showHeader ? levels[index].headerHeight : 0 : 0;\n rect = new Rect(rect.x + padding, rect.y + (headerHeight + padding), rect.width - padding, rect.height - padding);\n if (!item['isLeafItem'] && item['weight'] > 0) {\n this.computeSquarifyDimensional(child[i], rect);\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.calculateChildrenLayout = function (parent, children, coords) {\n this.computeTotalArea(children, getArea(coords));\n children.sort(orderByArea);\n this.performRowsLayout(children, [], coords, []);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.performRowsLayout = function (data, currentRow, rect, stack) {\n var dataLength = data.length;\n if (dataLength === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newCoordinates = this.getCoordinates(currentRow, rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newStack = stack.concat(newCoordinates);\n return newStack;\n }\n var width = getShortestEdge(rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var nextDatum = data[0];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var restData = data.slice(1, dataLength);\n if (this.aspectRatio(currentRow, nextDatum, width)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newRow = currentRow.concat(nextDatum);\n return this.performRowsLayout(restData, newRow, rect, stack);\n }\n else {\n var currentRowLength = currentRow.length;\n var valueSum = 0;\n for (var i = 0; i < currentRowLength; i += 1) {\n valueSum += currentRow[i]['itemArea'];\n }\n var newContainer = this.cutArea(rect, valueSum);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newCoordinates = this.getCoordinates(currentRow, rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newStack = stack.concat(newCoordinates);\n return this.performRowsLayout(data, [], newContainer, newStack);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.aspectRatio = function (currentRow, nextDatum, length) {\n if (currentRow.length === 0) {\n return true;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newRow = currentRow.concat(nextDatum);\n var currentMaxAspectRatio = this.findMaxAspectRatio(currentRow, length);\n var newMaxAspectRatio = this.findMaxAspectRatio(newRow, length);\n return (currentMaxAspectRatio >= newMaxAspectRatio);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.findMaxAspectRatio = function (row, length) {\n var rowLength = row.length;\n var minArea = Infinity;\n var maxArea = -Infinity;\n var sumArea = 0;\n for (var i = 0; i < rowLength; i += 1) {\n var area = row[i]['itemArea'];\n if (area < minArea) {\n minArea = area;\n }\n if (area > maxArea) {\n maxArea = area;\n }\n sumArea += area;\n }\n var result = Math.max((Math.pow(length, 2)) * maxArea / (Math.pow(sumArea, 2)), (Math.pow(sumArea, 2)) /\n ((Math.pow(length, 2)) * minArea));\n return result;\n };\n LayoutPanel.prototype.cutArea = function (rect, area) {\n var newContainer = convertToContainer(rect);\n var width = newContainer.width;\n var height = newContainer.height;\n var xOffset = newContainer.x;\n var yOffset = newContainer.y;\n if (width >= height) {\n var areaWidth = area / height;\n var newWidth = width - areaWidth;\n var container = {\n x: xOffset + areaWidth,\n y: yOffset,\n width: newWidth,\n height: height\n };\n return convertToRect(container);\n }\n else {\n var areaHeight = area / width;\n var newHeight = height - areaHeight;\n var container = {\n x: xOffset,\n y: yOffset + areaHeight,\n width: width,\n height: newHeight\n };\n return convertToRect(container);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getCoordinates = function (row, rect) {\n var container = convertToContainer(rect);\n var width = container.width;\n var height = container.height;\n var xOffset = container.x;\n var yOffset = container.y;\n var rowLength = row.length;\n var levels = this.treemap.levels;\n var leaf = this.treemap.leafItemSettings;\n var index;\n var valueSum = 0;\n for (var i = 0; i < rowLength; i += 1) {\n valueSum += row[i]['itemArea'];\n }\n var areaWidth = valueSum / height;\n var areaHeight = valueSum / width;\n var subXOffset = xOffset;\n var subYOffset = yOffset;\n var padding;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var coordinates = [];\n var isParent;\n var parentRect;\n for (var i = 0; i < rowLength; i += 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = row[i];\n index = item['groupIndex'];\n item['isLeafItem'] = (levels.length === 0) || (this.treemap.isHierarchicalData ? index === levels.length :\n isNullOrUndefined(leaf.labelPath) ? false : index === levels.length);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isParent = isParentItem(this.parentData[0], item);\n parentRect = isParent ? this.treemap.areaRect : item['parent'].rect;\n padding = item['isLeafItem'] ? leaf.padding : levels[index].groupPadding;\n if (width >= height) {\n var y1 = subYOffset + item['itemArea'] / areaWidth;\n item['rect'] = {\n x: subXOffset,\n y: subYOffset,\n width: subXOffset + areaWidth,\n height: y1\n };\n subYOffset = y1;\n }\n else {\n var x1 = subXOffset + item['itemArea'] / areaHeight;\n item['rect'] = {\n x: subXOffset,\n y: subYOffset,\n width: x1,\n height: subYOffset + areaHeight\n };\n subXOffset = x1;\n }\n if (item['weight'] > 0 && (isParent || (Math.round(rect.y + (padding / 2)) <=\n Math.round(parentRect.y + (parentRect.height - parentRect.y)) && Math.round(rect.x + (padding / 2)) <=\n Math.round(parentRect.x + (parentRect.width - parentRect.x))))) {\n this.renderItems.push(item);\n coordinates.push(item);\n }\n }\n return coordinates;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeTotalArea = function (data, area) {\n var dataLength = data.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var result = [];\n for (var i = 0; i < dataLength; i += 1) {\n var dataLength_1 = data.length;\n var dataSum = 0;\n for (var i_1 = 0; i_1 < dataLength_1; i_1 += 1) {\n dataSum += data[i_1]['weight'];\n }\n var multiplier = area / dataSum;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var datum = void 0;\n for (var j = 0; j < dataLength_1; j++) {\n datum = data[j];\n datum['itemArea'] = datum['weight'] * multiplier;\n result.push(datum);\n }\n }\n return result;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n LayoutPanel.prototype.onDemandProcess = function (childItems) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentItem = {};\n var totalRect;\n parentItem = childItems[0]['parent'];\n this.treemap.currentLevel = parentItem['isDrilled'] ? parentItem['groupIndex'] : null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentItemGroupname = {};\n if (isNullOrUndefined(parentItem['groupName'])) {\n parentItemGroupname = parentItem;\n }\n else {\n parentItemGroupname[parentItem['groupName']] = [parentItem];\n }\n totalRect = extend({}, this.treemap.areaRect, totalRect, false);\n if (!isNullOrUndefined(this.treemap.treeMapLegendModule) && !isNullOrUndefined(this.treemap.totalRect)) {\n totalRect = this.treemap.totalRect;\n }\n var count = this.treemap.levels.length;\n for (var i = 0; i < count; i++) {\n var levelCount = childItems[0]['groupIndex'];\n if (count === levelCount) {\n this.treemap.levels[count] = this.treemap.levels[i];\n }\n else {\n this.treemap.levels.splice(count - 1, 1);\n }\n }\n this.calculateLayoutItems(parentItemGroupname, totalRect);\n this.renderLayoutItems();\n };\n /** @private */\n LayoutPanel.prototype.renderLayoutItems = function () {\n var _this = this;\n var position;\n var treeMap = this.treemap;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var txtVisible;\n var getItemColor;\n var eventArgs;\n this.renderer = treeMap.renderer;\n var pathOptions;\n var elementID = treeMap.element.id;\n var index;\n var templatePosition;\n var mode = treeMap.layoutType;\n var rect;\n var format;\n var interSectAction = this.treemap.leafItemSettings.interSectAction;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var fill;\n var item;\n var renderText;\n var opacity;\n var rectPath = '';\n var secondaryEle = document.getElementById(treeMap.element.id + '_Secondary_Element');\n var groupId;\n var templateEle;\n var gap;\n var textStyle;\n var levels = treeMap.levels;\n this.layoutGroup = this.renderer.createGroup({ id: elementID + '_TreeMap_' + mode + '_Layout' });\n var itemGroup;\n var template;\n var border;\n var templateGroup = createElement('div', {\n id: treeMap.element.id + '_Label_Template_Group',\n className: 'template'\n });\n templateGroup.style.cssText = 'overflow: hidden; position: absolute;pointer-events: none;' +\n 'top:' + treeMap.areaRect.y + 'px;' +\n 'left:' + treeMap.areaRect.x + 'px;' +\n 'height:' + treeMap.areaRect.height + 'px;' +\n 'width:' + treeMap.areaRect.width + 'px;';\n var isLeafItem = false;\n var leaf = treeMap.leafItemSettings;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childItems;\n var connectorText;\n var _loop_1 = function (i) {\n item = this_1.renderItems[i];\n index = item['groupIndex'];\n if (this_1.treemap.drillDownView && isNullOrUndefined(this_1.treemap.currentLevel)\n && index > 0 || this_1.treemap.drillDownView\n && index > (this_1.treemap.currentLevel + 1)) {\n return \"continue\";\n }\n rect = item['rect'];\n isLeafItem = item['isLeafItem'];\n groupId = elementID + '_Level_Index_' + index + '_Item_Index_' + i;\n itemGroup = this_1.renderer.createGroup({ id: groupId + '_Group' });\n gap = (isLeafItem ? leaf.gap : levels[index].groupGap) / 2;\n var treemapItemRect = this_1.treemap.totalRect ? convertToContainer(this_1.treemap.totalRect) : this_1.treemap.areaRect;\n if (treeMap.layoutType === 'Squarified') {\n rect.width = Math.abs(rect.x - rect.width) - gap;\n rect.height = Math.abs(rect.y - rect.height) - gap;\n }\n if (treeMap.renderDirection === 'TopRightBottomLeft') {\n rect.x = (treemapItemRect.x + treemapItemRect.width) - rect.width - Math.abs(treemapItemRect.x - rect.x);\n }\n else if (treeMap.renderDirection === 'BottomLeftTopRight') {\n rect.y = (treemapItemRect.y + treemapItemRect.height) - rect.height - Math.abs(treemapItemRect.y - rect.y);\n }\n else if (treeMap.renderDirection === 'BottomRightTopLeft') {\n rect.x = (treemapItemRect.x + treemapItemRect.width) - rect.width - Math.abs(treemapItemRect.x - rect.x);\n rect.y = (treemapItemRect.y + treemapItemRect.height) - rect.height - Math.abs(treemapItemRect.y - rect.y);\n }\n getItemColor = this_1.getItemColor(isLeafItem, item);\n fill = getItemColor['fill'];\n opacity = getItemColor['opacity'];\n format = isLeafItem ? leaf.labelFormat : (levels[index]).headerFormat;\n var levelName;\n txtVisible = isLeafItem ? leaf.showLabels : (levels[index]).showHeader;\n if (index === this_1.treemap.currentLevel) {\n if (this_1.treemap.enableBreadcrumb) {\n var re = /#/gi;\n connectorText = '#' + this_1.treemap.breadcrumbConnector + '#';\n levelName = item['levelOrderName'].replace(re, connectorText);\n levelName = index !== 0 ? '#' + levelName : levelName;\n }\n else {\n levelName = item['name'];\n }\n }\n else {\n if (this_1.treemap.enableBreadcrumb) {\n item['isDrilled'] = false;\n }\n levelName = item['name'];\n }\n renderText = textFormatter(format, item['data'], this_1.treemap) || levelName || 'undefined';\n childItems = findChildren(item)['values'];\n renderText = !isLeafItem && childItems && childItems.length > 0 && this_1.treemap.enableDrillDown ?\n !item['isDrilled'] ? treeMap.enableRtl ? renderText + ' [+]' : '[+] ' + renderText :\n treeMap.enableRtl ? renderText + ' [-]' : '[-] ' + renderText : renderText;\n textStyle = (isLeafItem ? leaf.labelStyle : levels[index].headerStyle);\n textStyle.fontFamily = this_1.treemap.themeStyle.labelFontFamily || textStyle.fontFamily;\n textStyle.fontWeight = textStyle.fontWeight || this_1.treemap.themeStyle.fontWeight;\n border = isLeafItem ? leaf.border : levels[index].border;\n position = !isLeafItem ? (levels[index].headerAlignment) === 'Near' ? 'TopLeft' : (levels[index].headerAlignment) === 'Center' ?\n 'TopCenter' : 'TopRight' : leaf.labelPosition;\n templatePosition = isLeafItem ? leaf.templatePosition : levels[index].templatePosition;\n template = isLeafItem ? leaf.labelTemplate : levels[index].headerTemplate;\n item['options'] = { border: border, opacity: opacity, fill: fill };\n eventArgs = {\n cancel: false, name: itemRendering, treemap: this_1.treemap, text: renderText,\n currentItem: item, RenderItems: this_1.renderItems, options: item['options']\n };\n this_1.treemap.trigger(itemRendering, eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n rectPath = ' M ' + rect.x + ' ' + rect.y + ' L ' + (rect.x + rect.width) + ' ' + rect.y +\n ' L ' + (rect.x + rect.width) + ' ' + (rect.y + rect.height) + ' L ' + rect.x + ' ' + (rect.y + rect.height) + 'z';\n pathOptions = new PathOption(groupId + '_RectPath', fill, border.width, border.color, opacity, null, rectPath);\n var path = _this.renderer.drawPath(pathOptions);\n itemGroup.appendChild(path);\n if (txtVisible) {\n if (eventArgs.text !== renderText) {\n eventArgs.text = textFormatter(eventArgs.text, item['data'], _this.treemap) || levelName;\n }\n _this.renderItemText(eventArgs.text.toString(), itemGroup, textStyle, rect, interSectAction, groupId, fill, position, connectorText);\n }\n if (template) {\n templateEle = _this.renderTemplate(secondaryEle, groupId, rect, templatePosition, template, item, isLeafItem);\n if (!isNullOrUndefined(templateEle)) {\n templateGroup.appendChild(templateEle);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.treemap.renderReactTemplates();\n }\n }\n itemGroup.setAttribute('aria-label', item['name']);\n itemGroup.setAttribute('role', '');\n itemGroup.setAttribute('tabindex', (_this.treemap.tabIndex + i + 2).toString());\n maintainSelection(_this.treemap, itemGroup, 'treeMapSelection');\n _this.layoutGroup.appendChild(itemGroup);\n }\n });\n };\n var this_1 = this;\n for (var i = 0; i < this.renderItems.length; i++) {\n _loop_1(i);\n }\n if (templateGroup.childNodes.length > 0) {\n secondaryEle.appendChild(templateGroup);\n }\n this.treemap.svgObject.appendChild(this.layoutGroup);\n };\n LayoutPanel.prototype.renderItemText = function (text, parentElement, textStyle, rect, interSectAction, groupId, fill, position, connectorText) {\n var padding = 5;\n var textSize;\n var textCollection = [];\n var customText;\n var tspanText = [];\n var height = 0;\n var textName;\n textCollection = ((text.indexOf('<br>')) !== -1) ? text.split('<br>') : null;\n customText = this.labelInterSectAction(rect, text, textStyle, interSectAction);\n textSize = measureText(textCollection && textCollection[0] || customText[0], textStyle);\n if (this.treemap.enableRtl) {\n var labelSize = measureText(text, textStyle);\n var drillSymbolCount = text.search('[+]') || text.search('[-]');\n if (rect.width < labelSize.width && drillSymbolCount > 0) {\n var label = text.substring(drillSymbolCount - 1, text.length);\n var drillSymbol = '[+]';\n var drillSymbolSize = measureText(drillSymbol, textStyle);\n customText['0'] = textTrim(rect.width - drillSymbolSize.width - padding, customText[0], textStyle) + label;\n }\n }\n var textLocation = findLabelLocation(rect, position, textSize, 'Text', this.treemap);\n if (!isNullOrUndefined(textCollection)) {\n var collection = [];\n var texts = null;\n var maxNumber = [];\n for (var i = 0; i < textCollection.length; i++) {\n texts = textTrim((rect.width - 5), textCollection[i], textStyle);\n textSize = measureText(texts, textStyle);\n height += textSize.height;\n maxNumber.push(textSize.width);\n collection.push(texts);\n }\n customText = collection;\n textSize.width = Math.max.apply(null, maxNumber);\n textSize.height = height;\n }\n if (interSectAction === 'WrapByWord' || interSectAction === 'Wrap' || interSectAction === 'Trim') {\n for (var j = 0; j < customText.length; j++) {\n textSize = measureText(customText[j], textStyle);\n height += textSize.height;\n if ((rect.height - padding) > height) {\n tspanText.push(customText[j]);\n }\n }\n if (interSectAction === 'Wrap' && customText.length !== tspanText.length && tspanText.length) {\n var collectionLength = tspanText.length - 1;\n var stringText = tspanText[collectionLength];\n stringText = stringText.substring(0, (stringText.length - 1)) + '...';\n tspanText.splice(collectionLength);\n if (stringText !== '...') {\n tspanText.push(stringText);\n }\n }\n }\n else {\n textName = customText;\n tspanText.push(textName);\n }\n var textOptions = new TextOption(groupId + '_Text', textLocation.x, textLocation.y, 'start', tspanText, '', '', connectorText);\n renderTextElement(textOptions, textStyle, textStyle.color || this.getSaturatedColor(fill), parentElement);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getItemColor = function (isLeafItem, item) {\n var treemap = this.treemap;\n var itemFill = isLeafItem ? treemap.leafItemSettings.fill : treemap.levels[item['groupIndex']].fill;\n var itemOpacity = isLeafItem ? treemap.leafItemSettings.opacity : treemap.levels[item['groupIndex']].opacity;\n if (!isNullOrUndefined(treemap.treemapLevelData.defaultLevelsData)) {\n if (treemap.treemapLevelData.defaultLevelsData.length > 0) {\n treemap.treemapLevelData.levelsData = treemap.treemapLevelData.defaultLevelsData;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentData = findChildren(treemap.treemapLevelData.levelsData[0])['values'];\n var colorMapping = isLeafItem ? treemap.leafItemSettings.colorMapping :\n treemap.levels[item['groupIndex']].colorMapping;\n if (colorMapping.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var option = colorMap(colorMapping, item['data'][treemap.equalColorValuePath], item['data'][treemap.rangeColorValuePath]);\n itemFill = !isNullOrUndefined(option['fill']) ? option['fill'] : treemap.leafItemSettings.fill;\n itemOpacity = option['opacity'];\n }\n else {\n for (var i = 0; i < parentData.length; i++) {\n if (parentData[i]['levelOrderName'] === item['levelOrderName'].split('#')[0]) {\n itemFill = !isNullOrUndefined(itemFill) ? itemFill : !isNullOrUndefined(treemap.colorValuePath) ?\n parentData[i]['data'][treemap.colorValuePath] : treemap.palette.length > 0 ?\n treemap.palette[i % treemap.palette.length] : '#808080';\n }\n }\n }\n return { fill: itemFill, opacity: itemOpacity };\n };\n /**\n * To find saturated color for datalabel\n *\n * @param {string} color - Specifies the color\n * @returns {string} - Returns the color\n */\n LayoutPanel.prototype.getSaturatedColor = function (color) {\n var saturatedColor = color;\n saturatedColor = (saturatedColor === 'transparent') ? window.getComputedStyle(document.body, null).backgroundColor : saturatedColor;\n var rgbValue = convertHexToColor(colorNameToHex(saturatedColor));\n var contrast = Math.round((rgbValue.r * 299 + rgbValue.g * 587 + rgbValue.b * 114) / 1000);\n return contrast >= 128 ? 'black' : 'white';\n };\n LayoutPanel.prototype.renderTemplate = function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n secondaryEle, groupId, rect, position, template, item, isLeafItem) {\n var templateId = isLeafItem ? groupId + '_LabelTemplate' : groupId + '_HeaderTemplate';\n var baseTemplateId = isLeafItem ? '_LabelTemplate' : '_HeaderTemplate';\n if (isNullOrUndefined(template['prototype']) && typeof template === 'string') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var keys = Object.keys(item['data']);\n for (var i = 0; i < keys.length; i++) {\n var regExp = RegExp;\n template = template.replace(new regExp('{{:' + keys[i] + '}}', 'g'), item['data'][keys[i].toString()]);\n }\n }\n var labelElement;\n if (!isNullOrUndefined(document.getElementById(this.treemap.element.id + '_Secondary_Element'))) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateFn = getTemplateFunction(template);\n var templateElement = templateFn(item['data'], this.treemap, template, this.treemap.element.id + baseTemplateId, false);\n labelElement = convertElement(templateElement, templateId, item['data']);\n var templateSize = measureElement(labelElement, secondaryEle);\n var templateLocation = findLabelLocation(rect, position, templateSize, 'Template', this.treemap);\n labelElement.style.left = templateLocation.x + 'px';\n labelElement.style.top = templateLocation.y + 'px';\n }\n return labelElement;\n };\n LayoutPanel.prototype.labelInterSectAction = function (rect, text, textStyle, alignment) {\n var textValue;\n var maxWidth = rect.width - 10;\n switch (alignment) {\n case 'Hide':\n textValue = [hide(maxWidth, rect.height, text, textStyle)];\n break;\n case 'Trim':\n textValue = [textTrim((maxWidth + 3), text, textStyle)];\n break;\n case 'WrapByWord':\n textValue = wordWrap(maxWidth, text, textStyle);\n break;\n case 'Wrap':\n textValue = textWrap(maxWidth, text, textStyle);\n break;\n }\n return textValue;\n };\n /**\n *\n * @returns {void}\n * @private\n */\n LayoutPanel.prototype.destroy = function () {\n this.treemap = null;\n this.currentRect = null;\n this.layoutGroup = null;\n this.renderer = null;\n this.renderItems = [];\n this.parentData = [];\n };\n return LayoutPanel;\n}());\nexport { LayoutPanel };\n","import { print as printFunction, createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getElement } from '../utils/helper';\nimport { beforePrint } from '../model/constants';\n/**\n * Print module handles the print functionality for treemap.\n *\n * @hidden\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n function Print(control) {\n }\n /**\n * This method is used to perform the print functionality in treemap.\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param { string[] | string | Element} elements - Specifies the element.\n * @returns {void}\n * @private\n */\n Print.prototype.print = function (treeMap, elements) {\n var printWindow = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n printWindow.moveTo(0, 0);\n printWindow.resizeTo(screen.availWidth, screen.availHeight);\n var argsData = {\n cancel: false, htmlContent: this.getHTMLContent(treeMap, elements), name: beforePrint\n };\n treeMap.trigger(beforePrint, argsData, function () {\n if (!argsData.cancel) {\n printFunction(argsData.htmlContent, printWindow);\n }\n });\n };\n /**\n * To get the html string of the Maps\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param {string[] | string | Element} elements - Specifies the element\n * @returns {Element} - Returns the element\n * @private\n */\n Print.prototype.getHTMLContent = function (treeMap, elements) {\n var div = createElement('div');\n if (elements) {\n if (elements instanceof Array) {\n elements.forEach(function (value) {\n div.appendChild(getElement(value).cloneNode(true));\n });\n }\n else if (elements instanceof Element) {\n div.appendChild(elements.cloneNode(true));\n }\n else {\n div.appendChild(getElement(elements).cloneNode(true));\n }\n }\n else {\n var exportElement = treeMap.element.cloneNode(true);\n var backgroundElement = exportElement.getElementsByTagName('svg')[0];\n if (!isNullOrUndefined(backgroundElement)) {\n backgroundElement = backgroundElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n var backgroundColor = backgroundElement.getAttribute('fill');\n if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n backgroundElement.setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n backgroundElement.setAttribute('fill', 'rgba(0, 0, 0, 1)');\n }\n }\n }\n div.appendChild(exportElement);\n }\n return div;\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n Print.prototype.getModuleName = function () {\n // Returns te module name\n return 'Print';\n };\n /**\n * To destroy the Print module.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n Print.prototype.destroy = function () { };\n return Print;\n}());\nexport { Print };\n","import { createElement, Browser, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { triggerDownload } from '../utils/helper';\n/**\n * ImageExport module handles the export to image functionality for treemap.\n *\n * @hidden\n */\nvar ImageExport = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n function ImageExport(control) {\n }\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param {ExportType} type - Specifies the type of the image file.\n * @param {string} fileName - Specifies the file name of the image file.\n * @param {boolean} allowDownload - Specifies whether to download the file or not.\n * @returns {Promise} - Returns the promise string.\n * @private\n */\n ImageExport.prototype.export = function (treeMap, type, fileName, allowDownload) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n var promise = new Promise(function (resolve, reject) {\n var element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'height': treeMap.availableSize.height.toString(),\n 'width': treeMap.availableSize.width.toString()\n }\n });\n var exportElement = treeMap.svgObject.cloneNode(true);\n var backgroundElement = exportElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n var backgroundColor = backgroundElement.getAttribute('fill');\n if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(0, 0, 0, 1)');\n }\n }\n var isDownload = !(Browser.userAgent.toString().indexOf('HeadlessChrome') > -1);\n var svgData = '<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">' +\n exportElement.outerHTML +\n '</svg>';\n var url = window.URL.createObjectURL(new Blob(type === 'SVG' ? [svgData] :\n [(new XMLSerializer()).serializeToString(exportElement)], { type: 'image/svg+xml' }));\n if (type === 'SVG') {\n if (allowDownload) {\n triggerDownload(fileName, type, url, isDownload);\n }\n else {\n resolve(null);\n }\n }\n else {\n var image_1 = new Image();\n var context_1 = element.getContext('2d');\n image_1.onload = (function () {\n context_1.drawImage(image_1, 0, 0);\n window.URL.revokeObjectURL(url);\n if (allowDownload) {\n triggerDownload(fileName, type, element.toDataURL('image/png').replace('image/png', 'image/octet-stream'), isDownload);\n }\n else {\n if (type === 'JPEG') {\n resolve(element.toDataURL('image/jpeg'));\n }\n else if (type === 'PNG') {\n resolve(element.toDataURL('image/png'));\n }\n }\n });\n image_1.src = url;\n }\n });\n return promise;\n };\n ImageExport.prototype.getModuleName = function () {\n // Returns te module name\n return 'ImageExport';\n };\n /**\n * To destroy the ImageExport.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n ImageExport.prototype.destroy = function () { };\n return ImageExport;\n}());\nexport { ImageExport };\n","import { createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { PdfPageOrientation, PdfDocument, PdfBitmap } from '@syncfusion/ej2-pdf-export';\n/**\n * PdfExport module handles the export to pdf functionality for treemap.\n *\n * @hidden\n */\nvar PdfExport = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n function PdfExport(control) {\n }\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param {ExportType} type - Specifies the type of the document.\n * @param {string} fileName - Specifies the name of the document.\n * @param {PdfPageOrientation} orientation - Specifies the orientation of the PDF document to export the treemap.\n * @param {boolean} allowDownload - Specifies whether to download the document or not.\n * @returns {Promise} - Returns the string.\n * @private\n */\n PdfExport.prototype.export = function (treeMap, type, fileName, orientation, allowDownload) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n var promise = new Promise(function (resolve, reject) {\n var element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'width': treeMap.availableSize.width.toString(),\n 'height': treeMap.availableSize.height.toString()\n }\n });\n orientation = isNullOrUndefined(orientation) ? PdfPageOrientation.Landscape : orientation;\n var exportElement = treeMap.svgObject.cloneNode(true);\n var backgroundElement = exportElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n var backgroundColor = backgroundElement.getAttribute('fill');\n if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(0, 0, 0, 1)');\n }\n }\n var url = window.URL.createObjectURL(new Blob([(new XMLSerializer()).serializeToString(exportElement)], { type: 'image/svg+xml' }));\n var image = new Image();\n var context = element.getContext('2d');\n image.onload = (function () {\n context.drawImage(image, 0, 0);\n window.URL.revokeObjectURL(url);\n var document = new PdfDocument();\n var imageString = element.toDataURL('image/jpeg').replace('image/jpeg', 'image/octet-stream');\n document.pageSettings.orientation = orientation;\n imageString = imageString.slice(imageString.indexOf(',') + 1);\n document.pages.add().graphics.drawImage(new PdfBitmap(imageString), 0, 0, (treeMap.availableSize.width - 60), treeMap.availableSize.height);\n if (allowDownload) {\n document.save(fileName + '.pdf');\n document.destroy();\n }\n else {\n resolve(null);\n }\n });\n image.src = url;\n });\n return promise;\n };\n PdfExport.prototype.getModuleName = function () {\n // Returns te module name\n return 'PdfExport';\n };\n /**\n * To destroy the PdfExport.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n PdfExport.prototype.destroy = function () { };\n return PdfExport;\n}());\nexport { PdfExport };\n","/**\n * Tree Map Components\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, NotifyPropertyChanges, Property, extend, Fetch } from '@syncfusion/ej2-base';\nimport { Complex, Collection } from '@syncfusion/ej2-base';\nimport { Event, Internationalization } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\nimport { isNullOrUndefined, createElement, EventHandler, Browser, remove } from '@syncfusion/ej2-base';\nimport { Border, Margin, TitleSettings, LegendSettings, InitialDrillSettings } from './model/base';\nimport { SelectionSettings, TooltipSettings, LevelSettings, LeafItemSettings, HighlightSettings } from './model/base';\nimport { Size, stringToNumber, RectOption, Rect, textTrim, measureText, findChildren, removeElement, setItemTemplateContent } from '../treemap/utils/helper';\nimport { removeClassNames, removeShape, textFormatter } from '../treemap/utils/helper';\nimport { findPosition, TextOption, renderTextElement, isContainsData, TreeMapAjax } from '../treemap/utils/helper';\nimport { load, loaded, drillStart, drillEnd } from '../treemap/model/constants';\nimport { itemClick, itemMove, click, mouseMove, resize, doubleClick, rightClick } from '../treemap/model/constants';\nimport { LayoutPanel } from './layout/render-panel';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { getThemeStyle } from './model/theme';\nimport { Print } from './model/print';\nimport { ImageExport } from './model/image-export';\nimport { PdfExport } from './model/pdf-export';\n/**\n * Represents the treemap control. It is used to visualize both hierarchical and flat data.\n * ```html\n * <div id=\"container\"/>\n * <script>\n * var treemap = new TreeMap();\n * treemap.appendTo(\"#container\");\n * </script>\n * ```\n */\nvar TreeMap = /** @class */ (function (_super) {\n __extends(TreeMap, _super);\n /**\n * Constructor for TreeMap.\n *\n * @param {TreeMapModel} options - Specifies the treemap instance.\n * @param {string | HTMLElement} element - Specifies the treemap element.\n */\n function TreeMap(options, element) {\n var _this = _super.call(this, options, element) || this;\n /**\n * resize the treemap\n */\n _this.isResize = false;\n /** @private */\n _this.orientation = 'Horizontal';\n /** @private */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.drilledItems = [];\n /** @private */\n _this.isHierarchicalData = false;\n /** @private */\n _this.levelSelection = [];\n /** @private */\n _this.legendId = [];\n return _this;\n }\n TreeMap.prototype.preRender = function () {\n var _this = this;\n this.trigger(load, { treemap: this }, function () {\n _this.initPrivateVariable();\n _this.unWireEVents();\n _this.createSvg();\n _this.wireEVents();\n _this.setCulture();\n });\n };\n TreeMap.prototype.render = function () {\n this.renderElements();\n };\n TreeMap.prototype.renderElements = function () {\n this.treemapLevelData = new LevelsData();\n this.treemapLevelData.levelsData = null;\n this.treemapLevelData.defaultLevelsData = null;\n this.treemapLevelData.hierarchyData = null;\n this.createSecondaryElement();\n this.addTabIndex();\n this.themeStyle = getThemeStyle(this.theme);\n this.renderBorder();\n this.renderTitle(this.titleSettings, 'title', null, null);\n if (!isNullOrUndefined(this.treemapLevelData.levelsData)) {\n this.treemapLevelData.defaultLevelsData = this.treemapLevelData.levelsData;\n }\n this.processDataManager();\n };\n TreeMap.prototype.processDataManager = function () {\n var _this = this;\n var dataModule;\n var queryModule;\n var fetchApiModule;\n var localAjax;\n if (this.dataSource instanceof DataManager) {\n dataModule = this.dataSource;\n queryModule = this.query instanceof Query ? this.query : new Query();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataManager = dataModule.executeQuery(queryModule);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataManager.then(function (e) {\n _this.dataSource = e['result'];\n _this.renderTreeMapElements();\n });\n }\n else if (this.dataSource instanceof TreeMapAjax) {\n localAjax = this.dataSource;\n fetchApiModule = new Fetch(localAjax.dataOptions, localAjax.type, localAjax.contentType);\n fetchApiModule.onSuccess = function (args) {\n _this.dataSource = args;\n _this.renderTreeMapElements();\n };\n fetchApiModule.send(localAjax.sendData);\n }\n else {\n this.renderTreeMapElements();\n }\n };\n TreeMap.prototype.renderTreeMapElements = function () {\n this.processingData();\n if (this.treeMapLegendModule && this.legendSettings.visible) {\n this.treeMapLegendModule.renderLegend();\n }\n this.layout.processLayoutPanel();\n this.element.appendChild(this.svgObject);\n this.elementChange();\n this.trigger(loaded, { treemap: this, isResized: this.isResize });\n this.isResize = false;\n this.renderComplete();\n };\n TreeMap.prototype.createSvg = function () {\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n if (isNullOrUndefined(this.renderer)) {\n this.renderer = new SvgRenderer(this.element.id);\n }\n if (isNullOrUndefined(this.layout)) {\n this.layout = new LayoutPanel(this);\n }\n this.clearTemplate();\n var containerWidth = this.element.clientWidth;\n var containerHeight = this.element.clientHeight;\n this.availableSize = new Size(stringToNumber(this.width, containerWidth) || containerWidth || 600, stringToNumber(this.height, containerHeight) || containerHeight || 450);\n this.svgObject = this.renderer.createSvg({\n id: this.element.id + '_svg',\n width: this.availableSize.width,\n height: this.availableSize.height\n });\n };\n /**\n * To initilize the private varibales of treemap.\n *\n * @returns {void}\n */\n TreeMap.prototype.initPrivateVariable = function () {\n if (this.element.id === '') {\n var collection = document.getElementsByClassName('e-treemap').length;\n this.element.id = 'treemap_control_' + collection;\n }\n this.renderer = new SvgRenderer(this.element.id);\n this.layout = new LayoutPanel(this);\n };\n TreeMap.prototype.createSecondaryElement = function () {\n var secondaryEle = document.getElementById(this.element.id + '_Secondary_Element');\n if (secondaryEle && secondaryEle.childElementCount > 0) {\n secondaryEle.parentNode.removeChild(secondaryEle);\n }\n if (isNullOrUndefined(document.getElementById(this.element.id + '_Secondary_Element'))) {\n var secondaryElement = createElement('div', {\n id: this.element.id + '_Secondary_Element'\n });\n secondaryElement.style.cssText = 'position: absolute;z-index:1;';\n this.element.appendChild(secondaryElement);\n }\n };\n TreeMap.prototype.elementChange = function () {\n if (this.treeMapLegendModule && this.legendSettings.visible && this.treeMapLegendModule.legendGroup && this.layout.layoutGroup\n && !isNullOrUndefined(this.svgObject) && !isNullOrUndefined(document.getElementById(this.layout.layoutGroup.id))\n && !isNullOrUndefined(document.getElementById(this.treeMapLegendModule.legendGroup.id))) {\n this.svgObject.insertBefore(this.layout.layoutGroup, this.treeMapLegendModule.legendGroup);\n }\n };\n /**\n * Render the treemap border\n *\n * @private\n * @returns {void}\n */\n TreeMap.prototype.renderBorder = function () {\n var width = this.border.width;\n var borderElement = this.svgObject.querySelector('#' + this.element.id + '_TreeMap_Border');\n if ((this.border.width > 0 || (this.background || this.themeStyle.backgroundColor)) && isNullOrUndefined(borderElement)) {\n var borderRect = new RectOption(this.element.id + '_TreeMap_Border', this.background || this.themeStyle.backgroundColor, this.border, 1, new Rect(width / 2, width / 2, this.availableSize.width - width, this.availableSize.height - width));\n this.svgObject.appendChild(this.renderer.drawRectangle(borderRect));\n }\n else if (borderElement) {\n borderElement.setAttribute('fill', this.background || this.themeStyle.backgroundColor);\n }\n };\n TreeMap.prototype.renderTitle = function (title, type, bounds, groupEle) {\n var style = {\n color: title.textStyle.color, size: title.textStyle.size, fontFamily: title.textStyle.fontFamily,\n fontStyle: title.textStyle.fontStyle, fontWeight: title.textStyle.fontWeight, opacity: title.textStyle.opacity\n };\n var height;\n var titlePadding = 10;\n var width = (this.availableSize.width - this.margin.right - this.margin.left);\n style.fontFamily = style.fontFamily || this.themeStyle.fontFamily;\n style.fontWeight = style.fontWeight || this.themeStyle.titleFontWeight;\n style.size = style.size || (type === 'title' ? this.themeStyle.fontSize : this.themeStyle.subtitleFontSize);\n if (title.text) {\n if (isNullOrUndefined(groupEle)) {\n groupEle = this.renderer.createGroup({ id: this.element.id + '_Title_Group' });\n }\n var trimmedTitle = textTrim(width, title.text, style);\n var elementSize = measureText(trimmedTitle, style);\n var rect = (isNullOrUndefined(bounds)) ? new Rect(this.margin.left, this.margin.top, this.availableSize.width, this.availableSize.height) : bounds;\n var location_1 = findPosition(rect, title.alignment, elementSize, type);\n var options = new TextOption(this.element.id + '_TreeMap_' + type, location_1.x, location_1.y, 'start', trimmedTitle);\n var titleBounds = new Rect(location_1.x, location_1.y, elementSize.width, elementSize.height);\n var element = renderTextElement(options, style, style.color || (type === 'title' ? this.themeStyle.titleFontColor : this.themeStyle.subTitleFontColor), groupEle);\n element.setAttribute('aria-label', title.description || title.text);\n element.setAttribute('role', '');\n element.setAttribute('tabindex', (this.tabIndex + (type === 'title' ? 1 : 2)).toString());\n if ((type === 'title' && !title.subtitleSettings.text) || (type === 'subtitle')) {\n height = (this.availableSize.height - titleBounds.y - titlePadding - this.margin.bottom);\n this.areaRect = new Rect(this.margin.left, titleBounds.y + titlePadding, width, height);\n }\n if (type !== 'subtitle' && title.subtitleSettings.text) {\n this.renderTitle(title.subtitleSettings, 'subtitle', titleBounds, groupEle);\n }\n else {\n this.svgObject.appendChild(groupEle);\n }\n }\n else {\n height = (this.availableSize.height - this.margin.top - this.margin.bottom);\n this.areaRect = new Rect(this.margin.left, this.margin.top, width, height);\n }\n };\n TreeMap.prototype.processingData = function () {\n var _this = this;\n var path;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource = this.dataSource;\n if (!isNullOrUndefined(this.dataSource) && this.dataSource.length > 0 && this.weightValuePath) {\n this.treemapLevelData.levelsData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource.map(function (data) {\n data[_this.weightValuePath] = (data[_this.weightValuePath]) ? data[_this.weightValuePath].toString() :\n data[_this.weightValuePath];\n });\n this.leafItemSettings.labelPath = this.leafItemSettings.labelPath || this.weightValuePath;\n this.checkIsHierarchicalData();\n if (this.levels.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data_1 = {};\n data_1['level'] = 0;\n path = this.leafItemSettings.labelPath;\n data_1[path] = [];\n for (var i = 0; i < this.dataSource.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(this.dataSource[i])['values'];\n if (this.isHierarchicalData && child && child.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n child.forEach(function (currentData) {\n if (currentData[path]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data_1[path].push({\n groupIndex: 0, name: currentData[path],\n levelOrderName: currentData[path].toString(),\n data: currentData, weight: currentData[_this.weightValuePath]\n });\n }\n });\n }\n else {\n if (this.dataSource[i][path]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data_1[path].push({\n groupIndex: 0, name: this.dataSource[i][path], levelOrderName: this.dataSource[i][path].toString(), data: this.dataSource[i],\n weight: this.dataSource[i][this.weightValuePath]\n });\n }\n }\n }\n this.treemapLevelData.levelsData.push(data_1);\n }\n else {\n if (this.isHierarchicalData) {\n this.treemapLevelData.hierarchyData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemapLevelData.hierarchyData = extend([], this.dataSource, this.treemapLevelData.hierarchyData, true);\n for (var i = 0; i < this.treemapLevelData.hierarchyData.length; i++) {\n this.processHierarchicalData(this.treemapLevelData.hierarchyData[i], i);\n }\n this.treemapLevelData.levelsData = this.treemapLevelData.hierarchyData;\n }\n else {\n this.processFlatJsonData();\n if (this.treemapLevelData.levelsData.length > 1) {\n this.reOrderLevelData(this.treemapLevelData.levelsData.length - 1);\n }\n }\n path = this.levels[0].groupPath;\n }\n if (!this.isHierarchicalData) {\n this.findTotalWeight(this.treemapLevelData.levelsData[0][path], 'Parent');\n }\n }\n };\n TreeMap.prototype.checkIsHierarchicalData = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child;\n this.dataSource = this.dataSource;\n for (var i = 0; i < this.dataSource.length; i++) {\n child = findChildren(this.dataSource[i])['values'];\n if (child && child.length) {\n this.isHierarchicalData = true;\n break;\n }\n else if (i === this.dataSource.length - 1) {\n this.isHierarchicalData = false;\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.processHierarchicalData = function (data, dataCount) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childData;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newData = {};\n var levelIndex;\n var path = this.leafItemSettings.labelPath ? this.leafItemSettings.labelPath : this.weightValuePath;\n var key;\n newData = findChildren(data);\n childData = newData ? newData['values'] : null;\n if (childData && childData.length > 0) {\n key = newData['key'];\n for (var i = 0; i < this.levels.length; i++) {\n if (key === this.levels[i].groupPath) {\n levelIndex = i;\n }\n }\n for (var j = 0; j < childData.length; j++) {\n childData[j]['name'] = childData[j][path];\n childData[j]['levelOrderName'] = (levelIndex === 0 ? childData[j]['name'] :\n data['levelOrderName'] + '#' + childData[j]['name']) + '';\n var childItemLevel = childData[j]['levelOrderName'];\n var childLevel = void 0;\n if (childItemLevel.search('#') > 0) {\n childLevel = childItemLevel.split('#').length - 1;\n }\n childData[j]['groupIndex'] = isNullOrUndefined(levelIndex) ? childLevel === this.levels.length\n ? this.levels.length : childLevel : levelIndex;\n if (levelIndex !== 0) {\n childData[j]['parent'] = data;\n }\n childData[j]['groupName'] = key;\n childData[j]['data'] = childData[j];\n childData[j]['isDrilled'] = false;\n childData[j]['weight'] = childData[j][this.weightValuePath];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childData.forEach(function (currentData) {\n _this.processHierarchicalData(currentData, dataCount);\n });\n }\n if (dataCount === this.treemapLevelData.hierarchyData.length - 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var mainData_1 = this.treemapLevelData.hierarchyData[0][this.levels[0].groupPath];\n for (var k = 0; k < this.treemapLevelData.hierarchyData.length; k++) {\n childData = findChildren(this.treemapLevelData.hierarchyData[k])['values'];\n if (k !== 0 && childData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childData.forEach(function (currentData) { mainData_1.push(currentData); });\n this.treemapLevelData.hierarchyData.splice(k, 1);\n k -= 1;\n }\n }\n mainData_1 = this.treemapLevelData.hierarchyData[0][this.levels[0].groupPath];\n for (var l = 0; l < mainData_1.length; l++) {\n newData[this.levels[0].groupPath] = mainData_1;\n mainData_1[l]['parent'] = newData;\n }\n }\n };\n /* eslint-disable valid-jsdoc */\n /**\n * This method is used to perform the print functionality in treemap.\n *\n * @param {string[] | string | Element} id - Specifies the element to print the treemap.\n * @returns {void}\n */\n TreeMap.prototype.print = function (id) {\n if (this.allowPrint && this.printModule) {\n this.printModule.print(this, id);\n }\n };\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {ExportType} type - Specifies the extension type of the exported document.\n * @param {string} fileName - Specifies file name for exporting the rendered TreeMap.\n * @param {PdfPageOrientation} orientation - Specifies the orientation of the PDF document.\n * @param {boolean} allowDownload - Specifies whether the exported file should be downloaded or not.\n * @returns {string} - Specifies the base64 string of the exported image which is returned when the allowDownload is set to false.\n */\n TreeMap.prototype.export = function (type, fileName, orientation, allowDownload) {\n var _this = this;\n if (isNullOrUndefined(allowDownload)) {\n allowDownload = true;\n }\n if (type === 'PDF' && this.allowPdfExport && this.pdfExportModule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n resolve(_this.pdfExportModule.export(_this, type, fileName, orientation, allowDownload));\n });\n }\n else if (this.allowImageExport && (type !== 'PDF') && this.imageExportModule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n resolve(_this.imageExportModule.export(_this, type, fileName, allowDownload));\n });\n }\n return null;\n };\n TreeMap.prototype.processFlatJsonData = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource = this.dataSource;\n var groupPath;\n var orderNames = [];\n for (var i = 0; i < this.levels.length + 1; i++) {\n groupPath = this.levels[i] ? this.levels[i].groupPath : this.leafItemSettings.labelPath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var level = {};\n level['level'] = i;\n level[groupPath] = [];\n this.treemapLevelData.levelsData.push(level);\n for (var j = 0; j < this.dataSource.length; j++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = {};\n var childName = '';\n if (!isNullOrUndefined(groupPath)) {\n var name_1 = this.dataSource[j][groupPath];\n if (i !== 0) {\n for (var k = 0; k <= i; k++) {\n var childGroupPath = this.levels[k] ? this.levels[k].groupPath : groupPath;\n childName += (this.dataSource[j][childGroupPath]) + ((k === i) ? '' : '#');\n }\n }\n if (!(orderNames.length > 0 ? orderNames.indexOf(childName ?\n childName : name_1) !== -1 : false)) {\n currentData['name'] = name_1;\n currentData['levelOrderName'] = ((childName) ? childName : name_1) + '';\n currentData['groupIndex'] = i;\n currentData['isDrilled'] = false;\n currentData['groupName'] = groupPath;\n currentData['data'] = this.dataSource[j];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemapLevelData.levelsData[(this.treemapLevelData.levelsData.length - 1)][groupPath].push(currentData);\n orderNames.push((childName) ? childName : name_1);\n }\n }\n }\n }\n };\n /**\n * This method orders the treemap level data.\n *\n * @param {number} start - Specifies the start value of the treemap level.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.reOrderLevelData = function (start) {\n var currentName;\n var currentPath = this.levels[start] ? this.levels[start].groupPath : this.leafItemSettings.labelPath;\n var prevPath = this.levels[start - 1].groupPath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = this.treemapLevelData.levelsData[start][currentPath];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var previousData = this.treemapLevelData.levelsData[start - 1][prevPath];\n for (var i = 0; i < currentData.length; i++) {\n currentName = currentData[i]['levelOrderName'];\n for (var j = 0; j < previousData.length; j++) {\n previousData[j][currentPath] = isNullOrUndefined(previousData[j][currentPath]) ?\n [] : previousData[j][currentPath];\n if (this.IsChildHierarchy(currentName.split('#'), previousData[j]['levelOrderName'].split('#'))) {\n if (isNullOrUndefined(currentData[i]['parent'])) {\n currentData[i]['parent'] = previousData[j];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n previousData[j][currentPath].push(currentData[i]);\n break;\n }\n }\n }\n this.findTotalWeight(this.treemapLevelData.levelsData[this.treemapLevelData.levelsData.length - 1][currentPath], 'Child');\n this.treemapLevelData.levelsData.splice(start, 1);\n if ((start - 1) > 0) {\n this.reOrderLevelData(start - 1);\n }\n };\n TreeMap.prototype.IsChildHierarchy = function (current, previous) {\n var isChild = false;\n for (var i = 0; i < previous.length; i++) {\n if (current.length < i || previous[i] !== current[i]) {\n return false;\n }\n else {\n isChild = true;\n }\n }\n return isChild;\n };\n /**\n * This method finds the weight value of the treemap level.\n *\n * @param {any[]} processData - Specifies the treemap data.\n * @param {string} type - Specifies the type of the data.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.findTotalWeight = function (processData, type) {\n var _this = this;\n var totalWeight;\n var split;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var groupName;\n var groupObj = {};\n var _loop_1 = function (i) {\n totalWeight = 0;\n groupName = processData[i]['groupName'];\n split = processData[i]['levelOrderName'].split('#');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this_1.dataSource.forEach(function (data) {\n if (isContainsData(split, processData[i]['levelOrderName'], data, _this)) {\n totalWeight += parseFloat(data[_this.weightValuePath]);\n }\n });\n if (type === 'Parent') {\n groupObj[groupName] = processData;\n processData[i]['parent'] = groupObj;\n }\n processData[i]['weight'] = totalWeight;\n };\n var this_1 = this;\n for (var i = 0; i < processData.length; i++) {\n _loop_1(i);\n }\n };\n /**\n * To unbind event handlers for treemap.\n *\n * @returns {void}\n * @private\n */\n TreeMap.prototype.unWireEVents = function () {\n EventHandler.remove(this.element, 'click', this.clickOnTreeMap);\n EventHandler.remove(this.element, 'dblclick', this.doubleClickOnTreeMap);\n EventHandler.remove(this.element, 'contextmenu', this.rightClickOnTreeMap);\n EventHandler.remove(this.element, Browser.touchStartEvent, this.mouseDownOnTreeMap);\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.mouseMoveOnTreeMap);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.mouseEndOnTreeMap);\n EventHandler.remove(this.element, 'pointerleave mouseleave', this.mouseLeaveOnTreeMap);\n window.removeEventListener('resize', this.resizeEvent);\n };\n /**\n * To bind event handlers for treemap.\n *\n * @returns {void}\n */\n TreeMap.prototype.wireEVents = function () {\n EventHandler.add(this.element, 'click', this.clickOnTreeMap, this);\n EventHandler.add(this.element, 'dblclick', this.doubleClickOnTreeMap, this);\n EventHandler.add(this.element, 'contextmenu', this.rightClickOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchStartEvent, this.mouseDownOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchMoveEvent, this.mouseMoveOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchEndEvent, this.mouseEndOnTreeMap, this);\n EventHandler.add(this.element, 'pointerleave mouseleave', this.mouseLeaveOnTreeMap, this);\n this.resizeEvent = this.resizeOnTreeMap.bind(this);\n window.addEventListener('resize', this.resizeEvent);\n };\n /**\n * Method to set culture for maps\n *\n * @returns {void}\n */\n TreeMap.prototype.setCulture = function () {\n this.intl = new Internationalization();\n };\n /**\n * To add tab index for treemap element\n *\n * @returns {void}\n */\n TreeMap.prototype.addTabIndex = function () {\n this.element.setAttribute('aria-label', this.description || 'TreeMap Element');\n this.element.setAttribute('role', '');\n this.element.setAttribute('tabindex', this.tabIndex.toString());\n };\n /**\n * This method handles the window resize event on treemap.\n *\n * @param {Event} e - Specifies the pointer event.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TreeMap.prototype.resizeOnTreeMap = function (e) {\n var _this = this;\n if (!this.isDestroyed) {\n this.isResize = true;\n var args_1 = {\n name: resize,\n cancel: false,\n previousSize: this.availableSize,\n currentSize: new Size(0, 0),\n treemap: this\n };\n if (this.resizeTo) {\n clearTimeout(this.resizeTo);\n }\n if (!isNullOrUndefined(this.element) && this.element.classList.contains('e-treemap')) {\n this.resizeTo = setTimeout(function () {\n _this.unWireEVents();\n _this.createSvg();\n _this.refreshing = true;\n _this.wireEVents();\n args_1.currentSize = _this.availableSize;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _this.trigger(resize, args_1, function (observedArgs) {\n _this.render();\n _this.refreshing = false;\n });\n }, 500);\n }\n }\n };\n /**\n * This method handles the click event on the treemap.\n *\n * @param {PointerEvent} e - Specifies the mouse click event in the treemap.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.clickOnTreeMap = function (e) {\n var _this = this;\n var targetEle = e.target;\n var targetId = targetEle.id;\n var eventArgs;\n var itemIndex;\n var labelText = targetEle.innerHTML;\n var clickArgs = { cancel: false, name: click, treemap: this, mouseEvent: e };\n this.trigger(click, clickArgs);\n if (targetId.indexOf('_Item_Index') > -1) {\n e.preventDefault();\n itemIndex = parseFloat(targetId.split('_Item_Index_')[1]);\n eventArgs = {\n cancel: false, name: itemClick, treemap: this, item: this.layout.renderItems[itemIndex], mouseEvent: e,\n groupIndex: this.layout.renderItems[itemIndex]['groupIndex'], groupName: this.layout.renderItems[itemIndex]['name'],\n text: labelText, contentItemTemplate: labelText\n };\n this.trigger(itemClick, eventArgs, function (observedArgs) {\n if (observedArgs.text !== labelText || observedArgs.contentItemTemplate !== labelText) {\n if (isNullOrUndefined(_this.leafItemSettings.labelTemplate)) {\n observedArgs.text = textFormatter(observedArgs.text, observedArgs['item']['data'], observedArgs.treemap);\n targetEle.textContent = observedArgs.text;\n }\n else {\n setItemTemplateContent(targetId, targetEle, observedArgs.contentItemTemplate);\n }\n }\n });\n }\n var end = new Date().getMilliseconds();\n var doubleTapTimer1;\n if (!isNullOrUndefined(this.doubleClick)) {\n if (!isNullOrUndefined(doubleTapTimer1) && end - doubleTapTimer1 < 500) {\n this.doubleClickOnTreeMap(e);\n }\n doubleTapTimer1 = end;\n }\n };\n /**\n * This method handles the double click event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n */\n TreeMap.prototype.doubleClickOnTreeMap = function (e) {\n var doubleClickArgs = { cancel: false, name: doubleClick, treemap: this, mouseEvent: e };\n this.trigger(doubleClick, doubleClickArgs);\n //this.notify('dblclick', e);\n };\n /**\n * This method handles the right click event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.rightClickOnTreeMap = function (e) {\n var rightClickArgs = { cancel: false, name: rightClick, treemap: this, mouseEvent: e };\n this.trigger(rightClick, rightClickArgs);\n };\n /**\n * This method handles the mouse down event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.mouseDownOnTreeMap = function (e) {\n if (e.target.id.indexOf('_Item_Index') > -1) {\n this.mouseDown = true;\n }\n this.notify(Browser.touchStartEvent, e);\n };\n /**\n * This method handles the mouse move event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.mouseMoveOnTreeMap = function (e) {\n var targetEle = e.target;\n var targetId = targetEle.id;\n var eventArgs;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n var moveArgs = { cancel: false, name: mouseMove, treemap: this, mouseEvent: e };\n this.trigger(mouseMove, moveArgs);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childItems;\n if (targetId.indexOf('_Item_Index') > -1) {\n item = this.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childItems = findChildren(item)['values'];\n this.element.style.cursor = (!item['isLeafItem'] && childItems && childItems.length > 0 && this.enableDrillDown) ?\n 'pointer' : 'auto';\n eventArgs = { cancel: false, name: itemMove, treemap: this, item: item, mouseEvent: e };\n this.trigger(itemMove, eventArgs);\n }\n this.notify(Browser.touchMoveEvent, e);\n };\n /**\n * This method calculates the selected treemap levels.\n *\n * @param {string} labelText - Specifies the label text.\n * @param {any} item - Specifies the treemap item.\n * @returns {any} - Returns label of the drilled level.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n TreeMap.prototype.calculateSelectedTextLevels = function (labelText, item) {\n //to find the levels by clicking the particular text both for drillDownView as true / false.\n var drillLevel;\n var k;\n var text;\n var levelLabels = item['levelOrderName'];\n var levelText = levelLabels.split('#');\n for (var _i = 0, _a = Object.keys(levelText); _i < _a.length; _i++) {\n k = _a[_i];\n if (levelText[k] === labelText) {\n drillLevel = parseInt(k, 10);\n text = labelText;\n }\n }\n return { drillLevel: drillLevel, currentLevelLabel: text, levelText: levelText };\n };\n /**\n * This method calculates the previous level of child items in treemap.\n *\n * @param {any} drillLevelValues - Specifies the values of drill level.\n * @param {any} item - Specifies the treemap item.\n * @param {boolean} directLevel - Specifies the current level.\n * @returns {boolean} - check whether it is previous level or not.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n TreeMap.prototype.calculatePreviousLevelChildItems = function (drillLevelValues, item, directLevel) {\n //By clicking any child items drilldown to the particular level.\n //At the time store all the previous drilled level items in drilledItems\n // This condition satisfies while drilldown View is set as false and the text contains '[+]'\n var text;\n var p = 0;\n var levelItems;\n var text1;\n var drillTextLevel = this.layout.renderItems[0]['levelOrderName'].split('#').length;\n for (var h = 0; h < drillTextLevel; h++) {\n text1 = h === 0 ? drillLevelValues['levelText'][h] : text1 + '#' + drillLevelValues['levelText'][h];\n }\n p = drillTextLevel > 1 ? drillTextLevel : p;\n for (var _i = 0, _a = Object['values'](this.layout.renderItems); _i < _a.length; _i++) {\n levelItems = _a[_i];\n var drillLevelText = levelItems['levelOrderName'].split('#');\n if (drillLevelText[0] === drillLevelValues['levelText'][0]) {\n text = p === 0 ? isNullOrUndefined(text1) ? text1 : drillLevelValues['levelText'][p] :\n directLevel ? text1 : text1 + '#' + drillLevelValues['levelText'][p];\n if (text === levelItems['levelOrderName']) {\n this.drilledItems.push({ name: levelItems['levelOrderName'], data: levelItems });\n p++;\n directLevel = true;\n if (p <= item['groupIndex']) {\n text = text + '#' + drillLevelValues['levelText'][p];\n text1 = text;\n }\n }\n }\n }\n return directLevel;\n };\n /**\n * This method compares the selected labels with the drill down items.\n *\n * @param {any} drillLevelValues - Specifies the values of drill level.\n * @param {any} item - Specifies the treemap item.\n * @param {number} i - Specifies the treemap item.\n * @returns {any} - return the new drill down object.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n TreeMap.prototype.compareSelectedLabelWithDrillDownItems = function (drillLevelValues, item, i) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var drillLevelChild;\n var newDrillItem = {};\n var b = drillLevelValues['drillLevel'] + 1;\n if (b === this.drilledItems[i]['data']['groupIndex']) {\n drillLevelChild = this.drilledItems[i]['data']['parent'];\n drillLevelChild['isDrilled'] = true;\n newDrillItem[drillLevelChild[this.drilledItems[i]['data']['groupName']]]\n = [drillLevelChild];\n // to remove all the items after matched drilled items\n this.drilledItems.splice(i, this.drilledItems.length);\n }\n else if (drillLevelValues['drillLevel'] === (this.drilledItems.length - 1)\n || drillLevelValues['drillLevel'] === item['groupIndex']) {\n newDrillItem[item['groupName']] = [item];\n }\n return newDrillItem;\n };\n /**\n * This method handles mouse end event in treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.mouseEndOnTreeMap = function (e) {\n var _this = this;\n var targetEle = e.target;\n var targetId = targetEle.id;\n var totalRect;\n var startEvent;\n var endEvent;\n var directLevel = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var index;\n var newDrillItem = {};\n var item;\n var process = true;\n var layoutID = this.element.id + '_TreeMap_' + this.layoutType + '_Layout';\n var drillLevel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateID = this.element.id + '_Label_Template_Group';\n var drillLevelValues;\n if (targetId.indexOf('_Item_Index') > -1 && this.enableDrillDown && !this.drillMouseMove) {\n if (e.cancelable) {\n e.preventDefault();\n }\n index = parseFloat(targetId.split('_Item_Index_')[1]);\n item = this.layout.renderItems[index];\n var labelText = targetEle.textContent;\n if (this.enableBreadcrumb) {\n drillLevelValues = this.calculateSelectedTextLevels(labelText, item);\n drillLevel = drillLevelValues['drillLevel'];\n if (!this.drillDownView && labelText.search('[+]') !== -1) {\n directLevel = this.calculatePreviousLevelChildItems(drillLevelValues, item, directLevel);\n }\n }\n if (this.levels.length !== 0 && !item['isLeafItem'] && findChildren(item)['values'] &&\n findChildren(item)['values'].length > 0) {\n if (this.drilledItems.length > 0) {\n item = directLevel ? this.drilledItems[this.drilledItems.length - 1]['data'] : item;\n for (var i = 0; i < this.drilledItems.length; i++) {\n if (!isNullOrUndefined(drillLevel)) { //Compare the selected text level with drilled items\n var drillLength = this.drilledItems.length;\n newDrillItem = this.compareSelectedLabelWithDrillDownItems(drillLevelValues, item, i);\n if (drillLength !== this.drilledItems.length) {\n i -= 1;\n break;\n }\n } //when clicking the levels drill back to the previous level process takes place\n if (item['levelOrderName'] === this.drilledItems[i]['name'] && !directLevel && isNullOrUndefined(drillLevel)) {\n if (item['groupIndex'] === 0 && item['parent'][item['groupName']] instanceof Array) {\n item['isDrilled'] = !(item['isDrilled']);\n if (!item['isDrilled']) {\n newDrillItem = item['parent'];\n }\n else {\n newDrillItem[item['groupName']] = [item];\n }\n }\n else {\n item['isDrilled'] = false;\n item['parent']['isDrilled'] = true;\n item = item['parent'];\n newDrillItem[item['groupName']] = [item];\n }\n this.drilledItems.splice(i, 1);\n i -= 1;\n break;\n }\n else if (i === this.drilledItems.length - 1 && isNullOrUndefined(drillLevel)) {\n item['isDrilled'] = true; // click the items move to next level.\n newDrillItem[item['groupName']] = [item];\n }\n }\n }\n else {\n item['isDrilled'] = true;\n newDrillItem[item['groupName']] = [item];\n }\n startEvent = {\n cancel: false, name: drillStart, treemap: this,\n element: targetEle, groupIndex: this.enableBreadcrumb &&\n this.drilledItems.length !== 0 && !isNullOrUndefined(drillLevel) ?\n this.drilledItems[this.drilledItems.length - 1]['data']['groupIndex'] : item['groupIndex'],\n groupName: this.enableBreadcrumb && this.drilledItems.length !== 0 && !isNullOrUndefined(drillLevel) ?\n this.drilledItems[this.drilledItems.length - 1]['data']['name'] : item['name'],\n rightClick: e.which === 3 ? true : false, childItems: null, item: newDrillItem\n };\n this.trigger(drillStart, startEvent, function (observedArgs) {\n _this.currentLevel = item['isDrilled'] && isNullOrUndefined(drillLevel) ? item['groupIndex'] :\n (!isNullOrUndefined(drillLevel) && _this.enableBreadcrumb && item['isDrilled']) ? drillLevel : null;\n if (!observedArgs.cancel) {\n if (document.getElementById(layoutID)) {\n var layerElementId = document.getElementById(layoutID);\n layerElementId.parentNode.removeChild(layerElementId);\n }\n totalRect = extend({}, _this.areaRect, totalRect, true);\n if (_this.legendSettings.visible && !isNullOrUndefined(_this.treeMapLegendModule)) {\n if (!isNullOrUndefined(newDrillItem)) {\n _this.treeMapLegendModule.legendGroup.textContent = '';\n _this.treeMapLegendModule.legendGroup = null;\n _this.treeMapLegendModule.widthIncrement = 0;\n _this.treeMapLegendModule.heightIncrement = 0;\n if (_this.enableBreadcrumb && !isNullOrUndefined(drillLevel)) {\n _this.drilledLegendItems = {\n name: _this.drilledItems[_this.drilledItems.length - 1]['data']['levelOrderName'],\n data: _this.drilledItems[_this.drilledItems.length - 1]['data']\n };\n }\n else {\n _this.drilledLegendItems = { name: item['levelOrderName'], data: item };\n }\n _this.treeMapLegendModule.renderLegend();\n }\n totalRect = !isNullOrUndefined(_this.totalRect) ? _this.totalRect : totalRect;\n }\n if (document.getElementById(templateID)) {\n var drillElementId = document.getElementById(templateID);\n drillElementId.parentNode.removeChild(drillElementId);\n }\n if (!isNullOrUndefined(observedArgs.childItems) && !observedArgs.cancel) {\n _this.layout.onDemandProcess(observedArgs.childItems);\n }\n else {\n _this.layout.calculateLayoutItems(newDrillItem, totalRect);\n _this.layout.renderLayoutItems();\n }\n }\n });\n endEvent = { cancel: false, name: drillEnd, treemap: this, renderItems: this.layout.renderItems };\n this.trigger(drillEnd, endEvent);\n if (process) {\n if (!directLevel && isNullOrUndefined(drillLevel)) {\n this.drilledItems.push({ name: item['levelOrderName'], data: item });\n }\n }\n }\n }\n this.mouseDown = false;\n this.notify(Browser.touchEndEvent, e);\n };\n /**\n * This method handles mouse leave event in treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse.\n * @return {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TreeMap.prototype.mouseLeaveOnTreeMap = function (e) {\n if (this.treeMapTooltipModule) {\n this.treeMapTooltipModule.removeTooltip();\n }\n if (this.treeMapLegendModule) {\n this.treeMapLegendModule.removeInteractivePointer();\n }\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', this);\n if (this.treeMapHighlightModule) {\n removeShape(this.treeMapHighlightModule.shapeHighlightCollection);\n this.treeMapHighlightModule.highLightId = '';\n }\n };\n /**\n * This method is used to select or remove the selection of treemap item based on the provided selection settings.\n *\n * @param {string[]} levelOrder - Specifies the order of the level.\n * @param {boolean} isSelected - Specifies whether the treemap item should be selected or the selection should be removed.\n * @return {void}\n */\n TreeMap.prototype.selectItem = function (levelOrder, isSelected) {\n if (isNullOrUndefined(isSelected)) {\n isSelected = true;\n }\n var levelOrderName = '';\n for (var i = 0; i < levelOrder.length; i++) {\n if (i !== levelOrder.length - 1) {\n levelOrderName += levelOrder[i] + '#';\n }\n else {\n levelOrderName += levelOrder[i];\n }\n }\n if (this.treeMapSelectionModule && this.selectionSettings.enable) {\n this.treeMapSelectionModule.selectTreemapItem(levelOrderName, isSelected);\n }\n };\n /**\n * To provide the array of modules needed for maps rendering\n *\n * @returns {ModuleDeclaration[]} Returns the modules\n * @private\n */\n TreeMap.prototype.requiredModules = function () {\n var modules = [];\n if (this.tooltipSettings.visible) {\n modules.push({\n member: 'treeMapTooltip',\n args: [this]\n });\n }\n if (this.highlightSettings.enable) {\n modules.push({\n member: 'treeMapHighlight',\n args: [this]\n });\n }\n if (this.selectionSettings.enable) {\n modules.push({\n member: 'treeMapSelection',\n args: [this]\n });\n }\n if (this.legendSettings.visible) {\n modules.push({\n member: 'treeMapLegend',\n args: [this]\n });\n }\n if (this.allowPrint) {\n modules.push({\n member: 'Print',\n args: [this, Print]\n });\n }\n if (this.allowImageExport) {\n modules.push({\n member: 'ImageExport',\n args: [this, ImageExport]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this, PdfExport]\n });\n }\n return modules;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TreeMapModel} newProp - Specifies the new property\n * @param {TreeMapModel} oldProp - Specifies the old property\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TreeMap.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.isDestroyed) {\n var render = false;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'background':\n this.renderBorder();\n break;\n case 'height':\n case 'width':\n case 'layoutType':\n case 'levels':\n case 'drillDownView':\n case 'renderDirection':\n case 'leafItemSettings':\n case 'legendSettings':\n case 'dataSource':\n render = true;\n break;\n }\n }\n if (render) {\n this.createSvg();\n this.renderElements();\n }\n }\n };\n /**\n * Gets component name.\n *\n * @returns {string} - return the treemap instance.\n * @private\n */\n TreeMap.prototype.getModuleName = function () {\n return 'treemap';\n };\n /**\n * This method destroys the treemap. This method removes the events associated with the treemap and disposes the objects created for rendering and updating the treemap.\n */\n TreeMap.prototype.destroy = function () {\n this.unWireEVents();\n removeElement('treeMapMeasureText');\n this.drilledItems = [];\n this.levelSelection = [];\n this.legendId = [];\n this.removeSvg();\n _super.prototype.destroy.call(this);\n };\n TreeMap.prototype.removeSvg = function () {\n removeElement(this.element.id + '_Secondary_Element');\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Returns the string value.\n * @private\n */\n TreeMap.prototype.getPersistData = function () {\n return '';\n };\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowPrint\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowImageExport\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"height\", void 0);\n __decorate([\n Complex({}, Border)\n ], TreeMap.prototype, \"border\", void 0);\n __decorate([\n Complex({}, Margin)\n ], TreeMap.prototype, \"margin\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"background\", void 0);\n __decorate([\n Property('Material')\n ], TreeMap.prototype, \"theme\", void 0);\n __decorate([\n Complex({}, TitleSettings)\n ], TreeMap.prototype, \"titleSettings\", void 0);\n __decorate([\n Property('Squarified')\n ], TreeMap.prototype, \"layoutType\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"weightValuePath\", void 0);\n __decorate([\n Property('')\n ], TreeMap.prototype, \"rangeColorValuePath\", void 0);\n __decorate([\n Property('')\n ], TreeMap.prototype, \"equalColorValuePath\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"colorValuePath\", void 0);\n __decorate([\n Property([])\n ], TreeMap.prototype, \"palette\", void 0);\n __decorate([\n Property('TopLeftBottomRight')\n ], TreeMap.prototype, \"renderDirection\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"enableDrillDown\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"enableBreadcrumb\", void 0);\n __decorate([\n Property(' - ')\n ], TreeMap.prototype, \"breadcrumbConnector\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"drillDownView\", void 0);\n __decorate([\n Complex({}, InitialDrillSettings)\n ], TreeMap.prototype, \"initialDrillDown\", void 0);\n __decorate([\n Complex({}, LeafItemSettings)\n ], TreeMap.prototype, \"leafItemSettings\", void 0);\n __decorate([\n Collection([], LevelSettings)\n ], TreeMap.prototype, \"levels\", void 0);\n __decorate([\n Complex({}, HighlightSettings)\n ], TreeMap.prototype, \"highlightSettings\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], TreeMap.prototype, \"selectionSettings\", void 0);\n __decorate([\n Complex({}, TooltipSettings)\n ], TreeMap.prototype, \"tooltipSettings\", void 0);\n __decorate([\n Complex({}, LegendSettings)\n ], TreeMap.prototype, \"legendSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"useGroupingSeparator\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"description\", void 0);\n __decorate([\n Property(1)\n ], TreeMap.prototype, \"tabIndex\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"format\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"drillStart\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"drillEnd\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemSelected\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemHighlight\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"tooltipRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemMove\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"doubleClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"rightClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"mouseMove\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"resize\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"legendItemRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"legendRendering\", void 0);\n TreeMap = __decorate([\n NotifyPropertyChanges\n ], TreeMap);\n return TreeMap;\n}(Component));\nexport { TreeMap };\n/**\n * @private\n */\nvar LevelsData = /** @class */ (function () {\n function LevelsData() {\n }\n return LevelsData;\n}());\nexport { LevelsData };\n","import { findChildren, Location, Rect, Size, measureText, TextOption, PathOption, RectOption, drawSymbol, orderByArea, legendMaintain } from '../utils/helper';\nimport { Browser, isNullOrUndefined, EventHandler, extend } from '@syncfusion/ej2-base';\nimport { renderTextElement, textTrim } from '../utils/helper';\nimport { legendItemRendering, legendRendering } from '../model/constants';\n/**\n * Legend module class\n */\nvar TreeMapLegend = /** @class */ (function () {\n function TreeMapLegend(treemap) {\n this.page = 0;\n /** @private */\n this.legendBorderRect = new Rect(0, 0, 0, 0);\n this.currentPage = 0;\n /** @private */\n this.heightIncrement = 0;\n /** @private */\n this.widthIncrement = 0;\n this.textMaxWidth = 0;\n this.legendInteractiveGradient = [];\n this.legendItemRect = new Rect(0, 0, 0, 0);\n this.treemap = treemap;\n this.addEventListener();\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * method for legend\n * @private\n */\n TreeMapLegend.prototype.renderLegend = function () {\n var _this = this;\n this.page = 0;\n this.legendRenderingCollections = [];\n this.legendCollections = [];\n this.legendNames = [];\n this.totalPages = [];\n this.gradientCount = 1;\n this.widthIncrement = 0;\n this.heightIncrement = 0;\n this.defsElement = this.treemap.renderer.createDefs();\n this.treemap.svgObject.appendChild(this.defsElement);\n var eventArgs = {\n cancel: false, name: legendRendering, treemap: this.treemap, _changePosition: this.treemap.legendSettings.position,\n position: this.treemap.legendSettings.position\n };\n this.treemap.trigger(legendRendering, eventArgs, function (observedArgs) {\n if (!observedArgs.cancel && observedArgs._changePosition !== _this.treemap.legendSettings.position) {\n _this.treemap.legendSettings.position = observedArgs._changePosition;\n }\n _this.calculateLegendBounds();\n if (_this.legendCollections.length > 0) {\n _this.drawLegend();\n }\n });\n };\n /** @private */\n TreeMapLegend.prototype.calculateLegendBounds = function () {\n var _this = this;\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n this.findColorMappingLegendItems(treemap.treemapLevelData.levelsData[0]);\n if ((this.treemap.palette.length > 0 || !isNullOrUndefined(treemap.colorValuePath))\n && this.legendCollections.length === 0) {\n this.findPaletteLegendItems(treemap.treemapLevelData.levelsData[0]);\n }\n if (this.legendCollections.length > 0) {\n // eslint-disable-next-line @typescript-eslint/tslint/config\n this.legendCollections.sort(function (firstItem, nextItem) { return (firstItem.levelIndex > nextItem.levelIndex) ? 1 :\n (firstItem.levelIndex < nextItem.levelIndex) ? -1 : 0; });\n // eslint-disable-next-line @typescript-eslint/tslint/config\n this.legendCollections.sort(function (firstItem, nextItem) { return (firstItem.groupIndex > nextItem.groupIndex) ? 1 :\n (firstItem.groupIndex < nextItem.groupIndex) ? -1 : 0; });\n // eslint-disable-next-line @typescript-eslint/tslint/config\n this.legendCollections.sort(function (firstItem, nextItem) { return (firstItem.leafIndex > nextItem.leafIndex) ? 1 :\n (firstItem.leafIndex < nextItem.leafIndex) ? -1 : 0; });\n var defaultSize = 25;\n var textPadding = 10;\n var position = legend.position;\n var legendTitle = legend.title.text;\n var titleTextStyle = legend.titleStyle;\n var legendMode = legend.mode;\n var shapeX = 0;\n var shapeY = 0;\n var textX = 0;\n var textY = 0;\n var shapeHeight = legend.shapeHeight;\n var shapeWidth = legend.shapeWidth;\n var shapeLocation = [];\n var textLocation = [];\n var orientation_1 = (legend.orientation === 'None') ? ((position === 'Top' || position === 'Bottom'\n || (position === 'Auto' && treemap.availableSize.width <= treemap.availableSize.height))\n ? 'Horizontal' : 'Vertical') : legend.orientation;\n var leftPadding = 10;\n var topPadding = 10;\n var spacing = 10;\n var legendWidth = (legend.width.length > 1) ? (legend.width.indexOf('%') > -1) ? (treemap.availableSize.width / 100)\n * parseFloat(legend.width) : parseFloat(legend.width) : null;\n var legendHeight = (legend.height.length > 1) ? (legend.height.indexOf('%') > -1) ?\n (treemap.availableSize.height / 100) * parseFloat(legend.height) : parseFloat(legend.height) : null;\n titleTextStyle.fontFamily = treemap.themeStyle.fontFamily || titleTextStyle.fontFamily;\n titleTextStyle.fontWeight = titleTextStyle.fontWeight || treemap.themeStyle.titleFontWeight;\n titleTextStyle.size = treemap.themeStyle.legendFontSize || titleTextStyle.size;\n var legendTitleSize = measureText(legendTitle, titleTextStyle);\n var startX_1 = 0;\n var startY_1 = 0;\n var shapePadding = legend.shapePadding;\n var itemTextStyle = legend.textStyle;\n itemTextStyle.size = itemTextStyle.size || treemap.themeStyle.legendFontSize;\n itemTextStyle.fontFamily = itemTextStyle.fontFamily || treemap.themeStyle.fontFamily;\n itemTextStyle.fontWeight = itemTextStyle.fontWeight || treemap.themeStyle.fontWeight;\n if (legendMode === 'Default') {\n legendWidth = (isNullOrUndefined(legendWidth)) ? treemap.areaRect.width : legendWidth;\n legendHeight = (isNullOrUndefined(legendHeight)) ? treemap.areaRect.height : legendHeight;\n var j = 0;\n for (var i = 0; i < this.legendCollections.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var legendItem = this.legendCollections[i];\n if (isNullOrUndefined(this.totalPages[this.page])) {\n this.totalPages[this.page] = { Page: (this.page + 1), Collection: [] };\n }\n var legendTextSize = measureText(legendItem['legendName'], itemTextStyle);\n this.textMaxWidth = Math.max(this.textMaxWidth, legendTextSize.width);\n if (i === 0) {\n startX_1 = shapeX = (leftPadding + (shapeWidth / 2));\n startY_1 = shapeY = topPadding + legendTitleSize.height + (shapeHeight > legendTextSize.height ? shapeHeight / 2\n : (legendTextSize.height / 4));\n }\n else {\n var maxSize = (legendTextSize.height > shapeHeight) ? legendTextSize.height : shapeHeight;\n if (orientation_1 === 'Horizontal') {\n var prvePositionX = (textLocation[j - 1].x + textLocation[j - 1].width) + textPadding + shapeWidth;\n if ((prvePositionX + shapePadding + legendTextSize.width) > legendWidth) {\n var nextPositionY = (textLocation[j - 1].y > (shapeLocation[j - 1].y + (shapeHeight / 2)) ?\n textLocation[j - 1].y : (shapeLocation[j - 1].y + (shapeHeight / 2))) + topPadding;\n if ((nextPositionY + maxSize) > legendHeight) {\n this.getPageChanged();\n j = 0;\n shapeLocation = [];\n textLocation = [];\n shapeX = startX_1;\n shapeY = startY_1;\n }\n else {\n shapeX = (shapeLocation[0].x);\n shapeY = (nextPositionY + (maxSize / 2));\n }\n }\n else {\n shapeX = (prvePositionX - (shapeWidth / 2));\n shapeY = (shapeLocation[j - 1]).y;\n }\n }\n else {\n var prevPositionY = textLocation[j - 1].y > shapeLocation[j - 1].y + (shapeHeight / 2) ?\n textLocation[j - 1].y : shapeLocation[j - 1].y + (shapeHeight / 2);\n if ((prevPositionY + topPadding + maxSize) > legendHeight) {\n var nextPositionX = (textLocation[j - 1].x + this.textMaxWidth + textPadding);\n if ((nextPositionX + shapePadding + legendTextSize.width) > legendWidth) {\n shapeX = startX_1;\n shapeY = startY_1;\n textLocation = [];\n shapeLocation = [];\n this.getPageChanged();\n j = 0;\n }\n else {\n shapeX = nextPositionX + (shapeWidth / 2);\n shapeY = (shapeLocation[0].y);\n }\n }\n else {\n shapeX = shapeLocation[j - 1].x;\n shapeY = prevPositionY + topPadding + (shapeHeight / 2);\n }\n }\n }\n textX = shapeX + (shapeWidth / 2) + shapePadding;\n textY = shapeY + (legendTextSize.height / 4);\n shapeLocation.push({ x: shapeX, y: shapeY });\n textLocation.push({ x: textX, y: textY, width: legendTextSize.width, height: (legendTextSize.height / 2) });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalPages[this.page]['Collection'].push({\n DisplayText: legendItem['legendName'], element: legendItem['gradientElement'],\n Shape: { x: shapeX, y: shapeY },\n Text: { x: textX, y: textY },\n Fill: legendItem['legendFill'],\n Data: legendItem['legendData'],\n Rect: {\n x: shapeLocation[j].x - (shapeWidth / 2),\n y: (shapeLocation[j].y - (shapeHeight / 2)) < (textY - legendTextSize.height) ?\n (shapeLocation[j].y - (shapeHeight / 2)) : (textY - legendTextSize.height),\n width: Math.abs((shapeLocation[j].x - (shapeWidth / 2)) - (textX + legendTextSize.width)),\n height: ((shapeHeight > legendTextSize.height) ? shapeHeight : legendTextSize.height)\n }\n });\n j++;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.totalPages[0]['Collection'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n collection.forEach(function (legendObj, index) {\n var legendRect = new Rect(legendObj['Rect']['x'], legendObj['Rect']['y'], legendObj['Rect']['width'], legendObj['Rect']['height']);\n if (index === 0) {\n startX_1 = legendRect.x;\n startY_1 = legendRect.y;\n }\n _this.widthIncrement = Math.max(_this.widthIncrement, Math.abs(startX_1 - (legendRect.x + legendRect.width)));\n _this.heightIncrement = Math.max(_this.heightIncrement, Math.abs(startY_1 - (legendRect.y + legendRect.height)));\n });\n legendWidth = ((this.widthIncrement < legendWidth) ? this.widthIncrement : legendWidth);\n legendHeight = ((this.heightIncrement < legendHeight) ? this.heightIncrement : legendHeight);\n this.legendItemRect = {\n x: collection[0]['Rect']['x'], y: collection[0]['Rect']['y'],\n width: legendWidth, height: legendHeight\n };\n }\n else {\n var legendLength = this.legendCollections.length;\n var rectWidth = (orientation_1 === 'Horizontal') ? (isNullOrUndefined(legendWidth)) ? (treemap.areaRect.width / legendLength) :\n (legendWidth / legendLength) : (isNullOrUndefined(legendWidth)) ? defaultSize : legendWidth;\n var rectHeight = (orientation_1 === 'Horizontal') ? (isNullOrUndefined(legendHeight)) ? defaultSize : legendHeight :\n (isNullOrUndefined(legendHeight)) ? (treemap.areaRect.height / legendLength) : (legendHeight / legendLength);\n startX_1 = 0;\n startY_1 = legendTitleSize.height + spacing;\n var textPadding_1 = 10;\n var placement = legend.labelPosition;\n var itemStartX = 0;\n var itemStartY = 0;\n var labelAction = legend.labelDisplayMode;\n var maxTextHeight = 0;\n var maxTextWidth = 0;\n for (var i = 0; i < this.legendCollections.length; i++) {\n startX_1 = (orientation_1 === 'Horizontal') ? (startX_1 + rectWidth) : startX_1;\n startY_1 = (orientation_1 === 'Horizontal') ? startY_1 : (startY_1 + rectHeight);\n var legendText = this.legendCollections[i]['legendName'];\n var itemTextSize = new Size(0, 0);\n if (labelAction === 'None') {\n itemTextSize = measureText(legendText, itemTextStyle);\n }\n else if (labelAction === 'Trim') {\n legendText = textTrim((orientation_1 === 'Horizontal' ? rectWidth : rectHeight), legendText, itemTextStyle);\n itemTextSize = measureText(legendText, itemTextStyle);\n }\n else {\n legendText = '';\n }\n maxTextHeight = Math.max(maxTextHeight, itemTextSize.height);\n maxTextWidth = Math.max(maxTextWidth, itemTextSize.width);\n if (itemTextSize.width > 0 && itemTextSize.height > 0) {\n if (orientation_1 === 'Horizontal') {\n textX = startX_1 + (rectWidth / 2);\n textY = (placement === 'After') ? (startY_1 + rectHeight + (itemTextSize.height / 2)) + textPadding_1 :\n (startY_1 - textPadding_1);\n }\n else {\n textX = (placement === 'After') ? startX_1 - (itemTextSize.width / 2) - textPadding_1\n : (startX_1 + rectWidth + itemTextSize.width / 2) + textPadding_1;\n textY = startY_1 + (rectHeight / 2) + (itemTextSize.height / 4);\n }\n }\n if (i === 0) {\n itemStartX = (orientation_1 === 'Horizontal') ? startX_1 : (placement === 'After') ?\n textX - (itemTextSize.width / 2) : startX_1;\n itemStartY = (orientation_1 === 'Horizontal') ? (placement === 'After') ? startY_1 :\n textY - (itemTextSize.height / 2) : startY_1;\n }\n if (i === legendLength - 1) {\n legendWidth = (orientation_1 === 'Horizontal') ? Math.abs((startX_1 + rectWidth) - itemStartX) :\n (rectWidth + maxTextWidth + textPadding_1);\n legendHeight = (orientation_1 === 'Horizontal') ? (rectHeight + (maxTextHeight / 2) + textPadding_1) :\n Math.abs((startY_1 + rectHeight) - itemStartY);\n }\n this.legendRenderingCollections.push({\n fill: this.legendCollections[i]['legendFill'], x: startX_1, y: startY_1,\n width: rectWidth, height: rectHeight, element: this.legendCollections[i]['gradientElement'],\n text: legendText, textX: textX, textY: textY,\n textWidth: itemTextSize.width, textHeight: itemTextSize.height,\n data: this.legendCollections[i]['legendData']\n });\n }\n this.legendItemRect = { x: itemStartX, y: itemStartY, width: legendWidth, height: legendHeight };\n }\n }\n };\n TreeMapLegend.prototype.getPageChanged = function () {\n this.page++;\n if (isNullOrUndefined(this.totalPages[this.page])) {\n this.totalPages[this.page] = { Page: (this.page + 1), Collection: [] };\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.findColorMappingLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n if (child && child.length > 0) {\n this.calculateLegendItems(child);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < child.length; i++) {\n this.findColorMappingLegendItems(child[i]);\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.findPaletteLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child;\n var legendFillColor;\n if (!isNullOrUndefined(this.treemap.drilledItems)) {\n if (this.treemap.drilledItems.length === 0 && !isNullOrUndefined(this.treemap.initialDrillDown.groupName)\n && isNullOrUndefined(this.treemap.drilledLegendItems)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var items = findChildren(data)['values'];\n for (var k = 0; k < items.length; k++) {\n if (items[k]['Name'] === this.treemap.initialDrillDown.groupName) {\n items[k]['isDrilled'] = !items[k]['isDrilled'];\n data = items[k];\n this.treemap.currentLevel = this.treemap.initialDrillDown.groupIndex;\n legendFillColor = this.treemap.palette.length > 0 ? this.treemap.palette[k % this.treemap.palette.length] :\n items[k]['data'][this.treemap.colorValuePath];\n break;\n }\n }\n }\n }\n if (this.treemap.enableDrillDown && !isNullOrUndefined(this.treemap.drilledLegendItems)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childElement = this.treemap.drilledLegendItems;\n legendFillColor = childElement['data']['options']['fill'];\n if (childElement['data']['isDrilled']) {\n child = findChildren(childElement['data'])['values'];\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentElement = childElement['data']['parent'];\n child = findChildren(parentElement)['values'];\n }\n }\n else {\n child = findChildren(data)['values'];\n }\n var isDuplicate;\n var legendName;\n if (child && child.length > 0) {\n for (var i = 0; i < child.length; i++) {\n if (isNullOrUndefined(child[i]['data'][this.treemap.legendSettings.showLegendPath]) ||\n child[i]['data'][this.treemap.legendSettings.showLegendPath]) {\n legendName = child[i]['data'][this.treemap.legendSettings.valuePath] ?\n child[i]['data'][this.treemap.legendSettings.valuePath] : child[i]['name'];\n isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, legendName) : false;\n if (!isDuplicate) {\n this.legendCollections.push({\n legendName: legendName,\n legendFill: this.treemap.palette.length > 0 ? !isNullOrUndefined(this.treemap.currentLevel)\n ? legendFillColor : this.treemap.palette[i % this.treemap.palette.length] :\n child[i]['data'][this.treemap.colorValuePath],\n legendData: [],\n itemArea: child[i]['weight']\n });\n }\n }\n }\n this.legendCollections.sort(orderByArea);\n if (this.treemap.palette.length > 0) {\n for (var j = 0; j < this.legendCollections.length; j++) {\n this.legendCollections[j]['legendFill'] = !isNullOrUndefined(this.treemap.currentLevel)\n ? legendFillColor : this.treemap.palette[j % this.treemap.palette.length];\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.calculateLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isAddData;\n var fill;\n var rangeValue;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData;\n var legendText;\n var isLeafItem;\n var colorMapProcess = false;\n var colorMapping;\n var groupIndex;\n var leaf = this.treemap.leafItemSettings;\n var levels = this.treemap.levels;\n var equalValue;\n var position = this.treemap.legendSettings.position;\n var gradientElement;\n var x2;\n var y2;\n var actualValue;\n var isDuplicate;\n var isEqualColor;\n var isRange;\n var isDesaturation = false;\n var legendIndex = 0;\n var outfill;\n var labelLegend;\n var otherIndex;\n this.outOfRangeLegend = null;\n for (var i = 0; i < data.length; i++) {\n fill = '';\n isEqualColor = false;\n isRange = false;\n isDesaturation = false;\n currentData = data[i]['data'];\n groupIndex = data[i]['groupIndex'];\n isLeafItem = (this.treemap.levels.length === 0 || groupIndex === this.treemap.levels.length);\n colorMapping = isLeafItem ? leaf.colorMapping : levels[groupIndex].colorMapping;\n for (var j = 0; j < colorMapping.length; j++) {\n var colorMap = colorMapping[j];\n gradientElement = null;\n rangeValue = Number(currentData[this.treemap.rangeColorValuePath]);\n equalValue = currentData[this.treemap.equalColorValuePath];\n colorMap.value = !isNullOrUndefined(colorMap.value) ? colorMap.value.toString() : colorMap.value;\n if (!isNullOrUndefined(colorMap.from) && !isNullOrUndefined(colorMap.to) &&\n rangeValue >= colorMap.from && rangeValue <= colorMap.to && colorMap.showLegend) {\n colorMapProcess = true;\n isRange = true;\n actualValue = colorMap.from + ' - ' + colorMap.to;\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : colorMap.from + ' - ' + colorMap.to;\n fill = isNullOrUndefined(colorMap.color) ? fill : colorMap.color;\n isAddData = this.isAddNewLegendData(actualValue);\n }\n else if (!isNullOrUndefined(colorMap.value) && equalValue === colorMap.value && colorMap.showLegend) {\n colorMapProcess = true;\n isEqualColor = true;\n actualValue = colorMap.value.toString();\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : colorMap.value.toString();\n fill = isNullOrUndefined(colorMap.color) ? fill :\n Object.prototype.toString.call(colorMap.color) === '[object Array]' ? colorMap.color[0] : colorMap.color;\n isAddData = this.isAddNewLegendData(actualValue);\n }\n if (colorMapProcess && isNullOrUndefined(colorMap.value) && colorMap.maxOpacity && colorMap.minOpacity\n && this.treemap.legendSettings.mode === 'Interactive') {\n var colors = [];\n isDesaturation = true;\n if (Object.prototype.toString.call(colorMap.color) === '[object Array]') {\n for (var q = 0; q < colorMap.color.length; q++) {\n var offsetColor = 100 / (colorMap.color.length - 1);\n var offsetValue = q * offsetColor + '%';\n var stop1Color = { colorStop: offsetValue.toString(), color: colorMap.color[q] };\n colors.push(stop1Color);\n }\n }\n else {\n var stop1Color = { colorStop: '0%', color: fill };\n var stop2Color = { colorStop: '100%', color: fill };\n colors.push(stop1Color);\n colors.push(stop2Color);\n }\n x2 = position === 'Top' || position === 'Bottom' ? '100%' : '0%';\n y2 = position === 'Top' || position === 'Bottom' ? '0%' : '100%';\n var gradient = {\n id: 'groupIndex_' + groupIndex + '_colorIndex_' + this.gradientCount, x1: '0%', y1: '0%', x2: x2, y2: y2\n };\n gradientElement = this.treemap.renderer.drawGradient('linearGradient', gradient, colors).childNodes[0];\n if (Object.prototype.toString.call(colorMap.color) !== '[object Array]') {\n gradientElement.childNodes[0].setAttribute('stop-opacity', colorMap.minOpacity.toString());\n gradientElement.childNodes[1].setAttribute('stop-opacity', colorMap.maxOpacity.toString());\n }\n this.defsElement.appendChild(gradientElement);\n this.gradientCount++;\n }\n isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, legendText) : false;\n if (isAddData && isAddData['process'] && colorMapProcess && !isDuplicate) {\n colorMapProcess = false;\n fill = ((Object.prototype.toString.call(colorMap.color) === '[object Array]')) && isNullOrUndefined(gradientElement)\n && isNullOrUndefined(colorMap.value) ? this.legendGradientColor(colorMap, legendIndex) : fill;\n this.legendCollections.push({\n actualValue: actualValue, levelIndex: !isLeafItem ? j : -1, leafIndex: isLeafItem ? j : -1,\n legendName: legendText, legendFill: fill, legendData: [], groupIndex: !isLeafItem ? groupIndex : -1,\n gradientElement: !isNullOrUndefined(gradientElement) ? gradientElement : isNullOrUndefined(colorMap.value)\n ? this.legendLinearGradient : null, name: data[i]['name'],\n opacity: this.treemap.legendSettings.opacity, borderColor: this.treemap.legendSettings.border.color,\n borderWidth: this.treemap.legendSettings.border.width\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[this.legendCollections.length - 1]['legendData'].push(data[i]);\n legendIndex++;\n }\n else if (colorMapProcess && !isDuplicate) {\n colorMapProcess = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[isAddData['value']]['legendData'].push(data[i]);\n }\n if (!isRange && !isDesaturation && !isEqualColor) {\n if (isNullOrUndefined(colorMap.from) && isNullOrUndefined(colorMap.to)\n && isNullOrUndefined(colorMap.minOpacity) &&\n isNullOrUndefined(colorMap.maxOpacity) && isNullOrUndefined(colorMap.value) &&\n !isNullOrUndefined(colorMap.color)) {\n outfill = ((Object.prototype.toString.call(colorMap.color) === '[object Array]'))\n ? colorMap.color[0] : colorMap.color;\n labelLegend = !isNullOrUndefined(colorMap.label) ? colorMap.label : 'Others';\n if (isNullOrUndefined(this.outOfRangeLegend)) {\n this.legendCollections.push({\n actualValue: labelLegend, legendData: [],\n legendName: labelLegend, legendFill: outfill\n });\n otherIndex = this.legendCollections.length;\n this.outOfRangeLegend = this.legendCollections[otherIndex - 1];\n legendIndex++;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[otherIndex - 1]['legendData'].push(data[i]);\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.removeDuplicates = function (legendCollection, text) {\n var isDuplicate = false;\n for (var i = 0; i < legendCollection.length; i++) {\n if (legendCollection[i]['legendName'] === text) {\n isDuplicate = true;\n break;\n }\n else {\n continue;\n }\n }\n return isDuplicate;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.isAddNewLegendData = function (legendText) {\n var newDataProcess;\n var itemValue;\n if (this.legendCollections.length === 0) {\n newDataProcess = true;\n }\n else {\n for (var j = 0; j < this.legendCollections.length; j++) {\n if (legendText === this.legendCollections[j]['actualValue']) {\n newDataProcess = false;\n itemValue = j;\n break;\n }\n else if (j === this.legendCollections.length - 1) {\n newDataProcess = true;\n }\n }\n }\n return { process: newDataProcess, value: itemValue };\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To draw the legend\n * @private\n */\n TreeMapLegend.prototype.drawLegend = function () {\n var legend = this.treemap.legendSettings;\n var render = this.treemap.renderer;\n var fill;\n var textOptions;\n var gradientElement;\n var textFont = legend.textStyle;\n this.legendGroup = render.createGroup({ id: this.treemap.element.id + '_Legend_Group' });\n this.renderLegendBorder();\n this.renderLegendTitle();\n if (legend.mode === 'Default') {\n this.drawLegendItem(this.currentPage);\n }\n else {\n for (var i = 0; i < this.legendRenderingCollections.length; i++) {\n var itemId = this.treemap.element.id + '_Legend_Index_' + i;\n var textId = this.treemap.element.id + '_Legend_Index_' + i + '_Text';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = this.legendRenderingCollections[i];\n gradientElement = item['element'];\n fill = gradientElement ? 'url(#' + gradientElement.id + ')' : item['fill'];\n var bounds = new Rect(item['x'], item['y'], item['width'], item['height']);\n var textLocation = new Location(item['textX'], item['textY']);\n var rectOptions = new RectOption(itemId, fill, legend.shapeBorder, legend.opacity, bounds);\n if (this.treemap.enableRtl) {\n if (this.treemap.legendSettings.position === 'Left' || this.treemap.legendSettings.position === 'Right'\n || (this.treemap.legendSettings.position === 'Auto'\n && this.treemap.availableSize.width >= this.treemap.availableSize.height)) {\n rectOptions.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - (this.translate.y + rectOptions.height) - Math.abs(this.legendBorderRect.y - rectOptions.y);\n textLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - (this.translate.y) + (item['textHeight'] / 2)\n - Math.abs(this.legendBorderRect.y - textLocation.y);\n }\n else {\n rectOptions.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + rectOptions.width)\n - Math.abs(this.legendBorderRect.x - rectOptions.x);\n textLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - this.translate.x - Math.abs(this.legendBorderRect.x - textLocation.x);\n }\n }\n textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'middle', item['text'], '', '');\n renderTextElement(textOptions, textFont, textFont.color || this.treemap.themeStyle.legendTextColor, this.legendGroup);\n this.legendGroup.appendChild(render.drawRectangle(rectOptions));\n }\n }\n legendMaintain(this.treemap, this.legendGroup);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.defaultLegendRtlLocation = function (collection, spacing, treemap, legend) {\n var shapeLocation = collection['Shape'];\n var textLocation = collection['Text'];\n var legendText = collection['DisplayText'];\n var textSize = measureText(legendText, legend.textStyle);\n shapeLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + spacing) - Math.abs(this.legendBorderRect.x - shapeLocation.x);\n textLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + textSize.width + spacing) - Math.abs(this.legendBorderRect.x - textLocation.x);\n if (treemap.legendSettings.position === 'Left' || treemap.legendSettings.position === 'Right'\n || (treemap.legendSettings.position === 'Auto'\n && this.treemap.availableSize.width >= this.treemap.availableSize.height)) {\n shapeLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - this.translate.y - Math.abs(Math.abs(this.legendBorderRect.y) - shapeLocation.y) - (legend.shapeHeight / 2);\n textLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - this.translate.y - Math.abs(Math.abs(this.legendBorderRect.y) - textLocation.y);\n }\n return { shapeLocation: shapeLocation, textLocation: textLocation };\n };\n TreeMapLegend.prototype.drawLegendItem = function (page) {\n var _this = this;\n var treemap = this.treemap;\n var spacing = 10;\n var legend = treemap.legendSettings;\n var shapeSize = new Size(legend.shapeWidth, legend.shapeHeight);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var textOptions;\n var legendRtlLocation;\n var render = treemap.renderer;\n var shapeBorder = legend.shapeBorder;\n var eventArgs;\n if (page >= 0 && page < this.totalPages.length) {\n if (document.getElementById(this.legendGroup.id)) {\n document.getElementById(this.legendGroup.id).remove();\n }\n var isLineShape_1 = (legend.shape === 'HorizontalLine' || legend.shape === 'VerticalLine' || legend.shape === 'Cross');\n var strokeColor_1 = isLineShape_1 ? isNullOrUndefined(legend.fill) ? '#000000' : legend.fill : shapeBorder.color;\n var strokeWidth_1 = isLineShape_1 ? (shapeBorder.width === 0) ? 1 : shapeBorder.width : shapeBorder.width;\n var _loop_1 = function (i) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this_1.totalPages[page]['Collection'][i];\n var legendElement = render.createGroup({ id: treemap.element.id + '_Legend_Index_' + i });\n var legendText = collection['DisplayText'];\n var shapeId = treemap.element.id + '_Legend_Shape_Index_' + i;\n var textId = treemap.element.id + '_Legend_Text_Index_' + i;\n var shapeLocation = collection['Shape'];\n var textLocation = collection['Text'];\n if (treemap.enableRtl) {\n legendRtlLocation = this_1.defaultLegendRtlLocation(collection, spacing, treemap, legend);\n shapeLocation = legendRtlLocation['shapeLocation'];\n textLocation = legendRtlLocation['textLocation'];\n }\n eventArgs = {\n cancel: false, name: legendItemRendering, treemap: treemap, fill: collection['Fill'],\n shape: legend.shape, imageUrl: legend.imageUrl\n };\n treemap.trigger(legendItemRendering, eventArgs, function (observedArgs) {\n var renderOptions = new PathOption(shapeId, observedArgs.fill, strokeWidth_1, isLineShape_1 ? collection['Fill'] : strokeColor_1, legend.opacity, '');\n legendElement.appendChild(drawSymbol(shapeLocation, observedArgs.shape, shapeSize, observedArgs.imageUrl, renderOptions, legendText));\n textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'start', legendText, '', '');\n renderTextElement(textOptions, legend.textStyle, legend.textStyle.color || treemap.themeStyle.legendTextColor, legendElement);\n _this.legendGroup.appendChild(legendElement);\n });\n };\n var this_1 = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (var i = 0; i < this.totalPages[page]['Collection'].length; i++) {\n _loop_1(i);\n }\n var pagingGroup = void 0;\n var width = spacing;\n var height = (spacing / 2);\n if (this.page !== 0) {\n var pagingText = (page + 1) + '/' + this.totalPages.length;\n var pagingFont = legend.textStyle;\n var pagingTextSize = measureText(pagingText, pagingFont);\n var leftPageX = (this.legendItemRect.x + this.legendItemRect.width) - pagingTextSize.width -\n (width * 2) - spacing;\n var rightPageX = (this.legendItemRect.x + this.legendItemRect.width);\n var locY = (this.legendItemRect.y + this.legendItemRect.height) + (height / 2) + spacing;\n var pageTextX = rightPageX - width - (pagingTextSize.width / 2) - (spacing / 2);\n pagingGroup = render.createGroup({ id: treemap.element.id + '_Legend_Paging_Group' });\n var leftPageElement = render.createGroup({ id: treemap.element.id + '_Legend_Left_Paging_Group' });\n var rightPageElement = render.createGroup({ id: treemap.element.id + '_Legend_Right_Paging_Group' });\n var rightPath = ' M ' + rightPageX + ' ' + locY + ' L ' + (rightPageX - width) + ' ' + (locY - height) +\n ' L ' + (rightPageX - width) + ' ' + (locY + height) + ' z ';\n var leftPath = ' M ' + leftPageX + ' ' + locY + ' L ' + (leftPageX + width) + ' ' + (locY - height) +\n ' L ' + (leftPageX + width) + ' ' + (locY + height) + ' z ';\n var leftPageOptions = new PathOption(treemap.element.id + '_Left_Page', '#a6a6a6', 0, '#a6a6a6', 1, '', leftPath);\n leftPageElement.appendChild(render.drawPath(leftPageOptions));\n var leftRectPageOptions = new RectOption(treemap.element.id + '_Left_Page_Rect', 'transparent', {}, 1, new Rect(leftPageX - (width / 2), (locY - (height * 2)), width * 2, spacing * 2), '');\n leftPageElement.appendChild(render.drawRectangle(leftRectPageOptions));\n this.wireEvents(leftPageElement);\n var rightPageOptions = new PathOption(treemap.element.id + '_Right_Page', '#a6a6a6', 0, '#a6a6a6', 1, '', rightPath);\n rightPageElement.appendChild(render.drawPath(rightPageOptions));\n var rightRectPageOptions = new RectOption(treemap.element.id + '_Right_Page_Rect', 'transparent', {}, 1, new Rect((rightPageX - width), (locY - height), width, spacing), '');\n rightPageElement.appendChild(render.drawRectangle(rightRectPageOptions));\n this.wireEvents(rightPageElement);\n pagingGroup.appendChild(leftPageElement);\n pagingGroup.appendChild(rightPageElement);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var pageTextOptions = {\n 'id': treemap.element.id + '_Paging_Text',\n 'x': pageTextX,\n 'y': locY + (pagingTextSize.height / 4),\n 'fill': '#a6a6a6',\n 'font-size': '14px',\n 'font-style': pagingFont.fontStyle,\n 'font-family': pagingFont.fontFamily,\n 'font-weight': pagingFont.fontWeight,\n 'text-anchor': 'middle',\n 'transform': '',\n 'opacity': 1,\n 'dominant-baseline': ''\n };\n pagingGroup.appendChild(render.createText(pageTextOptions, pagingText));\n this.legendGroup.appendChild(pagingGroup);\n }\n }\n };\n TreeMapLegend.prototype.renderLegendBorder = function () {\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n var legendTitle = legend.title.text;\n var spacing = 10;\n var textStyle = legend.titleStyle;\n var title = textTrim((this.legendItemRect.width + (spacing * 2)), legendTitle, textStyle);\n var textSize = measureText(title, textStyle);\n this.legendBorderRect = new Rect((this.legendItemRect.x - spacing), (this.legendItemRect.y - spacing - textSize.height), (this.legendItemRect.width) + (spacing * 2), (this.legendItemRect.height) + (spacing * 2) + textSize.height +\n (legend.mode === 'Interactive' ? 0 : (this.page !== 0) ? spacing : 0));\n var renderOptions = new RectOption(treemap.element.id + '_Legend_Border', legend.background, legend.border, 1, this.legendBorderRect, '');\n var legendBorder = treemap.renderer.drawRectangle(renderOptions);\n legendBorder.style.pointerEvents = 'none';\n this.legendGroup.appendChild(legendBorder);\n this.getLegendAlignment(treemap, this.legendBorderRect.width, this.legendBorderRect.height, legend);\n this.legendGroup.setAttribute('transform', 'translate( ' + (this.translate.x + (-(this.legendBorderRect.x))) + ' ' +\n (this.translate.y + (-(this.legendBorderRect.y))) + ' )');\n treemap.svgObject.appendChild(this.legendGroup);\n };\n TreeMapLegend.prototype.renderLegendTitle = function () {\n var legend = this.treemap.legendSettings;\n var textStyle = legend.titleStyle;\n var legendTitle = legend.title.text;\n var textOptions;\n var spacing = 10;\n var trimTitle = textTrim((this.legendItemRect.width + (spacing * 2)), legendTitle, textStyle);\n var textSize = measureText(trimTitle, textStyle);\n if (legendTitle) {\n textOptions = new TextOption(this.treemap.element.id + '_LegendTitle', (this.legendItemRect.x) + (this.legendItemRect.width / 2), this.legendItemRect.y - (textSize.height / 2) - (spacing / 2), 'middle', trimTitle, '');\n renderTextElement(textOptions, textStyle, textStyle.color || this.treemap.themeStyle.legendTitleColor, this.legendGroup);\n }\n };\n /**\n * To rendered the interactive pointer\n *\n * @param {PointerEvent | TouchEvent} e - Specifies the pointer argument.\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.renderInteractivePointer = function (e) {\n var treemap = this.treemap;\n var target = e.target;\n var interactiveId = treemap.element.id + '_Interactive_Legend';\n target = !(e.type.indexOf('touch') > -1) ? target :\n document.elementFromPoint(e.changedTouches[0].clientX, e.changedTouches[0].clientY);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetItem;\n var legend = treemap.legendSettings;\n if (target.id.indexOf('_Item_Index') > -1 && legend.visible && this.legendRenderingCollections.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = void 0;\n var legendRect = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data = void 0;\n var fill = void 0;\n var stroke = void 0;\n var strokeWidth = void 0;\n var legendElement = void 0;\n targetItem = treemap.layout.renderItems[parseFloat(target.id.split('_Item_Index_')[1])];\n var svgRect = treemap.svgObject.getBoundingClientRect();\n for (var i = 0; i < this.legendCollections.length; i++) {\n currentData = this.legendCollections[i];\n legendElement = document.getElementById(treemap.element.id + '_Legend_Index_' + i);\n legendRect = legendElement.getBoundingClientRect();\n var rect = new Rect(Math.abs(legendRect.left - svgRect.left), Math.abs(legendRect.top - svgRect.top), legendRect.width, legendRect.height);\n fill = legendElement.getAttribute('fill');\n stroke = legend.shapeBorder.color;\n strokeWidth = legend.shapeBorder.width;\n if (!isNullOrUndefined(currentData['legendData'])) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data = currentData['legendData'];\n for (var j = 0; j < data.length; j++) {\n if (data[j]['levelOrderName'] === targetItem['levelOrderName']) {\n this.drawInteractivePointer(legend, fill, stroke, interactiveId, strokeWidth, rect);\n break;\n }\n }\n }\n }\n }\n else {\n this.removeInteractivePointer();\n }\n };\n TreeMapLegend.prototype.drawInteractivePointer = function (legend, fill, stroke, id, strokeWidth, rect) {\n var path;\n var locX;\n var locY;\n var height = 10;\n var width = 10;\n var direction = (legend.orientation === 'None') ? (legend.position === 'Top' || legend.position === 'Bottom')\n ? 'Horizontal' : 'Vertical' : legend.orientation;\n if (direction === 'Horizontal') {\n if (!legend.invertedPointer) {\n locX = rect.x + (rect.width / 2);\n locY = rect.y;\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX - width) + ' ' + (locY - height) +\n ' L ' + (locX + width) + ' ' + (locY - height) + ' Z ';\n }\n else {\n locX = rect.x + (rect.width / 2);\n locY = rect.y + (rect.height);\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX - width) + ' ' + (locY + height) +\n ' L ' + (locX + width) + ' ' + (locY + height) + ' Z ';\n }\n }\n else {\n if (!legend.invertedPointer) {\n locX = rect.x + (rect.width);\n locY = rect.y + (rect.height / 2);\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX + width) + ' ' + (locY - height) +\n ' L ' + (locX + width) + ' ' + (locY + height) + ' z ';\n }\n else {\n locX = rect.x;\n locY = rect.y + (rect.height / 2);\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX - width) + ' ' + (locY - height) +\n ' L ' + (locX - width) + ' ' + (locY + height) + ' z ';\n }\n }\n var pathOptions = new PathOption(id, fill, strokeWidth, stroke, 1, '', path);\n this.treemap.svgObject.appendChild(this.treemap.renderer.drawPath(pathOptions));\n };\n TreeMapLegend.prototype.getLegendAlignment = function (treemap, width, height, legend) {\n var x;\n var y;\n var spacing = 10;\n var totalRect;\n // eslint-disable-next-line prefer-const\n totalRect = extend({}, treemap.areaRect, totalRect, true);\n var areaX = totalRect.x;\n var areaY = totalRect.y;\n var areaHeight = totalRect.height;\n var areaWidth = totalRect.width;\n var totalWidth = treemap.availableSize.width;\n var totalHeight = treemap.availableSize.height;\n var position = legend.position === 'Auto' ? (totalWidth > totalHeight) ? 'Right' : 'Bottom' : legend.position;\n if (legend.position === 'Float') {\n this.translate = legend.location;\n }\n else {\n switch (position) {\n case 'Top':\n case 'Bottom':\n totalRect.height = (areaHeight - height);\n x = (totalWidth / 2) - (width / 2);\n y = (position === 'Top') ? areaY : (areaY + totalRect.height) + spacing;\n totalRect.y = (position === 'Top') ? areaY + height + spacing : areaY;\n break;\n case 'Left':\n case 'Right':\n totalRect.width = (areaWidth - width);\n x = (position === 'Left') ? areaX : areaX + totalRect.width;\n y = (totalHeight / 2) - (height / 2);\n totalRect.x = (position === 'Left') ? areaX + width : areaX;\n break;\n }\n switch (legend.alignment) {\n case 'Near':\n if (position === 'Top' || position === 'Bottom') {\n x = totalRect.x;\n }\n else {\n y = totalRect.y;\n }\n break;\n case 'Far':\n if (position === 'Top' || position === 'Bottom') {\n x = totalWidth - width;\n }\n else {\n y = totalHeight - height;\n }\n break;\n }\n this.treemap.totalRect = totalRect;\n this.translate = new Location(x, y);\n }\n };\n /** @private */\n TreeMapLegend.prototype.mouseUpHandler = function (e) {\n this.renderInteractivePointer(e);\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeInteractivePointer.bind(this), 3000);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To remove the interactive pointer\n * @private\n */\n TreeMapLegend.prototype.removeInteractivePointer = function () {\n if (document.getElementById(this.treemap.element.id + '_Interactive_Legend')) {\n var legendElementId = document.getElementById(this.treemap.element.id + '_Interactive_Legend');\n legendElementId.parentNode.removeChild(legendElementId);\n }\n };\n /**\n * To change the next page\n *\n * @param {PointerEvent} e - Specifies the pointer event argument.\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.changeNextPage = function (e) {\n this.currentPage = (e.target.id.indexOf('_Left_Page_') > -1) ? (this.currentPage - 1) :\n (this.currentPage + 1);\n if (this.currentPage >= 0 && this.currentPage < this.totalPages.length) {\n this.drawLegend();\n }\n else {\n this.currentPage = (e.target.id.indexOf('_Left_Page_') > -1) ? 0 : this.totalPages.length - 1;\n }\n };\n /**\n * Wire events for event handler\n *\n * @param {Element} element - Specifies the element.\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.wireEvents = function (element) {\n EventHandler.add(element, Browser.touchStartEvent, this.changeNextPage, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To add the event listener\n * @private\n */\n TreeMapLegend.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.renderInteractivePointer, this);\n this.treemap.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To remove the event listener\n * @private\n */\n TreeMapLegend.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.renderInteractivePointer);\n this.treemap.off(Browser.touchEndEvent, this.mouseUpHandler);\n };\n /**\n * Get module name.\n *\n * @returns {string} Returns the legend module name.\n */\n TreeMapLegend.prototype.getModuleName = function () {\n return 'treeMapLegend';\n };\n /**\n * To destroy the legend.\n *\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.destroy = function () {\n this.legendRenderingCollections = [];\n this.legendCollections = [];\n this.outOfRangeLegend = null;\n this.totalPages = [];\n this.translate = null;\n this.legendBorderRect = null;\n this.legendGroup = null;\n this.legendNames = [];\n this.defsElement = null;\n this.legendLinearGradient = null;\n this.legendInteractiveGradient = [];\n this.legendItemRect = null;\n this.removeEventListener();\n //TODO: The removeInteractivePointer method (calling method) is called in a timer in the mouseUpHandler method. Because of this handling, adding the below code results in a spec failure.\n //this.treemap = null;\n };\n /**\n * Get the gradient color for interactive legend.\n *\n * @param {ColorMappingModel} colorMap - Specifies the color mapping instance.\n * @param {number} legendIndex - Specifies the index of legend.\n * @returns {string} - Returns the legend color.\n * @private\n */\n TreeMapLegend.prototype.legendGradientColor = function (colorMap, legendIndex) {\n var legendFillColor;\n var xmlns = 'http://www.w3.org/2000/svg';\n if (!isNullOrUndefined(colorMap.color) && Object.prototype.toString.call(colorMap.color) === '[object Array]') {\n var defElement = this.treemap.renderer.createDefs();\n var linerGradientEle = document.createElementNS(xmlns, 'linearGradient');\n var opacity = 1;\n var position = this.treemap.legendSettings.position;\n var x2 = position === 'Top' || position === 'Bottom' ? '100' : '0';\n var y2 = position === 'Top' || position === 'Bottom' ? '0' : '100';\n linerGradientEle.setAttribute('id', 'linear_' + legendIndex);\n linerGradientEle.setAttribute('x1', 0 + '%');\n linerGradientEle.setAttribute('y1', 0 + '%');\n linerGradientEle.setAttribute('x2', x2 + '%');\n linerGradientEle.setAttribute('y2', y2 + '%');\n for (var b = 0; b < colorMap.color.length; b++) {\n var offsetColor = 100 / (colorMap.color.length - 1);\n var stopEle = document.createElementNS(xmlns, 'stop');\n stopEle.setAttribute('offset', b * offsetColor + '%');\n stopEle.setAttribute('stop-color', colorMap.color[b]);\n stopEle.setAttribute('stop-opacity', opacity.toString());\n linerGradientEle.appendChild(stopEle);\n }\n defElement.appendChild(linerGradientEle);\n this.legendLinearGradient = linerGradientEle;\n var color = 'url(' + '#linear_' + legendIndex + ')';\n this.defsElement.appendChild(linerGradientEle);\n legendFillColor = color;\n }\n return legendFillColor;\n };\n return TreeMapLegend;\n}());\nexport { TreeMapLegend };\n","import { Browser } from '@syncfusion/ej2-base';\nimport { itemHighlight, itemSelected } from '../model/constants';\nimport { findHightLightItems, removeClassNames, applyOptions, removeShape, removeLegend, removeSelectionWithHighlight, setColor, getLegendIndex, pushCollection, setItemTemplateContent } from '../utils/helper';\n/**\n * Performing treemap highlight\n */\nvar TreeMapHighlight = /** @class */ (function () {\n function TreeMapHighlight(treeMap) {\n this.target = 'highlight';\n this.shapeTarget = 'highlight';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.shapeHighlightCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendHighlightCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentElement = [];\n this.treemap = treeMap;\n this.addEventListener();\n }\n /**\n * Mouse down event in highlight\n *\n * @param {PointerEvent} e - Specifies the pointer argument.\n * @returns {boolean} - return the highlight process is true or false.\n * @private\n */\n TreeMapHighlight.prototype.mouseMove = function (e) {\n var treemap = this.treemap;\n var processHighlight;\n var targetId = e.target.id;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var eventArgs;\n var items = [];\n var highlight = this.treemap.highlightSettings;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n var highLightElements = [];\n var process;\n var treeMapElement;\n var element;\n var orders;\n var selectionModule = this.treemap.treeMapSelectionModule;\n if (targetId.indexOf('_Item_Index') > -1 && (selectionModule ? this.treemap.selectionId !== targetId : true)) {\n if (this.highLightId !== targetId) {\n treeMapElement = document.getElementById(treemap.element.id + '_TreeMap_' + treemap.layoutType + '_Layout');\n var selectionElements = document.getElementsByClassName('treeMapSelection');\n item = this.treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n var index = void 0;\n if (this.treemap.legendSettings.visible) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n var length_1 = this.treemap.treeMapLegendModule.legendCollections.length;\n index = getLegendIndex(length_1, item, treemap);\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index) : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index);\n if (this.shapeElement !== null && (selectionModule ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true)) {\n if (selectionModule ? this.shapeElement !== selectionModule.shapeElement : true) {\n this.currentElement.push({ currentElement: this.shapeElement });\n removeShape(this.shapeHighlightCollection);\n this.shapeHighlightCollection.push({ legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n setColor(this.shapeElement, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n this.target = 'highlight';\n }\n else if (this.currentElement.length > 0 && this.currentElement[this.currentElement.length - 1]['currentElement'] !== this.shapeElement) {\n removeSelectionWithHighlight(this.shapeHighlightCollection, this.currentElement, treemap);\n this.highLightId = '';\n }\n }\n else if (this.currentElement.length > 0 && this.currentElement[this.currentElement.length - 1]['currentElement'] !== this.shapeElement) {\n removeSelectionWithHighlight(this.shapeHighlightCollection, this.currentElement, treemap);\n this.highLightId = '';\n }\n }\n orders = findHightLightItems(item, [], highlight.mode, treemap);\n if (this.treemap.legendSettings.visible ? selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true : true) {\n if (this.treemap.legendSettings.visible ? selectionModule ?\n this.shapeElement !== selectionModule.shapeElement : true : true) {\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n process = true;\n item = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])];\n for (var j = 0; j < selectionElements.length; j++) {\n if (element.id === selectionElements[j].id) {\n process = false;\n break;\n }\n }\n if (orders.indexOf(item['levelOrderName']) > -1 && process) {\n highLightElements.push(element);\n items.push(item);\n }\n }\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n for (var k = 0; k < highLightElements.length; k++) {\n element = highLightElements[k];\n applyOptions(element.childNodes[0], { border: highlight.border, fill: highlight.fill, opacity: highlight.opacity });\n element.classList.add('treeMapHighLight');\n this.highLightId = targetId;\n }\n eventArgs = { cancel: false, name: itemHighlight, treemap: treemap, items: items, elements: highLightElements };\n treemap.trigger(itemHighlight, eventArgs);\n }\n else {\n processHighlight = false;\n }\n }\n }\n }\n else if (targetId.indexOf('_Legend_Shape') > -1 || targetId.indexOf('_Legend_Index') > -1) {\n if (this.treemap.legendSettings.visible && (selectionModule ? selectionModule.legendSelectId !== targetId : true)\n && (selectionModule ? selectionModule.shapeSelectId !== targetId : true)) {\n var itemIndex = void 0;\n var groupIndex = void 0;\n var length_2;\n var targetEle = document.getElementById(targetId);\n if (this.shapeTarget === 'highlight') {\n removeLegend(this.legendHighlightCollection);\n }\n this.shapeTarget = 'highlight';\n var index = this.treemap.legendSettings.mode === 'Default' ? parseFloat(targetId.split('_Legend_Shape_Index_')[1]) : parseFloat(targetId.split('_Legend_Index_')[1]);\n var dataLength = this.treemap.treeMapLegendModule.legendCollections[index]['legendData'].length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n var legendIndex = parseInt(targetId[targetId.length - 1], 10);\n for (var i = 0; i < dataLength; i++) {\n for (var j = 0; j < this.treemap.layout.renderItems.length; j++) {\n if (this.treemap.treeMapLegendModule.legendCollections[index]['legendData'][i]['levelOrderName'] === this.treemap.layout.renderItems[j]['levelOrderName']) {\n itemIndex = j;\n groupIndex = this.treemap.layout.renderItems[j]['groupIndex'];\n var nodeEle = document.getElementById(this.treemap.element.id + '_Level_Index_' + groupIndex + '_Item_Index_' + itemIndex + '_RectPath');\n if (i === 0) {\n this.legendHighlightCollection = [];\n pushCollection(this.legendHighlightCollection, legendIndex, j, targetEle, nodeEle, this.treemap.layout.renderItems, collection);\n length_2 = this.legendHighlightCollection.length;\n this.legendHighlightCollection[length_2 - 1]['ShapeCollection'] = { Elements: [] };\n }\n setColor(targetEle, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n setColor(nodeEle, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n length_2 = this.legendHighlightCollection.length;\n this.legendHighlightCollection[length_2 - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n }\n }\n else {\n if (selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true) {\n if (selectionModule ? this.shapeElement !== selectionModule.shapeElement : true && this.treemap.legendSettings.visible) {\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n }\n }\n if ((this.shapeTarget === 'highlight' || this.target === 'highlight') && this.treemap.legendSettings.visible) {\n if (selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true) {\n if (selectionModule ? this.shapeElement !== selectionModule.shapeElement : true && selectionModule ?\n selectionModule.legendSelect : true) {\n removeShape(this.shapeHighlightCollection);\n this.shapeHighlightCollection = [];\n }\n }\n }\n if (this.shapeTarget === 'highlight' && this.treemap.legendSettings.visible) {\n removeLegend(this.legendHighlightCollection);\n }\n this.highLightId = '';\n processHighlight = false;\n }\n return processHighlight;\n };\n /**\n * To bind events for highlight\n *\n * @returns {void}\n */\n TreeMapHighlight.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.mouseMove, this);\n };\n /**\n * To unbind events for highlight\n *\n * @returns {void}\n */\n TreeMapHighlight.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.mouseMove);\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name\n */\n TreeMapHighlight.prototype.getModuleName = function () {\n return 'treeMapHighlight';\n };\n /**\n * To destroy the hightlight.\n *\n * @returns {void}\n * @private\n */\n TreeMapHighlight.prototype.destroy = function () {\n this.shapeElement = null;\n this.shapeHighlightCollection = [];\n this.legendHighlightCollection = [];\n this.currentElement = [];\n this.removeEventListener();\n this.treemap = null;\n };\n return TreeMapHighlight;\n}());\nexport { TreeMapHighlight };\n/**\n * Performing treemap selection\n */\nvar TreeMapSelection = /** @class */ (function () {\n function TreeMapSelection(treeMap) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.shapeSelectionCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendSelectionCollection = [];\n this.shapeSelect = true;\n this.legendSelect = true;\n this.treemap = treeMap;\n this.addEventListener();\n }\n /**\n * Mouse down event in selection\n *\n * @param {PointerEvent} e - Specifies the pointer argument.\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.mouseDown = function (e) {\n var targetEle = e.target;\n var eventArgs;\n var treemap = this.treemap;\n treemap.levelSelection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var items = [];\n var targetId = targetEle.id;\n var labelText = targetEle.innerHTML;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n var selectionElements = [];\n var treeMapElement;\n var element;\n var orders;\n var selection = treemap.selectionSettings;\n var highlightModule = this.treemap.treeMapHighlightModule;\n var layoutID = treemap.element.id + '_TreeMap_' + treemap.layoutType + '_Layout';\n if (targetId.indexOf('_Item_Index') > -1) {\n e.preventDefault();\n if (this.treemap.selectionId !== targetId && this.legendSelect) {\n treeMapElement = document.getElementById(layoutID);\n item = treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n var index = void 0;\n if (this.treemap.legendSettings.visible) {\n this.shapeSelect = false;\n var length_3 = this.treemap.treeMapLegendModule.legendCollections.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n this.shapeElement = undefined;\n removeShape(this.shapeSelectionCollection);\n if (highlightModule) {\n highlightModule.shapeTarget = 'selection';\n highlightModule.shapeHighlightCollection = [];\n }\n index = getLegendIndex(length_3, item, treemap);\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index) : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index);\n if (this.shapeElement !== null) {\n this.shapeSelectId = this.shapeElement.getAttribute('id');\n this.shapeSelectionCollection.push({ legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n setColor(this.shapeElement, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n }\n }\n orders = findHightLightItems(item, [], selection.mode, treemap);\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n item = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])];\n if (orders.indexOf(item['levelOrderName']) > -1) {\n selectionElements.push(element);\n treemap.levelSelection.push(element.id);\n items.push(item);\n }\n }\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', treemap);\n this.treemap.selectionId = targetId;\n var highLightElements = document.getElementsByClassName('treeMapHighLight');\n for (var k = 0; k < selectionElements.length; k++) {\n element = selectionElements[k];\n if (highLightElements.length > 0) {\n for (var j = 0; j < highLightElements.length; j++) {\n if (highLightElements[j].id === element.id) {\n highLightElements[j].classList.remove('treeMapHighLight');\n }\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n else {\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n eventArgs = { cancel: false, name: itemSelected, treemap: treemap, items: items, elements: selectionElements,\n text: labelText, contentItemTemplate: labelText };\n treemap.trigger(itemSelected, eventArgs, function (observedArgs) {\n if (observedArgs.contentItemTemplate !== labelText) {\n setItemTemplateContent(targetId, targetEle, observedArgs.contentItemTemplate);\n }\n });\n }\n }\n else {\n removeShape(this.shapeSelectionCollection);\n this.shapeSelectionCollection = [];\n this.shapeElement = undefined;\n this.shapeSelect = true;\n this.shapeSelectId = '';\n this.treemap.legendId = [];\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', treemap);\n this.treemap.selectionId = '';\n }\n }\n else if (targetId.indexOf('_Legend_Shape') > -1 || targetId.indexOf('_Legend_Index') > -1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n if (this.treemap.legendSettings.visible && this.legendSelectId !== targetId && this.shapeSelect) {\n var itemIndex = void 0;\n var groupIndex = void 0;\n var length_4;\n this.legendSelectId = targetId;\n this.legendSelect = false;\n var legendIndex = parseInt(targetId[targetId.length - 1], 10);\n var targetEle_1 = document.getElementById(targetId);\n removeLegend(this.legendSelectionCollection);\n if (highlightModule) {\n highlightModule.shapeTarget = 'selection';\n }\n var index = this.treemap.legendSettings.mode === 'Default' ? parseFloat(targetId.split('_Legend_Shape_Index_')[1]) : parseFloat(targetId.split('_Legend_Index_')[1]);\n var dataLength = this.treemap.treeMapLegendModule.legendCollections[index]['legendData'].length;\n for (var k = 0; k < dataLength; k++) {\n for (var l = 0; l < this.treemap.layout.renderItems.length; l++) {\n if (this.treemap.treeMapLegendModule.legendCollections[index]['legendData'][k]['levelOrderName'] === this.treemap.layout.renderItems[l]['levelOrderName']) {\n itemIndex = l;\n groupIndex = this.treemap.layout.renderItems[l]['groupIndex'];\n var nodeEle = document.getElementById(this.treemap.element.id + '_Level_Index_' + groupIndex + '_Item_Index_' + itemIndex + '_RectPath');\n if (k === 0) {\n pushCollection(this.legendSelectionCollection, legendIndex, l, targetEle_1, nodeEle, this.treemap.layout.renderItems, collection);\n length_4 = this.legendSelectionCollection.length;\n this.legendSelectionCollection[length_4 - 1]['ShapeCollection'] = { Elements: [] };\n }\n setColor(targetEle_1, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n setColor(nodeEle, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n length_4 = this.legendSelectionCollection.length;\n this.legendSelectionCollection[length_4 - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n }\n else {\n removeLegend(this.legendSelectionCollection);\n if (highlightModule) {\n highlightModule.shapeTarget = 'highlight';\n }\n this.legendSelect = true;\n this.legendSelectId = '';\n }\n }\n };\n /**\n * @param {string} levelOrder - Specifies the level order of treemap item\n * @param {boolean} enable - Specifies the boolean value\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.selectTreemapItem = function (levelOrder, enable) {\n if (enable) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = void 0;\n for (var s = 0; s < this.treemap.layout.renderItems.length; s++) {\n if (levelOrder === this.treemap.layout.renderItems[s]['levelOrderName']) {\n item = this.treemap.layout.renderItems[s];\n break;\n }\n }\n var selection = this.treemap.selectionSettings;\n var selectionElements = [];\n var element = void 0;\n var index = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var items = [];\n this.treemap.levelSelection = [];\n var layoutID = this.treemap.element.id + '_TreeMap_' + this.treemap.layoutType + '_Layout';\n var treeMapElement = document.getElementById(layoutID);\n var orders = findHightLightItems(item, [], selection.mode, this.treemap);\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n item = this.treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])];\n if (orders.indexOf(item['levelOrderName']) > -1) {\n selectionElements.push(element);\n this.treemap.levelSelection.push(element.id);\n items.push(item);\n }\n }\n if (this.treemap.legendSettings.visible) {\n for (var m = 0; m < items.length; m++) {\n this.shapeSelect = false;\n var length_5 = this.treemap.treeMapLegendModule.legendCollections.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n this.shapeElement = undefined;\n removeShape(this.shapeSelectionCollection);\n index = getLegendIndex(length_5, items[m], this.treemap);\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index) : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index);\n if (this.shapeElement !== null) {\n this.shapeSelectId = this.shapeElement.getAttribute('id');\n this.treemap.legendId.push(this.shapeSelectId);\n this.shapeSelectionCollection.push({\n legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n setColor(this.shapeElement, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n }\n }\n }\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', this.treemap);\n var selectionElement = document.getElementById(this.treemap.levelSelection[0]);\n this.treemap.selectionId = selectionElement.childNodes[0]['id'];\n var highLightElements = document.getElementsByClassName('treeMapHighLight');\n for (var k = 0; k < selectionElements.length; k++) {\n element = selectionElements[k];\n if (highLightElements.length > 0) {\n for (var j = 0; j < highLightElements.length; j++) {\n if (highLightElements[j].id === element.id) {\n highLightElements[j].classList.remove('treeMapHighLight');\n }\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n else {\n selection.fill = selection.fill === 'null' ?\n this.treemap.layout.renderItems[parseInt(element.id.split('Item_Index_')[1], 10)]['options']['fill']\n : selection.fill;\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n }\n else {\n removeShape(this.shapeSelectionCollection);\n this.shapeElement = undefined;\n this.treemap.levelSelection = [];\n this.shapeSelect = true;\n this.shapeSelectId = '';\n this.treemap.legendId = [];\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', this.treemap);\n this.treemap.selectionId = '';\n }\n };\n /**\n * To bind events for selection\n *\n * @returns {void}\n */\n TreeMapSelection.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchStartEvent, this.mouseDown, this);\n };\n /**\n * To unbind events for selection\n *\n * @returns {void}\n */\n TreeMapSelection.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchStartEvent, this.mouseDown);\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n TreeMapSelection.prototype.getModuleName = function () {\n return 'treeMapSelection';\n };\n /**\n * To destroy the selection.\n *\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.destroy = function () {\n this.shapeElement = null;\n this.shapeSelectionCollection = [];\n this.legendSelectionCollection = [];\n this.removeEventListener();\n this.treemap = null;\n };\n return TreeMapSelection;\n}());\nexport { TreeMapSelection };\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport { Tooltip } from '@syncfusion/ej2-svg-base';\nimport { Browser, createElement, isNullOrUndefined, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getMousePosition, textFormatter, formatValue } from '../utils/helper';\nimport { tooltipRendering } from '../model/constants';\n/**\n * Render Tooltip\n */\nvar TreeMapTooltip = /** @class */ (function () {\n function TreeMapTooltip(treeMap) {\n this.treemap = treeMap;\n this.tooltipSettings = this.treemap.tooltipSettings;\n this.tooltipId = this.treemap.element.id + '_TreeMapTooltip';\n this.addEventListener();\n }\n TreeMapTooltip.prototype.renderTooltip = function (e) {\n var _this = this;\n var pageX;\n var pageY;\n var target;\n var touchArg;\n var tootipArgs;\n if (e.type.indexOf('touch') !== -1) {\n this.isTouch = true;\n touchArg = e;\n pageX = touchArg.changedTouches[0].pageX;\n pageY = touchArg.changedTouches[0].pageY;\n target = touchArg.target;\n }\n else {\n this.isTouch = e.pointerType === 'touch';\n pageX = e.pageX;\n pageY = e.pageY;\n target = e.target;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value;\n var targetId = target.id;\n var item = {};\n var tooltipEle;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var location;\n var toolTipData = {};\n var tooltipContent = [];\n var markerFill;\n if (targetId.indexOf('_Item_Index') > -1) {\n item = this.treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n if (!isNullOrUndefined(item)) {\n value = item['weight'];\n toolTipData = item['data'];\n if (!isNullOrUndefined(item['options'])) {\n markerFill = item['options']['fill'];\n }\n if (this.treemap.enableRtl) {\n tooltipContent = [SanitizeHtmlHelper.sanitize(textFormatter(this.tooltipSettings.format, toolTipData, this.treemap)) ||\n SanitizeHtmlHelper.sanitize(formatValue(value, this.treemap) + ' : ' + this.treemap.weightValuePath.toString())];\n }\n else {\n tooltipContent = [SanitizeHtmlHelper.sanitize(textFormatter(this.tooltipSettings.format, toolTipData, this.treemap)) ||\n SanitizeHtmlHelper.sanitize(this.treemap.weightValuePath.toString() + ' : ' + formatValue(value, this.treemap))];\n }\n if (document.getElementById(this.tooltipId)) {\n tooltipEle = document.getElementById(this.tooltipId);\n }\n else {\n tooltipEle = createElement('div', {\n id: this.treemap.element.id + '_TreeMapTooltip',\n className: 'EJ2-TreeMap-Tooltip'\n });\n tooltipEle.style.cssText = 'position: absolute;pointer-events:none;';\n document.getElementById(this.treemap.element.id + '_Secondary_Element').appendChild(tooltipEle);\n }\n location = getMousePosition(pageX, pageY, this.treemap.svgObject);\n location.y = (this.tooltipSettings.template) ? location.y + 10 : location.y;\n this.tooltipSettings.textStyle.size = this.tooltipSettings.textStyle.size || this.treemap.themeStyle.tooltipFontSize;\n this.tooltipSettings.textStyle.fontFamily = this.treemap.themeStyle.fontFamily;\n this.tooltipSettings.textStyle.fontStyle = !isNullOrUndefined(this.tooltipSettings.textStyle.fontStyle) ? this.tooltipSettings.textStyle.fontStyle : 'Normal';\n this.tooltipSettings.textStyle.fontWeight = this.tooltipSettings.textStyle.fontWeight || this.treemap.themeStyle.fontWeight;\n this.tooltipSettings.textStyle.color = this.treemap.themeStyle.tooltipFontColor\n || this.tooltipSettings.textStyle.color;\n this.tooltipSettings.textStyle.opacity = this.treemap.themeStyle.tooltipTextOpacity\n || this.tooltipSettings.textStyle.opacity;\n tootipArgs = {\n cancel: false, name: tooltipRendering, item: item,\n options: {\n location: location, text: tooltipContent, data: toolTipData,\n textStyle: this.tooltipSettings.textStyle, template: this.tooltipSettings.template\n },\n treemap: this.treemap,\n element: target, eventArgs: e\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.treemap.trigger(tooltipRendering, tootipArgs, function (args) {\n _this.addTooltip(tootipArgs, markerFill, tooltipEle);\n });\n }\n }\n else {\n this.removeTooltip();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.clearTemplate();\n }\n };\n TreeMapTooltip.prototype.addTooltip = function (tootipArgs, markerFill, tooltipEle, eventArgs) {\n var cancel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var args;\n if (!isNullOrUndefined(tootipArgs)) {\n var c = tootipArgs.cancel, otherArgs = __rest(tootipArgs, [\"cancel\"]);\n cancel = c;\n args = otherArgs.options;\n }\n else {\n cancel = eventArgs.cancel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args = eventArgs;\n }\n if (!cancel) {\n this.svgTooltip = new Tooltip({\n enable: true,\n header: '',\n data: args['data'],\n template: args['template'],\n content: args['text'],\n shapes: [],\n location: args['location'],\n palette: [markerFill],\n areaBounds: this.treemap.areaRect,\n textStyle: args['textStyle'],\n fill: this.treemap.tooltipSettings.fill ? this.treemap.tooltipSettings.fill : this.treemap.themeStyle.tooltipFillColor\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.treemap.isVue || this.treemap.isVue3) {\n this.svgTooltip.controlInstance = this.treemap;\n }\n this.svgTooltip.opacity = this.treemap.themeStyle.tooltipFillOpacity || this.svgTooltip.opacity;\n this.svgTooltip.appendTo(tooltipEle);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.renderReactTemplates();\n }\n else {\n this.removeTooltip();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.clearTemplate();\n }\n };\n TreeMapTooltip.prototype.mouseUpHandler = function (e) {\n this.renderTooltip(e);\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeTooltip.bind(this), 2000);\n };\n TreeMapTooltip.prototype.removeTooltip = function () {\n if (document.getElementsByClassName('EJ2-TreeMap-Tooltip').length > 0) {\n var tooltipElementId = document.getElementsByClassName('EJ2-TreeMap-Tooltip')[0];\n tooltipElementId.parentNode.removeChild(tooltipElementId);\n }\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To bind events for tooltip module\n * @private\n */\n TreeMapTooltip.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.renderTooltip, this);\n this.treemap.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To unbind events for tooltip module\n * @private\n */\n TreeMapTooltip.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.renderTooltip);\n this.treemap.off(Browser.touchEndEvent, this.mouseUpHandler);\n };\n /**\n * Get module name.\n *\n * @returns {string} returns string\n */\n TreeMapTooltip.prototype.getModuleName = function () {\n return 'treeMapTooltip';\n };\n /**\n * To destroy the tooltip.\n *\n * @returns {void}\n * @private\n */\n TreeMapTooltip.prototype.destroy = function () {\n if (!isNullOrUndefined(this.svgTooltip)) {\n this.svgTooltip.destroy();\n }\n this.svgTooltip = null;\n this.tooltipSettings = null;\n this.removeEventListener();\n this.treemap = null;\n };\n return TreeMapTooltip;\n}());\nexport { TreeMapTooltip };\n"],"names":["stringToNumber","value","containerSize","undefined","indexOf","parseInt","measureText","text","font","measureObject","document","getElementById","createElement","id","body","appendChild","innerHTML","SanitizeHtmlHelper","sanitize","style","position","fontSize","size","fontWeight","fontStyle","fontFamily","visibility","top","left","whiteSpace","lineHeight","Size","clientWidth","clientHeight","textTrim","maxWidth","label","width","i","length","substring","findPosition","location","alignment","textSize","type","x","y","height","Location","createTextStyle","renderer","renderOptions","htmlObject","createText","setAttributeNS","renderTextElement","options","color","parent","isMinus","tspanElement","font-size","font-style","font-family","font-weight","text-anchor","anchor","transform","opacity","dominant-baseline","baseLine","fill","SvgRenderer","isNullOrUndefined","connectorText","search","drillLevelText","split","z","drillText","replace","len","createTSpan","setItemTemplateContent","targetId","targetElement","contentItemTemplate","itemTemplate","itemSelect","querySelector","getElement","itemsToOrder","a","b","isContainsData","source","pathName","processData","treemap","isExist","name","leaf","leafItemSettings","data","levels","groupPath","labelPath","weightValuePath","findChildren","children","keys","Object","Array","findHightLightItems","items","mode","treeMap","push","j","parentName","currentItem","layout","renderItems","getTemplateFunction","template","templateFn","querySelectorAll","compile","trim","e","convertElement","element","labelId","childElement","cssText","elementLength","templateHtml","regExp","RegExp","toString","findLabelLocation","rect","labelSize","areaRect","Math","abs","enableDrillDown","renderDirection","measureElement","parentElement","offsetHeight","offsetWidth","measureElementId","parentNode","removeChild","getArea","getShortestEdge","input","container","convertToContainer","min","convertToRect","xOffset","yOffset","getMousePosition","pageX","pageY","elementRect","getBoundingClientRect","pageXOffset","ownerDocument","defaultView","pageYOffset","clientTop","documentElement","clientLeft","positionX","positionY","colorMap","colorMapping","equalValue","paths","isNaN","isEqualColor","dataValue","from","to","prototype","call","colorCollections","minOpacity","maxOpacity","deSaturationColor","rangeValue","getColorByValue","rgbToHex","r","g","componentToHex","rbg","Number","getGradientColor","previousOffset","nextOffset","percent","full","previousColor","nextColor","charAt","colorNameToHex","length_1","splitColorValueOffset","splitColor","getPercentageColor","previous","next","prevColor","getPercentage","substr","ColorValue","round","wordWrap","maximumWidth","dataLabel","textCollection","labelCollection","concat","textWrap","resultText","currentLength","totalWidth","totalLength","sliceString","slice","hide","maxHeight","orderByArea","maintainSelection","className","elementId","levelSelection","index","getAttribute","childElementCount","setAttribute","applyOptions","childNodes","border","selectionSettings","legendMaintain","legendGroup","legendId","treemapSVGRectElement","removeClassNames","elements","parseFloat","classList","remove","textFormatter","format","_i","keys_1","key","join","formatValue","intl","getNumberFormat","useGrouping","useGroupingSeparator","formatFunction","convertToHexCode","hex","convertHexToColor","result","exec","isRGBValue","window","getComputedStyle","drawSymbol","shape","url","svgRenderer","temp","renderLegendShape","htmlElement","functionName","renderOption","renderPath","shapeWidth","shapeHeight","shapeX","shapeY","merge","rx","ry","cx","cy","d","xValue","yValue","cos","PI","sin","href","isParentItem","item","removeShape","collection","setColor","removeLegend","dataCount","k","borderColor","borderWidth","removeSelectionWithHighlight","getElementsByClassName","getLegendIndex","dataLength","treeMapLegendModule","legendCollections","pushCollection","number","legendElement","shapeElement","legendCollection","legendEle","oldFill","oldOpacity","oldBorderColor","oldBorderWidth","shapeOldFill","shapeOldOpacity","shapeOldBorderColor","shapeOldBorderWidth","triggerDownload","fileName","isDownload","attrs","download","toLocaleLowerCase","dispatchEvent","MouseEvent","view","bubbles","cancelable","removeElement","getThemeStyle","theme","toLowerCase","backgroundColor","titleFontColor","titleFontWeight","subTitleFontColor","tooltipFillColor","tooltipFontColor","tooltipFontSize","legendTitleColor","legendTextColor","subtitleFontSize","legendFontSize","tooltipFillOpacity","tooltipTextOpacity","labelFontFamily","beforePrint","itemRendering","drillStart","drillEnd","itemSelected","itemHighlight","tooltipRendering","itemClick","itemMove","doubleClick","rightClick","mouseMove","legendItemRendering","legendRendering","resize","defaultFont","__extends","extendStatics","setPrototypeOf","__proto__","p","hasOwnProperty","__","this","constructor","create","__decorate","decorators","target","desc","c","arguments","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","Border","_super","apply","Property","ChildProperty","Margin","Font","CommonTitleSettings","SubTitleSettings","Complex","TitleSettings","ColorMapping","LegendSettings","InitialDrillSettings","LeafItemSettings","Collection","TooltipSettings","SelectionSettings","HighlightSettings","LevelSettings","Rect","RectOption","dashArray","stroke","PathOption","TextOption","TreeMapAjax","async","contentType","sendData","dataOptions","LayoutPanel","processLayoutPanel","totalRect","treemapLevelData","levelsData","initialDrillDown","groupIndex","groupName","drilledItems","getDrilldownData","extend","legendSettings","currentLevel","calculateLayoutItems","renderLayoutItems","count","enableBreadcrumb","drillData","newData","child","parentData","layoutType","computeSliceAndDiceDimensional","computeSquarifyDimensional","coords","gap","headerHeight","leafItem","groups","sliceAndDiceProcess","groupGap","showHeader","childValue","parentArea","alottedValue","totalWeight","forEach","isHorizontal","sort","isHierarchicalData","padding","calculateChildrenLayout","groupPadding","computeTotalArea","performRowsLayout","currentRow","stack","newCoordinates","getCoordinates","newStack","nextDatum","restData","aspectRatio","newRow","currentRowLength","valueSum","newContainer","cutArea","findMaxAspectRatio","row","rowLength","minArea","Infinity","maxArea","sumArea","area","max","pow","areaWidth","areaHeight","isParent","parentRect","subXOffset","subYOffset","coordinates","y1","x1","dataLength_1","dataSum","i_1","multiplier","datum","onDemandProcess","childItems","parentItem","parentItemGroupname","splice","txtVisible","getItemColor","eventArgs","_this","pathOptions","templatePosition","renderText","groupId","templateEle","textStyle","elementID","interSectAction","rectPath","secondaryEle","layoutGroup","createGroup","itemGroup","templateGroup","isLeafItem","_loop_1","this_1","drillDownView","treemapItemRect","labelFormat","headerFormat","levelName","showLabels","breadcrumbConnector","enableRtl","labelStyle","headerStyle","themeStyle","labelPosition","labelTemplate","headerTemplate","cancel","RenderItems","trigger","observedArgs","path","drawPath","renderItemText","renderTemplate","renderReactTemplates","tabIndex","svgObject","customText","textName","tspanText","labelInterSectAction","drillSymbolCount","drillSymbolSize","textLocation","texts","maxNumber","collectionLength","stringText","getSaturatedColor","itemFill","itemOpacity","defaultLevelsData","option","equalColorValuePath","rangeColorValuePath","colorValuePath","palette","saturatedColor","rgbValue","templateId","baseTemplateId","labelElement","templateLocation","textValue","destroy","currentRect","Theme","mapsTitleFont","Print","control","print","printWindow","open","outerHeight","outerWidth","moveTo","resizeTo","screen","availWidth","availHeight","argsData","htmlContent","getHTMLContent","printFunction","div","cloneNode","Element","exportElement","backgroundElement","getElementsByTagName","getModuleName","ImageExport","export","allowDownload","Promise","resolve","reject","availableSize","Browser","userAgent","svgData","outerHTML","URL","createObjectURL","Blob","XMLSerializer","serializeToString","image_1","Image","context_1","getContext","onload","drawImage","revokeObjectURL","toDataURL","src","PdfExport","orientation","PdfPageOrientation","Landscape","image","context","PdfDocument","imageString","pageSettings","pages","add","graphics","PdfBitmap","save","TreeMap","isResize","preRender","initPrivateVariable","unWireEVents","createSvg","wireEVents","setCulture","render","renderElements","LevelsData","hierarchyData","createSecondaryElement","addTabIndex","renderBorder","renderTitle","titleSettings","processDataManager","dataModule","queryModule","fetchApiModule","localAjax","dataSource","DataManager","query","Query","executeQuery","then","renderTreeMapElements","Fetch","onSuccess","args","send","processingData","visible","renderLegend","elementChange","isResized","renderComplete","firstChild","hasChildNodes","clearTemplate","containerWidth","containerHeight","secondaryElement","insertBefore","borderElement","background","borderRect","drawRectangle","title","bounds","groupEle","margin","right","trimmedTitle","elementSize","location_1","titleBounds","description","subtitleSettings","bottom","map","checkIsHierarchicalData","data_1","currentData","levelOrderName","weight","processHierarchicalData","processFlatJsonData","reOrderLevelData","findTotalWeight","childData","levelIndex","childItemLevel","childLevel","mainData_1","l","allowPrint","printModule","allowPdfExport","pdfExportModule","allowImageExport","imageExportModule","orderNames","level","childName","name_1","childGroupPath","start","currentName","currentPath","prevPath","previousData","IsChildHierarchy","current","isChild","groupObj","EventHandler","clickOnTreeMap","doubleClickOnTreeMap","rightClickOnTreeMap","touchStartEvent","mouseDownOnTreeMap","touchMoveEvent","mouseMoveOnTreeMap","touchEndEvent","mouseEndOnTreeMap","mouseLeaveOnTreeMap","removeEventListener","resizeEvent","resizeOnTreeMap","bind","addEventListener","Internationalization","isDestroyed","args_1","previousSize","currentSize","clearTimeout","contains","setTimeout","refreshing","itemIndex","targetEle","labelText","clickArgs","mouseEvent","preventDefault","textContent","doubleTapTimer1","end","Date","getMilliseconds","doubleClickArgs","rightClickArgs","mouseDown","notify","moveArgs","cursor","calculateSelectedTextLevels","drillLevel","levelText","_a","currentLevelLabel","calculatePreviousLevelChildItems","drillLevelValues","directLevel","levelItems","text1","drillTextLevel","h","compareSelectedLabelWithDrillDownItems","drillLevelChild","newDrillItem","startEvent","endEvent","layoutID","templateID","drillMouseMove","drillLength","which","layerElementId","widthIncrement","heightIncrement","drilledLegendItems","drillElementId","treeMapTooltipModule","removeTooltip","removeInteractivePointer","treeMapHighlightModule","shapeHighlightCollection","highLightId","selectItem","levelOrder","isSelected","treeMapSelectionModule","enable","selectTreemapItem","requiredModules","modules","tooltipSettings","member","highlightSettings","onPropertyChanged","newProp","oldProp","removeSvg","getPersistData","Event","NotifyPropertyChanges","Component","TreeMapLegend","page","legendBorderRect","currentPage","textMaxWidth","legendInteractiveGradient","legendItemRect","legendRenderingCollections","legendNames","totalPages","gradientCount","defsElement","createDefs","_changePosition","calculateLegendBounds","drawLegend","legend","findColorMappingLegendItems","findPaletteLegendItems","firstItem","nextItem","leafIndex","legendTitle","titleTextStyle","titleStyle","legendMode","textX","textY","shapeLocation","orientation_1","legendWidth","legendHeight","legendTitleSize","startX_1","startY_1","shapePadding","itemTextStyle","legendItem","Page","legendTextSize","maxSize","prvePositionX","nextPositionY","getPageChanged","prevPositionY","nextPositionX","DisplayText","Shape","Text","Fill","Data","legendObj","legendRect","legendLength","rectWidth","rectHeight","placement","itemStartX","itemStartY","labelAction","labelDisplayMode","maxTextHeight","maxTextWidth","legendText","itemTextSize","textWidth","textHeight","calculateLegendItems","legendFillColor","legendName","showLegendPath","valuePath","removeDuplicateLegend","removeDuplicates","legendFill","legendData","itemArea","isAddData","gradientElement","x2","y2","actualValue","isDuplicate","isRange","outfill","labelLegend","otherIndex","colorMapProcess","isDesaturation","legendIndex","outOfRangeLegend","showLegend","isAddNewLegendData","colors","q","stop1Color","colorStop","stop2Color","gradient","drawGradient","legendGradientColor","legendLinearGradient","newDataProcess","itemValue","process","textFont","renderLegendBorder","renderLegendTitle","drawLegendItem","itemId","textId","rectOptions","shapeBorder","translate","defaultLegendRtlLocation","spacing","legendRtlLocation","shapeSize","isLineShape_1","strokeColor_1","strokeWidth_1","shapeId","imageUrl","pagingGroup","pagingText","pagingFont","pagingTextSize","leftPageX","rightPageX","locY","pageTextX","leftPageElement","rightPageElement","rightPath","leftPath","leftPageOptions","leftRectPageOptions","wireEvents","rightPageOptions","rightRectPageOptions","pageTextOptions","legendBorder","pointerEvents","getLegendAlignment","trimTitle","renderInteractivePointer","interactiveId","elementFromPoint","changedTouches","clientX","clientY","targetItem","strokeWidth","svgRect","drawInteractivePointer","locX","invertedPointer","areaX","areaY","totalHeight","mouseUpHandler","legendElementId","changeNextPage","on","off","xmlns","defElement","linerGradientEle","createElementNS","offsetColor","stopEle","TreeMapHighlight","shapeTarget","legendHighlightCollection","currentElement","processHighlight","treeMapElement","orders","highlight","highLightElements","selectionModule","selectionId","selectionElements","legendSelectId","shapeSelectId","length_2","nodeEle","Elements","legendSelect","TreeMapSelection","shapeSelectionCollection","legendSelectionCollection","shapeSelect","selection","highlightModule","length_3","length_4","targetEle_1","s","m","length_5","selectionElement","__rest","t","getOwnPropertySymbols","TreeMapTooltip","tooltipId","renderTooltip","touchArg","tootipArgs","isTouch","pointerType","tooltipEle","markerFill","toolTipData","tooltipContent","addTooltip","svgTooltip","Tooltip","header","content","shapes","areaBounds","isVue","isVue3","controlInstance","appendTo","tooltipElementId"],"mappings":"6dAmBA,SAAgBA,EAAeC,EAAOC,GAClC,OAAc,OAAVD,QAA4BE,IAAVF,GACa,IAAxBA,EAAMG,QAAQ,KAAeF,EAAgB,IAAOG,SAASJ,EAAO,IAAMI,SAASJ,EAAO,IAE9F,KA2DX,SAAgBK,EAAYC,EAAMC,GAC9B,IAAIC,EAAgBC,SAASC,eAAe,sBAiB5C,OAhBsB,OAAlBF,IACAA,EAAgBG,gBAAc,QAAUC,GAAI,uBAC5CH,SAASI,KAAKC,YAAYN,IAE9BA,EAAcO,UAAYC,qBAAmBC,SAASX,GACtDE,EAAcU,MAAMC,SAAW,WAC/BX,EAAcU,MAAME,SAAWb,EAAKc,KACpCb,EAAcU,MAAMI,WAAaf,EAAKe,WACtCd,EAAcU,MAAMK,UAAYhB,EAAKgB,UACrCf,EAAcU,MAAMM,WAAajB,EAAKiB,WACtChB,EAAcU,MAAMO,WAAa,SACjCjB,EAAcU,MAAMQ,IAAM,OAC1BlB,EAAcU,MAAMS,KAAO,IAC3BnB,EAAcU,MAAMU,WAAa,SAEjCpB,EAAcU,MAAMW,WAAa,SAC1B,IAAIC,GAAKtB,EAAcuB,YAAavB,EAAcwB,cAiC7D,SAAgBC,EAASC,EAAU5B,EAAMC,GACrC,IAAI4B,EAAQ7B,EACRe,EAAOhB,EAAYC,EAAMC,GAAM6B,MACnC,GAAIf,EAAOa,EAEP,IAAK,IAAIG,EADQ/B,EAAKgC,OACI,EAAGD,GAAK,IAAKA,EAGnC,GAFAF,EAAQ7B,EAAKiC,UAAU,EAAGF,GAAK,OAC/BhB,EAAOhB,EAAY8B,EAAO5B,GAAM6B,QACpBF,GAAYC,EAAMG,OAAS,EAInC,OAHIH,EAAMG,OAAS,IACfH,EAAQ,KAELA,EAInB,OAAOA,EAuBX,SAAgBK,EAAaC,EAAUC,EAAWC,EAAUC,GACxD,IAAIC,EACJ,OAAQH,GACJ,IAAK,OACDG,EAAIJ,EAASI,EACb,MACJ,IAAK,SACDA,EAAc,UAATD,EAAqBH,EAASL,MAAQ,EAAIO,EAASP,MAAQ,EAC1DK,EAASI,EAAKJ,EAASL,MAAQ,EAAMO,EAASP,MAAQ,EAC5D,MACJ,IAAK,MACDS,EAAc,UAATD,EAAqBH,EAASL,MAAQK,EAASK,EAAIH,EAASP,MAC3DK,EAASI,EAAIJ,EAASL,MAASO,EAASP,MAGtD,IAAIU,EAAc,UAATF,EAAoBH,EAASK,EAAKH,EAASI,OAAS,EAAON,EAASK,EAAIL,EAASM,OAAS,EAAKJ,EAASI,OAAS,EAC1H,OAAO,IAAIC,GAASH,EAAGC,GAS3B,SAAgBG,EAAgBC,EAAUC,EAAe7C,GACrD,IAAI8C,EAAaF,EAASG,WAAWF,EAAe7C,GASpD,OARA8C,EAAWE,eAAe,uCAAwC,YAAa,YAC/EF,EAAWlC,MAAM,eAAiB,OAClCkC,EAAWlC,MAAM,oBAAsB,OACvCkC,EAAWlC,MAAM,yBAA2B,OAC5CkC,EAAWlC,MAAM,uBAAyB,OAC1CkC,EAAWlC,MAAM,sBAAwB,OACzCkC,EAAWlC,MAAM,mBAAqB,OACtCkC,EAAWlC,MAAM,kBAAoB,OAC9BkC,EAaX,SAAgBG,EAAkBC,EAASjD,EAAMkD,EAAOC,EAAQC,QAC5C,IAAZA,IAAsBA,GAAU,GACpC,IAeIC,EAEAb,EACAK,EAlBAD,GACAU,YAAatD,EAAKc,KAClByC,aAAcvD,EAAKgB,UACnBwC,cAAexD,EAAKiB,WACpBwC,cAAezD,EAAKe,WACpB2C,cAAeT,EAAQU,OACvBC,UAAaX,EAAQW,UACrBC,QAAW7D,EAAK6D,QAChBC,oBAAqBb,EAAQc,SAC7B1D,GAAM4C,EAAQ5C,GACdiC,EAAKW,EAAQX,EACbC,EAAKU,EAAQV,EACbyB,KAAQd,GAERnD,EAA+B,iBAAjBkD,EAAQlD,KAAoBkD,EAAQlD,KAAOqD,EAAUH,EAAQlD,KAAKkD,EAAQlD,KAAKgC,OAAS,GAAKkB,EAAQlD,KAAK,GAExH4C,EAAW,IAAIsB,cAAY,IAK/B,IAFsBC,oBAAkBnE,KAAUmE,oBAAkBjB,EAAQkB,gBACvEpE,EAAKqE,OAAOnB,EAAQkB,cAAc,KAAO,EAK1C,IAAK,IADDE,EAFetE,EAEeuE,MAAM,KAC/BC,EAAI,EAAGA,EAAIF,EAAetC,OAAQwC,IAAK,CAC5C,IAAIC,GAAkE,IAArDH,EAAeE,GAAGH,OAAOnB,EAAQkB,gBAC7CD,oBAAkBjB,EAAQkB,eACHE,EAAeE,GAAvCtB,EAAQkB,cAGZ,GAFAvB,EAAkB,GAAIK,EAAQ5C,GAAK,IAAMkE,EACzC1B,EAAaH,EAAgBC,EAAUC,EAAe4B,GAClDD,EAAI,GAAM,GAAW,IAANA,EAAS,CAExBC,EAAYA,EAAUC,QADb,OACyB,SAEtC,IAAI3D,EAAOhB,EAAY0E,EAAWxE,GAClC4C,EAAiB,EAAU,IAAN2B,EAAU3B,EAAiB,EAAI9B,EAAKe,MAAQe,EAAiB,EAAI9B,EAAKe,MAbjF,EAcVsB,EAAO5C,YAAYsC,QAIvBA,EAAaH,EAAgBC,EAAUC,EAAe7C,GACtDoD,EAAO5C,YAAYsC,GAEvB,GAA4B,iBAAjBI,EAAQlD,MAAqBkD,EAAQlD,KAAKgC,OAAS,EAAG,CAC7D,IAAK,IAAID,EAAI,EAAG4C,EAAMzB,EAAQlD,KAAKgC,OAAQD,EAAI4C,EAAK5C,IAChDU,EAAU1C,EAAYmD,EAAQlD,KAAK+B,GAAI9B,GAAY,OACnDqD,EAAeV,EAASgC,aACpBrC,EAAKW,EAAQX,EAAGjC,GAAM4C,EAAQ5C,GAC9BkC,EAAMU,EAAS,EAAKnB,EAAIU,GACzBS,EAAQlD,KAAK+B,IAChBe,EAAWtC,YAAY8C,GAE3BF,EAAO5C,YAAYsC,GAEvB,OAAOA,EASX,SAAgB+B,EAAuBC,EAAUC,EAAeC,GAC5D,IACIC,EADAC,EAAaJ,EAASP,MAAM,aAAa,GAGzCU,EADAH,EAASjF,QAAQ,mBAAqB,EACvBkF,EAGA5E,SAASgF,cAAc,IAAMD,EAAa,kBAExDf,oBAAkBc,KACnBA,EAAaxE,UAAYuE,GAQjC,SAAgBI,EAAW9E,GACvB,OAAOH,SAASC,eAAeE,GAQnC,SAAgB+E,EAAaC,EAAGC,GAC5B,OAAOD,EAAU,SAAMC,EAAU,OAAI,EAAID,EAAU,OAAIC,EAAU,OAAI,GAAK,EAU9E,SAAgBC,EAAeC,EAAQC,EAAUC,EAAaC,GAK1D,IAAK,IAJDC,GAAU,EACVC,EAAO,GAEPC,EAAOH,EAAQI,iBACVjE,EAAI,EAAGA,EAAI0D,EAAOzD,OAAQD,IAAK,CAGpC,IAAIkE,EAAON,EAFJC,EAAQM,OAAOnE,GAAK6D,EAAQM,OAAOnE,GAAGoE,UAAYJ,EAAKK,UAAYL,EAAKK,UAC3ER,EAAQS,kBACoB,YAChC,GAAIZ,EAAO1D,KAAOkE,IACdH,GAAQG,GAAQlE,IAAM0D,EAAOzD,OAAS,EAAI,GAAK,QAClC0D,EAAU,CACnBG,GAAU,EACV,OAIZ,OAAOA,EAOX,SAAgBS,EAAaL,GACzB,IAAIM,EACJ,GAAIN,EAAM,CACN,IAAIO,EAAOC,OAAOD,KAAKP,GACvBM,KACA,IAAK,IAAIxE,EAAI,EAAGA,EAAIyE,EAAKxE,OAAQD,IAC7B,GAAIkE,EAAKO,EAAKzE,cAAe2E,MAAO,CAChCH,EAAiB,OAAIN,EAAKO,EAAKzE,IAC/BwE,EAAc,IAAIC,EAAKzE,GACvB,OAIZ,OAAOwE,EAUX,SAAgBI,EAAoBV,EAAMW,EAAOC,EAAMC,GACnD,GAAa,UAATD,EAAkB,CAClBD,EAAMG,KAAKd,EAAqB,gBAChC,IAAIM,EAAWD,EAAaL,GAAc,OAC1C,GAAIM,GAAYA,EAASvE,OAAS,EAAG,CACjC,IAAK,IAAID,EAAI,EAAGA,EAAIwE,EAASvE,OAAQD,KACqB,IAAlD6E,EAAM/G,QAAQ0G,EAASxE,GAAmB,iBAC1C6E,EAAMG,KAAKR,EAASxE,GAAmB,gBAG/C,IAAK,IAAIiF,EAAI,EAAGA,EAAIT,EAASvE,OAAQgF,IACjCL,EAAoBJ,EAASS,GAAIJ,EAAOC,EAAMC,SAIrD,GAAa,WAATD,EACiC,iBAA3BZ,EAAqB,iBAA6D,IAA3CW,EAAM/G,QAAQoG,EAAqB,kBACjFW,EAAMG,KAAKd,EAAqB,gBAChCU,EAAoBV,EAAa,OAAGW,EAAOC,EAAMC,SAGpD,GAAa,QAATD,EAGA,CAAA,IAFDI,EAAahB,EAAqB,eAAE1B,MAAM,KAAK,GAC/C2C,OAAc,EAClB,IAASnF,EAAI,EAAGA,EAAI+E,EAAQK,OAAOC,YAAYpF,OAAQD,KACnDmF,EAAcJ,EAAQK,OAAOC,YAAYrF,IACP,eAAElC,QAAQoH,IAAe,IAAuD,IAAlDL,EAAM/G,QAAQqH,EAA4B,iBACtGN,EAAMG,KAAKG,EAA4B,qBAK/CN,EAAMG,KAAKd,EAAqB,gBAEpC,OAAOW,EASX,SAAgBS,EAAoBC,GAChC,IAAIC,EAAa,KACjB,IAEQA,EADoB,mBAAbD,GAA2BnH,SAASqH,iBAAiBF,GAAUtF,OACzDyF,UAAQtH,SAASgF,cAAcmC,GAAU7G,UAAUiH,QAGnDD,UAAQH,GAG7B,MAAOK,GACHJ,EAAaE,UAAQH,GAEzB,OAAOC,EASX,SAAgBK,EAAeC,EAASC,EAAS7B,GAC7C,IAAI8B,EAAe1H,gBAAc,OAC7BC,GAAIwH,IAERC,EAAanH,MAAMoH,QAAU,2CAE7B,IADA,IAAIC,EAAgBJ,EAAQ7F,OACrBiG,EAAgB,GACnBF,EAAavH,YAAYqH,EAAQ,IACjCI,IAIJ,IAAK,IAFDC,EAAeH,EAAatH,UAC5B+F,EAAOC,OAAOD,KAAKP,GACdlE,EAAI,EAAGA,EAAIyE,EAAKxE,OAAQD,IAAK,CAClC,IAAIoG,EAASC,OACbF,EAAeA,EAAaxD,QAAQ,IAAIyD,EAAO,MAAQ3B,EAAKzE,GAAK,KAAM,KAAMkE,EAAKO,EAAKzE,GAAGsG,aAG9F,OADAN,EAAatH,UAAYyH,EAClBH,EAWX,SAAgBO,EAAkBC,EAAM1H,EAAU2H,EAAWlG,EAAMsD,GAC/D,IAAIzD,EAAW,IAAIO,GAAS,EAAG,GAG3BH,EAAc,aAATD,EAAuBsD,EAAQ6C,SAASlG,EAAI,EACjDC,EAAc,aAATF,EAAuBsD,EAAQ6C,SAASjG,EAAI,EAYrD,OAXAL,EAASI,EAAKmG,KAAKC,IAAIpG,GAAM1B,EAAShB,QAAQ,SAAW,EAAK0I,EAAKhG,EAJrD,EAIqE1B,EAAShB,QAAQ,UAAY,EACrD0I,EAAKhG,EAAIgG,EAAKzG,MAAS0G,EAAU1G,MAAxFyG,EAAKhG,GAAMgG,EAAKzG,MAAQ,EAAM0G,EAAU1G,MAAQ,KAJrC,GAKX8D,EAAQgD,iBAAgD,uBAA5BhD,EAAQiD,iBACL,uBAA5BjD,EAAQiD,gBAIX1G,EAASK,EAAIkG,KAAKC,IAAInG,GAAM3B,EAAShB,QAAQ,QAAU,EAAe,aAATyC,EAAsBiG,EAAK/F,EAAI+F,EAAK/F,EAAIgG,EAAU/F,OACzG5B,EAAShB,QAAQ,WAAa,EAC2B0I,EAAK/F,EAAI+F,EAAK9F,OAAU+F,EAAU/F,OAD/C,aAATH,EAAuBiG,EAAK/F,GAAM+F,EAAK9F,OAAS,EAAM+F,EAAU/F,OAAS,GACzG8F,EAAK/F,EAAK+F,EAAK9F,OAAS,EAAK+F,EAAU/F,OAAS,IALzDN,EAASK,EAAIkG,KAAKC,IAAKJ,EAAK/F,EAAI+F,EAAK9F,OAAU+F,EAAU/F,OAR/C,GAePN,EAQX,SAAgB2G,EAAejB,EAASkB,GACpC,IAAIhI,EAAO,IAAIS,GAAK,EAAG,GACvBuH,EAAcvI,YAAYqH,GAC1B9G,EAAK0B,OAASoF,EAAQmB,aACtBjI,EAAKe,MAAQ+F,EAAQoB,YACrB,IAAIC,EAAmB/I,SAASC,eAAeyH,EAAQvH,IAEvD,OADA4I,EAAiBC,WAAWC,YAAYF,GACjCnI,EAOX,SAAgBsI,EAAQd,GACpB,OAAQA,EAAKzG,MAAQyG,EAAKhG,IAAMgG,EAAK9F,OAAS8F,EAAK/F,GAOvD,SAAgB8G,EAAgBC,GAC5B,IAAIC,EAAYC,EAAmBF,GAC/BzH,EAAQ0H,EAAU1H,MAClBW,EAAS+G,EAAU/G,OAEvB,OADaiG,KAAKgB,IAAI5H,EAAOW,GAQjC,SAAgBgH,EAAmBlB,GAC/B,IAAIhG,EAAIgG,EAAKhG,EACTC,EAAI+F,EAAK/F,EAGb,OACID,EAAGA,EACHC,EAAGA,EACHV,MALQyG,EAAKzG,MAKES,EACfE,OALS8F,EAAK9F,OAKGD,GAQzB,SAAgBmH,EAAcH,GAC1B,IAAII,EAAUJ,EAAUjH,EACpBsH,EAAUL,EAAUhH,EAGxB,OACID,EAAGqH,EACHpH,EAAGqH,EACH/H,MAAO8H,EALCJ,EAAU1H,MAMlBW,OAAQoH,EALCL,EAAU/G,QAe3B,SAAgBqH,EAAiBC,EAAOC,EAAOnC,GAC3C,IAAIoC,EAAcpC,EAAQqC,wBACtBC,EAActC,EAAQuC,cAAcC,YAAYF,YAChDG,EAAczC,EAAQuC,cAAcC,YAAYC,YAChDC,EAAY1C,EAAQuC,cAAcI,gBAAgBD,UAClDE,EAAa5C,EAAQuC,cAAcI,gBAAgBC,WACnDC,EAAYT,EAAY5I,KAAO8I,EAAcM,EAC7CE,EAAYV,EAAY7I,IAAMkJ,EAAcC,EAChD,OAAO,IAAI7H,GAAUqH,EAAQW,EAAaV,EAAQW,GAUtD,SAAgBC,EAASC,EAAcC,EAAYpL,GAC/C,IAAIuE,EAEAH,EADAiH,KAEJ,GAAI5G,oBAAkB2G,IAAgB3G,oBAAkBzE,IAAUsL,MAAMtL,GACpE,OAAO,KAEX,IAAK,IAAIqC,EAAI,EAAGA,EAAI8I,EAAa7I,OAAQD,IAAK,CAC1C,IAAIkJ,GAAe,EACfC,EAAYxL,EACXyE,oBAAkB0G,EAAa9I,GAAGoJ,OAAUhH,oBAAkB0G,EAAa9I,GAAGqJ,KAC3EjH,oBAAkB0G,EAAa9I,GAAGrC,QAY/ByE,oBAAkB0G,EAAa9I,GAAGoJ,OAAUhH,oBAAkB0G,EAAa9I,GAAGqJ,MACjFjH,oBAAmB0G,EAAa9I,GAAQ,SACvCrC,GAASmL,EAAa9I,GAAGoJ,MAAQN,EAAa9I,GAAGqJ,IAAM1L,GACpDmL,EAAa9I,GAAGrC,QAAUoL,KAC1BD,EAAa9I,GAAGrC,QAAUoL,IAC1BG,GAAe,GAGfhH,EAD0D,mBAA1DwC,OAAO4E,UAAUhD,SAASiD,KAAKT,EAAa9I,GAAGoB,OACvC8H,EAA8DJ,EAAa9I,GAAGoB,MAAM,GAArEoI,EAAiBV,EAAa9I,GAAImJ,GAGlDL,EAAa9I,GAAGoB,OAtB1BzD,GAASmL,EAAa9I,GAAGoJ,MAAQN,EAAa9I,GAAGqJ,IAAM1L,GACvDmL,EAAa9I,GAAGrC,QAAUoL,IAC3BG,GAAe,EAEXhH,EAD0D,mBAA1DwC,OAAO4E,UAAUhD,SAASiD,KAAKT,EAAa9I,GAAGoB,OACvC8H,EAA8DJ,EAAa9I,GAAGoB,MAAM,GAArEoI,EAAiBV,EAAa9I,GAAImJ,GAGlDL,EAAa9I,GAAGoB,QAmB7BzD,GAASmL,EAAa9I,GAAGoJ,MAAQzL,GAASmL,EAAa9I,GAAGqJ,IACxDP,EAAa9I,GAAGrC,QAAUoL,KAC1B3G,oBAAkB0G,EAAa9I,GAAGyJ,cAAgBrH,oBAAkB0G,EAAa9I,GAAG0J,aACrFxH,IACHH,EAAU4H,EAAkBb,EAAa9I,GAAIrC,KAEnC,KAATuE,GAAeE,oBAAkBF,KAC/BE,oBAAkB0G,EAAa9I,GAAGoJ,OAAShH,oBAAkB0G,EAAa9I,GAAGqJ,KAC7EjH,oBAAkB0G,EAAa9I,GAAGyJ,aAAerH,oBAAkB0G,EAAa9I,GAAG0J,aACnFtH,oBAAkB0G,EAAa9I,GAAGrC,SACrCuE,EAAkE,mBAA1DwC,OAAO4E,UAAUhD,SAASiD,KAAKT,EAAa9I,GAAGoB,OACnD0H,EAAa9I,GAAGoB,MAAM,GAAK0H,EAAa9I,GAAGoB,OAEnDW,EAAWK,oBAAkBL,GAAqB,IAAVA,EACxCiH,EAAMhE,KAAK9C,GAEf,IAAK,IAAI+C,EAAI+D,EAAM/I,OAAS,EAAGgF,GAAK,EAAGA,IAEnCA,GADA/C,EAAO8G,EAAM/D,KACC,EAAIA,EAEtB,OAAS/C,KAAMA,EAAMH,QAASA,GASlC,SAAgB4H,EAAkBb,EAAcc,GAC5C,IAAI7H,EAAU,EACd,GAAK6H,GAAcd,EAAaM,MAAQQ,GAAcd,EAAaO,GAAK,CAEpEtH,GADa6H,EAAad,EAAaM,OAASN,EAAaO,GAAKP,EAAaM,OAC3DN,EAAaY,WAAaZ,EAAaW,YAAeX,EAAaW,WAE3F,OAAO1H,EAAQuE,WAQnB,SAAgBkD,EAAiBX,EAAUlL,GAEvC,OADmBkM,EAAgBhB,EAAUlL,GAUjD,SAAgBmM,EAASC,EAAGC,EAAGxG,GAC3B,MAAO,IAAMyG,EAAeF,GAAKE,EAAeD,GAAKC,EAAezG,GAQxE,SAAgBqG,EAAgBhB,EAAUlL,GACtC,IACIuM,EAWJ,OAVIC,OAAOxM,KAAWkL,EAASO,KACnBP,EAASzH,MAAM,GAElB+I,OAAOxM,KAAWkL,EAASQ,GACxBR,EAASzH,MAAMyH,EAASzH,MAAMnB,OAAS,GAIvC6J,GADRI,EAAME,EAAiBD,OAAOxM,GAAQkL,IACjBkB,EAAGG,EAAIF,EAAGE,EAAI1G,GAU3C,SAAgB4G,EAAiBzM,EAAOkL,GACpC,IAAIwB,EAAiBxB,EAASO,KAC1BkB,EAAazB,EAASQ,GACtBkB,EAAU,EACVC,EAAOF,EAAaD,EAExBE,GAAW5M,EAAQ0M,GAAkBG,EACrC,IAAIC,EACAC,EACJ,GAAI7B,EAASzH,MAAMnB,QAAU,EACzBwK,EAAgD,MAAhC5B,EAASzH,MAAM,GAAGuJ,OAAO,GAAa9B,EAASzH,MAAM,GAAKwJ,EAAe/B,EAASzH,MAAM,IACxGsJ,EAAoE,MAAxD7B,EAASzH,MAAMyH,EAASzH,MAAMnB,OAAS,GAAG0K,OAAO,GACzD9B,EAASzH,MAAMyH,EAASzH,MAAMnB,OAAS,GAAK2K,EAAe/B,EAASzH,MAAMyH,EAASzH,MAAMnB,OAAS,QAErG,CACDwK,EAAgD,MAAhC5B,EAASzH,MAAM,GAAGuJ,OAAO,GAAa9B,EAASzH,MAAM,GAAKwJ,EAAe/B,EAASzH,MAAM,IACxGsJ,EAAoE,MAAxD7B,EAASzH,MAAMyH,EAASzH,MAAMnB,OAAS,GAAG0K,OAAO,GACzD9B,EAASzH,MAAMyH,EAASzH,MAAMnB,OAAS,GAAK2K,EAAe/B,EAASzH,MAAMyH,EAASzH,MAAMnB,OAAS,IAOtG,IAAK,IANDsD,EAAIiH,GAAQ3B,EAASzH,MAAMnB,OAAS,GAGpC4K,EAAWhC,EAASzH,MAAMnB,OAAS,EACnC6K,KACAC,KACK9F,EAAI,EAAGA,EAAI4F,EAAU5F,IAG1B8F,GAAevH,EADX6G,EADApF,EAAI1B,EAEanC,MAAOyH,EAASzH,MAAM6D,IAC3C6F,EAAsB9F,KAAK+F,GAE/B,IAAK,IAAI/K,EAAI,EAAGA,EAAI8K,EAAsB7K,OAAQD,IAC1CqK,GAAkB1M,GAASA,GAASmN,EAAsB9K,GAAM,GAAW,IAANA,GAGrE0K,EAF2D,MAAhDI,EAAsB9K,GAAU,MAAE2K,OAAO,GAChDG,EAAsB9K,GAAU,MAAI4K,EAAeE,EAAsB9K,GAAU,OAEvFuK,EAAU5M,EAAQmN,EAAsB9K,GAAM,EAAI,EAAI2G,KAAKC,KAAKjJ,EAAQmN,EAAsB9K,GAAM,GAAKuD,IAClG5F,EAAQmN,EAAsB9K,GAAM,GAAKuD,GAE3CuH,EAAsB9K,GAAM,GAAKrC,GAASA,GAAS2M,GAActK,IAAO8K,EAAsB7K,OAAS,IAG5GwK,EAF2D,MAAhDK,EAAsB9K,GAAU,MAAE2K,OAAO,GAChDG,EAAsB9K,GAAU,MAAI4K,EAAeE,EAAsB9K,GAAU,OAEvFuK,EAAU5M,EAAQmN,EAAsB9K,GAAM,EAC1C,EAAI2G,KAAKC,KAAKjJ,EAAQmN,EAAsB9K,GAAM,GAAKuD,IAAM5F,EAAQmN,EAAsB9K,GAAM,GAAKuD,GAE1GvD,IAAM8K,EAAsB7K,OAAS,GAAKD,EAAI8K,EAAsB7K,QAChE6K,EAAsB9K,GAAM,GAAKrC,GAASA,GAASmN,EAAsB9K,EAAI,GAAM,IAGnFyK,EAF2D,MAAhDK,EAAsB9K,GAAU,MAAE2K,OAAO,GAChDG,EAAsB9K,GAAU,MAAI4K,EAAeE,EAAsB9K,GAAU,OAEvF0K,EAAgE,MAApDI,EAAsB9K,EAAI,GAAU,MAAE2K,OAAO,GACrDG,EAAsB9K,EAAI,GAAU,MAAI4K,EAAeE,EAAsB9K,EAAI,GAAU,OAC/FuK,EAAU5D,KAAKC,IAAKjJ,EAAQmN,EAAsB9K,EAAI,GAAM,GAAMuD,GAKlF,OAAOyH,EAAmBT,EAASE,EAAeC,GAStD,SAAgBM,EAAmBT,EAASU,EAAUC,GAClD,IAAIR,EAAYQ,EAAK1I,MAAM,KAAK,GAC5B2I,EAAYF,EAASzI,MAAM,KAAK,GAChCuH,EAAIqB,EAAcb,EAASxM,SAASoN,EAAUE,OAAO,EAAG,GAAI,IAAKtN,SAAS2M,EAAUW,OAAO,EAAG,GAAI,KAClGrB,EAAIoB,EAAcb,EAASxM,SAASoN,EAAUE,OAAO,EAAG,GAAI,IAAKtN,SAAS2M,EAAUW,OAAO,EAAG,GAAI,KAClG7H,EAAI4H,EAAcb,EAASxM,SAASoN,EAAUE,OAAO,EAAG,GAAI,IAAKtN,SAAS2M,EAAUW,OAAO,EAAG,GAAI,KACtG,OAAO,IAAIC,GAAWvB,EAAGC,EAAGxG,GAShC,SAAgB4H,EAAcb,EAASU,EAAUC,GAC7C,IAAIV,EAAOU,EAAOD,EAClB,OAAOtE,KAAK4E,MAAON,EAAYT,EAAOD,GAS1C,SAAgBiB,EAASC,EAAcC,EAAWxN,GAK9C,IAAK,IADDD,EAHA0N,EAAiBD,EAAUlJ,MAAM,KACjC1C,EAAQ,GACR8L,KAEK5L,EAAI,EAAG4C,EAAM+I,EAAe1L,OAAQD,EAAI4C,EAAK5C,IAClD/B,EAAO0N,EAAe3L,GAClBhC,EAAY8B,EAAM+L,OAAO5N,GAAOC,GAAM6B,MAAQ0L,EAC9C3L,EAAQA,EAAM+L,QAAkB,KAAV/L,EAAe,GAAK,KAAO7B,GAGnC,KAAV6B,GACA8L,EAAgB5G,KAAKpF,EAAS6L,EAAc3L,EAAO5B,IACnD4B,EAAQ7B,IAGR2N,EAAgB5G,KAAKpF,EAAS6L,EAAcxN,EAAMC,IAClDD,EAAO,IAGX6B,GAASE,IAAM4C,EAAM,GACrBgJ,EAAgB5G,KAAKpF,EAAS6L,EAAc3L,EAAO5B,IAG3D,OAAO0N,EASX,SAAgBE,EAASjM,EAAUC,EAAO5B,GACtC,IAAI6N,KACAC,EAAgB,EAChBC,EAAajO,EAAY8B,EAAO5B,GAAM6B,MACtCmM,EAAcpM,EAAMG,OACxB,GAAIJ,GAAYoM,EAEZ,OADAF,EAAW/G,KAAKlF,GACTiM,EAGP,IAAK,IAAI/L,EAAIF,EAAMG,OAAQD,EAAIgM,EAAehM,IAAK,CAC/C,IAAImM,EAAcrM,EAAMsM,MAAMJ,EAAehM,GAE7C,IADAiM,EAAajO,EAAYmO,EAAajO,GAAM6B,QAC1BF,EAAU,CAGxB,GAFAkM,EAAW/G,KAAKmH,GAChBH,GAAiBG,EAAYlM,OACzBiM,IAAgBF,EAChB,OAAOD,EAEX/L,EAAIkM,EAAc,GAI9B,OAAOH,EAYX,SAAgBM,EAAKxM,EAAUyM,EAAWrO,EAAMC,GAC5C,IACIoC,EAAWtC,EAAYC,EAAMC,GAEjC,OADYoC,EAASP,MAAQF,GAAYS,EAASI,OAAS4L,EAAa,IAAMrO,EASlF,SAAgBsO,EAAYhJ,EAAGC,GAC3B,OAAID,EAAY,WAAMC,EAAY,SACvB,EAEFD,EAAY,SAAIC,EAAY,SAC1B,GAEH,EASZ,SAAgBgJ,EAAkB3I,EAASiC,EAAS2G,GAChD,IAAIC,EAAY7I,EAAQ8I,eACxB,GAAID,EACA,IAAK,IAAIE,EAAQ,EAAGA,EAAQF,EAAUzM,OAAQ2M,IACtC9G,EAAQ+G,aAAa,QAAUH,EAAUE,GACrC9G,EAAQgH,kBAAoB,IAC5BhH,EAAQtB,SAAS,GAAGuI,aAAa,QAASN,GAC1CO,EAAalH,EAAQmH,WAAW,IAC5BC,OAAQrJ,EAAQsJ,kBAAkBD,OAAQhL,KAAM2B,EAAQsJ,kBAAkBjL,KAC1EH,QAAS8B,EAAQsJ,kBAAkBpL,WAK3C+D,EAAQiH,aAAa,QAAS,IAW9C,SAAgBK,EAAevJ,EAASwJ,GACpC,IAAIX,EAAY7I,EAAQyJ,SACxB,GAAIZ,EACA,IAAK,IAAI1M,EAAI,EAAGA,EAAI0M,EAAUzM,OAAQD,IAClC,IAAK,IAAIiF,EAAI,EAAGA,EAAIoI,EAAYP,kBAAmB7H,IAC/C,GAAIoI,EAAYJ,WAAWhI,GAAO,KAAMyH,EAAU1M,GAAI,CAClD,IAAIuN,EAAwBF,EAAYJ,WAAWhI,GACnDsI,EAAsBR,aAAa,OAAQlJ,EAAQsJ,kBAAkBjL,MACrEqL,EAAsBR,aAAa,SAAUlJ,EAAQsJ,kBAAkBD,OAAO9L,OAC9EmM,EAAsBR,aAAa,eAAiBlJ,EAAQsJ,kBAAkBD,OAAY,MAAE5G,YAC5FiH,EAAsBR,aAAa,UAAWlJ,EAAQsJ,kBAAkBpL,UAa5F,SAAgByL,EAAiBC,EAAUlN,EAAMsD,GAG7C,IAAK,IAFDiC,EAEKb,EAAI,EAAGA,EAAIwI,EAASxN,OAAQgF,IAIjC+H,EAHAlH,EAAU1D,oBAAkBqL,EAASxI,GAAGgI,WAAW,IAAMQ,EAASxI,GAC9DwI,EAASxI,GAAGgI,WAAW,GACjBpJ,EAAQuB,OAAOC,YAAYqI,WAAW5H,EAAQvH,GAAGiE,MAAM,gBAAgB,KAAc,SAE/FiL,EAASxI,GAAG0I,UAAUC,OAAOrN,GAC7B0E,GAAK,EASb,SAAgB+H,EAAalH,EAAS3E,GAClC2E,EAAQiH,aAAa,UAAW5L,EAAiB,SAC5CiB,oBAAkBjB,EAAc,OACjC2E,EAAQiH,aAAa,OAAQ5L,EAAc,MAE/C2E,EAAQiH,aAAa,SAAU5L,EAAgB,OAAS,OACxD2E,EAAQiH,aAAa,eAAgB5L,EAAgB,OAAS,OASlE,SAAgB0M,EAAcC,EAAQ5J,EAAML,GACxC,GAAIzB,oBAAkB0L,GAClB,OAAO,KAGX,IAAK,IAAIC,EAAK,EAAGC,EADNtJ,OAAOD,KAAKP,GACS6J,EAAKC,EAAO/N,OAAQ8N,IAAM,CACtD,IAAIE,EAAMD,EAAOD,GACjBD,EAASA,EAAOtL,MAAM,KAAOyL,EAAM,KAAKC,KAAKC,EAAYjK,EAAK+J,GAAMpK,GAASyC,YAEjF,OAAOwH,EAQX,SAAgBK,EAAYxQ,EAAOkG,GAU/B,OAPIA,EAAQiK,SAAW7E,MAAMkB,OAAOxM,IACfkG,EAAQuK,KAAKC,iBAAkBP,OAAQjK,EAAQiK,OAAQQ,YAAazK,EAAQ0K,sBAC/EC,CAAerE,OAAOxM,IAGtBA,IAEiB,GAmBvC,SAAgB8Q,EAAiB9Q,GAC7B,MAAO,IAAMsM,EAAetM,EAAMoM,GAAKE,EAAetM,EAAMqM,GAAKC,EAAetM,EAAM6F,GAM1F,SAAgByG,EAAetM,GAC3B,IAAI+Q,EAAM/Q,EAAM2I,SAAS,IACzB,OAAsB,IAAfoI,EAAIzO,OAAe,IAAMyO,EAAMA,EAO1C,SAAgBC,EAAkBD,GAC9B,IAAIE,EAAS,4CAA4CC,KAAKH,GAC9D,OAAOE,EAAS,IAAItD,GAAWvN,SAAS6Q,EAAO,GAAI,IAAK7Q,SAAS6Q,EAAO,GAAI,IAAK7Q,SAAS6Q,EAAO,GAAI,KACjG,IAAItD,GAAW,IAAK,IAAK,KAOjC,SAAgBV,EAAexJ,GAC3BA,EAAkB,gBAAVA,EAA0B,QAAUA,EAC5C,IAAI0E,EAAU1H,SAASC,eAAe,sBACtCyH,EAAQjH,MAAMuC,MAAQA,EAEtB,IAAI0N,GADJ1N,EAAQ2N,OAAOC,iBAAiBlJ,GAAS1E,OAClBuB,QAAQ,gBAAiB,IAAIH,MAAM,KAC1D,OAAOiM,EAAiB,IAAInD,GAAWvN,SAAS+Q,EAAW,GAAI,IAAK/Q,SAAS+Q,EAAW,GAAI,IAAK/Q,SAAS+Q,EAAW,GAAI,MAY7H,SAAgBG,EAAW7O,EAAU8O,EAAOlQ,EAAMmQ,EAAKhO,EAASrB,GAC5D,IAAIsP,EAAc,IAAIjN,cAAY,IAC9BkN,EAAOC,EAAkBlP,EAAUpB,EAAMkQ,EAAO/N,EAASgO,GACzDI,EAAcH,EAAY,OAASC,EAAKG,cAAcH,EAAKI,cAE/D,OADAF,EAAYxC,aAAa,aAAcjN,GAChCyP,EAWX,SAAgBD,EAAkBlP,EAAUpB,EAAMkQ,EAAO/N,EAASgO,GAC9D,IAAIO,EACAF,EAAe,OACfG,EAAa3Q,EAAKe,MAClB6P,EAAc5Q,EAAK0B,OACnBmP,EAASzP,EAASI,EAClBsP,EAAS1P,EAASK,EAClBD,EAAIJ,EAASI,GAAMmP,EAAa,EAChClP,EAAIL,EAASK,GAAMmP,EAAc,EACrC,OAAQV,GACJ,IAAK,SACL,IAAK,SACDM,EAAe,UACfO,QAAM5O,GAAW6O,GAAML,EAAa,EAAGM,GAAML,EAAc,EAAGM,GAAML,EAAQM,GAAML,IAClF,MACJ,IAAK,eACDJ,EAAa,KAAYG,EAAS,KAAOC,EAAUF,EAAc,GAAM,MAAkBC,EAAS,KAC3FC,GAAWF,EAAc,GAChCG,QAAM5O,GAAWiP,EAAKV,IACtB,MACJ,IAAK,UACDA,EAAa,KAAYlP,EAAI,IAAMsP,EAAS,MAC5BD,EAAS,KAAOC,GAAWF,EAAc,GAAM,OAC9CC,EAAUF,EAAa,GAAM,IAAMG,EAAS,MAC7CD,EAAS,KAAOC,EAAUF,EAAc,GAAM,MAC9CpP,EAAI,IAAMsP,EAAS,KACnCC,QAAM5O,GAAWiP,EAAKV,IACtB,MACJ,IAAK,YACDA,EAAa,KAAYlP,EAAI,KAAOsP,GAAWF,EAAc,GAAM,OAClDC,EAAUF,EAAa,GAAM,KAAOG,GAAWF,EAAc,GAAM,OACnEC,EAAUF,EAAa,GAAM,KAAOG,EAAUF,EAAc,GAAM,MACnEpP,EAAI,KAAOsP,EAAUF,EAAc,GAAM,MACzCpP,EAAI,KAAOsP,GAAWF,EAAc,GAAM,KAC1DG,QAAM5O,GAAWiP,EAAKV,IACtB,MACJ,IAAK,WACDA,EAAa,KAAYlP,EAAI,KAAOsP,EAAUF,EAAc,GAAM,MAClDC,EAAS,KAAOC,GAAWF,EAAc,GAAM,OAC9CC,EAAUF,EAAa,GAAM,KAAOG,EAAUF,EAAc,GAAM,MACnEpP,EAAI,KAAOsP,EAAUF,EAAc,GAAM,KACzDG,QAAM5O,GAAWiP,EAAKV,IACtB,MACJ,IAAK,mBACDA,EAAa,MAAaG,EAAUF,EAAa,GAAM,KAAOG,EAAUF,EAAc,GAAM,MAC5EC,EAAS,KAAOC,EAAUF,EAAc,GAAM,OAC7CC,EAAUF,EAAa,GAAM,KAAOG,EAAUF,EAAc,GAAM,OAClEC,EAAUF,EAAa,GAAM,KAAOG,EAAUF,EAAc,GAAM,KACnFG,QAAM5O,GAAWiP,EAAKV,IACtB,MACJ,IAAK,WAOD,IAAK,IAHDW,OAAS,EAETC,OAAS,EACJtQ,EAAI,EAAGA,GAAK,EAAGA,IACpBqQ,EAAUV,EAAa,EAAKhJ,KAAK4J,IAAK5J,KAAK6J,GAAK,KAN3C,GAMmDxQ,IACxDsQ,EAAUX,EAAa,EAAKhJ,KAAK8J,IAAK9J,KAAK6J,GAAK,KAP3C,GAOmDxQ,IAEpD0P,EADM,IAAN1P,EACa,MAAa6P,EAASQ,GAAU,KAAOP,EAASQ,GAAU,IAG1DZ,EAAW7D,OAAO,MAAagE,EAASQ,GAAU,KAAOP,EAASQ,GAAU,KAGjGZ,EAAaA,EAAW7D,OAAO,KAC/BkE,QAAM5O,GAAWiP,EAAKV,IACtB,MACJ,IAAK,OACDA,EAAa,MAAQtP,EAASI,EAAIxB,EAAKe,MAAQ,GAAK,KAAOK,EAASK,EAAIzB,EAAK0B,OAAS,GAAK,OAASN,EAASI,EAAIxB,EAAKe,MAAQ,GACxH,KAAOK,EAASK,EAAIzB,EAAK0B,OAAS,GAAK,OAASN,EAASI,EAAIxB,EAAKe,MAAQ,GAAK,KAAOK,EAASK,EAAIzB,EAAK0B,OAAS,GACjH,OAASN,EAASI,EAAIxB,EAAKe,MAAQ,GAAK,KAAOK,EAASK,EAAIzB,EAAK0B,OAAS,GAAK,MAAQN,EAASI,EAAI,KACrGJ,EAASK,EAAIzB,EAAK0B,OAAS,GAAK,OAASN,EAASI,EAAIxB,EAAKe,MAAQ,GAAK,KAAOK,EAASK,EAAIzB,EAAK0B,OAAS,GAAK,KACpHqP,QAAM5O,GAAWiP,EAAKV,IACtB,MACJ,IAAK,QACDA,EAAa,KAAYlP,EAAI,IAAMsP,EAAS,OAAmBD,EAAUF,EAAa,GAAM,IAAMG,EAAS,MAC3FD,EAAS,KAAOC,EAAUF,EAAc,GAAM,MAAkBC,EAAS,KACpFC,GAAWF,EAAc,GAC9BG,QAAM5O,GAAWiP,EAAKV,IACtB,MACJ,IAAK,QACDF,EAAe,QACfO,QAAM5O,GAAWuP,KAAQvB,EAAKzO,OAAUkP,EAAa7P,MAAS4P,EAAYnP,EAAGA,EAAGC,EAAGA,IAG3F,OAASgP,aAActO,EAASqO,aAAcA,GAQlD,SAAgBmB,EAAazM,EAAM0M,GAE/B,IAAK,IADDD,GAAe,EACV1L,EAAI,EAAGA,EAAIf,EAAKjE,OAAQgF,IAC7B,GAAI2L,EAAqB,iBAAM1M,EAAKe,GAAmB,eAAG,CACtD0L,GAAe,EACf,MAGR,OAAOA,EAsBX,SAAgBE,EAAYC,GACxB,GAAIA,EAAW7Q,OAAS,EACpB,IAAK,IAAID,EAAI,EAAGA,EAAI8Q,EAAW7Q,OAAQD,IAAK,CACxC,IAAI4Q,EAAOE,EAAW9Q,GACtB+Q,EAASH,EAAgB,UAAGA,EAAc,QAAGA,EAAiB,WAAGA,EAAqB,eAAGA,EAAqB,iBAU1H,SAAgBI,EAAaF,GACzB,GAAIA,EAAW7Q,OAAS,EACpB,IAAK,IAAIgF,EAAI,EAAGA,EAAI6L,EAAW7Q,OAAQgF,IAAK,CACxC,IAAI2L,EAAOE,EAAW7L,GACtB8L,EAASH,EAAgB,UAAGA,EAAc,QAAGA,EAAiB,WAAGA,EAAqB,eAAGA,EAAqB,gBAE9G,IAAK,IADDK,EAAYL,EAAsB,gBAAY,SAAE3Q,OAC3CiR,EAAI,EAAGA,EAAID,EAAWC,IAC3BH,EAASH,EAAsB,gBAAY,SAAEM,GAAIN,EAAmB,aAAGA,EAAsB,gBAAGA,EAA0B,oBAAGA,EAA0B,sBAcvK,SAAgBG,EAASjL,EAAS5D,EAAMH,EAASoP,EAAaC,GAC1DtL,EAAQiH,aAAa,OAAQ7K,GAC7B4D,EAAQiH,aAAa,UAAWhL,GAChC+D,EAAQiH,aAAa,SAAUoE,GAC/BrL,EAAQiH,aAAa,eAAgBqE,GASzC,SAAgBC,GAA6BP,EAAYhL,EAASjC,GAC9DgN,EAAYC,GAEZtD,EAAiBpP,SAASkT,uBAAuB,oBAAqB,mBAAoBzN,GAS9F,SAAgB0N,GAAetR,EAAQ2Q,EAAM/M,GAEzC,IAAK,IADD+I,EACK5M,EAAI,EAAGA,EAAIC,EAAQD,IAExB,IAAK,IADDwR,EAAa3N,EAAQ4N,oBAAoBC,kBAAkB1R,GAAe,WAAEC,OACvEgF,EAAI,EAAGA,EAAIuM,EAAYvM,IAC5B,GAAIpB,EAAQ4N,oBAAoBC,kBAAkB1R,GAAe,WAAEiF,GAAmB,iBAAM2L,EAAqB,eAAG,CAChHhE,EAAQ5M,EACR,MAIZ,OAAO4M,EAaX,SAAgB+E,GAAeb,EAAYlE,EAAOgF,EAAQC,EAAeC,EAAczM,EAAa0M,GAChGjB,EAAW9L,MACPgN,UAAWH,EAAeI,QAASF,EAAiBnF,GAAmB,WACvEsF,WAAYH,EAAiBnF,GAAgB,QAAGuF,eAAgBJ,EAAiBnF,GAAoB,YACrGwF,eAAgBL,EAAiBnF,GAAoB,YACrDkF,aAAcA,EAAcO,aAAchN,EAAYuM,GAAiB,QAAQ,KAC/EU,gBAAiBjN,EAAYuM,GAAiB,QAAW,QACzDW,oBAAqBlN,EAAYuM,GAAiB,QAAU,OAAS,MACrEY,oBAAqBnN,EAAYuM,GAAiB,QAAU,OAAS,QAa7E,SAAgBa,GAAgBC,EAAUnS,EAAM4O,EAAKwD,GACjDrU,gBAAc,KACVsU,OACIC,SAAYH,EAAW,IAAMnS,EAAKuS,oBAClCpC,KAAQvB,KAEb4D,cAAc,IAAIC,WAAWL,EAAa,QAAU,QACnDM,KAAMlE,OACNmE,SAAS,EACTC,YAAY,KAQpB,SAAgBC,GAAc7U,GAC1B,IAAIuH,EAAU1H,SAASC,eAAeE,GACtC,OAAOuH,EAAU8H,SAAO9H,GAAW,KCpxCvC,SAAgBuN,GAAcC,GAC1B,IAAIzU,EACAuC,EACJ,OAAQkS,EAAMC,eACV,IAAK,eACDnS,EAAQ,UACR,MACJ,IAAK,aACDA,EAAQ,UACR,MACJ,IAAK,gBACDA,EAAQ,UAGhB,OAAQkS,EAAMC,eACV,IAAK,gBACL,IAAK,aACL,IAAK,eACD1U,GACI2U,gBAAiBpS,EACjBqS,eAAgB,UAChBC,gBAAiB,SACjBC,kBAAmB,UACnBC,iBAAkB,UAClBC,iBAAkB,UAClBC,gBAAiB,OACjBC,iBAAkB,UAClBC,gBAAiB,UACjBjV,SAAU,OACVE,WAAY,SACZgV,iBAAkB,OAClBC,eAAgB,OAChB/U,WAAY,4BAEhB,MACJ,IAAK,eACDN,GACI2U,gBAAiB,UACjBC,eAAgB,UAChBC,gBAAiB,SACjBC,kBAAmB,UACnBC,iBAAkB,UAClBC,iBAAkB,UAClBC,gBAAiB,OACjBC,iBAAkB,UAClBC,gBAAiB,UACjBjV,SAAU,OACVE,WAAY,SACZgV,iBAAkB,OAClBC,eAAgB,OAChB/U,WAAY,4BAEhB,MACJ,IAAK,aACDN,GACI2U,gBAAiB,UACjBC,eAAgB,UAChBC,gBAAiB,SACjBC,kBAAmB,UACnBC,iBAAkB,UAClBC,iBAAkB,UAClBC,gBAAiB,OACjBK,mBAAoB,EACpBC,mBAAoB,GACpBL,iBAAkB,UAClBC,gBAAiB,UACjB7U,WAAY,uBACZJ,SAAU,OACVE,WAAY,SACZgV,iBAAkB,OAClBC,eAAgB,OAChBG,gBAAiB,iBAErB,MACJ,IAAK,WACDxV,GACI2U,gBAAiB,cACjBC,eAAgB,UAChBC,gBAAiB,SACjBC,kBAAmB,UACnBC,iBAAkB,UAClBC,iBAAkB,UAClBC,gBAAiB,OACjBK,mBAAoB,EACpBC,mBAAoB,EACpBL,iBAAkB,UAClBC,gBAAiB,UACjB7U,WAAY,QACZJ,SAAU,OACVE,WAAY,SACZgV,iBAAkB,OAClBC,eAAgB,OAChBG,gBAAiB,SAErB,MACJ,IAAK,eACDxV,GACI2U,gBAAiB,cACjBC,eAAgB,UAChBC,gBAAiB,SACjBC,kBAAmB,UACnBC,iBAAkB,UAClBC,iBAAkB,UAClBC,gBAAiB,OACjBK,mBAAoB,EACpBC,mBAAoB,EACpBL,iBAAkB,UAClBC,gBAAiB,UACjB7U,WAAY,QACZF,WAAY,SACZF,SAAU,OACVkV,iBAAkB,OAClBC,eAAgB,OAChBG,gBAAiB,SAErB,MACJ,IAAK,aACDxV,GACI2U,gBAAiB,yBACjBC,eAAgB,UAChBC,gBAAiB,SACjBC,kBAAmB,UACnBC,iBAAkB,UAClBC,iBAAkB,UAClBC,gBAAiB,OACjBK,mBAAoB,EACpBC,mBAAoB,EACpBL,iBAAkB,UAClBC,gBAAiB,UACjB7U,WAAY,iBACZJ,SAAU,OACVE,WAAY,SACZgV,iBAAkB,OAClBC,eAAgB,OAChBG,gBAAiB,kBAErB,MACJ,IAAK,iBACDxV,GACI2U,gBAAiB,yBACjBC,eAAgB,UAChBC,gBAAiB,SACjBC,kBAAmB,UACnBC,iBAAkB,UAClBC,iBAAkB,UAClBC,gBAAiB,OACjBK,mBAAoB,EACpBC,mBAAoB,EACpBL,iBAAkB,UAClBC,gBAAiB,UACjB7U,WAAY,iBACZJ,SAAU,OACVE,WAAY,SACZgV,iBAAkB,OAClBC,eAAgB,OAChBG,gBAAiB,kBAErB,MACJ,IAAK,SACDxV,GACI2U,gBAAiB,yBACjBC,eAAgB,UAChBC,gBAAiB,SACjBC,kBAAmB,UACnBC,iBAAkB,UAClBC,iBAAkB,UAClBC,gBAAiB,OACjBK,mBAAoB,EACpBC,mBAAoB,EACpBL,iBAAkB,UAClBC,gBAAiB,UACjB7U,WAAY,WACZJ,SAAU,OACVE,WAAY,SACZgV,iBAAkB,OAClBC,eAAgB,OAChBG,gBAAiB,YAErB,MACJ,IAAK,aACDxV,GACI2U,gBAAiB,yBACjBC,eAAgB,UAChBC,gBAAiB,SACjBC,kBAAmB,UACnBC,iBAAkB,UAClBC,iBAAkB,UAClBC,gBAAiB,OACjBK,mBAAoB,EACpBC,mBAAoB,EACpBL,iBAAkB,UAClBC,gBAAiB,UACjB7U,WAAY,WACZJ,SAAU,OACVE,WAAY,SACZgV,iBAAkB,OAClBC,eAAgB,OAChBG,gBAAiB,YAErB,MACJ,IAAK,YACDxV,GACI2U,gBAAiB,cACjBC,eAAgB,UAChBC,gBAAiB,MACjBC,kBAAmB,UACnBC,iBAAkB,UAClBC,iBAAkB,UAClBC,gBAAiB,OACjBK,mBAAoB,EACpBC,mBAAoB,EACpBL,iBAAkB,UAClBC,gBAAiB,UACjB7U,WAAY,SACZJ,SAAU,OACVE,WAAY,MACZgV,iBAAkB,OAClBC,eAAgB,OAChBG,gBAAiB,UAErB,MACJ,IAAK,gBACDxV,GACI2U,gBAAiB,cACjBC,eAAgB,UAChBC,gBAAiB,MACjBC,kBAAmB,UACnBC,iBAAkB,UAClBC,iBAAkB,UAClBC,gBAAiB,OACjBK,mBAAoB,EACpBC,mBAAoB,EACpBL,iBAAkB,UAClBC,gBAAiB,UACjB7U,WAAY,SACZJ,SAAU,OACVE,WAAY,MACZgV,iBAAkB,OAClBC,eAAgB,OAChBG,gBAAiB,UAErB,MACJ,QACIxV,GACI2U,gBAAiB,UACjBC,eAAgB,UAChBC,gBAAiB,SACjBC,kBAAmB,UACnBC,iBAAkB,UAClBC,iBAAkB,UAClBC,gBAAiB,OACjBC,iBAAkB,UAClBC,gBAAiB,UACjBjV,SAAU,OACVE,WAAY,SACZgV,iBAAkB,OAClBC,eAAgB,OAChB/U,WAAY,4BAIxB,OAAON,ECrRX,IAYWyV,GAAc,cAMdC,GAAgB,gBAMhBC,GAAa,aAMbC,GAAW,WAMXC,GAAe,eAMfC,GAAgB,gBAMhBC,GAAmB,mBAMnBC,GAAY,YAMZC,GAAW,WAYXC,GAAc,cAMdC,GAAa,aAMbC,GAAY,YAMZC,GAAsB,sBAMtBC,GAAkB,kBAMlBC,GAAS,SAMTC,GAAc,qCCpHrBC,GAAwC,WACxC,IAAIC,EAAgB,SAAUnF,EAAG5M,GAI7B,OAHA+R,EAAgB7Q,OAAO8Q,iBAChBC,wBAA2B9Q,OAAS,SAAUyL,EAAG5M,GAAK4M,EAAEqF,UAAYjS,IACvE,SAAU4M,EAAG5M,GAAK,IAAK,IAAIkS,KAAKlS,EAAOA,EAAEmS,eAAeD,KAAItF,EAAEsF,GAAKlS,EAAEkS,MACpDtF,EAAG5M,IAE5B,OAAO,SAAU4M,EAAG5M,GAEhB,SAASoS,IAAOC,KAAKC,YAAc1F,EADnCmF,EAAcnF,EAAG5M,GAEjB4M,EAAE9G,UAAkB,OAAN9F,EAAakB,OAAOqR,OAAOvS,IAAMoS,EAAGtM,UAAY9F,EAAE8F,UAAW,IAAIsM,IAV3C,GAaxCI,GAA0C,SAAUC,EAAYC,EAAQjI,EAAKkI,GAC7E,IAA2H/F,EAAvHgG,EAAIC,UAAUpW,OAAQ8J,EAAIqM,EAAI,EAAIF,EAAkB,OAATC,EAAgBA,EAAOzR,OAAO4R,yBAAyBJ,EAAQjI,GAAOkI,EACrH,GAAuB,iBAAZI,SAAoD,mBAArBA,QAAQC,SAAyBzM,EAAIwM,QAAQC,SAASP,EAAYC,EAAQjI,EAAKkI,QACpH,IAAK,IAAInW,EAAIiW,EAAWhW,OAAS,EAAGD,GAAK,EAAGA,KAASoQ,EAAI6F,EAAWjW,MAAI+J,GAAKqM,EAAI,EAAIhG,EAAErG,GAAKqM,EAAI,EAAIhG,EAAE8F,EAAQjI,EAAKlE,GAAKqG,EAAE8F,EAAQjI,KAASlE,GAChJ,OAAOqM,EAAI,GAAKrM,GAAKrF,OAAO+R,eAAeP,EAAQjI,EAAKlE,GAAIA,GAU5D2M,GAAwB,SAAUC,GAElC,SAASD,IACL,OAAkB,OAAXC,GAAmBA,EAAOC,MAAMf,KAAMQ,YAAcR,KAQ/D,OAVAP,GAAUoB,EAAQC,GAIlBX,IACIa,WAAS,YACVH,EAAOpN,UAAW,aAAS,GAC9B0M,IACIa,WAAS,IACVH,EAAOpN,UAAW,aAAS,GACvBoN,GACTI,iBAKEC,GAAwB,SAAUJ,GAElC,SAASI,IACL,OAAkB,OAAXJ,GAAmBA,EAAOC,MAAMf,KAAMQ,YAAcR,KAc/D,OAhBAP,GAAUyB,EAAQJ,GAIlBX,IACIa,WAAS,KACVE,EAAOzN,UAAW,YAAQ,GAC7B0M,IACIa,WAAS,KACVE,EAAOzN,UAAW,aAAS,GAC9B0M,IACIa,WAAS,KACVE,EAAOzN,UAAW,WAAO,GAC5B0M,IACIa,WAAS,KACVE,EAAOzN,UAAW,cAAU,GACxByN,GACTD,iBAKEE,GAAsB,SAAUL,GAEhC,SAASK,IACL,OAAkB,OAAXL,GAAmBA,EAAOC,MAAMf,KAAMQ,YAAcR,KAoB/D,OAtBAP,GAAU0B,EAAML,GAIhBX,IACIa,WAAS,OACVG,EAAK1N,UAAW,YAAQ,GAC3B0M,IACIa,WAAS,OACVG,EAAK1N,UAAW,aAAS,GAC5B0M,IACIa,WAASxB,KACV2B,EAAK1N,UAAW,kBAAc,GACjC0M,IACIa,WAAS,KACVG,EAAK1N,UAAW,kBAAc,GACjC0M,IACIa,WAAS,WACVG,EAAK1N,UAAW,iBAAa,GAChC0M,IACIa,WAAS,IACVG,EAAK1N,UAAW,eAAW,GACvB0N,GACTF,iBAKEG,GAAqC,SAAUN,GAE/C,SAASM,IACL,OAAkB,OAAXN,GAAmBA,EAAOC,MAAMf,KAAMQ,YAAcR,KAQ/D,OAVAP,GAAU2B,EAAqBN,GAI/BX,IACIa,WAAS,KACVI,EAAoB3N,UAAW,YAAQ,GAC1C0M,IACIa,WAAS,KACVI,EAAoB3N,UAAW,mBAAe,GAC1C2N,GACTH,iBAKEI,GAAkC,SAAUP,GAE5C,SAASO,IACL,OAAkB,OAAXP,GAAmBA,EAAOC,MAAMf,KAAMQ,YAAcR,KAQ/D,OAVAP,GAAU4B,EAAkBP,GAI5BX,IACImB,WAAUhY,WAAY,KAAMF,WAAY,MAAQ+X,KACjDE,EAAiB5N,UAAW,iBAAa,GAC5C0M,IACIa,WAAS,WACVK,EAAiB5N,UAAW,iBAAa,GACrC4N,GACTD,IAKEG,GAA+B,SAAUT,GAEzC,SAASS,IACL,OAAkB,OAAXT,GAAmBA,EAAOC,MAAMf,KAAMQ,YAAcR,KAW/D,OAbAP,GAAU8B,EAAeT,GAIzBX,IACImB,WAAUhY,WAAY,KAAMF,WAAY,MAAQ+X,KACjDI,EAAc9N,UAAW,iBAAa,GACzC0M,IACIa,WAAS,WACVO,EAAc9N,UAAW,iBAAa,GACzC0M,IACImB,aAAYD,KACbE,EAAc9N,UAAW,wBAAoB,GACzC8N,GACTH,IAKEI,GAA8B,SAAUV,GAExC,SAASU,IACL,OAAkB,OAAXV,GAAmBA,EAAOC,MAAMf,KAAMQ,YAAcR,KA0B/D,OA5BAP,GAAU+B,EAAcV,GAIxBX,IACIa,WAAS,OACVQ,EAAa/N,UAAW,YAAQ,GACnC0M,IACIa,WAAS,OACVQ,EAAa/N,UAAW,UAAM,GACjC0M,IACIa,WAAS,OACVQ,EAAa/N,UAAW,aAAS,GACpC0M,IACIa,WAAS,OACVQ,EAAa/N,UAAW,aAAS,GACpC0M,IACIa,WAAS,OACVQ,EAAa/N,UAAW,aAAS,GACpC0M,IACIa,WAAS,OACVQ,EAAa/N,UAAW,kBAAc,GACzC0M,IACIa,WAAS,OACVQ,EAAa/N,UAAW,kBAAc,GACzC0M,IACIa,YAAS,IACVQ,EAAa/N,UAAW,kBAAc,GAClC+N,GACTP,iBAKEQ,GAAgC,SAAUX,GAE1C,SAASW,IACL,OAAkB,OAAXX,GAAmBA,EAAOC,MAAMf,KAAMQ,YAAcR,KAmF/D,OArFAP,GAAUgC,EAAgBX,GAI1BX,IACIa,YAAS,IACVS,EAAehO,UAAW,eAAW,GACxC0M,IACIa,WAAS,YACVS,EAAehO,UAAW,YAAQ,GACrC0M,IACIa,WAAS,gBACVS,EAAehO,UAAW,kBAAc,GAC3C0M,IACIa,WAAS,WACVS,EAAehO,UAAW,aAAS,GACtC0M,IACIa,WAAS,KACVS,EAAehO,UAAW,aAAS,GACtC0M,IACIa,WAAS,KACVS,EAAehO,UAAW,cAAU,GACvC0M,IACImB,WAAUnY,KAAM,OAAQG,WAAY,KAAMF,WAAY,MAAQ+X,KAC/DM,EAAehO,UAAW,iBAAa,GAC1C0M,IACIa,WAAS,OACVS,EAAehO,UAAW,YAAQ,GACrC0M,IACIa,WAAS,IACVS,EAAehO,UAAW,eAAW,GACxC0M,IACIa,WAAS,KACVS,EAAehO,UAAW,kBAAc,GAC3C0M,IACIa,WAAS,KACVS,EAAehO,UAAW,mBAAe,GAC5C0M,IACIa,WAAS,KACVS,EAAehO,UAAW,oBAAgB,GAC7C0M,IACIa,WAAS,OACVS,EAAehO,UAAW,gBAAY,GACzC0M,IACImB,WAAU/V,MAAO,UAAWrB,MAAO,GAAK2W,KACzCY,EAAehO,UAAW,cAAU,GACvC0M,IACImB,WAAU/V,MAAO,UAAWrB,MAAO,GAAK2W,KACzCY,EAAehO,UAAW,mBAAe,GAC5C0M,IACImB,aAAYF,KACbK,EAAehO,UAAW,aAAS,GACtC0M,IACImB,WAAUnY,KAAM,QAAUgY,KAC3BM,EAAehO,UAAW,kBAAc,GAC3C0M,IACIa,WAAS,WACVS,EAAehO,UAAW,gBAAY,GACzC0M,IACIa,WAAS,SACVS,EAAehO,UAAW,mBAAe,GAC5C0M,IACIa,YAAS,IACVS,EAAehO,UAAW,uBAAmB,GAChD0M,IACIa,WAAS,UACVS,EAAehO,UAAW,qBAAiB,GAC9C0M,IACIa,WAAS,SACVS,EAAehO,UAAW,wBAAoB,GACjD0M,IACIa,WAAS,WACVS,EAAehO,UAAW,iBAAa,GAC1C0M,IACIa,YAAWrW,EAAG,EAAGC,EAAG,KACrB6W,EAAehO,UAAW,gBAAY,GACzC0M,IACIa,WAAS,OACVS,EAAehO,UAAW,sBAAkB,GAC/C0M,IACIa,WAAS,OACVS,EAAehO,UAAW,iBAAa,GAC1C0M,IACIa,YAAS,IACVS,EAAehO,UAAW,6BAAyB,GAC/CgO,GACTR,iBAKES,GAAsC,SAAUZ,GAEhD,SAASY,IACL,OAAkB,OAAXZ,GAAmBA,EAAOC,MAAMf,KAAMQ,YAAcR,KAQ/D,OAVAP,GAAUiC,EAAsBZ,GAIhCX,IACIa,WAAS,OACVU,EAAqBjO,UAAW,kBAAc,GACjD0M,IACIa,WAAS,OACVU,EAAqBjO,UAAW,iBAAa,GACzCiO,GACTT,iBAKEU,GAAkC,SAAUb,GAE5C,SAASa,IACL,OAAkB,OAAXb,GAAmBA,EAAOC,MAAMf,KAAMQ,YAAcR,KA+C/D,OAjDAP,GAAUkC,EAAkBb,GAI5BX,IACIa,WAAS,OACVW,EAAiBlO,UAAW,YAAQ,GACvC0M,IACIa,YAAS,IACVW,EAAiBlO,UAAW,gBAAY,GAC3C0M,IACImB,aAAYT,KACbc,EAAiBlO,UAAW,cAAU,GACzC0M,IACIa,WAAS,IACVW,EAAiBlO,UAAW,WAAO,GACtC0M,IACIa,WAAS,KACVW,EAAiBlO,UAAW,eAAW,GAC1C0M,IACIa,WAAS,IACVW,EAAiBlO,UAAW,eAAW,GAC1C0M,IACIa,YAAS,IACVW,EAAiBlO,UAAW,kBAAc,GAC7C0M,IACIa,WAAS,OACVW,EAAiBlO,UAAW,iBAAa,GAC5C0M,IACIa,WAAS,OACVW,EAAiBlO,UAAW,mBAAe,GAC9C0M,IACIa,WAAS,YACVW,EAAiBlO,UAAW,qBAAiB,GAChD0M,IACImB,WAAU/V,MAAO,KAAMpC,KAAM,QAAUgY,KACxCQ,EAAiBlO,UAAW,kBAAc,GAC7C0M,IACIa,WAAS,OACVW,EAAiBlO,UAAW,qBAAiB,GAChD0M,IACIa,WAAS,WACVW,EAAiBlO,UAAW,wBAAoB,GACnD0M,IACIa,WAAS,SACVW,EAAiBlO,UAAW,uBAAmB,GAClD0M,IACIyB,gBAAeJ,KAChBG,EAAiBlO,UAAW,oBAAgB,GACxCkO,GACTV,iBAKEY,GAAiC,SAAUf,GAE3C,SAASe,IACL,OAAkB,OAAXf,GAAmBA,EAAOC,MAAMf,KAAMQ,YAAcR,KA0B/D,OA5BAP,GAAUoC,EAAiBf,GAI3BX,IACIa,YAAS,IACVa,EAAgBpO,UAAW,eAAW,GACzC0M,IACIa,WAAS,KACVa,EAAgBpO,UAAW,gBAAY,GAC1C0M,IACIa,WAAS,OACVa,EAAgBpO,UAAW,cAAU,GACxC0M,IACIa,WAAS,OACVa,EAAgBpO,UAAW,YAAQ,GACtC0M,IACIa,WAAS,MACVa,EAAgBpO,UAAW,eAAW,GACzC0M,IACIa,YAAU,YACXa,EAAgBpO,UAAW,oBAAgB,GAC9C0M,IACImB,aAAYT,KACbgB,EAAgBpO,UAAW,cAAU,GACxC0M,IACImB,WAAUhY,WAAYkW,GAAarW,KAAM,KAAMC,WAAY,MAAQ+X,KACpEU,EAAgBpO,UAAW,iBAAa,GACpCoO,GACTZ,iBAKEa,GAAmC,SAAUhB,GAE7C,SAASgB,IACL,OAAkB,OAAXhB,GAAmBA,EAAOC,MAAMf,KAAMQ,YAAcR,KAiB/D,OAnBAP,GAAUqC,EAAmBhB,GAI7BX,IACIa,YAAS,IACVc,EAAkBrO,UAAW,cAAU,GAC1C0M,IACIa,WAAS,OACVc,EAAkBrO,UAAW,YAAQ,GACxC0M,IACIa,WAAS,QACVc,EAAkBrO,UAAW,eAAW,GAC3C0M,IACImB,aAAYT,KACbiB,EAAkBrO,UAAW,cAAU,GAC1C0M,IACIa,WAAS,SACVc,EAAkBrO,UAAW,YAAQ,GACjCqO,GACTb,iBAMEc,GAAmC,SAAUjB,GAE7C,SAASiB,IACL,OAAkB,OAAXjB,GAAmBA,EAAOC,MAAMf,KAAMQ,YAAcR,KAiB/D,OAnBAP,GAAUsC,EAAmBjB,GAI7BX,IACIa,YAAS,IACVe,EAAkBtO,UAAW,cAAU,GAC1C0M,IACIa,WAAS,YACVe,EAAkBtO,UAAW,YAAQ,GACxC0M,IACIa,WAAS,QACVe,EAAkBtO,UAAW,eAAW,GAC3C0M,IACImB,aAAYT,KACbkB,EAAkBtO,UAAW,cAAU,GAC1C0M,IACIa,WAAS,SACVe,EAAkBtO,UAAW,YAAQ,GACjCsO,GACTd,iBAKEe,GAA+B,SAAUlB,GAEzC,SAASkB,IACL,OAAkB,OAAXlB,GAAmBA,EAAOC,MAAMf,KAAMQ,YAAcR,KA+C/D,OAjDAP,GAAUuC,EAAelB,GAIzBX,IACIa,WAAS,OACVgB,EAAcvO,UAAW,iBAAa,GACzC0M,IACIa,WAAS,IACVgB,EAAcvO,UAAW,gBAAY,GACxC0M,IACIa,WAAS,KACVgB,EAAcvO,UAAW,oBAAgB,GAC5C0M,IACImB,aAAYT,KACbmB,EAAcvO,UAAW,cAAU,GACtC0M,IACIa,WAAS,OACVgB,EAAcvO,UAAW,YAAQ,GACpC0M,IACIa,YAAS,IACVgB,EAAcvO,UAAW,gBAAY,GACxC0M,IACIa,WAAS,IACVgB,EAAcvO,UAAW,eAAW,GACvC0M,IACIa,YAAS,IACVgB,EAAcvO,UAAW,kBAAc,GAC1C0M,IACIa,WAAS,KACVgB,EAAcvO,UAAW,oBAAgB,GAC5C0M,IACIa,WAAS,OACVgB,EAAcvO,UAAW,sBAAkB,GAC9C0M,IACIa,WAAS,OACVgB,EAAcvO,UAAW,oBAAgB,GAC5C0M,IACIa,WAAS,SACVgB,EAAcvO,UAAW,uBAAmB,GAC/C0M,IACImB,WAAU/V,MAAO,KAAMpC,KAAM,QAAUgY,KACxCa,EAAcvO,UAAW,mBAAe,GAC3C0M,IACIa,WAAS,YACVgB,EAAcvO,UAAW,wBAAoB,GAChD0M,IACIyB,gBAAeJ,KAChBQ,EAAcvO,UAAW,oBAAgB,GACrCuO,GACTf,iBHpeErX,GAAsB,WAKtB,OAJA,SAAcM,EAAOW,GACjBmV,KAAK9V,MAAQA,EACb8V,KAAKnV,OAASA,MAsBlBoX,GAAsB,WAOtB,OANA,SAActX,EAAGC,EAAGV,EAAOW,GACvBmV,KAAKrV,EAAIA,EACTqV,KAAKpV,EAAIA,EACToV,KAAK9V,MAAQA,EACb8V,KAAKnV,OAASA,MAUlBqX,GAA4B,WAa5B,OAZA,SAAoBxZ,EAAI2D,EAAMgL,EAAQnL,EAASyE,EAAMwR,GACjDnC,KAAKpV,EAAI+F,EAAK/F,EACdoV,KAAKrV,EAAIgG,EAAKhG,EACdqV,KAAKnV,OAAS8F,EAAK9F,OACnBmV,KAAK9V,MAAQyG,EAAKzG,MAClB8V,KAAKtX,GAAKA,EACVsX,KAAK3T,KAAOA,EACZ2T,KAAK9T,QAAUA,EACf8T,KAAKoC,OAAS/K,EAAO9L,MACrByU,KAAK,gBAAkB3I,EAAOnN,MAC9B8V,KAAK,oBAAsBmC,MAK/BE,GAA4B,WAU5B,OATA,SAAoB3Z,EAAI2D,EAAMnC,EAAOqB,EAAOW,EAASiW,EAAW5H,GAC5DyF,KAAKtX,GAAKA,EACVsX,KAAK9T,QAAUA,EACf8T,KAAK3T,KAAOA,EACZ2T,KAAKoC,OAAS7W,EACdyU,KAAK,gBAAkB9V,EACvB8V,KAAK,oBAAsBmC,EAC3BnC,KAAKzF,EAAIA,MAsCb+H,GAA4B,WAc5B,OAbA,SAAoB5Z,EAAIiC,EAAGC,EAAGoB,EAAQ5D,EAAM6D,EAAWG,EAAUI,QAC3C,IAAdP,IAAwBA,EAAY,IACxC+T,KAAK/T,UAAY,GACjB+T,KAAK5T,SAAW,OAChB4T,KAAKtX,GAAKA,EACVsX,KAAK5X,KAAOA,EACZ4X,KAAK/T,UAAYA,EACjB+T,KAAKhU,OAASA,EACdgU,KAAKrV,EAAIA,EACTqV,KAAKpV,EAAIA,EACToV,KAAK5T,SAAWA,EAChB4T,KAAKxT,cAAgBA,MAmCzB1B,GAA0B,WAK1B,OAJA,SAAkBH,EAAGC,GACjBoV,KAAKrV,EAAIA,EACTqV,KAAKpV,EAAIA,MA20Bb6K,GAA4B,WAM5B,OALA,SAAoBvB,EAAGC,EAAGxG,GACtBqS,KAAK9L,EAAIA,EACT8L,KAAK7L,EAAIA,EACT6L,KAAKrS,EAAIA,MAmLb4U,GAA6B,WAQ7B,OAPA,SAAqBjX,EAASZ,EAAM8X,EAAOC,EAAaC,GACpD1C,KAAK2C,YAAcrX,EACnB0U,KAAKtV,KAAOA,GAAQ,MACpBsV,KAAKwC,MAAQA,IAAS,EACtBxC,KAAKyC,YAAcA,EACnBzC,KAAK0C,SAAWA,MI9pCpBE,GAA6B,WAC7B,SAASA,EAAY5U,GACjBgS,KAAKhS,QAAUA,EAktBnB,OAhtBA4U,EAAYnP,UAAUoP,mBAAqB,WAEvC,IAAIxU,EACAyU,EACJ,GAAI9C,KAAKhS,QAAQ+U,iBAAiBC,YAAchD,KAAKhS,QAAQ+U,iBAAiBC,WAAW5Y,OAAS,EAY9F,GAXAiE,EAAS9B,oBAAkByT,KAAKhS,QAAQiV,iBAAiBC,aACpD3W,oBAAkByT,KAAKhS,QAAQiV,iBAAiBE,aAChD5W,oBAAkByT,KAAKhS,QAAQoV,eAAgB7W,oBAAkByT,KAAKhS,QAAQoV,cACpC,IAArCpD,KAAKhS,QAAQoV,aAAahZ,QAC4C4V,KAAKhS,QAAQ+U,iBAAiBC,WAAW,GAArHhD,KAAKqD,iBAAiBrD,KAAKhS,QAAQ+U,iBAAiBC,WAAW,OAAQ,GAC3EF,EAAYQ,YAAWtD,KAAKhS,QAAQ6C,SAAUiS,GAAW,GACpDvW,oBAAkByT,KAAKhS,QAAQ4N,sBAAyBrP,oBAAkByT,KAAKhS,QAAQ8U,YAC3C,UAAzC9C,KAAKhS,QAAQuV,eAAeta,WAC5B6Z,EAAY9C,KAAKhS,QAAQ8U,WAG5BvW,oBAAkByT,KAAKhS,QAAQwV,gBAC/BjX,oBAAkByT,KAAKhS,QAAQoV,cAAiB7W,oBAAkByT,KAAKhS,QAAQoV,cACrC,IAArCpD,KAAKhS,QAAQoV,aAAahZ,SAc3BmC,oBAAkByT,KAAKhS,QAAQiV,iBAAiBC,cAChD3W,oBAAkByT,KAAKhS,QAAQoV,cAAgB7W,oBAAkByT,KAAKhS,QAAQoV,cACpC,IAArCpD,KAAKhS,QAAQoV,aAAahZ,UAChC4V,KAAKhS,QAAQwV,aAAexD,KAAKhS,QAAQiV,iBAAiBC,YAE9DlD,KAAKyD,qBAAqBpV,GAAQ2R,KAAKhS,QAAQ+U,iBAAiBC,WAAW,GAAIF,GAC/E9C,KAAK0D,wBApB0C,CAC/C,IAAIC,EAAQ3D,KAAKhS,QAAQoV,aAAahZ,OAAS,EAE3CO,EAAIqV,KAAKhS,QAAQoV,aAAaO,GAAa,KAE3C/Y,KACJA,EAAEoV,KAAKhS,QAAQoV,aAAaO,GAAa,KAAa,YAAMhZ,GACvD4B,oBAAkByT,KAAKhS,QAAQiV,iBAAiBC,aAAgBlD,KAAKhS,QAAQ4V,mBAC9E5D,KAAKhS,QAAQwV,aAAexD,KAAKhS,QAAQoV,aAAaO,GAAa,KAAc,YAErF3D,KAAKyD,qBAAqB7Y,GAAKoV,KAAKhS,QAAQ+U,iBAAiBC,WAAW,GAAIF,GAC5E9C,KAAK0D,sBAcjBd,EAAYnP,UAAU4P,iBAAmB,SAAUhV,EAAMwV,GAErD,IAAI7V,EAAUgS,KAAKhS,QACf8V,KAEAC,EAAQrV,EAAaL,GAAc,OACvC,GAAI0V,GAASA,EAAM3Z,OAAS,GAA0B,IAArByZ,EAAUzZ,OAAc,CACrD,IAAK,IAAID,EAAI,EAAGA,EAAI4Z,EAAM3Z,OAAQD,IAC1B4Z,EAAM5Z,GAAe,aAAM6D,EAAQiV,iBAAiBC,YACpDa,EAAM5Z,GAAS,OAAM6D,EAAQiV,iBAAiBE,YAC9CY,EAAM5Z,GAAc,WAAI,EACxB2Z,EAAQC,EAAM5Z,GAAc,YAAM4Z,EAAM5Z,IACxC0Z,EAAU1U,KAAK2U,IAGvB,IAAK,IAAI1U,EAAI,EAAGA,EAAI2U,EAAM3Z,OAAQgF,IAC9B4Q,KAAKqD,iBAAiBU,EAAM3U,GAAIyU,GAGxC,OAAOA,GAGXjB,EAAYnP,UAAUgQ,qBAAuB,SAAUpV,EAAMsC,GACzDqP,KAAKxQ,eACLwQ,KAAKgE,cACAzX,oBAAkByT,KAAKhS,QAAQS,mBAC5BuR,KAAKhS,QAAQiW,WAAWhc,QAAQ,iBAAmB,EACnD+X,KAAKkE,+BAA+B7V,EAAMsC,IAG1CA,EAAK9F,OAAS8F,EAAK9F,OAAS8F,EAAK/F,EACjC+F,EAAKzG,MAAQyG,EAAKzG,MAAQyG,EAAKhG,EAC/BqV,KAAKmE,2BAA2B9V,EAAMsC,MAKlDiS,EAAYnP,UAAUyQ,+BAAiC,SAAU7V,EAAM+V,GACnE,IACIzT,EAEAuS,EAIAmB,EACAC,EARAC,EAAWvE,KAAKhS,QAAQI,iBAExBoW,EAASxE,KAAKhS,QAAQM,OAItBK,EAAWD,EAAaL,GAAc,OAG1C,GAAIM,GAAYA,EAASvE,OAAS,IAC9B4V,KAAKyE,oBAAoB9V,EAAUyV,GAC/BpE,KAAKhS,QAAQM,OAAOlE,OAAS,GAC7B,IAAK,IAAID,EAAI,EAAGA,EAAIwE,EAASvE,OAAQD,IACjC+Y,EAAavU,EAASxE,GAAe,WAErCka,EADgC,IAAlBG,EAAOpa,QAAgB8Y,IAAesB,EAAOpa,OACxCma,EAASF,IAAMG,EAAOtB,GAAYwB,SACrDJ,EAAiC,IAAlBE,EAAOpa,OAAe,EAAIoa,EAAOtB,GAAcsB,EAAOtB,GAAYyB,WAC7EH,EAAOtB,GAAYoB,aAAe,EAAIE,EAAOtB,EAAa,GAAGyB,WAC7DH,EAAOtB,EAAa,GAAGoB,aAAe,EAC1C3T,EAAOhC,EAASxE,GAAS,KACzBwG,EAAO,IAAIsR,GAAKtR,EAAKhG,EAAK0Z,EAAM,EAAI1T,EAAK/F,GAAK0Z,EAAgBD,EAAM,GAAK1T,EAAKzG,MAAQma,EAAKvT,KAAKC,IAAIJ,EAAK9F,QAAUwZ,EAAMC,KACzHtE,KAAKkE,+BAA+BvV,EAASxE,GAAIwG,GAI7D,OAAOtC,GAGXuU,EAAYnP,UAAUgR,oBAAsB,SAAU1W,EAAa4C,GAC/D,IAEIiU,EAFAC,EAAalU,EAAK9F,OAAS8F,EAAKzG,MAChCoE,EAAS0R,KAAKhS,QAAQM,OAEtBwW,EAAe,EACfC,EAAc,EAElBhX,EAAYiX,QAAQ,SAAU3W,GAAQ0W,GAAe1W,EAAa,SAElEN,EAAYiX,QAAQ,SAAUjB,GAC1BA,EAAkB,WAAIc,EAAad,EAAc,OAAIgB,IAEzD,IAAIE,EAA4C,qBAA5BjF,KAAKhS,QAAQiW,WAAsCtT,EAAKzG,MAAQyG,EAAK9F,OACxD,2BAA5BmV,KAAKhS,QAAQiW,WAClBlW,EAAYmX,KAAKzX,GACjB,IAAK,IAAItD,EAAI,EAAGA,EAAI4D,EAAY3D,OAAQD,IAAK,CAEzC,IAAI4Q,EAAOhN,EAAY5D,GACvB4Q,EAAiB,WAAuB,IAAlBzM,EAAOlE,SAAmB4V,KAAKhS,QAAQmX,oBACzD5Y,oBAAkByT,KAAKhS,QAAQI,iBAAiBI,WAChDuM,EAAiB,aAAMzM,EAAOlE,OAAS,EAAI2Q,EAAiB,aAAMiF,KAAKhS,QAAQM,OAAOlE,QACtF6a,GACAL,EAAeC,EAAaE,EAAehX,EAAY5D,GAAW,OAAKwG,EAAK9F,OACxEia,GAAgBnU,EAAKzG,QACrB6D,EAAY5D,GAAS,KAAI,IAAI8X,GAAK6C,EAAenU,EAAKhG,EAAGgG,EAAK/F,EAAGga,EAAYjU,EAAK9F,WAItF+Z,EAAeC,EAAaE,EAAehX,EAAY5D,GAAW,OAAKwG,EAAKzG,MACxE4a,GAAgBnU,EAAK9F,SACrBkD,EAAY5D,GAAS,KAAI,IAAI8X,GAAKtR,EAAKhG,EAAGma,EAAenU,EAAK/F,EAAG+F,EAAKzG,MAAO0a,KAGrFE,GAAgBF,EAChB5E,KAAKxQ,YAAYL,KAAKpB,EAAY5D,MAI1CyY,EAAYnP,UAAU0Q,2BAA6B,SAAU9V,EAAM+V,GAC/D,IACIzT,EAGAoK,EAGAhE,EACAqO,EACAd,EATAnW,EAAO6R,KAAKhS,QAAQI,iBAEpBE,EAAS0R,KAAKhS,QAAQM,OAItByV,EAAQrV,EAAaL,GAAc,OAIvC,GAAI0V,GAASA,EAAM3Z,OAAS,IACO,IAA3B4V,KAAKgE,WAAW5Z,SAChB4V,KAAKgE,cACLhE,KAAKgE,WAAW7U,KAAK4U,IAEzB/D,KAAKqF,wBAAwBhX,EAAM0V,EAAOK,GACtCpE,KAAKhS,QAAQM,OAAOlE,OAAS,GAC7B,IAAK,IAAID,EAAI,EAAGA,EAAI4Z,EAAM3Z,OAAQD,IAE9B4M,GADAgE,EAAOgJ,EAAM5Z,IACY,WACzBwG,EAAOoK,EAAW,KAClBqK,GAAWrK,EAAiB,WAAI5M,EAAKiX,QAAU9W,EAAOyI,GAAOuO,cAAgB,EAC7EhB,EAAetE,KAAKhS,QAAQmX,mBAA+B,IAAVpO,GAAegE,EAAiB,WAAI,EAAIzM,EAAOyI,IAC5FzI,EAAOyI,GAAO4N,WAAarW,EAAOyI,GAAOuN,aAAmB,EACzC,IAAlBhW,EAAOlE,OAAgB,EAAIkE,EAAOyI,IAC/BzI,EAAOyI,GAAO4N,WAAarW,EAAOyI,GAAOuN,aAAmB,EACpE3T,EAAO,IAAIsR,GAAKtR,EAAKhG,EAAIya,EAASzU,EAAK/F,GAAK0Z,EAAec,GAAUzU,EAAKzG,MAAQkb,EAASzU,EAAK9F,OAASua,IACpGrK,EAAiB,YAAKA,EAAa,OAAI,GACxCiF,KAAKmE,2BAA2BJ,EAAM5Z,GAAIwG,IAO9DiS,EAAYnP,UAAU4R,wBAA0B,SAAU7Z,EAAQmD,EAAUyV,GACxEpE,KAAKuF,iBAAiB5W,EAAU8C,EAAQ2S,IACxCzV,EAASuW,KAAKxO,GACdsJ,KAAKwF,kBAAkB7W,KAAcyV,OAGzCxB,EAAYnP,UAAU+R,kBAAoB,SAAUnX,EAAMoX,EAAY9U,EAAM+U,GACxE,IAAI/J,EAAatN,EAAKjE,OACtB,GAAmB,IAAfuR,EAAkB,CAElB,IAAIgK,EAAiB3F,KAAK4F,eAAeH,EAAY9U,GAGrD,OADIkV,EAAWH,EAAM1P,OAAO2P,GAGhC,IAAIzb,EAAQwH,EAAgBf,GAExBmV,EAAYzX,EAAK,GAEjB0X,EAAW1X,EAAKkI,MAAM,EAAGoF,GAC7B,GAAIqE,KAAKgG,YAAYP,EAAYK,EAAW5b,GAAQ,CAEhD,IAAI+b,EAASR,EAAWzP,OAAO8P,GAC/B,OAAO9F,KAAKwF,kBAAkBO,EAAUE,EAAQtV,EAAM+U,GAKtD,IAAK,IAFDQ,EAAmBT,EAAWrb,OAC9B+b,EAAW,EACNhc,EAAI,EAAGA,EAAI+b,EAAkB/b,GAAK,EACvCgc,GAAYV,EAAWtb,GAAa,SAExC,IAAIic,EAAepG,KAAKqG,QAAQ1V,EAAMwV,GAIlCN,GAFAF,EAAiB3F,KAAK4F,eAAeH,EAAY9U,GAEtC+U,EAAM1P,OAAO2P,IAC5B,OAAO3F,KAAKwF,kBAAkBnX,KAAU+X,EAAcP,IAI9DjD,EAAYnP,UAAUuS,YAAc,SAAUP,EAAYK,EAAW1b,GACjE,GAA0B,IAAtBqb,EAAWrb,OACX,OAAO,EAIP,IAAI6b,EAASR,EAAWzP,OAAO8P,GAG/B,OAF4B9F,KAAKsG,mBAAmBb,EAAYrb,IACxC4V,KAAKsG,mBAAmBL,EAAQ7b,IAKhEwY,EAAYnP,UAAU6S,mBAAqB,SAAUC,EAAKnc,GAKtD,IAAK,IAJDoc,EAAYD,EAAInc,OAChBqc,EAAUC,EAAAA,EACVC,GAAWD,EAAAA,EACXE,EAAU,EACLzc,EAAI,EAAGA,EAAIqc,EAAWrc,GAAK,EAAG,CACnC,IAAI0c,EAAON,EAAIpc,GAAa,SACxB0c,EAAOJ,IACPA,EAAUI,GAEVA,EAAOF,IACPA,EAAUE,GAEdD,GAAWC,EAIf,OAFa/V,KAAKgW,IAAKhW,KAAKiW,IAAI3c,EAAQ,GAAMuc,EAAW7V,KAAKiW,IAAIH,EAAS,GAAM9V,KAAKiW,IAAIH,EAAS,IAC7F9V,KAAKiW,IAAI3c,EAAQ,GAAMqc,KAGjC7D,EAAYnP,UAAU4S,QAAU,SAAU1V,EAAMkW,GAC5C,IAAIT,EAAevU,EAAmBlB,GAClCzG,EAAQkc,EAAalc,MACrBW,EAASub,EAAavb,OACtBmH,EAAUoU,EAAazb,EACvBsH,EAAUmU,EAAaxb,EAC3B,GAAIV,GAASW,EAAQ,CACjB,IAAImc,EAAYH,EAAOhc,EAQvB,OAAOkH,GALHpH,EAAGqH,EAAUgV,EACbpc,EAAGqH,EACH/H,MAJWA,EAAQ8c,EAKnBnc,OAAQA,IAKZ,IAAIoc,EAAaJ,EAAO3c,EAQxB,OAAO6H,GALHpH,EAAGqH,EACHpH,EAAGqH,EAAUgV,EACb/c,MAAOA,EACPW,OALYA,EAASoc,KAWjCrE,EAAYnP,UAAUmS,eAAiB,SAAUW,EAAK5V,GAWlD,IAAK,IAFDoG,EARAnF,EAAYC,EAAmBlB,GAC/BzG,EAAQ0H,EAAU1H,MAClBW,EAAS+G,EAAU/G,OACnBmH,EAAUJ,EAAUjH,EACpBsH,EAAUL,EAAUhH,EACpB4b,EAAYD,EAAInc,OAChBkE,EAAS0R,KAAKhS,QAAQM,OACtBH,EAAO6R,KAAKhS,QAAQI,iBAEpB+X,EAAW,EACNhc,EAAI,EAAGA,EAAIqc,EAAWrc,GAAK,EAChCgc,GAAYI,EAAIpc,GAAa,SAW5B,IALDib,EAGA8B,EACAC,EARAH,EAAYb,EAAWtb,EACvBoc,EAAad,EAAWjc,EACxBkd,EAAapV,EACbqV,EAAapV,EAGbqV,KAGJ,IAASnd,EAAI,EAAGA,EAAIqc,EAAWrc,GAAK,EAAG,CAEnC,IAAI4Q,EAAOwL,EAAIpc,GAQf,GAPA4M,EAAQgE,EAAiB,WACzBA,EAAiB,WAAuB,IAAlBzM,EAAOlE,SAAkB4V,KAAKhS,QAAQmX,mBAAqBpO,IAAUzI,EAAOlE,QAC9FmC,oBAAkB4B,EAAKK,YAAqBuI,IAAUzI,EAAOlE,QAEjE8c,EAAWpM,EAAakF,KAAKgE,WAAW,GAAIjJ,GAC5CoM,EAAaD,EAAWlH,KAAKhS,QAAQ6C,SAAWkK,EAAa,OAAEpK,KAC/DyU,EAAUrK,EAAiB,WAAI5M,EAAKiX,QAAU9W,EAAOyI,GAAOuO,aACxDpb,GAASW,EAAQ,CACjB,IAAI0c,EAAKF,EAAatM,EAAe,SAAIiM,EACzCjM,EAAW,MACPpQ,EAAGyc,EACHxc,EAAGyc,EACHnd,MAAOkd,EAAaJ,EACpBnc,OAAQ0c,GAEZF,EAAaE,MAEZ,CACD,IAAIC,EAAKJ,EAAarM,EAAe,SAAIkM,EACzClM,EAAW,MACPpQ,EAAGyc,EACHxc,EAAGyc,EACHnd,MAAOsd,EACP3c,OAAQwc,EAAaJ,GAEzBG,EAAaI,EAEbzM,EAAa,OAAI,IAAMmM,GAAapW,KAAK4E,MAAM/E,EAAK/F,EAAKwa,EAAU,IACnEtU,KAAK4E,MAAMyR,EAAWvc,GAAKuc,EAAWtc,OAASsc,EAAWvc,KAAOkG,KAAK4E,MAAM/E,EAAKhG,EAAKya,EAAU,IAChGtU,KAAK4E,MAAMyR,EAAWxc,GAAKwc,EAAWjd,MAAQid,EAAWxc,OACzDqV,KAAKxQ,YAAYL,KAAK4L,GACtBuM,EAAYnY,KAAK4L,IAGzB,OAAOuM,GAGX1E,EAAYnP,UAAU8R,iBAAmB,SAAUlX,EAAMwY,GAIrD,IAAK,IAHDlL,EAAatN,EAAKjE,OAElB2O,KACK5O,EAAI,EAAGA,EAAIwR,EAAYxR,GAAK,EAAG,CAGpC,IAAK,IAFDsd,EAAepZ,EAAKjE,OACpBsd,EAAU,EACLC,EAAM,EAAGA,EAAMF,EAAcE,GAAO,EACzCD,GAAWrZ,EAAKsZ,GAAa,OAKjC,IAAK,IAHDC,EAAaf,EAAOa,EAEpBG,OAAQ,EACHzY,EAAI,EAAGA,EAAIqY,EAAcrY,KAC9ByY,EAAQxZ,EAAKe,IACG,SAAIyY,EAAc,OAAID,EACtC7O,EAAO5J,KAAK0Y,GAGpB,OAAO9O,GAGX6J,EAAYnP,UAAUqU,gBAAkB,SAAUC,GAE9C,IACIjF,EADAkF,KAEJA,EAAaD,EAAW,GAAW,OACnC/H,KAAKhS,QAAQwV,aAAewE,EAAsB,UAAIA,EAAuB,WAAI,KAEjF,IAAIC,KACA1b,oBAAkByb,EAAsB,WACxCC,EAAsBD,EAGtBC,EAAoBD,EAAsB,YAAMA,GAEpDlF,EAAYQ,YAAWtD,KAAKhS,QAAQ6C,SAAUiS,GAAW,GACpDvW,oBAAkByT,KAAKhS,QAAQ4N,sBAAyBrP,oBAAkByT,KAAKhS,QAAQ8U,aACxFA,EAAY9C,KAAKhS,QAAQ8U,WAG7B,IAAK,IADDa,EAAQ3D,KAAKhS,QAAQM,OAAOlE,OACvBD,EAAI,EAAGA,EAAIwZ,EAAOxZ,IAAK,CAExBwZ,IADaoE,EAAW,GAAe,WAEvC/H,KAAKhS,QAAQM,OAAOqV,GAAS3D,KAAKhS,QAAQM,OAAOnE,GAGjD6V,KAAKhS,QAAQM,OAAO4Z,OAAOvE,EAAQ,EAAG,GAG9C3D,KAAKyD,qBAAqBwE,EAAqBnF,GAC/C9C,KAAK0D,qBAGTd,EAAYnP,UAAUiQ,kBAAoB,WACtC,IACIza,EAGAkf,EACAC,EACAC,EANAC,EAAQtI,KAER9Q,EAAU8Q,KAAKhS,QAKnBgS,KAAKhV,SAAWkE,EAAQlE,SACxB,IAAIud,EAEAxR,EACAyR,EAEA7X,EACAsH,EAGA5L,EACA0O,EACA0N,EACAvc,EAGAwc,EACAC,EACAtE,EACAuE,EAjBAC,EAAY3Z,EAAQe,QAAQvH,GAG5BuG,EAAOC,EAAQ+U,WAGf6E,EAAkB9I,KAAKhS,QAAQI,iBAAiB0a,gBAMhDC,EAAW,GACXC,EAAezgB,SAASC,eAAe0G,EAAQe,QAAQvH,GAAK,sBAK5D4F,EAASY,EAAQZ,OACrB0R,KAAKiJ,YAAcjJ,KAAKhV,SAASke,aAAcxgB,GAAImgB,EAAY,YAAc5Z,EAAO,YACpF,IAAIka,EACAzZ,EACA2H,EACA+R,EAAgB3gB,gBAAc,OAC9BC,GAAIwG,EAAQe,QAAQvH,GAAK,wBACzBkO,UAAW,aAEfwS,EAAcpgB,MAAMoH,QAAU,iEACjBlB,EAAQ2B,SAASjG,EAAI,WACpBsE,EAAQ2B,SAASlG,EAAI,aACnBuE,EAAQ2B,SAAShG,OAAS,YAC3BqE,EAAQ2B,SAAS3G,MAAQ,MAyGxC,IAAK,IArGD6d,EACAvb,EAJA6c,GAAa,EACblb,EAAOe,EAAQd,iBAIfkb,EAAU,SAAUnf,GAGpB,GAFA4Q,EAAOwO,EAAO/Z,YAAYrF,GAC1B4M,EAAQgE,EAAiB,WACrBwO,EAAOvb,QAAQwb,eAAiBjd,oBAAkBgd,EAAOvb,QAAQwV,eAC9DzM,EAAQ,GAAKwS,EAAOvb,QAAQwb,eAC5BzS,EAASwS,EAAOvb,QAAQwV,aAAe,EAC1C,MAAO,WAEX7S,EAAOoK,EAAW,KAClBsO,EAAatO,EAAiB,WAC9B2N,EAAUG,EAAY,gBAAkB9R,EAAQ,eAAiB5M,EACjEgf,EAAYI,EAAOve,SAASke,aAAcxgB,GAAIggB,EAAU,WACxDrE,GAAOgF,EAAalb,EAAKkW,IAAM/V,EAAOyI,GAAO2N,UAAY,EACzD,IAAI+E,EAAkBF,EAAOvb,QAAQ8U,UAAYjR,EAAmB0X,EAAOvb,QAAQ8U,WAAayG,EAAOvb,QAAQ6C,SACpF,eAAvB3B,EAAQ+U,aACRtT,EAAKzG,MAAQ4G,KAAKC,IAAIJ,EAAKhG,EAAIgG,EAAKzG,OAASma,EAC7C1T,EAAK9F,OAASiG,KAAKC,IAAIJ,EAAK/F,EAAI+F,EAAK9F,QAAUwZ,GAEnB,uBAA5BnV,EAAQ+B,gBACRN,EAAKhG,EAAK8e,EAAgB9e,EAAI8e,EAAgBvf,MAASyG,EAAKzG,MAAQ4G,KAAKC,IAAI0Y,EAAgB9e,EAAIgG,EAAKhG,GAErE,uBAA5BuE,EAAQ+B,gBACbN,EAAK/F,EAAK6e,EAAgB7e,EAAI6e,EAAgB5e,OAAU8F,EAAK9F,OAASiG,KAAKC,IAAI0Y,EAAgB7e,EAAI+F,EAAK/F,GAEvE,uBAA5BsE,EAAQ+B,kBACbN,EAAKhG,EAAK8e,EAAgB9e,EAAI8e,EAAgBvf,MAASyG,EAAKzG,MAAQ4G,KAAKC,IAAI0Y,EAAgB9e,EAAIgG,EAAKhG,GACtGgG,EAAK/F,EAAK6e,EAAgB7e,EAAI6e,EAAgB5e,OAAU8F,EAAK9F,OAASiG,KAAKC,IAAI0Y,EAAgB7e,EAAI+F,EAAK/F,IAE5Gwd,EAAemB,EAAOnB,aAAaiB,EAAYtO,GAC/C1O,EAAO+b,EAAmB,KAC1Blc,EAAUkc,EAAsB,QAChCnQ,EAASoR,EAAalb,EAAKub,YAAepb,EAAOyI,GAAQ4S,aACzD,IAAIC,EAEJ,GADAzB,EAAakB,EAAalb,EAAK0b,WAAcvb,EAAOyI,GAAQ4N,WACxD5N,IAAUwS,EAAOvb,QAAQwV,aACzB,GAAI+F,EAAOvb,QAAQ4V,iBAAkB,CAEjCpX,EAAgB,IAAM+c,EAAOvb,QAAQ8b,oBAAsB,IAC3DF,EAAY7O,EAAqB,eAAEjO,QAF1B,MAEsCN,GAC/Cod,EAAsB,IAAV7S,EAAc,IAAM6S,EAAYA,OAG5CA,EAAY7O,EAAW,UAIvBwO,EAAOvb,QAAQ4V,mBACf7I,EAAgB,WAAI,GAExB6O,EAAY7O,EAAW,KAE3B0N,EAAazQ,EAAcC,EAAQ8C,EAAW,KAAGwO,EAAOvb,UAAY4b,GAAa,YACjF7B,EAAarZ,EAAaqM,GAAc,OACxC0N,GAAcY,GAActB,GAAcA,EAAW3d,OAAS,GAAKmf,EAAOvb,QAAQgD,gBAC7E+J,EAAgB,UACb7L,EAAQ6a,UAAYtB,EAAa,OAAS,OAASA,EADlCvZ,EAAQ6a,UAAYtB,EAAa,OAAS,OAASA,EACJA,GACxEG,EAAaS,EAAalb,EAAK6b,WAAa1b,EAAOyI,GAAOkT,aAChD3gB,WAAaigB,EAAOvb,QAAQkc,WAAW1L,iBAAmBoK,EAAUtf,WAC9Esf,EAAUxf,WAAawf,EAAUxf,YAAcmgB,EAAOvb,QAAQkc,WAAW9gB,WACzEiO,EAASgS,EAAalb,EAAKkJ,OAAS/I,EAAOyI,GAAOM,OAClDpO,EAAYogB,EACmBlb,EAAKgc,cADyB,SAAnC7b,EAAOyI,GAAsB,gBAAe,UAAgD,WAAnCzI,EAAOyI,GAAsB,gBAC5G,YAAc,WAClByR,EAAmBa,EAAalb,EAAKqa,iBAAmBla,EAAOyI,GAAOyR,iBACtE9Y,EAAW2Z,EAAalb,EAAKic,cAAgB9b,EAAOyI,GAAOsT,eAC3DtP,EAAc,SAAM1D,OAAQA,EAAQnL,QAASA,EAASG,KAAMA,GAC5Dgc,GACIiC,QAAQ,EAAOpc,KAAMwQ,GAAe1Q,QAASub,EAAOvb,QAAS5F,KAAMqgB,EACnEnZ,YAAayL,EAAMwP,YAAahB,EAAO/Z,YAAalE,QAASyP,EAAc,SAE/EwO,EAAOvb,QAAQwc,QAAQ9L,GAAe2J,EAAW,SAAUoC,GACvD,IAAKA,EAAaH,OAAQ,CACtBvB,EAAW,MAAQpY,EAAKhG,EAAI,IAAMgG,EAAK/F,EAAI,OAAS+F,EAAKhG,EAAIgG,EAAKzG,OAAS,IAAMyG,EAAK/F,EAClF,OAAS+F,EAAKhG,EAAIgG,EAAKzG,OAAS,KAAOyG,EAAK/F,EAAI+F,EAAK9F,QAAU,MAAQ8F,EAAKhG,EAAI,KAAOgG,EAAK/F,EAAI+F,EAAK9F,QAAU,IACnH0d,EAAc,IAAIlG,GAAWqG,EAAU,YAAarc,EAAMgL,EAAOnN,MAAOmN,EAAO9L,MAAOW,EAAS,KAAM6c,GACrG,IAAI2B,EAAOpC,EAAMtd,SAAS2f,SAASpC,GACnCY,EAAUvgB,YAAY8hB,GAClBvC,IACIE,EAAUjgB,OAASqgB,IACnBJ,EAAUjgB,KAAO4P,EAAcqQ,EAAUjgB,KAAM2S,EAAW,KAAGuN,EAAMta,UAAY4b,GAEnFtB,EAAMsC,eAAevC,EAAUjgB,KAAKqI,WAAY0Y,EAAWP,EAAWjY,EAAMmY,EAAiBJ,EAASrc,EAAMpD,EAAUuD,IAEtHkD,IACAiZ,EAAcL,EAAMuC,eAAe7B,EAAcN,EAAS/X,EAAM6X,EAAkB9Y,EAAUqL,EAAMsO,GAC7F9c,oBAAkBoc,KACnBS,EAAcxgB,YAAY+f,GAE1BL,EAAMta,QAAQ8c,yBAGtB3B,EAAUjS,aAAa,aAAc6D,EAAW,MAChDoO,EAAUjS,aAAa,OAAQ,IAC/BiS,EAAUjS,aAAa,YAAaoR,EAAMta,QAAQ+c,SAAW5gB,EAAI,GAAGsG,YACpEkG,EAAkB2R,EAAMta,QAASmb,EAAW,oBAC5Cb,EAAMW,YAAYrgB,YAAYugB,OAItCI,EAASvJ,KACJ7V,EAAI,EAAGA,EAAI6V,KAAKxQ,YAAYpF,OAAQD,IACzCmf,EAAQnf,GAERif,EAAchS,WAAWhN,OAAS,GAClC4e,EAAapgB,YAAYwgB,GAE7BpJ,KAAKhS,QAAQgd,UAAUpiB,YAAYoX,KAAKiJ,cAE5CrG,EAAYnP,UAAUmX,eAAiB,SAAUxiB,EAAM+I,EAAeyX,EAAWjY,EAAMmY,EAAiBJ,EAASrc,EAAMpD,EAAUuD,GAC7H,IACI/B,EAEAwgB,EAGAC,EAJApV,KAEAqV,KACAtgB,EAAS,EAKb,GAHAiL,GAA8C,IAA3B1N,EAAKH,QAAQ,QAAmBG,EAAKuE,MAAM,QAAU,KACxEse,EAAajL,KAAKoL,qBAAqBza,EAAMvI,EAAMwgB,EAAWE,GAC9Dre,EAAWtC,EAAY2N,GAAkBA,EAAe,IAAMmV,EAAW,GAAIrC,GACzE5I,KAAKhS,QAAQ+b,UAAW,CACxB,IAAInZ,EAAYzI,EAAYC,EAAMwgB,GAC9ByC,EAAmBjjB,EAAKqE,OAAO,QAAUrE,EAAKqE,OAAO,OACzD,GAAIkE,EAAKzG,MAAQ0G,EAAU1G,OAASmhB,EAAmB,EAAG,CACtD,IAAIphB,EAAQ7B,EAAKiC,UAAUghB,EAAmB,EAAGjjB,EAAKgC,QAElDkhB,EAAkBnjB,EADJ,MAC6BygB,GAC/CqC,EAAW,GAAOlhB,EAAS4G,EAAKzG,MAAQohB,EAAgBphB,MAjBlD,EAiBmE+gB,EAAW,GAAIrC,GAAa3e,GAG7G,IAAIshB,EAAe7a,EAAkBC,EAAM1H,EAAUwB,EAAU,OAAQuV,KAAKhS,SAC5E,IAAKzB,oBAAkBuJ,GAAiB,CAIpC,IAAK,IAHDmF,KACAuQ,EAAQ,KACRC,KACKthB,EAAI,EAAGA,EAAI2L,EAAe1L,OAAQD,IAGvCU,IADAJ,EAAWtC,EADXqjB,EAAQzhB,EAAU4G,EAAKzG,MAAQ,EAAI4L,EAAe3L,GAAIye,GACxBA,IACX/d,OACnB4gB,EAAUtc,KAAK1E,EAASP,OACxB+Q,EAAW9L,KAAKqc,GAEpBP,EAAahQ,EACbxQ,EAASP,MAAQ4G,KAAKgW,IAAI/F,MAAM,KAAM0K,GACtChhB,EAASI,OAASA,EAEtB,GAAwB,eAApBie,GAAwD,SAApBA,GAAkD,SAApBA,EAA4B,CAC9F,IAAK,IAAI1Z,EAAI,EAAGA,EAAI6b,EAAW7gB,OAAQgF,IAEnCvE,IADAJ,EAAWtC,EAAY8iB,EAAW7b,GAAIwZ,IACnB/d,OACd8F,EAAK9F,OAxCJ,EAwCwBA,GAC1BsgB,EAAUhc,KAAK8b,EAAW7b,IAGlC,GAAwB,SAApB0Z,GAA8BmC,EAAW7gB,SAAW+gB,EAAU/gB,QAAU+gB,EAAU/gB,OAAQ,CAC1F,IAAIshB,EAAmBP,EAAU/gB,OAAS,EACtCuhB,EAAaR,EAAUO,GAC3BC,EAAaA,EAAWthB,UAAU,EAAIshB,EAAWvhB,OAAS,GAAM,MAChE+gB,EAAUjD,OAAOwD,GACE,QAAfC,GACAR,EAAUhc,KAAKwc,SAKvBT,EAAWD,EACXE,EAAUhc,KAAK+b,GAGnB7f,EADkB,IAAIiX,GAAWoG,EAAU,QAAS6C,EAAa5gB,EAAG4gB,EAAa3gB,EAAG,QAASugB,EAAW,GAAI,GAAI3e,GACjFoc,EAAWA,EAAUrd,OAASyU,KAAK4L,kBAAkBvf,GAAO8E,IAG/FyR,EAAYnP,UAAU2U,aAAe,SAAUiB,EAAYtO,GACvD,IAAI/M,EAAUgS,KAAKhS,QACf6d,EAAWxC,EAAarb,EAAQI,iBAAiB/B,KAAO2B,EAAQM,OAAOyM,EAAiB,YAAG1O,KAC3Fyf,EAAczC,EAAarb,EAAQI,iBAAiBlC,QAAU8B,EAAQM,OAAOyM,EAAiB,YAAG7O,QAChGK,oBAAkByB,EAAQ+U,iBAAiBgJ,oBACxC/d,EAAQ+U,iBAAiBgJ,kBAAkB3hB,OAAS,IACpD4D,EAAQ+U,iBAAiBC,WAAahV,EAAQ+U,iBAAiBgJ,mBAIvE,IAAI/H,EAAatV,EAAaV,EAAQ+U,iBAAiBC,WAAW,IAAY,OAC1E/P,EAAeoW,EAAarb,EAAQI,iBAAiB6E,aACrDjF,EAAQM,OAAOyM,EAAiB,YAAG9H,aACvC,GAAIA,EAAa7I,OAAS,EAAG,CAEzB,IAAI4hB,EAAShZ,EAASC,EAAc8H,EAAW,KAAE/M,EAAQie,qBAAsBlR,EAAW,KAAE/M,EAAQke,sBACpGL,EAAYtf,oBAAkByf,EAAa,MAAsBhe,EAAQI,iBAAiB/B,KAA1C2f,EAAa,KAC7DF,EAAcE,EAAgB,aAG9B,IAAK,IAAI7hB,EAAI,EAAGA,EAAI6Z,EAAW5Z,OAAQD,IAC/B6Z,EAAW7Z,GAAmB,iBAAM4Q,EAAqB,eAAEpO,MAAM,KAAK,KACtEkf,EAAYtf,oBAAkBsf,GAAwBtf,oBAAkByB,EAAQme,gBAC5Bne,EAAQoe,QAAQhiB,OAAS,EACzE4D,EAAQoe,QAAQjiB,EAAI6D,EAAQoe,QAAQhiB,QAAU,UAD9C4Z,EAAW7Z,GAAS,KAAE6D,EAAQme,gBADQN,GAMtD,OAASxf,KAAMwf,EAAU3f,QAAS4f,IAQtClJ,EAAYnP,UAAUmY,kBAAoB,SAAUrgB,GAChD,IAAI8gB,EAAiB9gB,EAEjB+gB,EAAWxT,EAAkB/D,EADjCsX,EAAqC,gBAAnBA,EAAoCnT,OAAOC,iBAAiB5Q,SAASI,KAAM,MAAMgV,gBAAkB0O,IAGrH,OADevb,KAAK4E,OAAoB,IAAb4W,EAASpY,EAAuB,IAAboY,EAASnY,EAAuB,IAAbmY,EAAS3e,GAAW,MAClE,IAAM,QAAU,SAEvCiV,EAAYnP,UAAUoX,eAAiB,SAEvC7B,EAAcN,EAAS/X,EAAM1H,EAAUyG,EAAUqL,EAAMsO,GACnD,IAAIkD,EAAalD,EAAaX,EAAU,iBAAmBA,EAAU,kBACjE8D,EAAiBnD,EAAa,iBAAmB,kBACrD,GAAI9c,oBAAkBmD,EAAoB,YAA0B,iBAAbA,EAGnD,IAAK,IADDd,EAAOC,OAAOD,KAAKmM,EAAW,MACzB5Q,EAAI,EAAGA,EAAIyE,EAAKxE,OAAQD,IAAK,CAClC,IAAIoG,EAASC,OACbd,EAAWA,EAAS5C,QAAQ,IAAIyD,EAAO,MAAQ3B,EAAKzE,GAAK,KAAM,KAAM4Q,EAAW,KAAEnM,EAAKzE,GAAGsG,aAGlG,IAAIgc,EACJ,IAAKlgB,oBAAkBhE,SAASC,eAAewX,KAAKhS,QAAQiC,QAAQvH,GAAK,uBAAwB,CAE7F,IAIIgkB,EAAmBhc,EAAkBC,EAAM1H,EAD5BiI,EADnBub,EAAezc,EAFEP,EAAoBC,EACfC,CAAWoL,EAAW,KAAGiF,KAAKhS,QAAS0B,EAAUsQ,KAAKhS,QAAQiC,QAAQvH,GAAK8jB,GAAgB,GAClED,EAAYxR,EAAW,MACtBiO,GACuB,WAAYhJ,KAAKhS,SACxFye,EAAazjB,MAAMS,KAAOijB,EAAiB/hB,EAAI,KAC/C8hB,EAAazjB,MAAMQ,IAAMkjB,EAAiB9hB,EAAI,KAElD,OAAO6hB,GAEX7J,EAAYnP,UAAU2X,qBAAuB,SAAUza,EAAMvI,EAAMwgB,EAAWpe,GAC1E,IAAImiB,EACA3iB,EAAW2G,EAAKzG,MAAQ,GAC5B,OAAQM,GACJ,IAAK,OACDmiB,GAAanW,EAAKxM,EAAU2G,EAAK9F,OAAQzC,EAAMwgB,IAC/C,MACJ,IAAK,OACD+D,GAAa5iB,EAAUC,EAAW,EAAI5B,EAAMwgB,IAC5C,MACJ,IAAK,aACD+D,EAAYhX,EAAS3L,EAAU5B,EAAMwgB,GACrC,MACJ,IAAK,OACD+D,EAAY1W,EAASjM,EAAU5B,EAAMwgB,GAG7C,OAAO+D,GAOX/J,EAAYnP,UAAUmZ,QAAU,WAC5B5M,KAAKhS,QAAU,KACfgS,KAAK6M,YAAc,KACnB7M,KAAKiJ,YAAc,KACnBjJ,KAAKhV,SAAW,KAChBgV,KAAKxQ,eACLwQ,KAAKgE,eAEFpB,MH3sBRkK,UAAUA,aAPHC,eACF5jB,KAAM,OACNC,WAAY,SACZmC,MAAO,UACPlC,UAAW,SACXC,WAAY,4BINpB,IAAI0jB,GAAuB,WAOvB,SAASA,EAAMC,IAkFf,OAxEAD,EAAMvZ,UAAUyZ,MAAQ,SAAUhe,EAAS0I,GACvC,IAAIuV,EAAcjU,OAAOkU,KAAK,GAAI,QAAS,UAAYlU,OAAOmU,YAAc,UAAYnU,OAAOoU,WAAa,cAC5GH,EAAYI,OAAO,EAAG,GACtBJ,EAAYK,SAASC,OAAOC,WAAYD,OAAOE,aAC/C,IAAIC,GACAtD,QAAQ,EAAOuD,YAAa7N,KAAK8N,eAAe5e,EAAS0I,GAAW1J,KAAMuQ,IAE9EvP,EAAQsb,QAAQ/L,GAAamP,EAAU,WAC9BA,EAAStD,QACVyD,QAAcH,EAASC,YAAaV,MAYhDH,EAAMvZ,UAAUqa,eAAiB,SAAU5e,EAAS0I,GAChD,IAAIoW,EAAMvlB,gBAAc,OACxB,GAAImP,EACIA,aAAoB9I,MACpB8I,EAASoN,QAAQ,SAAUld,GACvBkmB,EAAIplB,YAAY4E,EAAW1F,GAAOmmB,WAAU,MAG3CrW,aAAoBsW,QACzBF,EAAIplB,YAAYgP,EAASqW,WAAU,IAGnCD,EAAIplB,YAAY4E,EAAWoK,GAAUqW,WAAU,QAGlD,CACD,IAAIE,EAAgBjf,EAAQe,QAAQge,WAAU,GAC1CG,EAAoBD,EAAcE,qBAAqB,OAAO,GAClE,IAAK9hB,oBAAkB6hB,KACnBA,EAAoBA,EAAkBhX,WAAW,IAC5C7K,oBAAkB6hB,IAAoB,CACvC,IAAIzQ,EAAkByQ,EAAkBpX,aAAa,QAC9B,aAAlB9H,EAAQuO,OAA0C,eAAlBvO,EAAQuO,OAA4C,WAAlBvO,EAAQuO,OAAwC,cAAlBvO,EAAQuO,OAA+C,2BAApBE,GAAoE,gBAApBA,EAG5J,iBAAlBzO,EAAQuO,OAA8C,mBAAlBvO,EAAQuO,OAAgD,eAAlBvO,EAAQuO,OAA4C,kBAAlBvO,EAAQuO,OAAmD,2BAApBE,GAAoE,gBAApBA,GACzMyQ,EAAkBlX,aAAa,OAAQ,oBAHvCkX,EAAkBlX,aAAa,OAAQ,wBAOnD8W,EAAIplB,YAAYulB,GAEpB,OAAOH,GAOXhB,EAAMvZ,UAAU6a,cAAgB,WAE5B,MAAO,SASXtB,EAAMvZ,UAAUmZ,QAAU,aACnBI,KC1FPuB,GAA6B,WAO7B,SAASA,EAAYtB,IAkFrB,OAtEAsB,EAAY9a,UAAU+a,OAAS,SAAUtf,EAASxE,EAAMmS,EAAU4R,GAwD9D,OAtDc,IAAIC,QAAQ,SAAUC,EAASC,GACzC,IAAI3e,EAAUxH,gBAAc,UACxBC,GAAI,aACJqU,OACIlS,OAAUqE,EAAQ2f,cAAchkB,OAAO4F,WACvCvG,MAASgF,EAAQ2f,cAAc3kB,MAAMuG,cAGzC0d,EAAgBjf,EAAQ8b,UAAUiD,WAAU,GAC5CG,EAAoBD,EAAc/W,WAAW,GACjD,IAAK7K,oBAAkB6hB,GAAoB,CACvC,IAAIzQ,EAAkByQ,EAAkBpX,aAAa,QAC9B,aAAlB9H,EAAQuO,OAA0C,eAAlBvO,EAAQuO,OAA4C,WAAlBvO,EAAQuO,OAAwC,cAAlBvO,EAAQuO,OAA+C,2BAApBE,GAAoE,gBAApBA,EAG5J,iBAAlBzO,EAAQuO,OAA8C,mBAAlBvO,EAAQuO,OAAgD,eAAlBvO,EAAQuO,OAA4C,kBAAlBvO,EAAQuO,OAAmD,2BAApBE,GAAoE,gBAApBA,GACzMwQ,EAAc/W,WAAW,GAAGF,aAAa,OAAQ,oBAHjDiX,EAAc/W,WAAW,GAAGF,aAAa,OAAQ,wBAMzD,IAAI4F,IAAegS,UAAQC,UAAUte,WAAWxI,QAAQ,mBAAqB,GACzE+mB,EAAU,sFACVb,EAAcc,UACd,SACA3V,EAAMJ,OAAOgW,IAAIC,gBAAgB,IAAIC,KAAc,QAAT1kB,GAAkBskB,KAC3D,IAAKK,eAAiBC,kBAAkBnB,KAAmBzjB,KAAM,mBACtE,GAAa,QAATA,EACI+jB,EACA7R,GAAgBC,EAAUnS,EAAM4O,EAAKwD,GAGrC6R,EAAQ,UAGX,CACD,IAAIY,EAAU,IAAIC,MACdC,EAAYxf,EAAQyf,WAAW,MACnCH,EAAQI,kBACJF,EAAUG,UAAUL,EAAS,EAAG,GAChCrW,OAAOgW,IAAIW,gBAAgBvW,GACvBmV,EACA7R,GAAgBC,EAAUnS,EAAMuF,EAAQ6f,UAAU,aAAahjB,QAAQ,YAAa,sBAAuBgQ,GAG9F,SAATpS,EACAikB,EAAQ1e,EAAQ6f,UAAU,eAEZ,QAATplB,GACLikB,EAAQ1e,EAAQ6f,UAAU,eAItCP,EAAQQ,IAAMzW,MAK1BiV,EAAY9a,UAAU6a,cAAgB,WAElC,MAAO,eASXC,EAAY9a,UAAUmZ,QAAU,aACzB2B,KCzFPyB,GAA2B,WAO3B,SAASA,EAAU/C,IAsEnB,OAzDA+C,EAAUvc,UAAU+a,OAAS,SAAUtf,EAASxE,EAAMmS,EAAUoT,EAAaxB,GA2CzE,OAzCc,IAAIC,QAAQ,SAAUC,EAASC,GACzC,IAAI3e,EAAUxH,gBAAc,UACxBC,GAAI,aACJqU,OACI7S,MAASgF,EAAQ2f,cAAc3kB,MAAMuG,WACrC5F,OAAUqE,EAAQ2f,cAAchkB,OAAO4F,cAG/Cwf,EAAc1jB,oBAAkB0jB,GAAeC,qBAAmBC,UAAYF,EAC9E,IAAI9B,EAAgBjf,EAAQ8b,UAAUiD,WAAU,GAC5CG,EAAoBD,EAAc/W,WAAW,GACjD,IAAK7K,oBAAkB6hB,GAAoB,CACvC,IAAIzQ,EAAkByQ,EAAkBpX,aAAa,QAC9B,aAAlB9H,EAAQuO,OAA0C,eAAlBvO,EAAQuO,OAA4C,WAAlBvO,EAAQuO,OAAwC,cAAlBvO,EAAQuO,OAA+C,2BAApBE,GAAoE,gBAApBA,EAG5J,iBAAlBzO,EAAQuO,OAA8C,mBAAlBvO,EAAQuO,OAAgD,eAAlBvO,EAAQuO,OAA4C,kBAAlBvO,EAAQuO,OAAmD,2BAApBE,GAAoE,gBAApBA,GACzMwQ,EAAc/W,WAAW,GAAGF,aAAa,OAAQ,oBAHjDiX,EAAc/W,WAAW,GAAGF,aAAa,OAAQ,wBAMzD,IAAIoC,EAAMJ,OAAOgW,IAAIC,gBAAgB,IAAIC,OAAM,IAAKC,eAAiBC,kBAAkBnB,KAAmBzjB,KAAM,mBAC5G0lB,EAAQ,IAAIZ,MACZa,EAAUpgB,EAAQyf,WAAW,MACjCU,EAAMT,kBACFU,EAAQT,UAAUQ,EAAO,EAAG,GAC5BlX,OAAOgW,IAAIW,gBAAgBvW,GAC3B,IAAI/Q,EAAW,IAAI+nB,cACfC,EAActgB,EAAQ6f,UAAU,cAAchjB,QAAQ,aAAc,sBACxEvE,EAASioB,aAAaP,YAAcA,EACpCM,EAAcA,EAAYha,MAAMga,EAAYtoB,QAAQ,KAAO,GAC3DM,EAASkoB,MAAMC,MAAMC,SAASf,UAAU,IAAIgB,YAAUL,GAAc,EAAG,EAAIrhB,EAAQ2f,cAAc3kB,MAAQ,GAAKgF,EAAQ2f,cAAchkB,QAChI4jB,GACAlmB,EAASsoB,KAAKhU,EAAW,QACzBtU,EAASqkB,WAGT+B,EAAQ,OAGhByB,EAAML,IAAMzW,KAIpB0W,EAAUvc,UAAU6a,cAAgB,WAEhC,MAAO,aASX0B,EAAUvc,UAAUmZ,QAAU,aACvBoD,KCjFPvQ,GAAwC,WACxC,IAAIC,EAAgB,SAAUnF,EAAG5M,GAI7B,OAHA+R,EAAgB7Q,OAAO8Q,iBAChBC,wBAA2B9Q,OAAS,SAAUyL,EAAG5M,GAAK4M,EAAEqF,UAAYjS,IACvE,SAAU4M,EAAG5M,GAAK,IAAK,IAAIkS,KAAKlS,EAAOA,EAAEmS,eAAeD,KAAItF,EAAEsF,GAAKlS,EAAEkS,MACpDtF,EAAG5M,IAE5B,OAAO,SAAU4M,EAAG5M,GAEhB,SAASoS,IAAOC,KAAKC,YAAc1F,EADnCmF,EAAcnF,EAAG5M,GAEjB4M,EAAE9G,UAAkB,OAAN9F,EAAakB,OAAOqR,OAAOvS,IAAMoS,EAAGtM,UAAY9F,EAAE8F,UAAW,IAAIsM,IAV3C,GAaxCI,GAA0C,SAAUC,EAAYC,EAAQjI,EAAKkI,GAC7E,IAA2H/F,EAAvHgG,EAAIC,UAAUpW,OAAQ8J,EAAIqM,EAAI,EAAIF,EAAkB,OAATC,EAAgBA,EAAOzR,OAAO4R,yBAAyBJ,EAAQjI,GAAOkI,EACrH,GAAuB,iBAAZI,SAAoD,mBAArBA,QAAQC,SAAyBzM,EAAIwM,QAAQC,SAASP,EAAYC,EAAQjI,EAAKkI,QACpH,IAAK,IAAInW,EAAIiW,EAAWhW,OAAS,EAAGD,GAAK,EAAGA,KAASoQ,EAAI6F,EAAWjW,MAAI+J,GAAKqM,EAAI,EAAIhG,EAAErG,GAAKqM,EAAI,EAAIhG,EAAE8F,EAAQjI,EAAKlE,GAAKqG,EAAE8F,EAAQjI,KAASlE,GAChJ,OAAOqM,EAAI,GAAKrM,GAAKrF,OAAO+R,eAAeP,EAAQjI,EAAKlE,GAAIA,GA8B5D4c,GAAyB,SAAUhQ,GAQnC,SAASgQ,EAAQxlB,EAAS2E,GACtB,IAAIqY,EAAQxH,EAAOpN,KAAKsM,KAAM1U,EAAS2E,IAAY+P,KAgBnD,OAZAsI,EAAMyI,UAAW,EAEjBzI,EAAM2H,YAAc,aAGpB3H,EAAMlF,gBAENkF,EAAMnD,oBAAqB,EAE3BmD,EAAMxR,kBAENwR,EAAM7Q,YACC6Q,EAuvCX,OA/wCA7I,GAAUqR,EAAShQ,GA0BnBgQ,EAAQrd,UAAUud,UAAY,WAC1B,IAAI1I,EAAQtI,KACZA,KAAKwK,QNvEK,QMuEWxc,QAASgS,MAAQ,WAClCsI,EAAM2I,sBACN3I,EAAM4I,eACN5I,EAAM6I,YACN7I,EAAM8I,aACN9I,EAAM+I,gBAGdP,EAAQrd,UAAU6d,OAAS,WACvBtR,KAAKuR,kBAETT,EAAQrd,UAAU8d,eAAiB,WAC/BvR,KAAK+C,iBAAmB,IAAIyO,GAC5BxR,KAAK+C,iBAAiBC,WAAa,KACnChD,KAAK+C,iBAAiBgJ,kBAAoB,KAC1C/L,KAAK+C,iBAAiB0O,cAAgB,KACtCzR,KAAK0R,yBACL1R,KAAK2R,cACL3R,KAAKkK,WAAa1M,GAAcwC,KAAKvC,OACrCuC,KAAK4R,eACL5R,KAAK6R,YAAY7R,KAAK8R,cAAe,QAAS,KAAM,MAC/CvlB,oBAAkByT,KAAK+C,iBAAiBC,cACzChD,KAAK+C,iBAAiBgJ,kBAAoB/L,KAAK+C,iBAAiBC,YAEpEhD,KAAK+R,sBAETjB,EAAQrd,UAAUse,mBAAqB,WACnC,IACIC,EACAC,EACAC,EACAC,EAJA7J,EAAQtI,KAKZ,GAAIA,KAAKoS,sBAAsBC,cAAa,CACxCL,EAAahS,KAAKoS,WAClBH,EAAcjS,KAAKsS,iBAAiBC,QAAQvS,KAAKsS,MAAQ,IAAIC,QAE3CP,EAAWQ,aAAaP,GAE9BQ,KAAK,SAAU1iB,GACvBuY,EAAM8J,WAAariB,EAAU,OAC7BuY,EAAMoK,+BAGL1S,KAAKoS,sBAAsB7P,IAChC4P,EAAYnS,KAAKoS,YACjBF,EAAiB,IAAIS,QAAMR,EAAUxP,YAAawP,EAAUznB,KAAMynB,EAAU1P,cAC7DmQ,UAAY,SAAUC,GACjCvK,EAAM8J,WAAaS,EACnBvK,EAAMoK,yBAEVR,EAAeY,KAAKX,EAAUzP,WAG9B1C,KAAK0S,yBAGb5B,EAAQrd,UAAUif,sBAAwB,WACtC1S,KAAK+S,iBACD/S,KAAKpE,qBAAuBoE,KAAKuD,eAAeyP,SAChDhT,KAAKpE,oBAAoBqX,eAE7BjT,KAAKzQ,OAAOsT,qBACZ7C,KAAK/P,QAAQrH,YAAYoX,KAAKgL,WAC9BhL,KAAKkT,gBACLlT,KAAKwK,QNjIO,UMiIWxc,QAASgS,KAAMmT,UAAWnT,KAAK+Q,WACtD/Q,KAAK+Q,UAAW,EAChB/Q,KAAKoT,kBAETtC,EAAQrd,UAAU0d,UAAY,WAC1B,GAAInR,KAAKgL,UAAW,CAChB,KAAOhL,KAAKgL,UAAU5T,WAAWhN,OAAS,GACtC4V,KAAKgL,UAAUxZ,YAAYwO,KAAKgL,UAAUqI,aAEzCrT,KAAKgL,UAAUsI,iBAAmBtT,KAAKgL,UAAUzZ,YAClDwG,SAAOiI,KAAKgL,WAGhBze,oBAAkByT,KAAKhV,YACvBgV,KAAKhV,SAAW,IAAIsB,cAAY0T,KAAK/P,QAAQvH,KAE7C6D,oBAAkByT,KAAKzQ,UACvByQ,KAAKzQ,OAAS,IAAIqT,GAAY5C,OAElCA,KAAKuT,gBACL,IAAIC,EAAiBxT,KAAK/P,QAAQpG,YAC9B4pB,EAAkBzT,KAAK/P,QAAQnG,aACnCkW,KAAK6O,cAAgB,IAAIjlB,GAAK/B,EAAemY,KAAK9V,MAAOspB,IAAmBA,GAAkB,IAAK3rB,EAAemY,KAAKnV,OAAQ4oB,IAAoBA,GAAmB,KACtKzT,KAAKgL,UAAYhL,KAAKhV,SAASmmB,WAC3BzoB,GAAIsX,KAAK/P,QAAQvH,GAAK,OACtBwB,MAAO8V,KAAK6O,cAAc3kB,MAC1BW,OAAQmV,KAAK6O,cAAchkB,UAQnCimB,EAAQrd,UAAUwd,oBAAsB,WACpC,GAAwB,KAApBjR,KAAK/P,QAAQvH,GAAW,CACxB,IAAIuS,EAAa1S,SAASkT,uBAAuB,aAAarR,OAC9D4V,KAAK/P,QAAQvH,GAAK,mBAAqBuS,EAE3C+E,KAAKhV,SAAW,IAAIsB,cAAY0T,KAAK/P,QAAQvH,IAC7CsX,KAAKzQ,OAAS,IAAIqT,GAAY5C,OAElC8Q,EAAQrd,UAAUie,uBAAyB,WACvC,IAAI1I,EAAezgB,SAASC,eAAewX,KAAK/P,QAAQvH,GAAK,sBAI7D,GAHIsgB,GAAgBA,EAAa/R,kBAAoB,GACjD+R,EAAazX,WAAWC,YAAYwX,GAEpCzc,oBAAkBhE,SAASC,eAAewX,KAAK/P,QAAQvH,GAAK,uBAAwB,CACpF,IAAIgrB,EAAmBjrB,gBAAc,OACjCC,GAAIsX,KAAK/P,QAAQvH,GAAK,uBAE1BgrB,EAAiB1qB,MAAMoH,QAAU,gCACjC4P,KAAK/P,QAAQrH,YAAY8qB,KAGjC5C,EAAQrd,UAAUyf,cAAgB,WAC1BlT,KAAKpE,qBAAuBoE,KAAKuD,eAAeyP,SAAWhT,KAAKpE,oBAAoBpE,aAAewI,KAAKzQ,OAAO0Z,cAC3G1c,oBAAkByT,KAAKgL,aAAeze,oBAAkBhE,SAASC,eAAewX,KAAKzQ,OAAO0Z,YAAYvgB,OACxG6D,oBAAkBhE,SAASC,eAAewX,KAAKpE,oBAAoBpE,YAAY9O,MACnFsX,KAAKgL,UAAU2I,aAAa3T,KAAKzQ,OAAO0Z,YAAajJ,KAAKpE,oBAAoBpE,cAStFsZ,EAAQrd,UAAUme,aAAe,WAC7B,IAAI1nB,EAAQ8V,KAAK3I,OAAOnN,MACpB0pB,EAAgB5T,KAAKgL,UAAUzd,cAAc,IAAMyS,KAAK/P,QAAQvH,GAAK,mBACzE,IAAKsX,KAAK3I,OAAOnN,MAAQ,GAAM8V,KAAK6T,YAAc7T,KAAKkK,WAAWvM,kBAAqBpR,oBAAkBqnB,GAAgB,CACrH,IAAIE,EAAa,IAAI5R,GAAWlC,KAAK/P,QAAQvH,GAAK,kBAAmBsX,KAAK6T,YAAc7T,KAAKkK,WAAWvM,gBAAiBqC,KAAK3I,OAAQ,EAAG,IAAI4K,GAAK/X,EAAQ,EAAGA,EAAQ,EAAG8V,KAAK6O,cAAc3kB,MAAQA,EAAO8V,KAAK6O,cAAchkB,OAASX,IACtO8V,KAAKgL,UAAUpiB,YAAYoX,KAAKhV,SAAS+oB,cAAcD,SAElDF,GACLA,EAAc1c,aAAa,OAAQ8I,KAAK6T,YAAc7T,KAAKkK,WAAWvM,kBAG9EmT,EAAQrd,UAAUoe,YAAc,SAAUmC,EAAOtpB,EAAMupB,EAAQC,GAC3D,IAIIrpB,EAJA7B,GACAuC,MAAOyoB,EAAMpL,UAAUrd,MAAOpC,KAAM6qB,EAAMpL,UAAUzf,KAAMG,WAAY0qB,EAAMpL,UAAUtf,WACtFD,UAAW2qB,EAAMpL,UAAUvf,UAAWD,WAAY4qB,EAAMpL,UAAUxf,WAAY8C,QAAS8nB,EAAMpL,UAAU1c,SAIvGhC,EAAS8V,KAAK6O,cAAc3kB,MAAQ8V,KAAKmU,OAAOC,MAAQpU,KAAKmU,OAAO1qB,KAIxE,GAHAT,EAAMM,WAAaN,EAAMM,YAAc0W,KAAKkK,WAAW5gB,WACvDN,EAAMI,WAAaJ,EAAMI,YAAc4W,KAAKkK,WAAWrM,gBACvD7U,EAAMG,KAAOH,EAAMG,OAAkB,UAATuB,EAAmBsV,KAAKkK,WAAWhhB,SAAW8W,KAAKkK,WAAW9L,kBACtF4V,EAAM5rB,KAAM,CACRmE,oBAAkB2nB,KAClBA,EAAWlU,KAAKhV,SAASke,aAAcxgB,GAAIsX,KAAK/P,QAAQvH,GAAK,kBAEjE,IAAI2rB,EAAetqB,EAASG,EAAO8pB,EAAM5rB,KAAMY,GAC3CsrB,EAAcnsB,EAAYksB,EAAcrrB,GAExCurB,EAAajqB,EADLiC,oBAAkB0nB,GAAW,IAAIhS,GAAKjC,KAAKmU,OAAO1qB,KAAMuW,KAAKmU,OAAO3qB,IAAKwW,KAAK6O,cAAc3kB,MAAO8V,KAAK6O,cAAchkB,QAAUopB,EACxGD,EAAMxpB,UAAW8pB,EAAa5pB,GAC9DY,EAAU,IAAIgX,GAAWtC,KAAK/P,QAAQvH,GAAK,YAAcgC,EAAM6pB,EAAW5pB,EAAG4pB,EAAW3pB,EAAG,QAASypB,GACpGG,EAAc,IAAIvS,GAAKsS,EAAW5pB,EAAG4pB,EAAW3pB,EAAG0pB,EAAYpqB,MAAOoqB,EAAYzpB,QAClFoF,EAAU5E,EAAkBC,EAAStC,EAAOA,EAAMuC,QAAmB,UAATb,EAAmBsV,KAAKkK,WAAWtM,eAAiBoC,KAAKkK,WAAWpM,mBAAoBoW,GACxJjkB,EAAQiH,aAAa,aAAc8c,EAAMS,aAAeT,EAAM5rB,MAC9D6H,EAAQiH,aAAa,OAAQ,IAC7BjH,EAAQiH,aAAa,YAAa8I,KAAK+K,UAAqB,UAATrgB,EAAmB,EAAI,IAAI+F,aAChE,UAAT/F,IAAqBspB,EAAMU,iBAAiBtsB,MAAmB,aAATsC,KACvDG,EAAUmV,KAAK6O,cAAchkB,OAAS2pB,EAAY5pB,EApBvC,GAoB0DoV,KAAKmU,OAAOQ,OACjF3U,KAAKnP,SAAW,IAAIoR,GAAKjC,KAAKmU,OAAO1qB,KAAM+qB,EAAY5pB,EArB5C,GAqB8DV,EAAOW,IAEvE,aAATH,GAAuBspB,EAAMU,iBAAiBtsB,KAC9C4X,KAAK6R,YAAYmC,EAAMU,iBAAkB,WAAYF,EAAaN,GAGlElU,KAAKgL,UAAUpiB,YAAYsrB,QAI/BrpB,EAAUmV,KAAK6O,cAAchkB,OAASmV,KAAKmU,OAAO3qB,IAAMwW,KAAKmU,OAAOQ,OACpE3U,KAAKnP,SAAW,IAAIoR,GAAKjC,KAAKmU,OAAO1qB,KAAMuW,KAAKmU,OAAO3qB,IAAKU,EAAOW,IAG3EimB,EAAQrd,UAAUsf,eAAiB,WAC/B,IACIrI,EADApC,EAAQtI,KAIZ,GADAA,KAAKoS,WAAapS,KAAKoS,YAClB7lB,oBAAkByT,KAAKoS,aAAepS,KAAKoS,WAAWhoB,OAAS,GAAK4V,KAAKvR,gBAAiB,CAS3F,GARAuR,KAAK+C,iBAAiBC,cAEtBhD,KAAKoS,WAAWwC,IAAI,SAAUvmB,GAC1BA,EAAKia,EAAM7Z,iBAAoBJ,EAAKia,EAAM7Z,iBAAoBJ,EAAKia,EAAM7Z,iBAAiBgC,WACtFpC,EAAKia,EAAM7Z,mBAEnBuR,KAAK5R,iBAAiBI,UAAYwR,KAAK5R,iBAAiBI,WAAawR,KAAKvR,gBAC1EuR,KAAK6U,0BACsB,IAAvB7U,KAAK1R,OAAOlE,OAAc,CAE1B,IAAI0qB,KACJA,EAAc,MAAI,EAClBpK,EAAO1K,KAAK5R,iBAAiBI,UAC7BsmB,EAAOpK,MACP,IAAK,IAAIvgB,EAAI,EAAGA,EAAI6V,KAAKoS,WAAWhoB,OAAQD,IAAK,CAE7C,IAAI4Z,EAAQrV,EAAasR,KAAKoS,WAAWjoB,IAAY,OACjD6V,KAAKmF,oBAAsBpB,GAASA,EAAM3Z,OAAS,EAEnD2Z,EAAMiB,QAAQ,SAAU+P,GAChBA,EAAYrK,IAEZoK,EAAOpK,GAAMvb,MACT+T,WAAY,EAAGhV,KAAM6mB,EAAYrK,GACjCsK,eAAgBD,EAAYrK,GAAMja,WAClCpC,KAAM0mB,EAAaE,OAAQF,EAAYzM,EAAM7Z,qBAMrDuR,KAAKoS,WAAWjoB,GAAGugB,IAEnBoK,EAAOpK,GAAMvb,MACT+T,WAAY,EAAGhV,KAAM8R,KAAKoS,WAAWjoB,GAAGugB,GAAOsK,eAAgBhV,KAAKoS,WAAWjoB,GAAGugB,GAAMja,WAAYpC,KAAM2R,KAAKoS,WAAWjoB,GAC1H8qB,OAAQjV,KAAKoS,WAAWjoB,GAAG6V,KAAKvR,mBAKhDuR,KAAK+C,iBAAiBC,WAAW7T,KAAK2lB,OAErC,CACD,GAAI9U,KAAKmF,mBAAoB,CACzBnF,KAAK+C,iBAAiB0O,iBAEtBzR,KAAK+C,iBAAiB0O,cAAgBnO,YAAWtD,KAAKoS,WAAYpS,KAAK+C,iBAAiB0O,eAAe,GACvG,IAAStnB,EAAI,EAAGA,EAAI6V,KAAK+C,iBAAiB0O,cAAcrnB,OAAQD,IAC5D6V,KAAKkV,wBAAwBlV,KAAK+C,iBAAiB0O,cAActnB,GAAIA,GAEzE6V,KAAK+C,iBAAiBC,WAAahD,KAAK+C,iBAAiB0O,mBAGzDzR,KAAKmV,sBACDnV,KAAK+C,iBAAiBC,WAAW5Y,OAAS,GAC1C4V,KAAKoV,iBAAiBpV,KAAK+C,iBAAiBC,WAAW5Y,OAAS,GAGxEsgB,EAAO1K,KAAK1R,OAAO,GAAGC,UAErByR,KAAKmF,oBACNnF,KAAKqV,gBAAgBrV,KAAK+C,iBAAiBC,WAAW,GAAG0H,GAAO,YAI5EoG,EAAQrd,UAAUohB,wBAA0B,WAExC,IAAI9Q,EACJ/D,KAAKoS,WAAapS,KAAKoS,WACvB,IAAK,IAAIjoB,EAAI,EAAGA,EAAI6V,KAAKoS,WAAWhoB,OAAQD,IAAK,CAE7C,IADA4Z,EAAQrV,EAAasR,KAAKoS,WAAWjoB,IAAY,SACpC4Z,EAAM3Z,OAAQ,CACvB4V,KAAKmF,oBAAqB,EAC1B,MAEKhb,IAAM6V,KAAKoS,WAAWhoB,OAAS,IACpC4V,KAAKmF,oBAAqB,KAKtC2L,EAAQrd,UAAUyhB,wBAA0B,SAAU7mB,EAAM+M,GACxD,IAEIka,EAGAC,EAEAnd,EAPAkQ,EAAQtI,KAIR8D,KAEA4G,EAAO1K,KAAK5R,iBAAiBI,UAAYwR,KAAK5R,iBAAiBI,UAAYwR,KAAKvR,gBAIpF,GAFAqV,EAAUpV,EAAaL,IACvBinB,EAAYxR,EAAUA,EAAgB,OAAI,OACzBwR,EAAUlrB,OAAS,EAAG,CACnCgO,EAAM0L,EAAa,IACnB,IAAK,IAAI3Z,EAAI,EAAGA,EAAI6V,KAAK1R,OAAOlE,OAAQD,IAChCiO,IAAQ4H,KAAK1R,OAAOnE,GAAGoE,YACvBgnB,EAAaprB,GAGrB,IAAK,IAAIiF,EAAI,EAAGA,EAAIkmB,EAAUlrB,OAAQgF,IAAK,CACvCkmB,EAAUlmB,GAAS,KAAIkmB,EAAUlmB,GAAGsb,GACpC4K,EAAUlmB,GAAmB,gBAAoB,IAAfmmB,EAAmBD,EAAUlmB,GAAS,KACpEf,EAAqB,eAAI,IAAMinB,EAAUlmB,GAAS,MAAK,GAC3D,IAAIomB,EAAiBF,EAAUlmB,GAAmB,eAC9CqmB,OAAa,EACbD,EAAe/oB,OAAO,KAAO,IAC7BgpB,EAAaD,EAAe7oB,MAAM,KAAKvC,OAAS,GAEpDkrB,EAAUlmB,GAAe,WAAI7C,oBAAkBgpB,GAAcE,IAAezV,KAAK1R,OAAOlE,OAClF4V,KAAK1R,OAAOlE,OAASqrB,EAAaF,EACrB,IAAfA,IACAD,EAAUlmB,GAAW,OAAIf,GAE7BinB,EAAUlmB,GAAc,UAAIgJ,EAC5Bkd,EAAUlmB,GAAS,KAAIkmB,EAAUlmB,GACjCkmB,EAAUlmB,GAAc,WAAI,EAC5BkmB,EAAUlmB,GAAW,OAAIkmB,EAAUlmB,GAAG4Q,KAAKvR,iBAG/C6mB,EAAUtQ,QAAQ,SAAU+P,GACxBzM,EAAM4M,wBAAwBH,EAAa3Z,KAGnD,GAAIA,IAAc4E,KAAK+C,iBAAiB0O,cAAcrnB,OAAS,EAAG,CAG9D,IAAK,IADDsrB,EAAa1V,KAAK+C,iBAAiB0O,cAAc,GAAGzR,KAAK1R,OAAO,GAAGC,WAC9D8M,EAAI,EAAGA,EAAI2E,KAAK+C,iBAAiB0O,cAAcrnB,OAAQiR,IAC5Dia,EAAY5mB,EAAasR,KAAK+C,iBAAiB0O,cAAcpW,IAAY,OAC/D,IAANA,GAAWia,IAEXA,EAAUtQ,QAAQ,SAAU+P,GAAeW,EAAWvmB,KAAK4lB,KAC3D/U,KAAK+C,iBAAiB0O,cAAcvJ,OAAO7M,EAAG,GAC9CA,GAAK,GAGbqa,EAAa1V,KAAK+C,iBAAiB0O,cAAc,GAAGzR,KAAK1R,OAAO,GAAGC,WACnE,IAAK,IAAIonB,EAAI,EAAGA,EAAID,EAAWtrB,OAAQurB,IACnC7R,EAAQ9D,KAAK1R,OAAO,GAAGC,WAAamnB,EACpCA,EAAWC,GAAW,OAAI7R,IAWtCgN,EAAQrd,UAAUyZ,MAAQ,SAAUxkB,GAC5BsX,KAAK4V,YAAc5V,KAAK6V,aACxB7V,KAAK6V,YAAY3I,MAAMlN,KAAMtX,IAYrCooB,EAAQrd,UAAU+a,OAAS,SAAU9jB,EAAMmS,EAAUoT,EAAaxB,GAC9D,IAAInG,EAAQtI,KAIZ,OAHIzT,oBAAkBkiB,KAClBA,GAAgB,GAEP,QAAT/jB,GAAkBsV,KAAK8V,gBAAkB9V,KAAK+V,gBAEvC,IAAIrH,QAAQ,SAAUC,EAASC,GAClCD,EAAQrG,EAAMyN,gBAAgBvH,OAAOlG,EAAO5d,EAAMmS,EAAUoT,EAAaxB,MAGxEzO,KAAKgW,kBAA8B,QAATtrB,GAAmBsV,KAAKiW,kBAEhD,IAAIvH,QAAQ,SAAUC,EAASC,GAClCD,EAAQrG,EAAM2N,kBAAkBzH,OAAOlG,EAAO5d,EAAMmS,EAAU4R,MAG/D,MAEXqC,EAAQrd,UAAU0hB,oBAAsB,WAEpCnV,KAAKoS,WAAapS,KAAKoS,WAGvB,IAAK,IAFD7jB,EACA2nB,KACK/rB,EAAI,EAAGA,EAAI6V,KAAK1R,OAAOlE,OAAS,EAAGD,IAAK,CAC7CoE,EAAYyR,KAAK1R,OAAOnE,GAAK6V,KAAK1R,OAAOnE,GAAGoE,UAAYyR,KAAK5R,iBAAiBI,UAE9E,IAAI2nB,KACJA,EAAa,MAAIhsB,EACjBgsB,EAAM5nB,MACNyR,KAAK+C,iBAAiBC,WAAW7T,KAAKgnB,GACtC,IAAK,IAAI/mB,EAAI,EAAGA,EAAI4Q,KAAKoS,WAAWhoB,OAAQgF,IAAK,CAE7C,IAAI2lB,KACAqB,EAAY,GAChB,IAAK7pB,oBAAkBgC,GAAY,CAC/B,IAAI8nB,EAASrW,KAAKoS,WAAWhjB,GAAGb,GAChC,GAAU,IAANpE,EACA,IAAK,IAAIkR,EAAI,EAAGA,GAAKlR,EAAGkR,IAAK,CACzB,IAAIib,EAAiBtW,KAAK1R,OAAO+M,GAAK2E,KAAK1R,OAAO+M,GAAG9M,UAAYA,EACjE6nB,GAAcpW,KAAKoS,WAAWhjB,GAAGknB,IAAqBjb,IAAMlR,EAAK,GAAK,KAGxE+rB,EAAW9rB,OAAS,IACG,IADC8rB,EAAWjuB,QAAQmuB,GACjCC,KACZtB,EAAkB,KAAIsB,EACtBtB,EAA4B,gBAAK,GAA0BsB,GAAU,GACrEtB,EAAwB,WAAI5qB,EAC5B4qB,EAAuB,WAAI,EAC3BA,EAAuB,UAAIxmB,EAC3BwmB,EAAkB,KAAI/U,KAAKoS,WAAWhjB,GAEtC4Q,KAAK+C,iBAAiBC,WAAYhD,KAAK+C,iBAAiBC,WAAW5Y,OAAS,GAAImE,GAAWY,KAAK4lB,GAChGmB,EAAW/mB,KAAK,GAA0BknB,QAa9DvF,EAAQrd,UAAU2hB,iBAAmB,SAAUmB,GAQ3C,IAAK,IAPDC,EACAC,EAAczW,KAAK1R,OAAOioB,GAASvW,KAAK1R,OAAOioB,GAAOhoB,UAAYyR,KAAK5R,iBAAiBI,UACxFkoB,EAAW1W,KAAK1R,OAAOioB,EAAQ,GAAGhoB,UAElCwmB,EAAc/U,KAAK+C,iBAAiBC,WAAWuT,GAAOE,GAEtDE,EAAe3W,KAAK+C,iBAAiBC,WAAWuT,EAAQ,GAAGG,GACtDvsB,EAAI,EAAGA,EAAI4qB,EAAY3qB,OAAQD,IAAK,CACzCqsB,EAAczB,EAAY5qB,GAAmB,eAC7C,IAAK,IAAIiF,EAAI,EAAGA,EAAIunB,EAAavsB,OAAQgF,IAGrC,GAFAunB,EAAavnB,GAAGqnB,GAAelqB,oBAAkBoqB,EAAavnB,GAAGqnB,OACxDE,EAAavnB,GAAGqnB,GACrBzW,KAAK4W,iBAAiBJ,EAAY7pB,MAAM,KAAMgqB,EAAavnB,GAAmB,eAAEzC,MAAM,MAAO,CACzFJ,oBAAkBwoB,EAAY5qB,GAAW,UACzC4qB,EAAY5qB,GAAW,OAAIwsB,EAAavnB,IAG5CunB,EAAavnB,GAAGqnB,GAAatnB,KAAK4lB,EAAY5qB,IAC9C,OAIZ6V,KAAKqV,gBAAgBrV,KAAK+C,iBAAiBC,WAAWhD,KAAK+C,iBAAiBC,WAAW5Y,OAAS,GAAGqsB,GAAc,SACjHzW,KAAK+C,iBAAiBC,WAAWkF,OAAOqO,EAAO,GAC1CA,EAAQ,EAAK,GACdvW,KAAKoV,iBAAiBmB,EAAQ,IAGtCzF,EAAQrd,UAAUmjB,iBAAmB,SAAUC,EAASzhB,GAEpD,IAAK,IADD0hB,GAAU,EACL3sB,EAAI,EAAGA,EAAIiL,EAAShL,OAAQD,IAAK,CACtC,GAAI0sB,EAAQzsB,OAASD,GAAKiL,EAASjL,KAAO0sB,EAAQ1sB,GAC9C,OAAO,EAGP2sB,GAAU,EAGlB,OAAOA,GAWXhG,EAAQrd,UAAU4hB,gBAAkB,SAAUtnB,EAAarD,GAwBvD,IAAK,IAtBDqa,EACApY,EAEAwW,EAJAmF,EAAQtI,KAKR+W,KACAzN,EAAU,SAAUnf,GACpB4a,EAAc,EACd5B,EAAYpV,EAAY5D,GAAc,UACtCwC,EAAQoB,EAAY5D,GAAmB,eAAEwC,MAAM,KAE/C4c,EAAO6I,WAAWpN,QAAQ,SAAU3W,GAC5BT,EAAejB,EAAOoB,EAAY5D,GAAmB,eAAGkE,EAAMia,KAC9DvD,GAAelN,WAAWxJ,EAAKia,EAAM7Z,qBAGhC,WAAT/D,IACAqsB,EAAS5T,GAAapV,EACtBA,EAAY5D,GAAW,OAAI4sB,GAE/BhpB,EAAY5D,GAAW,OAAI4a,GAE3BwE,EAASvJ,KACJ7V,EAAI,EAAGA,EAAI4D,EAAY3D,OAAQD,IACpCmf,EAAQnf,IAShB2mB,EAAQrd,UAAUyd,aAAe,WAC7B8F,eAAajf,OAAOiI,KAAK/P,QAAS,QAAS+P,KAAKiX,gBAChDD,eAAajf,OAAOiI,KAAK/P,QAAS,WAAY+P,KAAKkX,sBACnDF,eAAajf,OAAOiI,KAAK/P,QAAS,cAAe+P,KAAKmX,qBACtDH,eAAajf,OAAOiI,KAAK/P,QAAS6e,UAAQsI,gBAAiBpX,KAAKqX,oBAChEL,eAAajf,OAAOiI,KAAK/P,QAAS6e,UAAQwI,eAAgBtX,KAAKuX,oBAC/DP,eAAajf,OAAOiI,KAAK/P,QAAS6e,UAAQ0I,cAAexX,KAAKyX,mBAC9DT,eAAajf,OAAOiI,KAAK/P,QAAS,0BAA2B+P,KAAK0X,qBAClExe,OAAOye,oBAAoB,SAAU3X,KAAK4X,cAO9C9G,EAAQrd,UAAU2d,WAAa,WAC3B4F,eAAatG,IAAI1Q,KAAK/P,QAAS,QAAS+P,KAAKiX,eAAgBjX,MAC7DgX,eAAatG,IAAI1Q,KAAK/P,QAAS,WAAY+P,KAAKkX,qBAAsBlX,MACtEgX,eAAatG,IAAI1Q,KAAK/P,QAAS,cAAe+P,KAAKmX,oBAAqBnX,MACxEgX,eAAatG,IAAI1Q,KAAK/P,QAAS6e,UAAQsI,gBAAiBpX,KAAKqX,mBAAoBrX,MACjFgX,eAAatG,IAAI1Q,KAAK/P,QAAS6e,UAAQwI,eAAgBtX,KAAKuX,mBAAoBvX,MAChFgX,eAAatG,IAAI1Q,KAAK/P,QAAS6e,UAAQ0I,cAAexX,KAAKyX,kBAAmBzX,MAC9EgX,eAAatG,IAAI1Q,KAAK/P,QAAS,0BAA2B+P,KAAK0X,oBAAqB1X,MACpFA,KAAK4X,YAAc5X,KAAK6X,gBAAgBC,KAAK9X,MAC7C9G,OAAO6e,iBAAiB,SAAU/X,KAAK4X,cAO3C9G,EAAQrd,UAAU4d,WAAa,WAC3BrR,KAAKzH,KAAO,IAAIyf,wBAOpBlH,EAAQrd,UAAUke,YAAc,WAC5B3R,KAAK/P,QAAQiH,aAAa,aAAc8I,KAAKyU,aAAe,mBAC5DzU,KAAK/P,QAAQiH,aAAa,OAAQ,IAClC8I,KAAK/P,QAAQiH,aAAa,WAAY8I,KAAK+K,SAASta,aAUxDqgB,EAAQrd,UAAUokB,gBAAkB,SAAU9nB,GAC1C,IAAIuY,EAAQtI,KACZ,IAAKA,KAAKiY,YAAa,CACnBjY,KAAK+Q,UAAW,EAChB,IAAImH,GACAhqB,KAAMqR,GACN+K,QAAQ,EACR6N,aAAcnY,KAAK6O,cACnBuJ,YAAa,IAAIxuB,GAAK,EAAG,GACzBoE,QAASgS,MAETA,KAAKwN,UACL6K,aAAarY,KAAKwN,WAEjBjhB,oBAAkByT,KAAK/P,UAAY+P,KAAK/P,QAAQ6H,UAAUwgB,SAAS,eACpEtY,KAAKwN,SAAW+K,WAAW,WACvBjQ,EAAM4I,eACN5I,EAAM6I,YACN7I,EAAMkQ,YAAa,EACnBlQ,EAAM8I,aACN8G,EAAOE,YAAc9P,EAAMuG,cAE3BvG,EAAMkC,QAAQjL,GAAQ2Y,EAAQ,SAAUzN,GACpCnC,EAAMgJ,SACNhJ,EAAMkQ,YAAa,KAExB,QAWf1H,EAAQrd,UAAUwjB,eAAiB,SAAUlnB,GACzC,IAGIsY,EACAoQ,EAJAnQ,EAAQtI,KACR0Y,EAAY3oB,EAAEsQ,OACdnT,EAAWwrB,EAAUhwB,GAGrBiwB,EAAYD,EAAU7vB,UACtB+vB,GAActO,QAAQ,EAAOpc,KN5lBtB,QM4lBmCF,QAASgS,KAAM6Y,WAAY9oB,GACzEiQ,KAAKwK,QN7lBM,QM6lBSoO,GAChB1rB,EAASjF,QAAQ,gBAAkB,IACnC8H,EAAE+oB,iBACFL,EAAY5gB,WAAW3K,EAASP,MAAM,gBAAgB,IACtD0b,GACIiC,QAAQ,EAAOpc,KAAM8Q,GAAWhR,QAASgS,KAAMjF,KAAMiF,KAAKzQ,OAAOC,YAAYipB,GAAYI,WAAY9oB,EACrGmT,WAAYlD,KAAKzQ,OAAOC,YAAYipB,GAAuB,WAAGtV,UAAWnD,KAAKzQ,OAAOC,YAAYipB,GAAiB,KAClHrwB,KAAMuwB,EAAWvrB,oBAAqBurB,GAE1C3Y,KAAKwK,QAAQxL,GAAWqJ,EAAW,SAAUoC,GACrCA,EAAariB,OAASuwB,GAAalO,EAAard,sBAAwBurB,IACpEpsB,oBAAkB+b,EAAMla,iBAAiBgc,gBACzCK,EAAariB,KAAO4P,EAAcyS,EAAariB,KAAMqiB,EAAmB,KAAQ,KAAGA,EAAazc,SAChG0qB,EAAUK,YAActO,EAAariB,MAGrC6E,EAAuBC,EAAUwrB,EAAWjO,EAAard,yBAKzE,IACI4rB,EADAC,GAAM,IAAIC,MAAOC,kBAEhB5sB,oBAAkByT,KAAKd,gBACnB3S,oBAAkBysB,IAAoBC,EAAMD,EAAkB,KAC/DhZ,KAAKkX,qBAAqBnnB,GAE9BipB,EAAkBC,IAS1BnI,EAAQrd,UAAUyjB,qBAAuB,SAAUnnB,GAC/C,IAAIqpB,GAAoB9O,QAAQ,EAAOpc,KAAMgR,GAAalR,QAASgS,KAAM6Y,WAAY9oB,GACrFiQ,KAAKwK,QAAQtL,GAAaka,IAU9BtI,EAAQrd,UAAU0jB,oBAAsB,SAAUpnB,GAC9C,IAAIspB,GAAmB/O,QAAQ,EAAOpc,KAAMiR,GAAYnR,QAASgS,KAAM6Y,WAAY9oB,GACnFiQ,KAAKwK,QAAQrL,GAAYka,IAS7BvI,EAAQrd,UAAU4jB,mBAAqB,SAAUtnB,GACzCA,EAAEsQ,OAAO3X,GAAGT,QAAQ,gBAAkB,IACtC+X,KAAKsZ,WAAY,GAErBtZ,KAAKuZ,OAAOzK,UAAQsI,gBAAiBrnB,IASzC+gB,EAAQrd,UAAU8jB,mBAAqB,SAAUxnB,GAC7C,IAEIsY,EAEAtN,EAHA7N,EADY6C,EAAEsQ,OACO3X,GAIrB8wB,GAAalP,QAAQ,EAAOpc,KAAMkR,GAAWpR,QAASgS,KAAM6Y,WAAY9oB,GAC5EiQ,KAAKwK,QAAQpL,GAAWoa,GAExB,IAAIzR,EACA7a,EAASjF,QAAQ,gBAAkB,IAGnC8f,EAAarZ,EAFbqM,EAAOiF,KAAKzQ,OAAOC,YAAYqI,WAAW3K,EAASP,MAAM,gBAAgB,MAEjC,OACxCqT,KAAK/P,QAAQjH,MAAMywB,QAAW1e,EAAiB,YAAKgN,GAAcA,EAAW3d,OAAS,GAAK4V,KAAKhP,gBAC5F,UAAY,OAChBqX,GAAciC,QAAQ,EAAOpc,KAAM+Q,GAAUjR,QAASgS,KAAMjF,KAAMA,EAAM8d,WAAY9oB,GACpFiQ,KAAKwK,QAAQvL,GAAUoJ,IAE3BrI,KAAKuZ,OAAOzK,UAAQwI,eAAgBvnB,IAWxC+gB,EAAQrd,UAAUimB,4BAA8B,SAAUf,EAAW5d,GAOjE,IAAK,IALD4e,EACAte,EACAjT,EAEAwxB,EADc7e,EAAqB,eACXpO,MAAM,KACzBuL,EAAK,EAAG2hB,EAAKhrB,OAAOD,KAAKgrB,GAAY1hB,EAAK2hB,EAAGzvB,OAAQ8N,IAEtD0hB,EADJve,EAAIwe,EAAG3hB,MACcygB,IACjBgB,EAAazxB,SAASmT,EAAG,IACzBjT,EAAOuwB,GAGf,OAASgB,WAAYA,EAAYG,kBAAmB1xB,EAAMwxB,UAAWA,IAYzE9I,EAAQrd,UAAUsmB,iCAAmC,SAAUC,EAAkBjf,EAAMkf,GASnF,IAAK,IALD7xB,EAEA8xB,EACAC,EAFAta,EAAI,EAGJua,EAAiBpa,KAAKzQ,OAAOC,YAAY,GAAmB,eAAE7C,MAAM,KAAKvC,OACpEiwB,EAAI,EAAGA,EAAID,EAAgBC,IAChCF,EAAc,IAANE,EAAUL,EAA4B,UAAEK,GAAKF,EAAQ,IAAMH,EAA4B,UAAEK,GAErGxa,EAAIua,EAAiB,EAAIA,EAAiBva,EAC1C,IAAK,IAAI3H,EAAK,EAAG2hB,EAAKhrB,OAAe,OAAEmR,KAAKzQ,OAAOC,aAAc0I,EAAK2hB,EAAGzvB,OAAQ8N,IAAM,EACnFgiB,EAAaL,EAAG3hB,IACgC,eAAEvL,MAAM,KACrC,KAAOqtB,EAA4B,UAAE,KACpD5xB,EAAa,IAANyX,EAAUtT,oBAAkB4tB,GAASA,EAAQH,EAA4B,UAAEna,GAC9Eoa,EAAcE,EAAQA,EAAQ,IAAMH,EAA4B,UAAEna,MACzDqa,EAA2B,iBACpCla,KAAKoD,aAAajU,MAAOjB,KAAMgsB,EAA2B,eAAG7rB,KAAM6rB,IAEnED,GAAc,IADdpa,GAES9E,EAAiB,aAEtBof,EADA/xB,EAAOA,EAAO,IAAM4xB,EAA4B,UAAEna,KAMlE,OAAOoa,GAYXnJ,EAAQrd,UAAU6mB,uCAAyC,SAAUN,EAAkBjf,EAAM5Q,GAEzF,IAAIowB,EACAC,KAcJ,OAbQR,EAA6B,WAAI,IAC/Bha,KAAKoD,aAAajZ,GAAS,KAAc,aAC/CowB,EAAkBva,KAAKoD,aAAajZ,GAAS,KAAU,QAC5B,WAAI,EAC/BqwB,EAAaD,EAAgBva,KAAKoD,aAAajZ,GAAS,KAAa,aAC9DowB,GAEPva,KAAKoD,aAAa8E,OAAO/d,EAAG6V,KAAKoD,aAAahZ,SAEzC4vB,EAA6B,aAAOha,KAAKoD,aAAahZ,OAAS,GACjE4vB,EAA6B,aAAMjf,EAAiB,aACvDyf,EAAazf,EAAgB,YAAMA,IAEhCyf,GASX1J,EAAQrd,UAAUgkB,kBAAoB,SAAU1nB,GAC5C,IAGI+S,EACA2X,EACAC,EAGA3jB,EAEAgE,EAGA4e,EAGAK,EAhBA1R,EAAQtI,KACR0Y,EAAY3oB,EAAEsQ,OACdnT,EAAWwrB,EAAUhwB,GAIrBuxB,GAAc,EAGdO,KAGAG,EAAW3a,KAAK/P,QAAQvH,GAAK,YAAcsX,KAAKiE,WAAa,UAG7D2W,EAAa5a,KAAK/P,QAAQvH,GAAK,wBAEnC,GAAIwE,EAASjF,QAAQ,gBAAkB,GAAK+X,KAAKhP,kBAAoBgP,KAAK6a,eAAgB,CAClF9qB,EAAEuN,YACFvN,EAAE+oB,iBAEN/hB,EAAQc,WAAW3K,EAASP,MAAM,gBAAgB,IAClDoO,EAAOiF,KAAKzQ,OAAOC,YAAYuH,GAC/B,IAAI4hB,EAAYD,EAAUK,YAQ1B,GAPI/Y,KAAK4D,mBACLoW,EAAmBha,KAAK0Z,4BAA4Bf,EAAW5d,GAC/D4e,EAAaK,EAA6B,WACrCha,KAAKwJ,gBAA8C,IAA7BmP,EAAUlsB,OAAO,SACxCwtB,EAAcja,KAAK+Z,iCAAiCC,EAAkBjf,EAAMkf,KAGzD,IAAvBja,KAAK1R,OAAOlE,SAAiB2Q,EAAiB,YAAKrM,EAAaqM,GAAc,QAC9ErM,EAAaqM,GAAc,OAAE3Q,OAAS,EAAG,CACzC,GAAI4V,KAAKoD,aAAahZ,OAAS,EAAG,CAC9B2Q,EAAOkf,EAAcja,KAAKoD,aAAapD,KAAKoD,aAAahZ,OAAS,GAAS,KAAI2Q,EAC/E,IAAK,IAAI5Q,EAAI,EAAGA,EAAI6V,KAAKoD,aAAahZ,OAAQD,IAAK,CAC/C,IAAKoC,oBAAkBotB,GAAa,CAChC,IAAImB,EAAc9a,KAAKoD,aAAahZ,OAEpC,GADAowB,EAAexa,KAAKsa,uCAAuCN,EAAkBjf,EAAM5Q,GAC/E2wB,IAAgB9a,KAAKoD,aAAahZ,OAAQ,CAC1CD,GAAK,EACL,OAGR,GAAI4Q,EAAqB,iBAAMiF,KAAKoD,aAAajZ,GAAS,OAAM8vB,GAAe1tB,oBAAkBotB,GAAa,CAC/E,IAAvB5e,EAAiB,YAAWA,EAAa,OAAEA,EAAgB,qBAAcjM,OACzEiM,EAAgB,WAAMA,EAAiB,UAClCA,EAAgB,UAIjByf,EAAazf,EAAgB,YAAMA,GAHnCyf,EAAezf,EAAa,SAOhCA,EAAgB,WAAI,EACpBA,EAAa,OAAa,WAAI,EAC9BA,EAAOA,EAAa,OACpByf,EAAazf,EAAgB,YAAMA,IAEvCiF,KAAKoD,aAAa8E,OAAO/d,EAAG,GAC5BA,GAAK,EACL,MAEKA,IAAM6V,KAAKoD,aAAahZ,OAAS,GAAKmC,oBAAkBotB,KAC7D5e,EAAgB,WAAI,EACpByf,EAAazf,EAAgB,YAAMA,UAK3CA,EAAgB,WAAI,EACpByf,EAAazf,EAAgB,YAAMA,GAEvC0f,GACInQ,QAAQ,EAAOpc,KAAMyQ,GAAY3Q,QAASgS,KAC1C/P,QAASyoB,EAAWxV,WAAYlD,KAAK4D,kBACJ,IAA7B5D,KAAKoD,aAAahZ,SAAiBmC,oBAAkBotB,GACrD3Z,KAAKoD,aAAapD,KAAKoD,aAAahZ,OAAS,GAAS,KAAc,WAAI2Q,EAAiB,WAC7FoI,UAAWnD,KAAK4D,kBAAiD,IAA7B5D,KAAKoD,aAAahZ,SAAiBmC,oBAAkBotB,GACrF3Z,KAAKoD,aAAapD,KAAKoD,aAAahZ,OAAS,GAAS,KAAQ,KAAI2Q,EAAW,KACjFoE,WAAwB,IAAZpP,EAAEgrB,MAA4BhT,WAAY,KAAMhN,KAAMyf,GAEtExa,KAAKwK,QAAQ7L,GAAY8b,EAAY,SAAUhQ,GAG3C,GAFAnC,EAAM9E,aAAezI,EAAgB,WAAKxO,oBAAkBotB,GAAc5e,EAAiB,YACrFxO,oBAAkBotB,IAAerR,EAAM1E,kBAAoB7I,EAAgB,UAAK4e,EAAa,MAC9FlP,EAAaH,OAAQ,CACtB,GAAI/hB,SAASC,eAAemyB,GAAW,CACnC,IAAIK,EAAiBzyB,SAASC,eAAemyB,GAC7CK,EAAezpB,WAAWC,YAAYwpB,GAsB1C,GApBAlY,EAAYQ,YAAWgF,EAAMzX,SAAUiS,GAAW,GAC9CwF,EAAM/E,eAAeyP,UAAYzmB,oBAAkB+b,EAAM1M,uBACpDrP,oBAAkBiuB,KACnBlS,EAAM1M,oBAAoBpE,YAAYuhB,YAAc,GACpDzQ,EAAM1M,oBAAoBpE,YAAc,KACxC8Q,EAAM1M,oBAAoBqf,eAAiB,EAC3C3S,EAAM1M,oBAAoBsf,gBAAkB,EACxC5S,EAAM1E,mBAAqBrX,oBAAkBotB,GAC7CrR,EAAM6S,oBACFjtB,KAAMoa,EAAMlF,aAAakF,EAAMlF,aAAahZ,OAAS,GAAS,KAAkB,eAChFiE,KAAMia,EAAMlF,aAAakF,EAAMlF,aAAahZ,OAAS,GAAS,MAIlEke,EAAM6S,oBAAuBjtB,KAAM6M,EAAqB,eAAG1M,KAAM0M,GAErEuN,EAAM1M,oBAAoBqX,gBAE9BnQ,EAAavW,oBAAkB+b,EAAMxF,WAA+BA,EAAlBwF,EAAMxF,WAExDva,SAASC,eAAeoyB,GAAa,CACrC,IAAIQ,EAAiB7yB,SAASC,eAAeoyB,GAC7CQ,EAAe7pB,WAAWC,YAAY4pB,GAErC7uB,oBAAkBke,EAAa1C,aAAgB0C,EAAaH,QAI7DhC,EAAM/Y,OAAOkU,qBAAqB+W,EAAc1X,GAChDwF,EAAM/Y,OAAOmU,qBAJb4E,EAAM/Y,OAAOuY,gBAAgB2C,EAAa1C,eAQtD2S,GAAapQ,QAAQ,EAAOpc,KAAM0Q,GAAU5Q,QAASgS,KAAMxQ,YAAawQ,KAAKzQ,OAAOC,aACpFwQ,KAAKwK,QAAQ5L,GAAU8b,IAEdT,GAAe1tB,oBAAkBotB,IAClC3Z,KAAKoD,aAAajU,MAAOjB,KAAM6M,EAAqB,eAAG1M,KAAM0M,KAK7EiF,KAAKsZ,WAAY,EACjBtZ,KAAKuZ,OAAOzK,UAAQ0I,cAAeznB,IAUvC+gB,EAAQrd,UAAUikB,oBAAsB,SAAU3nB,GAC1CiQ,KAAKqb,sBACLrb,KAAKqb,qBAAqBC,gBAE1Btb,KAAKpE,qBACLoE,KAAKpE,oBAAoB2f,2BAE7B5jB,EAAiBpP,SAASkT,uBAAuB,oBAAqB,mBAAoBuE,MACtFA,KAAKwb,yBACLxgB,EAAYgF,KAAKwb,uBAAuBC,0BACxCzb,KAAKwb,uBAAuBE,YAAc,KAUlD5K,EAAQrd,UAAUkoB,WAAa,SAAUC,EAAYC,GAC7CtvB,oBAAkBsvB,KAClBA,GAAa,GAGjB,IAAK,IADD7G,EAAiB,GACZ7qB,EAAI,EAAGA,EAAIyxB,EAAWxxB,OAAQD,IAC/BA,IAAMyxB,EAAWxxB,OAAS,EAC1B4qB,GAAkB4G,EAAWzxB,GAAK,IAGlC6qB,GAAkB4G,EAAWzxB,GAGjC6V,KAAK8b,wBAA0B9b,KAAK1I,kBAAkBykB,QACtD/b,KAAK8b,uBAAuBE,kBAAkBhH,EAAgB6G,IAStE/K,EAAQrd,UAAUwoB,gBAAkB,WAChC,IAAIC,KA2CJ,OA1CIlc,KAAKmc,gBAAgBnJ,SACrBkJ,EAAQ/sB,MACJitB,OAAQ,iBACRvJ,MAAO7S,QAGXA,KAAKqc,kBAAkBN,QACvBG,EAAQ/sB,MACJitB,OAAQ,mBACRvJ,MAAO7S,QAGXA,KAAK1I,kBAAkBykB,QACvBG,EAAQ/sB,MACJitB,OAAQ,mBACRvJ,MAAO7S,QAGXA,KAAKuD,eAAeyP,SACpBkJ,EAAQ/sB,MACJitB,OAAQ,gBACRvJ,MAAO7S,QAGXA,KAAK4V,YACLsG,EAAQ/sB,MACJitB,OAAQ,QACRvJ,MAAO7S,KAAMgN,MAGjBhN,KAAKgW,kBACLkG,EAAQ/sB,MACJitB,OAAQ,cACRvJ,MAAO7S,KAAMuO,MAGjBvO,KAAK8V,gBACLoG,EAAQ/sB,MACJitB,OAAQ,YACRvJ,MAAO7S,KAAMgQ,MAGdkM,GAWXpL,EAAQrd,UAAU6oB,kBAAoB,SAAUC,EAASC,GACrD,IAAKxc,KAAKiY,YAAa,CAEnB,IAAK,IADD3G,GAAS,EACJpZ,EAAK,EAAG2hB,EAAKhrB,OAAOD,KAAK2tB,GAAUrkB,EAAK2hB,EAAGzvB,OAAQ8N,IAAM,CAE9D,OADW2hB,EAAG3hB,IAEV,IAAK,aACD8H,KAAK4R,eACL,MACJ,IAAK,SACL,IAAK,QACL,IAAK,aACL,IAAK,SACL,IAAK,gBACL,IAAK,kBACL,IAAK,mBACL,IAAK,iBACL,IAAK,aACDN,GAAS,GAIjBA,IACAtR,KAAKmR,YACLnR,KAAKuR,oBAUjBT,EAAQrd,UAAU6a,cAAgB,WAC9B,MAAO,WAKXwC,EAAQrd,UAAUmZ,QAAU,WACxB5M,KAAKkR,eACL3T,GAAc,sBACdyC,KAAKoD,gBACLpD,KAAKlJ,kBACLkJ,KAAKvI,YACLuI,KAAKyc,YACL3b,EAAOrN,UAAUmZ,QAAQlZ,KAAKsM,OAElC8Q,EAAQrd,UAAUgpB,UAAY,WAE1B,GADAlf,GAAcyC,KAAK/P,QAAQvH,GAAK,sBAC5BsX,KAAKgL,UAAW,CAChB,KAAOhL,KAAKgL,UAAU5T,WAAWhN,OAAS,GACtC4V,KAAKgL,UAAUxZ,YAAYwO,KAAKgL,UAAUqI,aAEzCrT,KAAKgL,UAAUsI,iBAAmBtT,KAAKgL,UAAUzZ,YAClDwG,SAAOiI,KAAKgL,aAUxB8F,EAAQrd,UAAUipB,eAAiB,WAC/B,MAAO,IAEXvc,IACIa,YAAS,IACV8P,EAAQrd,UAAW,kBAAc,GACpC0M,IACIa,YAAS,IACV8P,EAAQrd,UAAW,wBAAoB,GAC1C0M,IACIa,YAAS,IACV8P,EAAQrd,UAAW,sBAAkB,GACxC0M,IACIa,WAAS,OACV8P,EAAQrd,UAAW,aAAS,GAC/B0M,IACIa,WAAS,OACV8P,EAAQrd,UAAW,cAAU,GAChC0M,IACImB,aAAYT,KACbiQ,EAAQrd,UAAW,cAAU,GAChC0M,IACImB,aAAYJ,KACb4P,EAAQrd,UAAW,cAAU,GAChC0M,IACIa,WAAS,OACV8P,EAAQrd,UAAW,kBAAc,GACpC0M,IACIa,WAAS,aACV8P,EAAQrd,UAAW,aAAS,GAC/B0M,IACImB,aAAYC,KACbuP,EAAQrd,UAAW,qBAAiB,GACvC0M,IACIa,WAAS,eACV8P,EAAQrd,UAAW,kBAAc,GACpC0M,IACIa,WAAS,OACV8P,EAAQrd,UAAW,kBAAc,GACpC0M,IACIa,WAAS,OACV8P,EAAQrd,UAAW,aAAS,GAC/B0M,IACIa,WAAS,OACV8P,EAAQrd,UAAW,uBAAmB,GACzC0M,IACIa,WAAS,KACV8P,EAAQrd,UAAW,2BAAuB,GAC7C0M,IACIa,WAAS,KACV8P,EAAQrd,UAAW,2BAAuB,GAC7C0M,IACIa,WAAS,OACV8P,EAAQrd,UAAW,sBAAkB,GACxC0M,IACIa,gBACD8P,EAAQrd,UAAW,eAAW,GACjC0M,IACIa,WAAS,uBACV8P,EAAQrd,UAAW,uBAAmB,GACzC0M,IACIa,YAAS,IACV8P,EAAQrd,UAAW,uBAAmB,GACzC0M,IACIa,YAAS,IACV8P,EAAQrd,UAAW,wBAAoB,GAC1C0M,IACIa,WAAS,QACV8P,EAAQrd,UAAW,2BAAuB,GAC7C0M,IACIa,YAAS,IACV8P,EAAQrd,UAAW,qBAAiB,GACvC0M,IACImB,aAAYI,KACboP,EAAQrd,UAAW,wBAAoB,GAC1C0M,IACImB,aAAYK,KACbmP,EAAQrd,UAAW,wBAAoB,GAC1C0M,IACIyB,gBAAeI,KAChB8O,EAAQrd,UAAW,cAAU,GAChC0M,IACImB,aAAYS,KACb+O,EAAQrd,UAAW,yBAAqB,GAC3C0M,IACImB,aAAYQ,KACbgP,EAAQrd,UAAW,yBAAqB,GAC3C0M,IACImB,aAAYO,KACbiP,EAAQrd,UAAW,uBAAmB,GACzC0M,IACImB,aAAYG,KACbqP,EAAQrd,UAAW,sBAAkB,GACxC0M,IACIa,YAAS,IACV8P,EAAQrd,UAAW,4BAAwB,GAC9C0M,IACIa,WAAS,OACV8P,EAAQrd,UAAW,mBAAe,GACrC0M,IACIa,WAAS,IACV8P,EAAQrd,UAAW,gBAAY,GAClC0M,IACIa,WAAS,OACV8P,EAAQrd,UAAW,cAAU,GAChC0M,IACIwc,WACD7L,EAAQrd,UAAW,YAAQ,GAC9B0M,IACIwc,WACD7L,EAAQrd,UAAW,mBAAe,GACrC0M,IACIwc,WACD7L,EAAQrd,UAAW,cAAU,GAChC0M,IACIwc,WACD7L,EAAQrd,UAAW,qBAAiB,GACvC0M,IACIwc,WACD7L,EAAQrd,UAAW,kBAAc,GACpC0M,IACIwc,WACD7L,EAAQrd,UAAW,gBAAY,GAClC0M,IACIwc,WACD7L,EAAQrd,UAAW,oBAAgB,GACtC0M,IACIwc,WACD7L,EAAQrd,UAAW,qBAAiB,GACvC0M,IACIwc,WACD7L,EAAQrd,UAAW,wBAAoB,GAC1C0M,IACIwc,WACD7L,EAAQrd,UAAW,iBAAa,GACnC0M,IACIwc,WACD7L,EAAQrd,UAAW,gBAAY,GAClC0M,IACIwc,WACD7L,EAAQrd,UAAW,aAAS,GAC/B0M,IACIwc,WACD7L,EAAQrd,UAAW,mBAAe,GACrC0M,IACIwc,WACD7L,EAAQrd,UAAW,kBAAc,GACpC0M,IACIwc,WACD7L,EAAQrd,UAAW,iBAAa,GACnC0M,IACIwc,WACD7L,EAAQrd,UAAW,cAAU,GAChC0M,IACIwc,WACD7L,EAAQrd,UAAW,2BAAuB,GAC7C0M,IACIwc,WACD7L,EAAQrd,UAAW,uBAAmB,GACzCqd,EAAU3Q,IACNyc,yBACD9L,IAEL+L,aAKErL,GAA4B,WAG5B,OAFA,gBCl0CAsL,GAA+B,WAC/B,SAASA,EAAc9uB,GACnBgS,KAAK+c,KAAO,EAEZ/c,KAAKgd,iBAAmB,IAAI/a,GAAK,EAAG,EAAG,EAAG,GAC1CjC,KAAKid,YAAc,EAEnBjd,KAAKkb,gBAAkB,EAEvBlb,KAAKib,eAAiB,EACtBjb,KAAKkd,aAAe,EACpBld,KAAKmd,6BACLnd,KAAKod,eAAiB,IAAInb,GAAK,EAAG,EAAG,EAAG,GACxCjC,KAAKhS,QAAUA,EACfgS,KAAK+X,mBA0/BT,OAn/BA+E,EAAcrpB,UAAUwf,aAAe,WACnC,IAAI3K,EAAQtI,KACZA,KAAK+c,KAAO,EACZ/c,KAAKqd,8BACLrd,KAAKnE,qBACLmE,KAAKsd,eACLtd,KAAKud,cACLvd,KAAKwd,cAAgB,EACrBxd,KAAKib,eAAiB,EACtBjb,KAAKkb,gBAAkB,EACvBlb,KAAKyd,YAAczd,KAAKhS,QAAQhD,SAAS0yB,aACzC1d,KAAKhS,QAAQgd,UAAUpiB,YAAYoX,KAAKyd,aACxC,IAAIpV,GACAiC,QAAQ,EAAOpc,KAAMoR,GAAiBtR,QAASgS,KAAKhS,QAAS2vB,gBAAiB3d,KAAKhS,QAAQuV,eAAeta,SAC1GA,SAAU+W,KAAKhS,QAAQuV,eAAeta,UAE1C+W,KAAKhS,QAAQwc,QAAQlL,GAAiB+I,EAAW,SAAUoC,GAClDA,EAAaH,QAAUG,EAAakT,kBAAoBrV,EAAMta,QAAQuV,eAAeta,WACtFqf,EAAMta,QAAQuV,eAAeta,SAAWwhB,EAAakT,iBAEzDrV,EAAMsV,wBACFtV,EAAMzM,kBAAkBzR,OAAS,GACjCke,EAAMuV,gBAKlBf,EAAcrpB,UAAUmqB,sBAAwB,WAC5C,IAAItV,EAAQtI,KACRhS,EAAUgS,KAAKhS,QACf8vB,EAAS9vB,EAAQuV,eAMrB,GALAvD,KAAK+d,4BAA4B/vB,EAAQ+U,iBAAiBC,WAAW,KAChEhD,KAAKhS,QAAQoe,QAAQhiB,OAAS,IAAMmC,oBAAkByB,EAAQme,kBAC1B,IAAlCnM,KAAKnE,kBAAkBzR,QAC1B4V,KAAKge,uBAAuBhwB,EAAQ+U,iBAAiBC,WAAW,IAEhEhD,KAAKnE,kBAAkBzR,OAAS,EAAG,CAEnC4V,KAAKnE,kBAAkBqJ,KAAK,SAAU+Y,EAAWC,GAAY,OAAQD,EAAU1I,WAAa2I,EAAS3I,WAAc,EAC9G0I,EAAU1I,WAAa2I,EAAS3I,YAAe,EAAI,IAExDvV,KAAKnE,kBAAkBqJ,KAAK,SAAU+Y,EAAWC,GAAY,OAAQD,EAAU/a,WAAagb,EAAShb,WAAc,EAC9G+a,EAAU/a,WAAagb,EAAShb,YAAe,EAAI,IAExDlD,KAAKnE,kBAAkBqJ,KAAK,SAAU+Y,EAAWC,GAAY,OAAQD,EAAUE,UAAYD,EAASC,UAAa,EAC5GF,EAAUE,UAAYD,EAASC,WAAc,EAAI,IACtD,IAEIl1B,EAAW60B,EAAO70B,SAClBm1B,EAAcN,EAAO9J,MAAM5rB,KAC3Bi2B,EAAiBP,EAAOQ,WACxBC,EAAaT,EAAO7uB,KACpB+K,EAAS,EACTC,EAAS,EACTukB,EAAQ,EACRC,EAAQ,EACR1kB,EAAc+jB,EAAO/jB,YACrBD,EAAagkB,EAAOhkB,WACpB4kB,KACAnT,KACAoT,EAAwC,SAAvBb,EAAO7N,YAAyC,QAAbhnB,GAAmC,WAAbA,GACzD,SAAbA,GAAuB+E,EAAQ6gB,cAAc3kB,OAAS8D,EAAQ6gB,cAAchkB,OAC9E,aAAe,WAAcizB,EAAO7N,YAItC2O,EAAed,EAAO5zB,MAAME,OAAS,EAAM0zB,EAAO5zB,MAAMjC,QAAQ,MAAQ,EAAM+F,EAAQ6gB,cAAc3kB,MAAQ,IAC1G2N,WAAWimB,EAAO5zB,OAAS2N,WAAWimB,EAAO5zB,OAAS,KACxD20B,EAAgBf,EAAOjzB,OAAOT,OAAS,EAAM0zB,EAAOjzB,OAAO5C,QAAQ,MAAQ,EAC1E+F,EAAQ6gB,cAAchkB,OAAS,IAAOgN,WAAWimB,EAAOjzB,QAAUgN,WAAWimB,EAAOjzB,QAAU,KACnGwzB,EAAe/0B,WAAa0E,EAAQkc,WAAW5gB,YAAc+0B,EAAe/0B,WAC5E+0B,EAAej1B,WAAai1B,EAAej1B,YAAc4E,EAAQkc,WAAWrM,gBAC5EwgB,EAAel1B,KAAO6E,EAAQkc,WAAW7L,gBAAkBggB,EAAel1B,KAC1E,IAAI21B,EAAkB32B,EAAYi2B,EAAaC,GAC3CU,EAAW,EACXC,EAAW,EACXC,EAAenB,EAAOmB,aACtBC,EAAgBpB,EAAOlV,UAI3B,GAHAsW,EAAc/1B,KAAO+1B,EAAc/1B,MAAQ6E,EAAQkc,WAAW7L,eAC9D6gB,EAAc51B,WAAa41B,EAAc51B,YAAc0E,EAAQkc,WAAW5gB,WAC1E41B,EAAc91B,WAAa81B,EAAc91B,YAAc4E,EAAQkc,WAAW9gB,WACvD,YAAfm1B,EAA0B,CAC1BK,EAAeryB,oBAAkBqyB,GAAgB5wB,EAAQ6C,SAAS3G,MAAQ00B,EAC1EC,EAAgBtyB,oBAAkBsyB,GAAiB7wB,EAAQ6C,SAAShG,OAASg0B,EAE7E,IAAK,IADDzvB,EAAI,EACCjF,EAAI,EAAGA,EAAI6V,KAAKnE,kBAAkBzR,OAAQD,IAAK,CAEpD,IAAIg1B,EAAanf,KAAKnE,kBAAkB1R,GACpCoC,oBAAkByT,KAAKud,WAAWvd,KAAK+c,SACvC/c,KAAKud,WAAWvd,KAAK+c,OAAUqC,KAAOpf,KAAK+c,KAAO,EAAInb,gBAE1D,IAAIyd,EAAiBl3B,EAAYg3B,EAAuB,WAAGD,GAE3D,GADAlf,KAAKkd,aAAepsB,KAAKgW,IAAI9G,KAAKkd,aAAcmC,EAAen1B,OACrD,IAANC,EACA40B,EAAW/kB,EA/BL,GA+B8BF,EAAa,EACjDklB,EAAW/kB,EA/BN,GA+B4B6kB,EAAgBj0B,QAAUkP,EAAcslB,EAAex0B,OAASkP,EAAc,EACxGslB,EAAex0B,OAAS,OAE9B,CACD,IAAIy0B,EAAWD,EAAex0B,OAASkP,EAAeslB,EAAex0B,OAASkP,EAC9E,GAAsB,eAAlB4kB,EAAgC,CAChC,IAAIY,EAAiBhU,EAAanc,EAAI,GAAGzE,EAAI4gB,EAAanc,EAAI,GAAGlF,MAtD/D,GAsDsF4P,EACxF,GAAKylB,EAAgBN,EAAeI,EAAen1B,MAAS00B,EAAa,CACrE,IAAIY,GAAiBjU,EAAanc,EAAI,GAAGxE,EAAK8zB,EAActvB,EAAI,GAAGxE,EAAKmP,EAAc,EAClFwR,EAAanc,EAAI,GAAGxE,EAAK8zB,EAActvB,EAAI,GAAGxE,EAAKmP,EAAc,GAxCxE,GAyCQylB,EAAgBF,EAAWT,GAC5B7e,KAAKyf,iBACLrwB,EAAI,EACJsvB,KACAnT,KACAvR,EAAS+kB,EACT9kB,EAAS+kB,IAGThlB,EAAU0kB,EAAc,GAAI,EAC5BzkB,EAAUulB,EAAiBF,EAAU,QAIzCtlB,EAAUulB,EAAiBzlB,EAAa,EACxCG,EAAUykB,EAActvB,EAAI,GAAIxE,MAGnC,CACD,IAAI80B,EAAgBnU,EAAanc,EAAI,GAAGxE,EAAI8zB,EAActvB,EAAI,GAAGxE,EAAKmP,EAAc,EAChFwR,EAAanc,EAAI,GAAGxE,EAAI8zB,EAActvB,EAAI,GAAGxE,EAAKmP,EAAc,EACpE,GAAK2lB,EA9DJ,GA8DiCJ,EAAWT,EAAc,CACvD,IAAIc,EAAiBpU,EAAanc,EAAI,GAAGzE,EAAIqV,KAAKkd,aAhFpD,GAiFOyC,EAAgBV,EAAeI,EAAen1B,MAAS00B,GACxD5kB,EAAS+kB,EACT9kB,EAAS+kB,EACTzT,KACAmT,KACA1e,KAAKyf,iBACLrwB,EAAI,IAGJ4K,EAAS2lB,EAAiB7lB,EAAa,EACvCG,EAAUykB,EAAc,GAAI,QAIhC1kB,EAAS0kB,EAActvB,EAAI,GAAGzE,EAC9BsP,EAASylB,EA/EZ,GA+E0C3lB,EAAc,GAIjEykB,EAAQxkB,EAAUF,EAAa,EAAKmlB,EACpCR,EAAQxkB,EAAUolB,EAAex0B,OAAS,EAC1C6zB,EAAcvvB,MAAOxE,EAAGqP,EAAQpP,EAAGqP,IACnCsR,EAAapc,MAAOxE,EAAG6zB,EAAO5zB,EAAG6zB,EAAOv0B,MAAOm1B,EAAen1B,MAAOW,OAASw0B,EAAex0B,OAAS,IAEtGmV,KAAKud,WAAWvd,KAAK+c,MAAkB,WAAE5tB,MACrCywB,YAAaT,EAAuB,WAAGlvB,QAASkvB,EAA4B,gBAC5EU,OAASl1B,EAAGqP,EAAQpP,EAAGqP,GACvB6lB,MAAQn1B,EAAG6zB,EAAO5zB,EAAG6zB,GACrBsB,KAAMZ,EAAuB,WAC7Ba,KAAMb,EAAuB,WAC7Bld,MACItX,EAAG+zB,EAActvB,GAAGzE,EAAKmP,EAAa,EACtClP,EAAI8zB,EAActvB,GAAGxE,EAAKmP,EAAc,EAAO0kB,EAAQY,EAAex0B,OACjE6zB,EAActvB,GAAGxE,EAAKmP,EAAc,EAAO0kB,EAAQY,EAAex0B,OACvEX,MAAO4G,KAAKC,IAAK2tB,EAActvB,GAAGzE,EAAKmP,EAAa,GAAO0kB,EAAQa,EAAen1B,QAClFW,OAAUkP,EAAcslB,EAAex0B,OAAUkP,EAAcslB,EAAex0B,UAGtFuE,IAGJ,IAAI6L,EAAa+E,KAAKud,WAAW,GAAe,WAEhDtiB,EAAW+J,QAAQ,SAAUib,EAAWlpB,GACpC,IAAImpB,EAAa,IAAIje,GAAKge,EAAgB,KAAK,EAAGA,EAAgB,KAAK,EAAGA,EAAgB,KAAS,MAAGA,EAAgB,KAAU,QAClH,IAAVlpB,IACAgoB,EAAWmB,EAAWv1B,EACtBq0B,EAAWkB,EAAWt1B,GAE1B0d,EAAM2S,eAAiBnqB,KAAKgW,IAAIwB,EAAM2S,eAAgBnqB,KAAKC,IAAIguB,GAAYmB,EAAWv1B,EAAIu1B,EAAWh2B,SACrGoe,EAAM4S,gBAAkBpqB,KAAKgW,IAAIwB,EAAM4S,gBAAiBpqB,KAAKC,IAAIiuB,GAAYkB,EAAWt1B,EAAIs1B,EAAWr1B,YAE3G+zB,EAAgB5e,KAAKib,eAAiB2D,EAAe5e,KAAKib,eAAiB2D,EAC3EC,EAAiB7e,KAAKkb,gBAAkB2D,EAAgB7e,KAAKkb,gBAAkB2D,EAC/E7e,KAAKod,gBACDzyB,EAAGsQ,EAAW,GAAS,KAAK,EAAGrQ,EAAGqQ,EAAW,GAAS,KAAK,EAC3D/Q,MAAO00B,EAAa/zB,OAAQg0B,OAG/B,CACD,IAAIsB,EAAengB,KAAKnE,kBAAkBzR,OACtCg2B,EAA+B,eAAlBzB,EAAmCpyB,oBAAkBqyB,GAAiB5wB,EAAQ6C,SAAS3G,MAAQi2B,EAC3GvB,EAAcuB,EAAiB5zB,oBAAkBqyB,GAhJxC,GAgJsEA,EAChFyB,EAAgC,eAAlB1B,EAAmCpyB,oBAAkBsyB,GAjJzD,GAiJwFA,EACjGtyB,oBAAkBsyB,GAAkB7wB,EAAQ6C,SAAShG,OAASs1B,EAAiBtB,EAAesB,EACnGpB,EAAW,EACXC,EAAWF,EAAgBj0B,OAjIjB,GAyIL,IANDy1B,EAAYxC,EAAO3T,cACnBoW,EAAa,EACbC,EAAa,EACbC,EAAc3C,EAAO4C,iBACrBC,EAAgB,EAChBC,EAAe,EACnB,IAASz2B,EAAI,EAAGA,EAAI6V,KAAKnE,kBAAkBzR,OAAQD,IAAK,CACpD40B,EAA8B,eAAlBJ,EAAmCI,EAAWqB,EAAarB,EACvEC,EAA8B,eAAlBL,EAAkCK,EAAYA,EAAWqB,EACrE,IAAIQ,EAAa7gB,KAAKnE,kBAAkB1R,GAAe,WACnD22B,EAAe,IAAIl3B,GAAK,EAAG,GACX,SAAhB62B,EACAK,EAAe34B,EAAY04B,EAAY3B,GAElB,SAAhBuB,EAELK,EAAe34B,EADf04B,EAAa92B,EAA4B,eAAlB40B,EAAiCyB,EAAYC,EAAaQ,EAAY3B,GACtDA,GAGvC2B,EAAa,GAEjBF,EAAgB7vB,KAAKgW,IAAI6Z,EAAeG,EAAaj2B,QACrD+1B,EAAe9vB,KAAKgW,IAAI8Z,EAAcE,EAAa52B,OAC/C42B,EAAa52B,MAAQ,GAAK42B,EAAaj2B,OAAS,IAC1B,eAAlB8zB,GACAH,EAAQO,EAAYqB,EAAY,EAChC3B,EAAuB,UAAd6B,EAA0BtB,EAAWqB,EAAcS,EAAaj2B,OAAS,EA3B1E,GA4BHm0B,EA5BG,KA+BRR,EAAuB,UAAd8B,EAAyBvB,EAAY+B,EAAa52B,MAAQ,EA/B3D,GAgCD60B,EAAWqB,EAAYU,EAAa52B,MAAQ,EAhC3C,GAiCRu0B,EAAQO,EAAYqB,EAAa,EAAMS,EAAaj2B,OAAS,IAG3D,IAANV,IACAo2B,EAAgC,eAAlB5B,EAAkCI,EAA0B,UAAduB,EACxD9B,EAASsC,EAAa52B,MAAQ,EAAK60B,EACvCyB,EAAgC,eAAlB7B,EAAiD,UAAd2B,EAAyBtB,EACtEP,EAASqC,EAAaj2B,OAAS,EAAKm0B,GAExC70B,IAAMg2B,EAAe,IACrBvB,EAAiC,eAAlBD,EAAkC7tB,KAAKC,IAAKguB,EAAWqB,EAAaG,GAC9EH,EAAYQ,EA5CL,GA6CZ/B,EAAkC,eAAlBF,EAAmC0B,EAAcM,EAAgB,EA7CrE,GA8CR7vB,KAAKC,IAAKiuB,EAAWqB,EAAcG,IAE3CxgB,KAAKqd,2BAA2BluB,MAC5B9C,KAAM2T,KAAKnE,kBAAkB1R,GAAe,WAAGQ,EAAGo0B,EAAUn0B,EAAGo0B,EAC/D90B,MAAOk2B,EAAWv1B,OAAQw1B,EAAYpwB,QAAS+P,KAAKnE,kBAAkB1R,GAAoB,gBAC1F/B,KAAMy4B,EAAYrC,MAAOA,EAAOC,MAAOA,EACvCsC,UAAWD,EAAa52B,MAAO82B,WAAYF,EAAaj2B,OACxDwD,KAAM2R,KAAKnE,kBAAkB1R,GAAe,aAGpD6V,KAAKod,gBAAmBzyB,EAAG41B,EAAY31B,EAAG41B,EAAYt2B,MAAO00B,EAAa/zB,OAAQg0B,MAI9F/B,EAAcrpB,UAAUgsB,eAAiB,WACrCzf,KAAK+c,OACDxwB,oBAAkByT,KAAKud,WAAWvd,KAAK+c,SACvC/c,KAAKud,WAAWvd,KAAK+c,OAAUqC,KAAOpf,KAAK+c,KAAO,EAAInb,iBAI9Dkb,EAAcrpB,UAAUsqB,4BAA8B,SAAU1vB,GAE5D,IAAI0V,EAAQrV,EAAaL,GAAc,OACvC,GAAI0V,GAASA,EAAM3Z,OAAS,IACxB4V,KAAKihB,qBAAqBld,GACtB/D,KAAKhS,QAAQM,OAAOlE,OAAS,GAC7B,IAAK,IAAID,EAAI,EAAGA,EAAI4Z,EAAM3Z,OAAQD,IAC9B6V,KAAK+d,4BAA4Bha,EAAM5Z,KAMvD2yB,EAAcrpB,UAAUuqB,uBAAyB,SAAU3vB,GAEvD,IAAI0V,EACAmd,EACJ,IAAK30B,oBAAkByT,KAAKhS,QAAQoV,eACS,IAArCpD,KAAKhS,QAAQoV,aAAahZ,SAAiBmC,oBAAkByT,KAAKhS,QAAQiV,iBAAiBE,YACxF5W,oBAAkByT,KAAKhS,QAAQmtB,oBAGlC,IAAK,IADDnsB,EAAQN,EAAaL,GAAc,OAC9BgN,EAAI,EAAGA,EAAIrM,EAAM5E,OAAQiR,IAC9B,GAAIrM,EAAMqM,GAAS,OAAM2E,KAAKhS,QAAQiV,iBAAiBE,UAAW,CAC9DnU,EAAMqM,GAAc,WAAKrM,EAAMqM,GAAc,UAC7ChN,EAAOW,EAAMqM,GACb2E,KAAKhS,QAAQwV,aAAexD,KAAKhS,QAAQiV,iBAAiBC,WAC1Dge,EAAkBlhB,KAAKhS,QAAQoe,QAAQhiB,OAAS,EAAI4V,KAAKhS,QAAQoe,QAAQ/Q,EAAI2E,KAAKhS,QAAQoe,QAAQhiB,QAC9F4E,EAAMqM,GAAS,KAAE2E,KAAKhS,QAAQme,gBAClC,MAKhB,GAAInM,KAAKhS,QAAQgD,kBAAoBzE,oBAAkByT,KAAKhS,QAAQmtB,oBAAqB,CAErF,IAAIhrB,EAAe6P,KAAKhS,QAAQmtB,mBAEhC,GADA+F,EAAkB/wB,EAAmB,KAAW,QAAQ,KACpDA,EAAmB,KAAa,UAChC4T,EAAQrV,EAAayB,EAAmB,MAAW,WAElD,CAGD4T,EAAQrV,EADYyB,EAAmB,KAAU,QACL,aAIhD4T,EAAQrV,EAAaL,GAAc,OAEvC,IACI8yB,EACJ,GAAIpd,GAASA,EAAM3Z,OAAS,EAAG,CAC3B,IAAK,IAAID,EAAI,EAAGA,EAAI4Z,EAAM3Z,OAAQD,KAC1BoC,oBAAkBwX,EAAM5Z,GAAS,KAAE6V,KAAKhS,QAAQuV,eAAe6d,kBAC/Drd,EAAM5Z,GAAS,KAAE6V,KAAKhS,QAAQuV,eAAe6d,mBAC7CD,EAAapd,EAAM5Z,GAAS,KAAE6V,KAAKhS,QAAQuV,eAAe8d,WACtDtd,EAAM5Z,GAAS,KAAE6V,KAAKhS,QAAQuV,eAAe8d,WAAatd,EAAM5Z,GAAS,OAC/D6V,KAAKhS,QAAQuV,eAAe+d,uBACtCthB,KAAKuhB,iBAAiBvhB,KAAKnE,kBAAmBslB,IAE9CnhB,KAAKnE,kBAAkB1M,MACnBgyB,WAAYA,EACZK,WAAYxhB,KAAKhS,QAAQoe,QAAQhiB,OAAS,EAAKmC,oBAAkByT,KAAKhS,QAAQwV,cACtDxD,KAAKhS,QAAQoe,QAAQjiB,EAAI6V,KAAKhS,QAAQoe,QAAQhiB,QAAhE82B,EACFnd,EAAM5Z,GAAS,KAAE6V,KAAKhS,QAAQme,gBAClCsV,cACAC,SAAU3d,EAAM5Z,GAAW,UAM3C,GADA6V,KAAKnE,kBAAkBqJ,KAAKxO,GACxBsJ,KAAKhS,QAAQoe,QAAQhiB,OAAS,EAC9B,IAAK,IAAIgF,EAAI,EAAGA,EAAI4Q,KAAKnE,kBAAkBzR,OAAQgF,IAC/C4Q,KAAKnE,kBAAkBzM,GAAe,WAAK7C,oBAAkByT,KAAKhS,QAAQwV,cAClDxD,KAAKhS,QAAQoe,QAAQhd,EAAI4Q,KAAKhS,QAAQoe,QAAQhiB,QAAhE82B,IAMtBpE,EAAcrpB,UAAUwtB,qBAAuB,SAAU5yB,GAErD,IAAIszB,EACAt1B,EACA0H,EAEAghB,EACA8L,EACAxX,EAEApW,EACAiQ,EAGAhQ,EAEA0uB,EACAC,EACAC,EACAC,EACAC,EACA3uB,EACA4uB,EAGAC,EACAC,EACAC,EAlBAC,GAAkB,EAGlBl0B,EAAO6R,KAAKhS,QAAQI,iBACpBE,EAAS0R,KAAKhS,QAAQM,OAEtBrF,EAAW+W,KAAKhS,QAAQuV,eAAeta,SAQvCq5B,GAAiB,EACjBC,EAAc,EAIlBviB,KAAKwiB,iBAAmB,KACxB,IAAK,IAAIr4B,EAAI,EAAGA,EAAIkE,EAAKjE,OAAQD,IAAK,CAClCkC,EAAO,GACPgH,GAAe,EACf4uB,GAAU,EACVK,GAAiB,EACjBvN,EAAc1mB,EAAKlE,GAAS,KAC5B+Y,EAAa7U,EAAKlE,GAAe,WAEjC8I,GADAoW,EAA6C,IAA/BrJ,KAAKhS,QAAQM,OAAOlE,QAAgB8Y,IAAelD,KAAKhS,QAAQM,OAAOlE,QACzD+D,EAAK8E,aAAe3E,EAAO4U,GAAYjQ,aACnE,IAAK,IAAI7D,EAAI,EAAGA,EAAI6D,EAAa7I,OAAQgF,IAAK,CAC1C,IAAI4D,EAAWC,EAAa7D,GAuB5B,GAtBAwyB,EAAkB,KAClB7tB,EAAaO,OAAOygB,EAAY/U,KAAKhS,QAAQke,sBAC7ChZ,EAAa6hB,EAAY/U,KAAKhS,QAAQie,qBACtCjZ,EAASlL,MAASyE,oBAAkByG,EAASlL,OAAqCkL,EAASlL,MAArCkL,EAASlL,MAAM2I,YAChElE,oBAAkByG,EAASO,QAAUhH,oBAAkByG,EAASQ,KACjEO,GAAcf,EAASO,MAAQQ,GAAcf,EAASQ,IAAMR,EAASyvB,YACrEJ,GAAkB,EAClBJ,GAAU,EACVF,EAAc/uB,EAASO,KAAO,MAAQP,EAASQ,GAC/CqtB,EAAct0B,oBAAkByG,EAAS/I,OAA0B+I,EAASO,KAAO,MAAQP,EAASQ,GAAlDR,EAAS/I,MAC3DoC,EAAOE,oBAAkByG,EAASzH,OAASc,EAAO2G,EAASzH,MAC3Do2B,EAAY3hB,KAAK0iB,mBAAmBX,KAE9Bx1B,oBAAkByG,EAASlL,QAAUoL,IAAeF,EAASlL,OAASkL,EAASyvB,aACrFJ,GAAkB,EAClBhvB,GAAe,EACf0uB,EAAc/uB,EAASlL,MAAM2I,WAC7BowB,EAAct0B,oBAAkByG,EAAS/I,OAA0B+I,EAASlL,MAAM2I,WAAhCuC,EAAS/I,MAC3DoC,EAAOE,oBAAkByG,EAASzH,OAASc,EACY,mBAAnDwC,OAAO4E,UAAUhD,SAASiD,KAAKV,EAASzH,OAA8ByH,EAASzH,MAAM,GAAKyH,EAASzH,MACvGo2B,EAAY3hB,KAAK0iB,mBAAmBX,IAEpCM,GAAmB91B,oBAAkByG,EAASlL,QAAUkL,EAASa,YAAcb,EAASY,YAChD,gBAArCoM,KAAKhS,QAAQuV,eAAetU,KAAwB,CACvD,IAAI0zB,KAEJ,GADAL,GAAiB,EACsC,mBAAnDzzB,OAAO4E,UAAUhD,SAASiD,KAAKV,EAASzH,OACxC,IAAK,IAAIq3B,EAAI,EAAGA,EAAI5vB,EAASzH,MAAMnB,OAAQw4B,IAAK,CAC5C,IAEIC,GAAeC,WADDF,GADA,KAAO5vB,EAASzH,MAAMnB,OAAS,IACb,KACMqG,WAAYlF,MAAOyH,EAASzH,MAAMq3B,IAC5ED,EAAOxzB,KAAK0zB,OAGf,CACGA,GAAeC,UAAW,KAAMv3B,MAAOc,GAA3C,IACI02B,GAAeD,UAAW,OAAQv3B,MAAOc,GAC7Cs2B,EAAOxzB,KAAK0zB,GACZF,EAAOxzB,KAAK4zB,GAEhBlB,EAAkB,QAAb54B,GAAmC,WAAbA,EAAwB,OAAS,KAC5D64B,EAAkB,QAAb74B,GAAmC,WAAbA,EAAwB,KAAO,OAC1D,IAAI+5B,GACAt6B,GAAI,cAAgBwa,EAAa,eAAiBlD,KAAKwd,cAAehW,GAAI,KAAMD,GAAI,KAAMsa,GAAIA,EAAIC,GAAIA,GAE1GF,EAAkB5hB,KAAKhS,QAAQhD,SAASi4B,aAAa,iBAAkBD,EAAUL,GAAQvrB,WAAW,GAC7C,mBAAnDvI,OAAO4E,UAAUhD,SAASiD,KAAKV,EAASzH,SACxCq2B,EAAgBxqB,WAAW,GAAGF,aAAa,eAAgBlE,EAASY,WAAWnD,YAC/EmxB,EAAgBxqB,WAAW,GAAGF,aAAa,eAAgBlE,EAASa,WAAWpD,aAEnFuP,KAAKyd,YAAY70B,YAAYg5B,GAC7B5hB,KAAKwd,gBAETwE,IAAchiB,KAAKhS,QAAQuV,eAAe+d,uBACtCthB,KAAKuhB,iBAAiBvhB,KAAKnE,kBAAmBglB,GAC9Cc,GAAaA,EAAmB,SAAKU,IAAoBL,GACzDK,GAAkB,EAClBh2B,EAA4D,mBAAnDwC,OAAO4E,UAAUhD,SAASiD,KAAKV,EAASzH,QAAiCgB,oBAAkBq1B,IAC7Fr1B,oBAAkByG,EAASlL,OAASkY,KAAKkjB,oBAAoBlwB,EAAUuvB,GAAel2B,EAC7F2T,KAAKnE,kBAAkB1M,MACnB4yB,YAAaA,EAAaxM,WAAalM,GAAkB,EAALja,EAAQ+uB,UAAW9U,EAAaja,GAAK,EACzF+xB,WAAYN,EAAYW,WAAYn1B,EAAMo1B,cAAgBve,WAAamG,GAA2B,EAAdnG,EACpF0e,gBAAkBr1B,oBAAkBq1B,GAAqCr1B,oBAAkByG,EAASlL,OAC9FkY,KAAKmjB,qBAAuB,KADqBvB,EACf1zB,KAAMG,EAAKlE,GAAS,KAC5D+B,QAAS8T,KAAKhS,QAAQuV,eAAerX,QAASoP,YAAa0E,KAAKhS,QAAQuV,eAAelM,OAAO9L,MAC9FgQ,YAAayE,KAAKhS,QAAQuV,eAAelM,OAAOnN,QAGpD8V,KAAKnE,kBAAkBmE,KAAKnE,kBAAkBzR,OAAS,GAAe,WAAE+E,KAAKd,EAAKlE,IAClFo4B,KAEKF,IAAoBL,IACzBK,GAAkB,EAElBriB,KAAKnE,kBAAkB8lB,EAAiB,OAAe,WAAExyB,KAAKd,EAAKlE,KAElE83B,GAAYK,GAAmBjvB,GAC5B9G,oBAAkByG,EAASO,OAAShH,oBAAkByG,EAASQ,KAC5DjH,oBAAkByG,EAASY,aAC9BrH,oBAAkByG,EAASa,aAAetH,oBAAkByG,EAASlL,SACpEyE,oBAAkByG,EAASzH,SAC5B22B,EAA+D,mBAAnDrzB,OAAO4E,UAAUhD,SAASiD,KAAKV,EAASzH,OAC9CyH,EAASzH,MAAM,GAAKyH,EAASzH,MACnC42B,EAAe51B,oBAAkByG,EAAS/I,OAA0B,SAAjB+I,EAAS/I,MACxDsC,oBAAkByT,KAAKwiB,oBACvBxiB,KAAKnE,kBAAkB1M,MACnB4yB,YAAaI,EAAaV,cAC1BN,WAAYgB,EAAaX,WAAYU,IAEzCE,EAAapiB,KAAKnE,kBAAkBzR,OACpC4V,KAAKwiB,iBAAmBxiB,KAAKnE,kBAAkBumB,EAAa,GAC5DG,KAGJviB,KAAKnE,kBAAkBumB,EAAa,GAAe,WAAEjzB,KAAKd,EAAKlE,QAOnF2yB,EAAcrpB,UAAU8tB,iBAAmB,SAAUrlB,EAAkB9T,GAEnE,IAAK,IADD45B,GAAc,EACT73B,EAAI,EAAGA,EAAI+R,EAAiB9R,OAAQD,IACzC,GAAI+R,EAAiB/R,GAAe,aAAM/B,EAAM,CAC5C45B,GAAc,EACd,MAMR,OAAOA,GAGXlF,EAAcrpB,UAAUivB,mBAAqB,SAAU7B,GACnD,IAAIuC,EACAC,EACJ,GAAsC,IAAlCrjB,KAAKnE,kBAAkBzR,OACvBg5B,GAAiB,OAGjB,IAAK,IAAIh0B,EAAI,EAAGA,EAAI4Q,KAAKnE,kBAAkBzR,OAAQgF,IAAK,CACpD,GAAIyxB,IAAe7gB,KAAKnE,kBAAkBzM,GAAgB,YAAG,CACzDg0B,GAAiB,EACjBC,EAAYj0B,EACZ,MAEKA,IAAM4Q,KAAKnE,kBAAkBzR,OAAS,IAC3Cg5B,GAAiB,GAI7B,OAASE,QAASF,EAAgBt7B,MAAOu7B,IAO7CvG,EAAcrpB,UAAUoqB,WAAa,WACjC,IAEIxxB,EAEAu1B,EAJA9D,EAAS9d,KAAKhS,QAAQuV,eACtB+N,EAAStR,KAAKhS,QAAQhD,SAItBu4B,EAAWzF,EAAOlV,UAItB,GAHA5I,KAAKxI,YAAc8Z,EAAOpI,aAAcxgB,GAAIsX,KAAKhS,QAAQiC,QAAQvH,GAAK,kBACtEsX,KAAKwjB,qBACLxjB,KAAKyjB,oBACe,YAAhB3F,EAAO7uB,KACP+Q,KAAK0jB,eAAe1jB,KAAKid,kBAGzB,IAAK,IAAI9yB,EAAI,EAAGA,EAAI6V,KAAKqd,2BAA2BjzB,OAAQD,IAAK,CAC7D,IAAIw5B,EAAS3jB,KAAKhS,QAAQiC,QAAQvH,GAAK,iBAAmByB,EACtDy5B,EAAS5jB,KAAKhS,QAAQiC,QAAQvH,GAAK,iBAAmByB,EAAI,QAE1D4Q,EAAOiF,KAAKqd,2BAA2BlzB,GAE3CkC,GADAu1B,EAAkB7mB,EAAc,SACP,QAAU6mB,EAAgBl5B,GAAK,IAAMqS,EAAW,KACzE,IAAIkZ,EAAS,IAAIhS,GAAKlH,EAAQ,EAAGA,EAAQ,EAAGA,EAAY,MAAGA,EAAa,QACpEwQ,EAAe,IAAIzgB,GAASiQ,EAAY,MAAGA,EAAY,OACvD8oB,EAAc,IAAI3hB,GAAWyhB,EAAQt3B,EAAMyxB,EAAOgG,YAAahG,EAAO5xB,QAAS+nB,GAC/EjU,KAAKhS,QAAQ+b,YACgC,SAAzC/J,KAAKhS,QAAQuV,eAAeta,UAAgE,UAAzC+W,KAAKhS,QAAQuV,eAAeta,UAClC,SAAzC+W,KAAKhS,QAAQuV,eAAeta,UACzB+W,KAAKhS,QAAQ6gB,cAAc3kB,OAAS8V,KAAKhS,QAAQ6gB,cAAchkB,QACtEg5B,EAAYj5B,EAAKoV,KAAK+jB,UAAUn5B,EAAIoV,KAAKgd,iBAAiBpyB,EAAIoV,KAAKgd,iBAAiBnyB,QAC7EmV,KAAK+jB,UAAUn5B,EAAIi5B,EAAYh5B,QAAUiG,KAAKC,IAAIiP,KAAKgd,iBAAiBpyB,EAAIi5B,EAAYj5B,GAC/F2gB,EAAa3gB,EAAKoV,KAAK+jB,UAAUn5B,EAAIoV,KAAKgd,iBAAiBpyB,EAAIoV,KAAKgd,iBAAiBnyB,OAC9EmV,KAAK+jB,UAAW,EAAKhpB,EAAiB,WAAI,EAC3CjK,KAAKC,IAAIiP,KAAKgd,iBAAiBpyB,EAAI2gB,EAAa3gB,KAGtDi5B,EAAYl5B,EAAKqV,KAAK+jB,UAAUp5B,EAAIqV,KAAKgd,iBAAiBryB,EAAIqV,KAAKgd,iBAAiB9yB,OAC7E8V,KAAK+jB,UAAUp5B,EAAIk5B,EAAY35B,OAChC4G,KAAKC,IAAIiP,KAAKgd,iBAAiBryB,EAAIk5B,EAAYl5B,GACrD4gB,EAAa5gB,EAAKqV,KAAK+jB,UAAUp5B,EAAIqV,KAAKgd,iBAAiBryB,EAAIqV,KAAKgd,iBAAiB9yB,MAC/E8V,KAAK+jB,UAAUp5B,EAAImG,KAAKC,IAAIiP,KAAKgd,iBAAiBryB,EAAI4gB,EAAa5gB,KAIjFU,EADc,IAAIiX,GAAWshB,EAAQrY,EAAa5gB,EAAG4gB,EAAa3gB,EAAG,SAAUmQ,EAAW,KAAG,GAAI,IAClEwoB,EAAUA,EAASh4B,OAASyU,KAAKhS,QAAQkc,WAAW/L,gBAAiB6B,KAAKxI,aACzGwI,KAAKxI,YAAY5O,YAAY0oB,EAAOyC,cAAc8P,IAG1DtsB,EAAeyI,KAAKhS,QAASgS,KAAKxI,cAGtCslB,EAAcrpB,UAAUuwB,yBAA2B,SAAU/oB,EAAYgpB,EAASj2B,EAAS8vB,GACvF,IAAIY,EAAgBzjB,EAAkB,MAClCsQ,EAAetQ,EAAiB,KAEhCxQ,EAAWtC,EADE8S,EAAwB,YACF6iB,EAAOlV,WAa9C,OAZA8V,EAAc/zB,EAAKqV,KAAK+jB,UAAUp5B,EAAIqV,KAAKgd,iBAAiBryB,EAAIqV,KAAKgd,iBAAiB9yB,OAC/E8V,KAAK+jB,UAAUp5B,EAAIs5B,GAAWnzB,KAAKC,IAAIiP,KAAKgd,iBAAiBryB,EAAI+zB,EAAc/zB,GACtF4gB,EAAa5gB,EAAKqV,KAAK+jB,UAAUp5B,EAAIqV,KAAKgd,iBAAiBryB,EAAIqV,KAAKgd,iBAAiB9yB,OAC9E8V,KAAK+jB,UAAUp5B,EAAIF,EAASP,MAAQ+5B,GAAWnzB,KAAKC,IAAIiP,KAAKgd,iBAAiBryB,EAAI4gB,EAAa5gB,IAC9D,SAApCqD,EAAQuV,eAAeta,UAA2D,UAApC+E,EAAQuV,eAAeta,UAC7B,SAApC+E,EAAQuV,eAAeta,UACpB+W,KAAKhS,QAAQ6gB,cAAc3kB,OAAS8V,KAAKhS,QAAQ6gB,cAAchkB,UACtE6zB,EAAc9zB,EAAKoV,KAAK+jB,UAAUn5B,EAAIoV,KAAKgd,iBAAiBpyB,EAAIoV,KAAKgd,iBAAiBnyB,OAChFmV,KAAK+jB,UAAUn5B,EAAIkG,KAAKC,IAAID,KAAKC,IAAIiP,KAAKgd,iBAAiBpyB,GAAK8zB,EAAc9zB,GAAMkzB,EAAO/jB,YAAc,EAC/GwR,EAAa3gB,EAAKoV,KAAK+jB,UAAUn5B,EAAIoV,KAAKgd,iBAAiBpyB,EAAIoV,KAAKgd,iBAAiBnyB,OAC/EmV,KAAK+jB,UAAUn5B,EAAIkG,KAAKC,IAAID,KAAKC,IAAIiP,KAAKgd,iBAAiBpyB,GAAK2gB,EAAa3gB,KAE9E8zB,cAAeA,EAAenT,aAAcA,IAEzDuR,EAAcrpB,UAAUiwB,eAAiB,SAAU3G,GAC/C,IAOImH,EAGA7b,EAVAC,EAAQtI,KACRhS,EAAUgS,KAAKhS,QAEf8vB,EAAS9vB,EAAQuV,eACjB4gB,EAAY,IAAIv6B,GAAKk0B,EAAOhkB,WAAYgkB,EAAO/jB,aAI/CuX,EAAStjB,EAAQhD,SACjB84B,EAAchG,EAAOgG,YAEzB,GAAI/G,GAAQ,GAAKA,EAAO/c,KAAKud,WAAWnzB,OAAQ,CACxC7B,SAASC,eAAewX,KAAKxI,YAAY9O,KACzCH,SAASC,eAAewX,KAAKxI,YAAY9O,IAAIqP,SAiCjD,IAAK,IA/BDqsB,EAAkC,mBAAjBtG,EAAOzkB,OAA+C,iBAAjBykB,EAAOzkB,OAA6C,UAAjBykB,EAAOzkB,MAChGgrB,EAAgBD,EAAgB73B,oBAAkBuxB,EAAOzxB,MAAQ,UAAYyxB,EAAOzxB,KAAOy3B,EAAYv4B,MACvG+4B,EAAgBF,GAAuC,IAAtBN,EAAY55B,MAAe,EAAwB45B,EAAY55B,MAChGof,EAAU,SAAUnf,GAEpB,IAAI8Q,EAAasO,EAAOgU,WAAWR,GAAkB,WAAE5yB,GACnD6R,EAAgBsV,EAAOpI,aAAcxgB,GAAIsF,EAAQiC,QAAQvH,GAAK,iBAAmByB,IACjF02B,EAAa5lB,EAAwB,YACrCspB,EAAUv2B,EAAQiC,QAAQvH,GAAK,uBAAyByB,EACxDy5B,EAAS51B,EAAQiC,QAAQvH,GAAK,sBAAwByB,EACtDu0B,EAAgBzjB,EAAkB,MAClCsQ,EAAetQ,EAAiB,KAChCjN,EAAQ+b,YACRma,EAAoB3a,EAAOya,yBAAyB/oB,EA1BlD,GA0BuEjN,EAAS8vB,GAClFY,EAAgBwF,EAAiC,cACjD3Y,EAAe2Y,EAAgC,cAEnD7b,GACIiC,QAAQ,EAAOpc,KAAMmR,GAAqBrR,QAASA,EAAS3B,KAAM4O,EAAiB,KACnF5B,MAAOykB,EAAOzkB,MAAOmrB,SAAU1G,EAAO0G,UAE1Cx2B,EAAQwc,QAAQnL,GAAqBgJ,EAAW,SAAUoC,GACtD,IAAIxf,EAAgB,IAAIoX,GAAWkiB,EAAS9Z,EAAape,KAAMi4B,EAAeF,EAAgBnpB,EAAiB,KAAIopB,EAAevG,EAAO5xB,QAAS,IAClJ8P,EAAcpT,YAAYwQ,EAAWslB,EAAejU,EAAapR,MAAO8qB,EAAW1Z,EAAa+Z,SAAUv5B,EAAe41B,IAEzHx1B,EADc,IAAIiX,GAAWshB,EAAQrY,EAAa5gB,EAAG4gB,EAAa3gB,EAAG,QAASi2B,EAAY,GAAI,IAC/D/C,EAAOlV,UAAWkV,EAAOlV,UAAUrd,OAASyC,EAAQkc,WAAW/L,gBAAiBnC,GAC/GsM,EAAM9Q,YAAY5O,YAAYoT,MAGlCuN,EAASvJ,KAEJ7V,EAAI,EAAGA,EAAI6V,KAAKud,WAAWR,GAAkB,WAAE3yB,OAAQD,IAC5Dmf,EAAQnf,GAEZ,IAAIs6B,OAAc,EAGlB,GAAkB,IAAdzkB,KAAK+c,KAAY,CACjB,IAAI2H,EAAc3H,EAAO,EAAK,IAAM/c,KAAKud,WAAWnzB,OAChDu6B,EAAa7G,EAAOlV,UACpBgc,EAAiBz8B,EAAYu8B,EAAYC,GACzCE,EAAa7kB,KAAKod,eAAezyB,EAAIqV,KAAKod,eAAelzB,MAAS06B,EAAe16B,SAtD/E,GAwDF46B,EAAc9kB,KAAKod,eAAezyB,EAAIqV,KAAKod,eAAelzB,MAC1D66B,EAAQ/kB,KAAKod,eAAexyB,EAAIoV,KAAKod,eAAevyB,WAzDlD,GA0DFm6B,EAAYF,EA1DV,GA0DgCF,EAAe16B,MAAQ,IAC7Du6B,EAAcnT,EAAOpI,aAAcxgB,GAAIsF,EAAQiC,QAAQvH,GAAK,yBAC5D,IAAIu8B,EAAkB3T,EAAOpI,aAAcxgB,GAAIsF,EAAQiC,QAAQvH,GAAK,8BAChEw8B,EAAmB5T,EAAOpI,aAAcxgB,GAAIsF,EAAQiC,QAAQvH,GAAK,+BACjEy8B,EAAY,MAAQL,EAAa,IAAMC,EAAO,OAASD,EA9DrD,IA8D2E,KAAOC,KACpF,OAASD,EA/DP,IA+D6B,KAAOC,KAAiB,MACvDK,EAAW,MAAQP,EAAY,IAAME,EAAO,OAASF,EAhEnD,IAgEwE,KAAOE,KACjF,OAASF,EAjEP,IAiE4B,KAAOE,KAAiB,MACtDM,EAAkB,IAAIhjB,GAAWrU,EAAQiC,QAAQvH,GAAK,aAAc,UAAW,EAAG,UAAW,EAAG,GAAI08B,GACxGH,EAAgBr8B,YAAY0oB,EAAO3G,SAAS0a,IAC5C,IAAIC,EAAsB,IAAIpjB,GAAWlU,EAAQiC,QAAQvH,GAAK,kBAAmB,iBAAmB,EAAG,IAAIuZ,GAAK4iB,IAA0BE,KAAsB76B,GAAW+5B,IAAc,IACzLgB,EAAgBr8B,YAAY0oB,EAAOyC,cAAcuR,IACjDtlB,KAAKulB,WAAWN,GAChB,IAAIO,EAAmB,IAAInjB,GAAWrU,EAAQiC,QAAQvH,GAAK,cAAe,UAAW,EAAG,UAAW,EAAG,GAAIy8B,GAC1GD,EAAiBt8B,YAAY0oB,EAAO3G,SAAS6a,IAC7C,IAAIC,EAAuB,IAAIvjB,GAAWlU,EAAQiC,QAAQvH,GAAK,mBAAoB,iBAAmB,EAAG,IAAIuZ,GAAM6iB,EAzE7G,GAyEmIC,IAzEnI,GAAA,IAyEoK,IAC1KG,EAAiBt8B,YAAY0oB,EAAOyC,cAAc0R,IAClDzlB,KAAKulB,WAAWL,GAChBT,EAAY77B,YAAYq8B,GACxBR,EAAY77B,YAAYs8B,GAExB,IAAIQ,GACAh9B,GAAMsF,EAAQiC,QAAQvH,GAAK,eAC3BiC,EAAKq6B,EACLp6B,EAAKm6B,EAAQH,EAAe/5B,OAAS,EACrCwB,KAAQ,UACRV,YAAa,OACbC,aAAc+4B,EAAWt7B,UACzBwC,cAAe84B,EAAWr7B,WAC1BwC,cAAe64B,EAAWv7B,WAC1B2C,cAAe,SACfE,UAAa,GACbC,QAAW,EACXC,oBAAqB,IAEzBs4B,EAAY77B,YAAY0oB,EAAOnmB,WAAWu6B,EAAiBhB,IAC3D1kB,KAAKxI,YAAY5O,YAAY67B,MAIzC3H,EAAcrpB,UAAU+vB,mBAAqB,WACzC,IAAIx1B,EAAUgS,KAAKhS,QACf8vB,EAAS9vB,EAAQuV,eACjB6a,EAAcN,EAAO9J,MAAM5rB,KAE3BwgB,EAAYkV,EAAOQ,WAEnB7zB,EAAWtC,EADH4B,EAAUiW,KAAKod,eAAelzB,SAAwBk0B,EAAaxV,GAC7CA,GAClC5I,KAAKgd,iBAAmB,IAAI/a,GAAMjC,KAAKod,eAAezyB,EAJxC,GAIuDqV,KAAKod,eAAexyB,EAJ3E,GAIyFH,EAASI,OAAUmV,KAAKod,eAAoB,SAAoBpd,KAAKod,eAAqB,UAAoB3yB,EAASI,QACzM,gBAAhBizB,EAAO7uB,KAAyB,EAAmB,IAAd+Q,KAAK+c,KALjC,GAKyD,IACvE,IAAI9xB,EAAgB,IAAIiX,GAAWlU,EAAQiC,QAAQvH,GAAK,iBAAkBo1B,EAAOjK,WAAYiK,EAAOzmB,OAAQ,EAAG2I,KAAKgd,iBAAkB,IAClI2I,EAAe33B,EAAQhD,SAAS+oB,cAAc9oB,GAClD06B,EAAa38B,MAAM48B,cAAgB,OACnC5lB,KAAKxI,YAAY5O,YAAY+8B,GAC7B3lB,KAAK6lB,mBAAmB73B,EAASgS,KAAKgd,iBAAiB9yB,MAAO8V,KAAKgd,iBAAiBnyB,OAAQizB,GAC5F9d,KAAKxI,YAAYN,aAAa,YAAa,eAAiB8I,KAAK+jB,UAAUp5B,GAAOqV,KAAKgd,iBAAkB,GAAM,KAC1Ghd,KAAK+jB,UAAUn5B,GAAOoV,KAAKgd,iBAAkB,GAAM,MACxDhvB,EAAQgd,UAAUpiB,YAAYoX,KAAKxI,cAEvCslB,EAAcrpB,UAAUgwB,kBAAoB,WACxC,IAAI3F,EAAS9d,KAAKhS,QAAQuV,eACtBqF,EAAYkV,EAAOQ,WACnBF,EAAcN,EAAO9J,MAAM5rB,KAG3B09B,EAAY/7B,EAAUiW,KAAKod,eAAelzB,SAAwBk0B,EAAaxV,GAC/Ene,EAAWtC,EAAY29B,EAAWld,GAClCwV,GAEA/yB,EADc,IAAIiX,GAAWtC,KAAKhS,QAAQiC,QAAQvH,GAAK,eAAiBsX,KAAKod,eAAgB,EAAKpd,KAAKod,eAAelzB,MAAQ,EAAI8V,KAAKod,eAAexyB,EAAKH,EAASI,OAAS,IAAoB,SAAUi7B,EAAW,IACvLld,EAAWA,EAAUrd,OAASyU,KAAKhS,QAAQkc,WAAWhM,iBAAkB8B,KAAKxI,cAUpHslB,EAAcrpB,UAAUsyB,yBAA2B,SAAUh2B,GACzD,IAAI/B,EAAUgS,KAAKhS,QACfqS,EAAStQ,EAAEsQ,OACX2lB,EAAgBh4B,EAAQiC,QAAQvH,GAAK,sBACzC2X,EAAWtQ,EAAErF,KAAKzC,QAAQ,UAAY,EAClCM,SAAS09B,iBAAiBl2B,EAAEm2B,eAAe,GAAGC,QAASp2B,EAAEm2B,eAAe,GAAGE,SADpC/lB,EAG3C,IAAIgmB,EACAvI,EAAS9vB,EAAQuV,eACrB,GAAIlD,EAAO3X,GAAGT,QAAQ,gBAAkB,GAAK61B,EAAO9K,SAAWhT,KAAKqd,2BAA2BjzB,OAAS,EAAG,CAEvG,IAAI2qB,OAAc,EACdmL,OAAa,EAEb7xB,OAAO,EACPhC,OAAO,EACP+V,OAAS,EACTkkB,OAAc,EACdtqB,OAAgB,EACpBqqB,EAAar4B,EAAQuB,OAAOC,YAAYqI,WAAWwI,EAAO3X,GAAGiE,MAAM,gBAAgB,KAEnF,IAAK,IADD45B,EAAUv4B,EAAQgd,UAAU1Y,wBACvBnI,EAAI,EAAGA,EAAI6V,KAAKnE,kBAAkBzR,OAAQD,IAAK,CACpD4qB,EAAc/U,KAAKnE,kBAAkB1R,GAErC+1B,GADAlkB,EAAgBzT,SAASC,eAAewF,EAAQiC,QAAQvH,GAAK,iBAAmByB,IACrDmI,wBAC3B,IAAI3B,EAAO,IAAIsR,GAAKnR,KAAKC,IAAImvB,EAAWz2B,KAAO88B,EAAQ98B,MAAOqH,KAAKC,IAAImvB,EAAW12B,IAAM+8B,EAAQ/8B,KAAM02B,EAAWh2B,MAAOg2B,EAAWr1B,QAInI,GAHAwB,EAAO2P,EAAchF,aAAa,QAClCoL,EAAS0b,EAAOgG,YAAYv4B,MAC5B+6B,EAAcxI,EAAOgG,YAAY55B,OAC5BqC,oBAAkBwoB,EAAwB,YAAI,CAE/C1mB,EAAO0mB,EAAwB,WAC/B,IAAK,IAAI3lB,EAAI,EAAGA,EAAIf,EAAKjE,OAAQgF,IAC7B,GAAIf,EAAKe,GAAmB,iBAAMi3B,EAA2B,eAAG,CAC5DrmB,KAAKwmB,uBAAuB1I,EAAQzxB,EAAM+V,EAAQ4jB,EAAeM,EAAa31B,GAC9E,cAOhBqP,KAAKub,4BAGbuB,EAAcrpB,UAAU+yB,uBAAyB,SAAU1I,EAAQzxB,EAAM+V,EAAQ1Z,EAAI49B,EAAa31B,GAC9F,IAAI+Z,EACA+b,EACA1B,EAeIra,EAVU,gBAFsB,SAAvBoT,EAAO7N,YAA+C,QAApB6N,EAAO70B,UAA0C,WAApB60B,EAAO70B,SACjF,aAAe,WAAa60B,EAAO7N,aAEhC6N,EAAO4I,gBASD,OAFPD,EAAO91B,EAAKhG,EAAKgG,EAAKzG,MAAQ,GAER,KADtB66B,EAAOp0B,EAAK/F,EAAK+F,EAAW,QACO,OAAS81B,EAbxC,IAawD,KAAO1B,EAd9D,IAeD,OAAS0B,EAdT,IAcyB,KAAO1B,EAf/B,IAegD,MAP9C,OAFP0B,EAAO91B,EAAKhG,EAAKgG,EAAKzG,MAAQ,GAER,KADtB66B,EAAOp0B,EAAK/F,GACuB,OAAS67B,EAPxC,IAOwD,KAAO1B,EAR9D,IASD,OAAS0B,EART,IAQyB,KAAO1B,EAT/B,IASgD,MAUpDjH,EAAO4I,gBASD,OAFPD,EAAO91B,EAAKhG,GAEU,KADtBo6B,EAAOp0B,EAAK/F,EAAK+F,EAAK9F,OAAS,GACI,OAAS47B,EA3BxC,IA2BwD,KAAO1B,EA5B9D,IA6BD,OAAS0B,EA5BT,IA4ByB,KAAO1B,EA7B/B,IA6BgD,MAP9C,OAFP0B,EAAO91B,EAAKhG,EAAKgG,EAAU,OAEL,KADtBo0B,EAAOp0B,EAAK/F,EAAK+F,EAAK9F,OAAS,GACI,OAAS47B,EArBxC,IAqBwD,KAAO1B,EAtB9D,IAuBD,OAAS0B,EAtBT,IAsByB,KAAO1B,EAvB/B,IAuBgD,MAS7D,IAAIxc,EAAc,IAAIlG,GAAW3Z,EAAI2D,EAAMi6B,EAAalkB,EAAQ,EAAG,GAAIsI,GACvE1K,KAAKhS,QAAQgd,UAAUpiB,YAAYoX,KAAKhS,QAAQhD,SAAS2f,SAASpC,KAEtEuU,EAAcrpB,UAAUoyB,mBAAqB,SAAU73B,EAAS9D,EAAOW,EAAQizB,GAC3E,IAAInzB,EACAC,EAEAkY,EAGA6jB,GADJ7jB,EAAYQ,YAAWtV,EAAQ6C,SAAUiS,GAAW,IAC9BnY,EAClBi8B,EAAQ9jB,EAAUlY,EAClBqc,EAAanE,EAAUjY,OACvBmc,EAAYlE,EAAU5Y,MACtBkM,EAAapI,EAAQ6gB,cAAc3kB,MACnC28B,EAAc74B,EAAQ6gB,cAAchkB,OACpC5B,EAA+B,SAApB60B,EAAO70B,SAAuBmN,EAAaywB,EAAe,QAAU,SAAW/I,EAAO70B,SACrG,GAAwB,UAApB60B,EAAO70B,SACP+W,KAAK+jB,UAAYjG,EAAOvzB,aAEvB,CACD,OAAQtB,GACJ,IAAK,MACL,IAAK,SACD6Z,EAAUjY,OAAUoc,EAAapc,EACjCF,EAAKyL,EAAa,EAAMlM,EAAQ,EAChCU,EAAkB,QAAb3B,EAAsB29B,EAASA,EAAQ9jB,EAAUjY,OApBpD,GAqBFiY,EAAUlY,EAAkB,QAAb3B,EAAsB29B,EAAQ/7B,EArB3C,GAqB8D+7B,EAChE,MACJ,IAAK,OACL,IAAK,QACD9jB,EAAU5Y,MAAS8c,EAAY9c,EAC/BS,EAAkB,SAAb1B,EAAuB09B,EAAQA,EAAQ7jB,EAAU5Y,MACtDU,EAAKi8B,EAAc,EAAMh8B,EAAS,EAClCiY,EAAUnY,EAAkB,SAAb1B,EAAuB09B,EAAQz8B,EAAQy8B,EAG9D,OAAQ7I,EAAOtzB,WACX,IAAK,OACgB,QAAbvB,GAAmC,WAAbA,EACtB0B,EAAImY,EAAUnY,EAGdC,EAAIkY,EAAUlY,EAElB,MACJ,IAAK,MACgB,QAAb3B,GAAmC,WAAbA,EACtB0B,EAAIyL,EAAalM,EAGjBU,EAAIi8B,EAAch8B,EAI9BmV,KAAKhS,QAAQ8U,UAAYA,EACzB9C,KAAK+jB,UAAY,IAAIj5B,GAASH,EAAGC,KAIzCkyB,EAAcrpB,UAAUqzB,eAAiB,SAAU/2B,GAC/CiQ,KAAK+lB,yBAAyBh2B,GAC9BsoB,aAAarY,KAAKqY,cAClBrY,KAAKqY,aAAeE,WAAWvY,KAAKub,yBAAyBzD,KAAK9X,MAAO,MAO7E8c,EAAcrpB,UAAU8nB,yBAA2B,WAC/C,GAAIhzB,SAASC,eAAewX,KAAKhS,QAAQiC,QAAQvH,GAAK,uBAAwB,CAC1E,IAAIq+B,EAAkBx+B,SAASC,eAAewX,KAAKhS,QAAQiC,QAAQvH,GAAK,uBACxEq+B,EAAgBx1B,WAAWC,YAAYu1B,KAU/CjK,EAAcrpB,UAAUuzB,eAAiB,SAAUj3B,GAC/CiQ,KAAKid,YAAeltB,EAAEsQ,OAAO3X,GAAGT,QAAQ,gBAAkB,EAAM+X,KAAKid,YAAc,EAC9Ejd,KAAKid,YAAc,EACpBjd,KAAKid,aAAe,GAAKjd,KAAKid,YAAcjd,KAAKud,WAAWnzB,OAC5D4V,KAAK6d,aAGL7d,KAAKid,YAAeltB,EAAEsQ,OAAO3X,GAAGT,QAAQ,gBAAkB,EAAK,EAAI+X,KAAKud,WAAWnzB,OAAS,GAUpG0yB,EAAcrpB,UAAU8xB,WAAa,SAAUt1B,GAC3C+mB,eAAatG,IAAIzgB,EAAS6e,UAAQsI,gBAAiBpX,KAAKgnB,eAAgBhnB,OAO5E8c,EAAcrpB,UAAUskB,iBAAmB,WACnC/X,KAAKhS,QAAQiqB,cAGjBjY,KAAKhS,QAAQi5B,GAAGnY,UAAQwI,eAAgBtX,KAAK+lB,yBAA0B/lB,MACvEA,KAAKhS,QAAQi5B,GAAGnY,UAAQ0I,cAAexX,KAAK8mB,eAAgB9mB,QAOhE8c,EAAcrpB,UAAUkkB,oBAAsB,WACtC3X,KAAKhS,QAAQiqB,cAGjBjY,KAAKhS,QAAQk5B,IAAIpY,UAAQwI,eAAgBtX,KAAK+lB,0BAC9C/lB,KAAKhS,QAAQk5B,IAAIpY,UAAQ0I,cAAexX,KAAK8mB,kBAOjDhK,EAAcrpB,UAAU6a,cAAgB,WACpC,MAAO,iBAQXwO,EAAcrpB,UAAUmZ,QAAU,WAC9B5M,KAAKqd,8BACLrd,KAAKnE,qBACLmE,KAAKwiB,iBAAmB,KACxBxiB,KAAKud,cACLvd,KAAK+jB,UAAY,KACjB/jB,KAAKgd,iBAAmB,KACxBhd,KAAKxI,YAAc,KACnBwI,KAAKsd,eACLtd,KAAKyd,YAAc,KACnBzd,KAAKmjB,qBAAuB,KAC5BnjB,KAAKmd,6BACLnd,KAAKod,eAAiB,KACtBpd,KAAK2X,uBAYTmF,EAAcrpB,UAAUyvB,oBAAsB,SAAUlwB,EAAUuvB,GAC9D,IAAIrB,EACAiG,EAAQ,6BACZ,IAAK56B,oBAAkByG,EAASzH,QAA6D,mBAAnDsD,OAAO4E,UAAUhD,SAASiD,KAAKV,EAASzH,OAA6B,CAC3G,IAAI67B,EAAapnB,KAAKhS,QAAQhD,SAAS0yB,aACnC2J,EAAmB9+B,SAAS++B,gBAAgBH,EAAO,kBAEnDl+B,EAAW+W,KAAKhS,QAAQuV,eAAeta,SACvC44B,EAAkB,QAAb54B,GAAmC,WAAbA,EAAwB,MAAQ,IAC3D64B,EAAkB,QAAb74B,GAAmC,WAAbA,EAAwB,IAAM,MAC7Do+B,EAAiBnwB,aAAa,KAAM,UAAYqrB,GAChD8E,EAAiBnwB,aAAa,KAAM,MACpCmwB,EAAiBnwB,aAAa,KAAM,MACpCmwB,EAAiBnwB,aAAa,KAAM2qB,EAAK,KACzCwF,EAAiBnwB,aAAa,KAAM4qB,EAAK,KACzC,IAAK,IAAIn0B,EAAI,EAAGA,EAAIqF,EAASzH,MAAMnB,OAAQuD,IAAK,CAC5C,IAAI45B,EAAc,KAAOv0B,EAASzH,MAAMnB,OAAS,GAC7Co9B,EAAUj/B,SAAS++B,gBAAgBH,EAAO,QAC9CK,EAAQtwB,aAAa,SAAUvJ,EAAI45B,EAAc,KACjDC,EAAQtwB,aAAa,aAAclE,EAASzH,MAAMoC,IAClD65B,EAAQtwB,aAAa,eAdX,GAcmCzG,YAC7C42B,EAAiBz+B,YAAY4+B,GAEjCJ,EAAWx+B,YAAYy+B,GACvBrnB,KAAKmjB,qBAAuBkE,EAC5B,IAAI97B,EAAQ,eAAsBg3B,EAAc,IAChDviB,KAAKyd,YAAY70B,YAAYy+B,GAC7BnG,EAAkB31B,EAEtB,OAAO21B,GAEJpE,KCzgCP2K,GAAkC,WAClC,SAASA,EAAiBv4B,GACtB8Q,KAAKK,OAAS,YACdL,KAAK0nB,YAAc,YAEnB1nB,KAAKyb,4BAELzb,KAAK2nB,6BAEL3nB,KAAK4nB,kBACL5nB,KAAKhS,QAAUkB,EACf8Q,KAAK+X,mBAqMT,OA5LA0P,EAAiBh0B,UAAU2L,UAAY,SAAUrP,GAC7C,IACI83B,EAGAxf,EAIAtN,EAEAuoB,EACAwE,EACA73B,EACA83B,EAbA/5B,EAAUgS,KAAKhS,QAEfd,EAAW6C,EAAEsQ,OAAO3X,GAGpBsG,KACAg5B,EAAYhoB,KAAKhS,QAAQquB,kBAGzB4L,KAKAC,EAAkBloB,KAAKhS,QAAQ8tB,uBACnC,GAAI5uB,EAASjF,QAAQ,gBAAkB,KAAMigC,GAAkBloB,KAAKhS,QAAQm6B,cAAgBj7B,IACxF,GAAI8S,KAAK0b,cAAgBxuB,EAAU,CAC/B46B,EAAiBv/B,SAASC,eAAewF,EAAQiC,QAAQvH,GAAK,YAAcsF,EAAQiW,WAAa,WACjG,IAAImkB,EAAoB7/B,SAASkT,uBAAuB,oBACxDV,EAAOiF,KAAKhS,QAAQuB,OAAOC,YAAYqI,WAAW3K,EAASP,MAAM,gBAAgB,KACjF,IAAIoK,OAAQ,EACZ,GAAIiJ,KAAKhS,QAAQuV,eAAeyP,QAAS,CAErC,IAAI/X,EAAa+E,KAAKhS,QAAQ4N,oBAAoBC,kBAElD9E,EAAQ2E,GADOsE,KAAKhS,QAAQ4N,oBAAoBC,kBAAkBzR,OACjC2Q,EAAM/M,GACvCgS,KAAK/D,aAAoD,YAArC+D,KAAKhS,QAAQuV,eAAetU,KAAqB1G,SAASC,eAAewX,KAAKhS,QAAQiC,QAAQvH,GAAK,uBAAyBqO,GAASxO,SAASC,eAAewX,KAAKhS,QAAQiC,QAAQvH,GAAK,iBAAmBqO,GACpM,OAAtBiJ,KAAK/D,cAA0BisB,GAAkBloB,KAAK/D,aAAajF,aAAa,QAAUkxB,EAAgBG,eAgBrGroB,KAAK4nB,eAAex9B,OAAS,GAAK4V,KAAK4nB,eAAe5nB,KAAK4nB,eAAex9B,OAAS,GAAmB,iBAAM4V,KAAK/D,eACtHT,GAA6BwE,KAAKyb,yBAA0Bzb,KAAK4nB,eAAgB55B,GACjFgS,KAAK0b,YAAc,IAjBfwM,GAAkBloB,KAAK/D,eAAiBisB,EAAgBjsB,aAUnD+D,KAAK4nB,eAAex9B,OAAS,GAAK4V,KAAK4nB,eAAe5nB,KAAK4nB,eAAex9B,OAAS,GAAmB,iBAAM4V,KAAK/D,eACtHT,GAA6BwE,KAAKyb,yBAA0Bzb,KAAK4nB,eAAgB55B,GACjFgS,KAAK0b,YAAc,KAXnB1b,KAAK4nB,eAAez4B,MAAOy4B,eAAgB5nB,KAAK/D,eAChDjB,EAAYgF,KAAKyb,0BACjBzb,KAAKyb,yBAAyBtsB,MAAOgN,UAAW6D,KAAK/D,aAAcG,QAASnB,EAAWlE,GAAmB,WACtGsF,WAAYpB,EAAWlE,GAAgB,QAAGuF,eAAgBrB,EAAWlE,GAAoB,YACzFwF,eAAgBtB,EAAWlE,GAAoB,cAEnDmE,EAAS8E,KAAK/D,aAAc+rB,EAAU37B,KAAM27B,EAAU97B,QAAS87B,EAAU3wB,OAAO9L,MAAOy8B,EAAU3wB,OAAOnN,MAAMuG,YAC9GuP,KAAKK,OAAS,aAa1B,GADA0nB,EAASh5B,EAAoBgM,KAAUitB,EAAU/4B,KAAMjB,IACnDgS,KAAKhS,QAAQuV,eAAeyP,WAAUkV,KAAkBloB,KAAK/D,cAAe+D,KAAK/D,aAAajF,aAAa,QAAUkxB,EAAgBG,iBACrI,GAAIroB,KAAKhS,QAAQuV,eAAeyP,UAAUkV,GACtCloB,KAAK/D,eAAiBisB,EAAgBjsB,cA2BtC4rB,GAAmB,MA3B+C,CAClE,IAAK,IAAI19B,EAAI,EAAGA,EAAI29B,EAAe7wB,kBAAmB9M,IAAK,CACvD8F,EAAU63B,EAAe1wB,WAAWjN,GACpCm5B,GAAU,EACVvoB,EAAO/M,EAAQuB,OAAOC,YAAYqI,WAAW5H,EAAQvH,GAAGiE,MAAM,gBAAgB,KAC9E,IAAK,IAAIyC,EAAI,EAAGA,EAAIg5B,EAAkBh+B,OAAQgF,IAC1C,GAAIa,EAAQvH,KAAO0/B,EAAkBh5B,GAAG1G,GAAI,CACxC46B,GAAU,EACV,MAGJyE,EAAO9/B,QAAQ8S,EAAqB,iBAAM,GAAKuoB,IAC/C2E,EAAkB94B,KAAKc,GACvBjB,EAAMG,KAAK4L,IAGnBpD,EAAiBpP,SAASkT,uBAAuB,oBAAqB,mBAAoBzN,GAC1F,IAAK,IAAIqN,EAAI,EAAGA,EAAI4sB,EAAkB79B,OAAQiR,IAE1ClE,GADAlH,EAAUg4B,EAAkB5sB,IACPjE,WAAW,IAAMC,OAAQ2wB,EAAU3wB,OAAQhL,KAAM27B,EAAU37B,KAAMH,QAAS87B,EAAU97B,UACzG+D,EAAQ6H,UAAU4Y,IAAI,oBACtB1Q,KAAK0b,YAAcxuB,EAEvBmb,GAAciC,QAAQ,EAAOpc,KAAM4Q,GAAe9Q,QAASA,EAASgB,MAAOA,EAAO4I,SAAUqwB,GAC5Fj6B,EAAQwc,QAAQ1L,GAAeuJ,UAQ1C,GAAInb,EAASjF,QAAQ,kBAAoB,GAAKiF,EAASjF,QAAQ,kBAAoB,GACpF,GAAI+X,KAAKhS,QAAQuV,eAAeyP,WAAYkV,GAAkBA,EAAgBG,iBAAmBn7B,MACzFg7B,GAAkBA,EAAgBI,gBAAkBp7B,GAAkB,CAC1E,IAEIq7B,EAFA9P,OAAY,EACZvV,OAAa,EAEbwV,EAAYnwB,SAASC,eAAe0E,GACf,cAArB8S,KAAK0nB,aACLvsB,EAAa6E,KAAK2nB,2BAEtB3nB,KAAK0nB,YAAc,YACf3wB,EAA6C,YAArCiJ,KAAKhS,QAAQuV,eAAetU,KAAqB4I,WAAW3K,EAASP,MAAM,wBAAwB,IAAMkL,WAAW3K,EAASP,MAAM,kBAAkB,IAK5J,IAJDgP,EAAaqE,KAAKhS,QAAQ4N,oBAAoBC,kBAAkB9E,GAAmB,WAAE3M,OAGrFm4B,GADAtnB,EAAa+E,KAAKhS,QAAQ4N,oBAAoBC,kBAChC3T,SAASgF,EAASA,EAAS9C,OAAS,GAAI,KAC1D,IAASD,EAAI,EAAGA,EAAIwR,EAAYxR,IAC5B,IAASiF,EAAI,EAAGA,EAAI4Q,KAAKhS,QAAQuB,OAAOC,YAAYpF,OAAQgF,IACxD,GAAI4Q,KAAKhS,QAAQ4N,oBAAoBC,kBAAkB9E,GAAmB,WAAE5M,GAAmB,iBAAM6V,KAAKhS,QAAQuB,OAAOC,YAAYJ,GAAmB,eAAG,CACvJqpB,EAAYrpB,EACZ8T,EAAalD,KAAKhS,QAAQuB,OAAOC,YAAYJ,GAAe,WAC5D,IAAIo5B,EAAUjgC,SAASC,eAAewX,KAAKhS,QAAQiC,QAAQvH,GAAK,gBAAkBwa,EAAa,eAAiBuV,EAAY,aAClH,IAANtuB,IACA6V,KAAK2nB,6BACL7rB,GAAekE,KAAK2nB,0BAA2BpF,EAAanzB,EAAGspB,EAAW8P,EAASxoB,KAAKhS,QAAQuB,OAAOC,YAAayL,GACpHstB,EAAWvoB,KAAK2nB,0BAA0Bv9B,OAC1C4V,KAAK2nB,0BAA0BY,EAAW,GAAoB,iBAAME,cAExEvtB,EAASwd,EAAWsP,EAAU37B,KAAM27B,EAAU97B,QAAS87B,EAAU3wB,OAAO9L,MAAOy8B,EAAU3wB,OAAOnN,MAAMuG,YACtGyK,EAASstB,EAASR,EAAU37B,KAAM27B,EAAU97B,QAAS87B,EAAU3wB,OAAO9L,MAAOy8B,EAAU3wB,OAAOnN,MAAMuG,YACpG83B,EAAWvoB,KAAK2nB,0BAA0Bv9B,OAC1C4V,KAAK2nB,0BAA0BY,EAAW,GAAoB,gBAAY,SAAEp5B,KAAKq5B,UAO7FN,GAAkBloB,KAAK/D,cAAe+D,KAAK/D,aAAajF,aAAa,QAAUkxB,EAAgBG,iBAC3FH,EAAkBloB,KAAK/D,eAAiBisB,EAAgBjsB,aAAuB+D,KAAKhS,QAAQuV,eAAeyP,UAC3Grb,EAAiBpP,SAASkT,uBAAuB,oBAAqB,mBAAoBzN,GAGxE,cAArBgS,KAAK0nB,aAA+C,cAAhB1nB,KAAKK,SAA2BL,KAAKhS,QAAQuV,eAAeyP,SAC7FkV,GAAkBloB,KAAK/D,cAAe+D,KAAK/D,aAAajF,aAAa,QAAUkxB,EAAgBG,iBAC3FH,EAAkBloB,KAAK/D,eAAiBisB,EAAgBjsB,cAAuBisB,GAC/EA,EAAgBQ,gBAChB1tB,EAAYgF,KAAKyb,0BACjBzb,KAAKyb,6BAIQ,cAArBzb,KAAK0nB,aAA+B1nB,KAAKhS,QAAQuV,eAAeyP,SAChE7X,EAAa6E,KAAK2nB,2BAEtB3nB,KAAK0b,YAAc,GACnBmM,GAAmB,EAEvB,OAAOA,GAOXJ,EAAiBh0B,UAAUskB,iBAAmB,WACtC/X,KAAKhS,QAAQiqB,aAGjBjY,KAAKhS,QAAQi5B,GAAGnY,UAAQwI,eAAgBtX,KAAKZ,UAAWY,OAO5DynB,EAAiBh0B,UAAUkkB,oBAAsB,WACzC3X,KAAKhS,QAAQiqB,aAGjBjY,KAAKhS,QAAQk5B,IAAIpY,UAAQwI,eAAgBtX,KAAKZ,YAOlDqoB,EAAiBh0B,UAAU6a,cAAgB,WACvC,MAAO,oBAQXmZ,EAAiBh0B,UAAUmZ,QAAU,WACjC5M,KAAK/D,aAAe,KACpB+D,KAAKyb,4BACLzb,KAAK2nB,6BACL3nB,KAAK4nB,kBACL5nB,KAAK2X,sBACL3X,KAAKhS,QAAU,MAEZy5B,KAMPkB,GAAkC,WAClC,SAASA,EAAiBz5B,GAEtB8Q,KAAK4oB,4BAEL5oB,KAAK6oB,6BACL7oB,KAAK8oB,aAAc,EACnB9oB,KAAK0oB,cAAe,EACpB1oB,KAAKhS,QAAUkB,EACf8Q,KAAK+X,mBA4RT,OAnRA4Q,EAAiBl1B,UAAU6lB,UAAY,SAAUvpB,GAC7C,IACIsY,EADAqQ,EAAY3oB,EAAEsQ,OAEdrS,EAAUgS,KAAKhS,QACnBA,EAAQ8I,kBAER,IAIIiE,EAEA+sB,EACA73B,EACA83B,EARA/4B,KACA9B,EAAWwrB,EAAUhwB,GACrBiwB,EAAYD,EAAU7vB,UAGtBu/B,KAIAW,EAAY/6B,EAAQsJ,kBACpB0xB,EAAkBhpB,KAAKhS,QAAQwtB,uBAC/Bb,EAAW3sB,EAAQiC,QAAQvH,GAAK,YAAcsF,EAAQiW,WAAa,UACvE,GAAI/W,EAASjF,QAAQ,gBAAkB,EAEnC,GADA8H,EAAE+oB,iBACE9Y,KAAKhS,QAAQm6B,cAAgBj7B,GAAY8S,KAAK0oB,aAAc,CAC5DZ,EAAiBv/B,SAASC,eAAemyB,GACzC5f,EAAO/M,EAAQuB,OAAOC,YAAYqI,WAAW3K,EAASP,MAAM,gBAAgB,KAC5E,IAAIoK,OAAQ,EACZ,GAAIiJ,KAAKhS,QAAQuV,eAAeyP,QAAS,CACrChT,KAAK8oB,aAAc,EACnB,IAAIG,EAAWjpB,KAAKhS,QAAQ4N,oBAAoBC,kBAAkBzR,OAE9D6Q,EAAa+E,KAAKhS,QAAQ4N,oBAAoBC,kBAClDmE,KAAK/D,kBAAejU,EACpBgT,EAAYgF,KAAK4oB,0BACbI,IACAA,EAAgBtB,YAAc,YAC9BsB,EAAgBvN,6BAEpB1kB,EAAQ2E,GAAeutB,EAAUluB,EAAM/M,GACvCgS,KAAK/D,aAAoD,YAArC+D,KAAKhS,QAAQuV,eAAetU,KAAqB1G,SAASC,eAAewX,KAAKhS,QAAQiC,QAAQvH,GAAK,uBAAyBqO,GAASxO,SAASC,eAAewX,KAAKhS,QAAQiC,QAAQvH,GAAK,iBAAmBqO,GACpM,OAAtBiJ,KAAK/D,eACL+D,KAAKsoB,cAAgBtoB,KAAK/D,aAAajF,aAAa,MACpDgJ,KAAK4oB,yBAAyBz5B,MAAOgN,UAAW6D,KAAK/D,aAAcG,QAASnB,EAAWlE,GAAmB,WACtGsF,WAAYpB,EAAWlE,GAAgB,QAAGuF,eAAgBrB,EAAWlE,GAAoB,YACzFwF,eAAgBtB,EAAWlE,GAAoB,cAEnDmE,EAAS8E,KAAK/D,aAAc8sB,EAAU18B,KAAM08B,EAAU78B,QAAS68B,EAAU1xB,OAAO9L,MAAOw9B,EAAU1xB,OAAOnN,MAAMuG,aAGtHs3B,EAASh5B,EAAoBgM,KAAUguB,EAAU95B,KAAMjB,GACvD,IAAK,IAAI7D,EAAI,EAAGA,EAAI29B,EAAe7wB,kBAAmB9M,IAClD8F,EAAU63B,EAAe1wB,WAAWjN,GACpC4Q,EAAO/M,EAAQuB,OAAOC,YAAYqI,WAAW5H,EAAQvH,GAAGiE,MAAM,gBAAgB,KAC1Eo7B,EAAO9/B,QAAQ8S,EAAqB,iBAAM,IAC1CqtB,EAAkBj5B,KAAKc,GACvBjC,EAAQ8I,eAAe3H,KAAKc,EAAQvH,IACpCsG,EAAMG,KAAK4L,IAGnBpD,EAAiBpP,SAASkT,uBAAuB,oBAAqB,mBAAoBzN,GAC1FgS,KAAKhS,QAAQm6B,YAAcj7B,EAE3B,IAAK,IADD+6B,EAAoB1/B,SAASkT,uBAAuB,oBAC/CJ,EAAI,EAAGA,EAAI+sB,EAAkBh+B,OAAQiR,IAAK,CAE/C,GADApL,EAAUm4B,EAAkB/sB,GACxB4sB,EAAkB79B,OAAS,EAC3B,IAAK,IAAIgF,EAAI,EAAGA,EAAI64B,EAAkB79B,OAAQgF,IACtC64B,EAAkB74B,GAAG1G,KAAOuH,EAAQvH,IACpCu/B,EAAkB74B,GAAG0I,UAAUC,OAAO,oBAE1CZ,EAAalH,EAAQmH,WAAW,IAAMC,OAAQ0xB,EAAU1xB,OAAQhL,KAAM08B,EAAU18B,KAAMH,QAAS68B,EAAU78B,UACzG+D,EAAQ6H,UAAU4Y,IAAI,yBAI1BvZ,EAAalH,EAAQmH,WAAW,IAAMC,OAAQ0xB,EAAU1xB,OAAQhL,KAAM08B,EAAU18B,KAAMH,QAAS68B,EAAU78B,UACzG+D,EAAQ6H,UAAU4Y,IAAI,oBAE1BrI,GAAciC,QAAQ,EAAOpc,KAAM2Q,GAAc7Q,QAASA,EAASgB,MAAOA,EAAO4I,SAAUwwB,EACvFhgC,KAAMuwB,EAAWvrB,oBAAqBurB,GAC1C3qB,EAAQwc,QAAQ3L,GAAcwJ,EAAW,SAAUoC,GAC3CA,EAAard,sBAAwBurB,GACrC1rB,EAAuBC,EAAUwrB,EAAWjO,EAAard,6BAMrE4N,EAAYgF,KAAK4oB,0BACjB5oB,KAAK4oB,4BACL5oB,KAAK/D,kBAAejU,EACpBgY,KAAK8oB,aAAc,EACnB9oB,KAAKsoB,cAAgB,GACrBtoB,KAAKhS,QAAQyJ,YACbE,EAAiBpP,SAASkT,uBAAuB,oBAAqB,mBAAoBzN,GAC1FgS,KAAKhS,QAAQm6B,YAAc,QAG9B,GAAIj7B,EAASjF,QAAQ,kBAAoB,GAAKiF,EAASjF,QAAQ,kBAAoB,EAAG,CAEnFgT,EAAa+E,KAAKhS,QAAQ4N,oBAAoBC,kBAClD,GAAImE,KAAKhS,QAAQuV,eAAeyP,SAAWhT,KAAKqoB,iBAAmBn7B,GAAY8S,KAAK8oB,YAAa,CAC7F,IAEII,EAFAzQ,OAAY,EACZvV,OAAa,EAEjBlD,KAAKqoB,eAAiBn7B,EACtB8S,KAAK0oB,cAAe,EACpB,IAAInG,EAAcr6B,SAASgF,EAASA,EAAS9C,OAAS,GAAI,IACtD++B,EAAc5gC,SAASC,eAAe0E,GAC1CiO,EAAa6E,KAAK6oB,2BACdG,IACAA,EAAgBtB,YAAc,aAE9B3wB,EAA6C,YAArCiJ,KAAKhS,QAAQuV,eAAetU,KAAqB4I,WAAW3K,EAASP,MAAM,wBAAwB,IAAMkL,WAAW3K,EAASP,MAAM,kBAAkB,IAE5J,IADDgP,EAAaqE,KAAKhS,QAAQ4N,oBAAoBC,kBAAkB9E,GAAmB,WAAE3M,OACzF,IAASiR,EAAI,EAAGA,EAAIM,EAAYN,IAC5B,IAAK,IAAIsa,EAAI,EAAGA,EAAI3V,KAAKhS,QAAQuB,OAAOC,YAAYpF,OAAQurB,IACxD,GAAI3V,KAAKhS,QAAQ4N,oBAAoBC,kBAAkB9E,GAAmB,WAAEsE,GAAmB,iBAAM2E,KAAKhS,QAAQuB,OAAOC,YAAYmmB,GAAmB,eAAG,CACvJ8C,EAAY9C,EACZzS,EAAalD,KAAKhS,QAAQuB,OAAOC,YAAYmmB,GAAe,WAC5D,IAAI6S,EAAUjgC,SAASC,eAAewX,KAAKhS,QAAQiC,QAAQvH,GAAK,gBAAkBwa,EAAa,eAAiBuV,EAAY,aAClH,IAANpd,IACAS,GAAekE,KAAK6oB,0BAA2BtG,EAAa5M,EAAGwT,EAAaX,EAASxoB,KAAKhS,QAAQuB,OAAOC,YAAayL,GACtHiuB,EAAWlpB,KAAK6oB,0BAA0Bz+B,OAC1C4V,KAAK6oB,0BAA0BK,EAAW,GAAoB,iBAAMT,cAExEvtB,EAASiuB,EAAaJ,EAAU18B,KAAM08B,EAAU78B,QAAS68B,EAAU1xB,OAAO9L,MAAOw9B,EAAU1xB,OAAOnN,MAAMuG,YACxGyK,EAASstB,EAASO,EAAU18B,KAAM08B,EAAU78B,QAAS68B,EAAU1xB,OAAO9L,MAAOw9B,EAAU1xB,OAAOnN,MAAMuG,YACpGy4B,EAAWlpB,KAAK6oB,0BAA0Bz+B,OAC1C4V,KAAK6oB,0BAA0BK,EAAW,GAAoB,gBAAY,SAAE/5B,KAAKq5B,SAM7FrtB,EAAa6E,KAAK6oB,2BACdG,IACAA,EAAgBtB,YAAc,aAElC1nB,KAAK0oB,cAAe,EACpB1oB,KAAKqoB,eAAiB,KAUlCM,EAAiBl1B,UAAUuoB,kBAAoB,SAAUJ,EAAYG,GACjE,GAAIA,EAAQ,CAGR,IAAK,IADDhhB,OAAO,EACFquB,EAAI,EAAGA,EAAIppB,KAAKhS,QAAQuB,OAAOC,YAAYpF,OAAQg/B,IACxD,GAAIxN,IAAe5b,KAAKhS,QAAQuB,OAAOC,YAAY45B,GAAmB,eAAG,CACrEruB,EAAOiF,KAAKhS,QAAQuB,OAAOC,YAAY45B,GACvC,MAGR,IAAIL,EAAY/oB,KAAKhS,QAAQsJ,kBACzB8wB,KACAn4B,OAAU,EACV8G,OAAQ,EAER/H,KACJgR,KAAKhS,QAAQ8I,kBAIb,IAAK,IAHD6jB,EAAW3a,KAAKhS,QAAQiC,QAAQvH,GAAK,YAAcsX,KAAKhS,QAAQiW,WAAa,UAC7E6jB,EAAiBv/B,SAASC,eAAemyB,GACzCoN,EAASh5B,EAAoBgM,KAAUguB,EAAU95B,KAAM+Q,KAAKhS,SACvD7D,EAAI,EAAGA,EAAI29B,EAAe7wB,kBAAmB9M,IAClD8F,EAAU63B,EAAe1wB,WAAWjN,GACpC4Q,EAAOiF,KAAKhS,QAAQuB,OAAOC,YAAYqI,WAAW5H,EAAQvH,GAAGiE,MAAM,gBAAgB,KAC/Eo7B,EAAO9/B,QAAQ8S,EAAqB,iBAAM,IAC1CqtB,EAAkBj5B,KAAKc,GACvB+P,KAAKhS,QAAQ8I,eAAe3H,KAAKc,EAAQvH,IACzCsG,EAAMG,KAAK4L,IAGnB,GAAIiF,KAAKhS,QAAQuV,eAAeyP,QAC5B,IAAK,IAAIqW,EAAI,EAAGA,EAAIr6B,EAAM5E,OAAQi/B,IAAK,CACnCrpB,KAAK8oB,aAAc,EACnB,IAAIQ,EAAWtpB,KAAKhS,QAAQ4N,oBAAoBC,kBAAkBzR,OAE9D6Q,EAAa+E,KAAKhS,QAAQ4N,oBAAoBC,kBAClDmE,KAAK/D,kBAAejU,EACpBgT,EAAYgF,KAAK4oB,0BACjB7xB,EAAQ2E,GAAe4tB,EAAUt6B,EAAMq6B,GAAIrpB,KAAKhS,SAChDgS,KAAK/D,aAAoD,YAArC+D,KAAKhS,QAAQuV,eAAetU,KAAqB1G,SAASC,eAAewX,KAAKhS,QAAQiC,QAAQvH,GAAK,uBAAyBqO,GAASxO,SAASC,eAAewX,KAAKhS,QAAQiC,QAAQvH,GAAK,iBAAmBqO,GACpM,OAAtBiJ,KAAK/D,eACL+D,KAAKsoB,cAAgBtoB,KAAK/D,aAAajF,aAAa,MACpDgJ,KAAKhS,QAAQyJ,SAAStI,KAAK6Q,KAAKsoB,eAChCtoB,KAAK4oB,yBAAyBz5B,MAC1BgN,UAAW6D,KAAK/D,aAAcG,QAASnB,EAAWlE,GAAmB,WACrEsF,WAAYpB,EAAWlE,GAAgB,QAAGuF,eAAgBrB,EAAWlE,GAAoB,YACzFwF,eAAgBtB,EAAWlE,GAAoB,cAEnDmE,EAAS8E,KAAK/D,aAAc8sB,EAAU18B,KAAM08B,EAAU78B,QAAS68B,EAAU1xB,OAAO9L,MAAOw9B,EAAU1xB,OAAOnN,MAAMuG,aAI1HkH,EAAiBpP,SAASkT,uBAAuB,oBAAqB,mBAAoBuE,KAAKhS,SAC/F,IAAIu7B,EAAmBhhC,SAASC,eAAewX,KAAKhS,QAAQ8I,eAAe,IAC3EkJ,KAAKhS,QAAQm6B,YAAcoB,EAAiBnyB,WAAW,GAAO,GAE9D,IAAK,IADD6wB,EAAoB1/B,SAASkT,uBAAuB,oBAC/CJ,EAAI,EAAGA,EAAI+sB,EAAkBh+B,OAAQiR,IAE1C,GADApL,EAAUm4B,EAAkB/sB,GACxB4sB,EAAkB79B,OAAS,EAC3B,IAAK,IAAIgF,EAAI,EAAGA,EAAI64B,EAAkB79B,OAAQgF,IACtC64B,EAAkB74B,GAAG1G,KAAOuH,EAAQvH,IACpCu/B,EAAkB74B,GAAG0I,UAAUC,OAAO,oBAE1CZ,EAAalH,EAAQmH,WAAW,IAAMC,OAAQ0xB,EAAU1xB,OAAQhL,KAAM08B,EAAU18B,KAAMH,QAAS68B,EAAU78B,UACzG+D,EAAQ6H,UAAU4Y,IAAI,yBAI1BqY,EAAU18B,KAA0B,SAAnB08B,EAAU18B,KACvB2T,KAAKhS,QAAQuB,OAAOC,YAAYtH,SAAS+H,EAAQvH,GAAGiE,MAAM,eAAe,GAAI,KAAc,QAAQ,KACjGo8B,EAAU18B,KAChB8K,EAAalH,EAAQmH,WAAW,IAAMC,OAAQ0xB,EAAU1xB,OAAQhL,KAAM08B,EAAU18B,KAAMH,QAAS68B,EAAU78B,UACzG+D,EAAQ6H,UAAU4Y,IAAI,yBAK9B1V,EAAYgF,KAAK4oB,0BACjB5oB,KAAK/D,kBAAejU,EACpBgY,KAAKhS,QAAQ8I,kBACbkJ,KAAK8oB,aAAc,EACnB9oB,KAAKsoB,cAAgB,GACrBtoB,KAAKhS,QAAQyJ,YACbE,EAAiBpP,SAASkT,uBAAuB,oBAAqB,mBAAoBuE,KAAKhS,SAC/FgS,KAAKhS,QAAQm6B,YAAc,IAQnCQ,EAAiBl1B,UAAUskB,iBAAmB,WACtC/X,KAAKhS,QAAQiqB,aAGjBjY,KAAKhS,QAAQi5B,GAAGnY,UAAQsI,gBAAiBpX,KAAKsZ,UAAWtZ,OAO7D2oB,EAAiBl1B,UAAUkkB,oBAAsB,WACzC3X,KAAKhS,QAAQiqB,aAGjBjY,KAAKhS,QAAQk5B,IAAIpY,UAAQsI,gBAAiBpX,KAAKsZ,YAOnDqP,EAAiBl1B,UAAU6a,cAAgB,WACvC,MAAO,oBAQXqa,EAAiBl1B,UAAUmZ,QAAU,WACjC5M,KAAK/D,aAAe,KACpB+D,KAAK4oB,4BACL5oB,KAAK6oB,6BACL7oB,KAAK2X,sBACL3X,KAAKhS,QAAU,MAEZ26B,KCjgBPa,GAAkC,SAAUJ,EAAGr5B,GAC/C,IAAI05B,KACJ,IAAK,IAAI5pB,KAAKupB,EAAOv6B,OAAO4E,UAAUqM,eAAepM,KAAK01B,EAAGvpB,IAAM9P,EAAE9H,QAAQ4X,GAAK,IAC9E4pB,EAAE5pB,GAAKupB,EAAEvpB,IACb,GAAS,MAALupB,GAAqD,mBAAjCv6B,OAAO66B,sBACtB,CAAA,IAAIv/B,EAAI,EAAb,IAAgB0V,EAAIhR,OAAO66B,sBAAsBN,GAAIj/B,EAAI0V,EAAEzV,OAAQD,IAAS4F,EAAE9H,QAAQ4X,EAAE1V,IAAM,IAC1Fs/B,EAAE5pB,EAAE1V,IAAMi/B,EAAEvpB,EAAE1V,KACtB,OAAOs/B,GASPE,GAAgC,WAChC,SAASA,EAAez6B,GACpB8Q,KAAKhS,QAAUkB,EACf8Q,KAAKmc,gBAAkBnc,KAAKhS,QAAQmuB,gBACpCnc,KAAK4pB,UAAY5pB,KAAKhS,QAAQiC,QAAQvH,GAAK,kBAC3CsX,KAAK+X,mBA+LT,OA7LA4R,EAAel2B,UAAUo2B,cAAgB,SAAU95B,GAC/C,IACIoC,EACAC,EACAiO,EACAypB,EACAC,EALAzhB,EAAQtI,MAMqB,IAA7BjQ,EAAErF,KAAKzC,QAAQ,UACf+X,KAAKgqB,SAAU,EAEf73B,GADA23B,EAAW/5B,GACMm2B,eAAe,GAAG/zB,MACnCC,EAAQ03B,EAAS5D,eAAe,GAAG9zB,MACnCiO,EAASypB,EAASzpB,SAGlBL,KAAKgqB,QAA4B,UAAlBj6B,EAAEk6B,YACjB93B,EAAQpC,EAAEoC,MACVC,EAAQrC,EAAEqC,MACViO,EAAStQ,EAAEsQ,QAGf,IAAIvY,EAGAoiC,EAEA3/B,EAGA4/B,EAPAj9B,EAAWmT,EAAO3X,GAClBqS,KAIAqvB,KACAC,KAEAn9B,EAASjF,QAAQ,gBAAkB,GACnC8S,EAAOiF,KAAKhS,QAAQuB,OAAOC,YAAYqI,WAAW3K,EAASP,MAAM,gBAAgB,KAC5EJ,oBAAkBwO,KACnBjT,EAAQiT,EAAa,OACrBqvB,EAAcrvB,EAAW,KACpBxO,oBAAkBwO,EAAc,WACjCovB,EAAapvB,EAAc,QAAQ,MAGnCsvB,EADArqB,KAAKhS,QAAQ+b,WACKjhB,qBAAmBC,SAASiP,EAAcgI,KAAKmc,gBAAgBlkB,OAAQmyB,EAAapqB,KAAKhS,WACnGlF,qBAAmBC,SAASuP,EAAYxQ,EAAOkY,KAAKhS,SAAW,MAAQgS,KAAKhS,QAAQS,gBAAgBgC,cAG1F3H,qBAAmBC,SAASiP,EAAcgI,KAAKmc,gBAAgBlkB,OAAQmyB,EAAapqB,KAAKhS,WACnGlF,qBAAmBC,SAASiX,KAAKhS,QAAQS,gBAAgBgC,WAAa,MAAQ6H,EAAYxQ,EAAOkY,KAAKhS,WAE9GzF,SAASC,eAAewX,KAAK4pB,WAC7BM,EAAa3hC,SAASC,eAAewX,KAAK4pB,aAG1CM,EAAazhC,gBAAc,OACvBC,GAAIsX,KAAKhS,QAAQiC,QAAQvH,GAAK,kBAC9BkO,UAAW,yBAEJ5N,MAAMoH,QAAU,0CAC3B7H,SAASC,eAAewX,KAAKhS,QAAQiC,QAAQvH,GAAK,sBAAsBE,YAAYshC,KAExF3/B,EAAW2H,EAAiBC,EAAOC,EAAO4N,KAAKhS,QAAQgd,YAC9CpgB,EAAKoV,KAAKmc,gBAAwB,SAAI5xB,EAASK,EAAI,GAAKL,EAASK,EAC1EoV,KAAKmc,gBAAgBvT,UAAUzf,KAAO6W,KAAKmc,gBAAgBvT,UAAUzf,MAAQ6W,KAAKhS,QAAQkc,WAAWjM,gBACrG+B,KAAKmc,gBAAgBvT,UAAUtf,WAAa0W,KAAKhS,QAAQkc,WAAW5gB,WACpE0W,KAAKmc,gBAAgBvT,UAAUvf,UAAakD,oBAAkByT,KAAKmc,gBAAgBvT,UAAUvf,WAAwD,SAA3C2W,KAAKmc,gBAAgBvT,UAAUvf,UACzI2W,KAAKmc,gBAAgBvT,UAAUxf,WAAa4W,KAAKmc,gBAAgBvT,UAAUxf,YAAc4W,KAAKhS,QAAQkc,WAAW9gB,WACjH4W,KAAKmc,gBAAgBvT,UAAUrd,MAAQyU,KAAKhS,QAAQkc,WAAWlM,kBACxDgC,KAAKmc,gBAAgBvT,UAAUrd,MACtCyU,KAAKmc,gBAAgBvT,UAAU1c,QAAU8T,KAAKhS,QAAQkc,WAAW3L,oBAC1DyB,KAAKmc,gBAAgBvT,UAAU1c,QACtC69B,GACIzf,QAAQ,EAAOpc,KAAM6Q,GAAkBhE,KAAMA,EAC7CzP,SACIf,SAAUA,EAAUnC,KAAMiiC,EAAgBh8B,KAAM+7B,EAChDxhB,UAAW5I,KAAKmc,gBAAgBvT,UAAWlZ,SAAUsQ,KAAKmc,gBAAgBzsB,UAE9E1B,QAASgS,KAAKhS,QACdiC,QAASoQ,EAAQgI,UAAWtY,GAGhCiQ,KAAKhS,QAAQwc,QAAQzL,GAAkBgrB,EAAY,SAAUlX,GACzDvK,EAAMgiB,WAAWP,EAAYI,EAAYD,QAKjDlqB,KAAKsb,gBAELtb,KAAKhS,QAAQulB,kBAGrBoW,EAAel2B,UAAU62B,WAAa,SAAUP,EAAYI,EAAYD,EAAY7hB,GAChF,IAAIiC,EAEAuI,EACJ,GAAKtmB,oBAAkBw9B,GAMnBzf,EAASjC,EAAUiC,OAEnBuI,EAAOxK,MARyB,CAEhCiC,EADQyf,EAAWzf,OAEnBuI,EAFuC2W,GAAOO,GAAa,WAE1Cz+B,QAOhBgf,GAwBDtK,KAAKsb,gBAELtb,KAAKhS,QAAQulB,kBAzBbvT,KAAKuqB,WAAa,IAAIC,WAClBzO,QAAQ,EACR0O,OAAQ,GACRp8B,KAAMwkB,EAAW,KACjBnjB,SAAUmjB,EAAe,SACzB6X,QAAS7X,EAAW,KACpB8X,UACApgC,SAAUsoB,EAAe,SACzBzG,SAAU+d,GACVS,WAAY5qB,KAAKhS,QAAQ6C,SACzB+X,UAAWiK,EAAgB,UAC3BxmB,KAAM2T,KAAKhS,QAAQmuB,gBAAgB9vB,KAAO2T,KAAKhS,QAAQmuB,gBAAgB9vB,KAAO2T,KAAKhS,QAAQkc,WAAWnM,oBAGtGiC,KAAKhS,QAAQ68B,OAAS7qB,KAAKhS,QAAQ88B,UACnC9qB,KAAKuqB,WAAWQ,gBAAkB/qB,KAAKhS,SAE3CgS,KAAKuqB,WAAWr+B,QAAU8T,KAAKhS,QAAQkc,WAAW5L,oBAAsB0B,KAAKuqB,WAAWr+B,QACxF8T,KAAKuqB,WAAWS,SAASd,GAEzBlqB,KAAKhS,QAAQ8c,yBAQrB6e,EAAel2B,UAAUqzB,eAAiB,SAAU/2B,GAChDiQ,KAAK6pB,cAAc95B,GACnBsoB,aAAarY,KAAKqY,cAClBrY,KAAKqY,aAAeE,WAAWvY,KAAKsb,cAAcxD,KAAK9X,MAAO,MAElE2pB,EAAel2B,UAAU6nB,cAAgB,WACrC,GAAI/yB,SAASkT,uBAAuB,uBAAuBrR,OAAS,EAAG,CACnE,IAAI6gC,EAAmB1iC,SAASkT,uBAAuB,uBAAuB,GAC9EwvB,EAAiB15B,WAAWC,YAAYy5B,KAQhDtB,EAAel2B,UAAUskB,iBAAmB,WACpC/X,KAAKhS,QAAQiqB,cAGjBjY,KAAKhS,QAAQi5B,GAAGnY,UAAQwI,eAAgBtX,KAAK6pB,cAAe7pB,MAC5DA,KAAKhS,QAAQi5B,GAAGnY,UAAQ0I,cAAexX,KAAK8mB,eAAgB9mB,QAOhE2pB,EAAel2B,UAAUkkB,oBAAsB,WACvC3X,KAAKhS,QAAQiqB,cAGjBjY,KAAKhS,QAAQk5B,IAAIpY,UAAQwI,eAAgBtX,KAAK6pB,eAC9C7pB,KAAKhS,QAAQk5B,IAAIpY,UAAQ0I,cAAexX,KAAK8mB,kBAOjD6C,EAAel2B,UAAU6a,cAAgB,WACrC,MAAO,kBAQXqb,EAAel2B,UAAUmZ,QAAU,WAC1BrgB,oBAAkByT,KAAKuqB,aACxBvqB,KAAKuqB,WAAW3d,UAEpB5M,KAAKuqB,WAAa,KAClBvqB,KAAKmc,gBAAkB,KACvBnc,KAAK2X,sBACL3X,KAAKhS,QAAU,MAEZ27B,yTT5MO,gBAME,2KA4DD"}
|
|
1
|
+
{"version":3,"file":"ej2-treemap.umd.min.js","sources":["../src/treemap/utils/helper.js","../src/treemap/model/theme.js","../src/treemap/model/constants.js","../src/treemap/model/base.js","../src/treemap/layout/render-panel.js","../src/treemap/model/print.js","../src/treemap/model/image-export.js","../src/treemap/model/pdf-export.js","../src/treemap/treemap.js","../src/treemap/layout/legend.js","../src/treemap/user-interaction/highlight-selection.js","../src/treemap/user-interaction/tooltip.js"],"sourcesContent":["import { createElement, compile, merge, isNullOrUndefined, remove, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\n/**\n * Specifies the size parameters.\n */\nvar Size = /** @class */ (function () {\n function Size(width, height) {\n this.width = width;\n this.height = height;\n }\n return Size;\n}());\nexport { Size };\n/**\n *\n * @param {string} value - specifies the text.\n * @param {number} containerSize - specifies the container size value.\n * @returns {number} - Returns the number value which is converted from string.\n */\nexport function stringToNumber(value, containerSize) {\n if (value !== null && value !== undefined) {\n return value.indexOf('%') !== -1 ? (containerSize / 100) * parseInt(value, 10) : parseInt(value, 10);\n }\n return null;\n}\n/**\n * Internal use of type rect\n *\n * @private\n */\nvar Rect = /** @class */ (function () {\n function Rect(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n return Rect;\n}());\nexport { Rect };\n/**\n * Internal use of rectangle options\n *\n * @private\n */\nvar RectOption = /** @class */ (function () {\n function RectOption(id, fill, border, opacity, rect, dashArray) {\n this.y = rect.y;\n this.x = rect.x;\n this.height = rect.height;\n this.width = rect.width;\n this.id = id;\n this.fill = fill;\n this.opacity = opacity;\n this.stroke = border.color;\n this['stroke-width'] = border.width;\n this['stroke-dasharray'] = dashArray;\n }\n return RectOption;\n}());\nexport { RectOption };\nvar PathOption = /** @class */ (function () {\n function PathOption(id, fill, width, color, opacity, dashArray, d) {\n this.id = id;\n this.opacity = opacity;\n this.fill = fill;\n this.stroke = color;\n this['stroke-width'] = width;\n this['stroke-dasharray'] = dashArray;\n this.d = d;\n }\n return PathOption;\n}());\nexport { PathOption };\n/**\n * Function to measure the height and width of the text.\n *\n * @param {string} text - Specifies the text.\n * @param {FontModel} font - Specifies the font.\n * @returns {Size} - Returns the size.\n * @private\n */\nexport function measureText(text, font) {\n var measureObject = document.getElementById('treeMapMeasureText');\n if (measureObject === null) {\n measureObject = createElement('text', { id: 'treeMapMeasureText' });\n document.body.appendChild(measureObject);\n }\n measureObject.innerHTML = SanitizeHtmlHelper.sanitize(text);\n measureObject.style.position = 'absolute';\n measureObject.style.fontSize = font.size;\n measureObject.style.fontWeight = font.fontWeight;\n measureObject.style.fontStyle = font.fontStyle;\n measureObject.style.fontFamily = font.fontFamily;\n measureObject.style.visibility = 'hidden';\n measureObject.style.top = '-100';\n measureObject.style.left = '0';\n measureObject.style.whiteSpace = 'nowrap';\n // For bootstrap line height issue\n measureObject.style.lineHeight = 'normal';\n return new Size(measureObject.clientWidth, measureObject.clientHeight);\n}\n/**\n * Internal use of text options\n *\n * @private\n */\nvar TextOption = /** @class */ (function () {\n function TextOption(id, x, y, anchor, text, transform, baseLine, connectorText) {\n if (transform === void 0) { transform = ''; }\n this.transform = '';\n this.baseLine = 'auto';\n this.id = id;\n this.text = text;\n this.transform = transform;\n this.anchor = anchor;\n this.x = x;\n this.y = y;\n this.baseLine = baseLine;\n this.connectorText = connectorText;\n }\n return TextOption;\n}());\nexport { TextOption };\n/**\n * Trim the title text\n *\n * @param {number} maxWidth - Specifies the maximum width\n * @param {string} text - Specifies the text\n * @param {FontModel} font - Specifies the font\n * @returns {string} - Returns the string\n * @private\n */\nexport function textTrim(maxWidth, text, font) {\n var label = text;\n var size = measureText(text, font).width;\n if (size > maxWidth) {\n var textLength = text.length;\n for (var i = textLength - 1; i >= 0; --i) {\n label = text.substring(0, i) + '...';\n size = measureText(label, font).width;\n if (size <= maxWidth || label.length < 4) {\n if (label.length < 4) {\n label = ' ';\n }\n return label;\n }\n }\n }\n return label;\n}\n/**\n * Specifies the location parameters.\n */\nvar Location = /** @class */ (function () {\n function Location(x, y) {\n this.x = x;\n this.y = y;\n }\n return Location;\n}());\nexport { Location };\n/**\n * Method to calculate x position of title\n *\n * @param {Rect} location - Specifies the location of text.\n * @param {Alignment} alignment - Specifies the alignment of the text.\n * @param {Size} textSize - Specifies the size of the text.\n * @param {type} type - Specifies whether the provided text is title or subtitle.\n * @returns {Location} - Returns the location of text.\n * @private\n */\nexport function findPosition(location, alignment, textSize, type) {\n var x;\n switch (alignment) {\n case 'Near':\n x = location.x;\n break;\n case 'Center':\n x = (type === 'title') ? (location.width / 2 - textSize.width / 2) :\n ((location.x + (location.width / 2)) - textSize.width / 2);\n break;\n case 'Far':\n x = (type === 'title') ? (location.width - location.y - textSize.width) :\n ((location.x + location.width) - textSize.width);\n break;\n }\n var y = (type === 'title') ? location.y + (textSize.height / 2) : ((location.y + location.height / 2) + textSize.height / 2);\n return new Location(x, y);\n}\n/**\n *\n * @param {SvgRenderer} renderer - Specifies the rendering element of the SVG.\n * @param {any} renderOptions - Specifies the settings of the text.\n * @param {string} text - Specifies the text.\n * @returns {HTMLElement} - Returns the HTML element for the text.\n */\nexport function createTextStyle(renderer, renderOptions, text) {\n var htmlObject = renderer.createText(renderOptions, text);\n htmlObject.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n htmlObject.style['user-select'] = 'none';\n htmlObject.style['-moz-user-select'] = 'none';\n htmlObject.style['-webkit-touch-callout'] = 'none';\n htmlObject.style['-webkit-user-select'] = 'none';\n htmlObject.style['-khtml-user-select'] = 'none';\n htmlObject.style['-ms-user-select'] = 'none';\n htmlObject.style['-o-user-select'] = 'none';\n return htmlObject;\n}\n/**\n * Internal rendering of text\n *\n * @param {TextOption} options - Specifies the text option\n * @param {FontModel} font - Specifies the font model\n * @param {string} color - Specifies the color\n * @param {HTMLElement | Element} parent - Specifies the parent element of the text\n * @param {boolean} isMinus - Specifies the boolean value\n * @returns {Element} - Returns the element\n * @private\n */\nexport function renderTextElement(options, font, color, parent, isMinus) {\n if (isMinus === void 0) { isMinus = false; }\n var renderOptions = {\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily,\n 'font-weight': font.fontWeight,\n 'text-anchor': options.anchor,\n 'transform': options.transform,\n 'opacity': font.opacity,\n 'dominant-baseline': options.baseLine,\n 'id': options.id,\n 'x': options.x,\n 'y': options.y,\n 'fill': color\n };\n var text = typeof options.text === 'string' ? options.text : isMinus ? options.text[options.text.length - 1] : options.text[0];\n var tspanElement;\n var renderer = new SvgRenderer('');\n var height;\n var htmlObject;\n var breadCrumbText = !isNullOrUndefined(text) && !isNullOrUndefined(options.connectorText) ?\n (text.search(options.connectorText[1]) >= 0) : false;\n if (breadCrumbText) {\n var drilledLabel = text;\n var spacing = 5;\n var drillLevelText = drilledLabel.split('#');\n for (var z = 0; z < drillLevelText.length; z++) {\n var drillText = (drillLevelText[z].search(options.connectorText) !== -1 &&\n !isNullOrUndefined(options.connectorText)) ?\n options.connectorText : drillLevelText[z];\n renderOptions['id'] = options.id + '_' + z;\n htmlObject = createTextStyle(renderer, renderOptions, drillText);\n if (z % 2 === 0 && z !== 0) {\n var re = /\\s+/g;\n drillText = drillText.replace(re, ' ');\n }\n var size = measureText(drillText, font);\n renderOptions['x'] = z !== 0 ? renderOptions['x'] + size.width : renderOptions['x'] + size.width + spacing;\n parent.appendChild(htmlObject);\n }\n }\n else {\n htmlObject = createTextStyle(renderer, renderOptions, text);\n parent.appendChild(htmlObject);\n }\n if (typeof options.text !== 'string' && options.text.length > 1) {\n for (var i = 1, len = options.text.length; i < len; i++) {\n height = (measureText(options.text[i], font).height);\n tspanElement = renderer.createTSpan({\n 'x': options.x, 'id': options.id,\n 'y': (options.y) + (i * height)\n }, options.text[i]);\n htmlObject.appendChild(tspanElement);\n }\n parent.appendChild(htmlObject);\n }\n return htmlObject;\n}\n/**\n *\n * @param {string} targetId - Specifies the id of the element to which template is to be appended.\n * @param {Element} targetElement - Specifies the element to which template is to be appended.\n * @param {string} contentItemTemplate - Specifies the content to be appended as template.\n * @returns {void}\n */\nexport function setItemTemplateContent(targetId, targetElement, contentItemTemplate) {\n var itemSelect = targetId.split('_RectPath')[0];\n var itemTemplate;\n if (targetId.indexOf('_LabelTemplate') > -1) {\n itemTemplate = targetElement;\n }\n else {\n itemTemplate = document.querySelector('#' + itemSelect + '_LabelTemplate');\n }\n if (!isNullOrUndefined(itemTemplate)) {\n itemTemplate.innerHTML = contentItemTemplate;\n }\n}\n/**\n *\n * @param {string} id - Specifies the id of the element.\n * @returns {Element} - Returns the element.\n */\nexport function getElement(id) {\n return document.getElementById(id);\n}\n/**\n *\n * @param {any} a - Specifies the first order of TreeMap leaf elements.\n * @param {any} b - Specifies the second order of TreeMap leaf elements.\n * @returns {number} - Returns the order of the TreeMap leaf element.\n */\nexport function itemsToOrder(a, b) {\n return a['weight'] === b['weight'] ? 0 : a['weight'] < b['weight'] ? 1 : -1;\n}\n/**\n *\n * @param {string[]} source - Specifies the data from the data source.\n * @param {string} pathName - Specifies the path name in the data source.\n * @param {any} processData - Specifies the data source object.\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @returns {boolean} - Specifies whether data is available in the data source or not.\n */\nexport function isContainsData(source, pathName, processData, treemap) {\n var isExist = false;\n var name = '';\n var path;\n var leaf = treemap.leafItemSettings;\n for (var i = 0; i < source.length; i++) {\n path = treemap.levels[i] ? treemap.levels[i].groupPath : leaf.labelPath ? leaf.labelPath :\n treemap.weightValuePath;\n var data = processData[path] || 'undefined';\n if (source[i] === data) {\n name += data + (i === source.length - 1 ? '' : '#');\n if (name === pathName) {\n isExist = true;\n break;\n }\n }\n }\n return isExist;\n}\n/**\n *\n * @param {any} data - Specifies the data to which the children elements to be found.\n * @returns {any} - Returns the children elements of the TreeMap leaf element.\n */\nexport function findChildren(data) {\n var children;\n if (data) {\n var keys = Object.keys(data);\n children = {};\n for (var i = 0; i < keys.length; i++) {\n if (data[keys[i]] instanceof Array) {\n children['values'] = data[keys[i]];\n children['key'] = keys[i];\n break;\n }\n }\n }\n return children;\n}\n/**\n *\n * @param {any} data - Specifies the data to which highlight must be done.\n * @param {items} items - Specifies the data source items.\n * @param {string} mode - Specifies the mode of highlight.\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @returns {string[]} - Returns the highlighted items.\n */\nexport function findHightLightItems(data, items, mode, treeMap) {\n if (mode === 'Child') {\n items.push(data['levelOrderName']);\n var children = findChildren(data)['values'];\n if (children && children.length > 0) {\n for (var i = 0; i < children.length; i++) {\n if (items.indexOf(children[i]['levelOrderName']) === -1) {\n items.push(children[i]['levelOrderName']);\n }\n }\n for (var j = 0; j < children.length; j++) {\n findHightLightItems(children[j], items, mode, treeMap);\n }\n }\n }\n else if (mode === 'Parent') {\n if (typeof data['levelOrderName'] === 'string' && items.indexOf(data['levelOrderName']) === -1) {\n items.push(data['levelOrderName']);\n findHightLightItems(data['parent'], items, mode, treeMap);\n }\n }\n else if (mode === 'All') {\n var parentName = data['levelOrderName'].split('#')[0];\n var currentItem = void 0;\n for (var i = 0; i < treeMap.layout.renderItems.length; i++) {\n currentItem = treeMap.layout.renderItems[i];\n if ((currentItem['levelOrderName']).indexOf(parentName) > -1 && items.indexOf(currentItem['levelOrderName']) === -1) {\n items.push(currentItem['levelOrderName']);\n }\n }\n }\n else {\n items.push(data['levelOrderName']);\n }\n return items;\n}\n/**\n * Function to compile the template function for maps.\n *\n * @param {string} template - Specifies the template\n * @returns {Function} - Returns the template function\n * @private\n */\nexport function getTemplateFunction(template) {\n var templateFn = null;\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n templateFn = compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n templateFn = compile(template);\n }\n }\n catch (e) {\n templateFn = compile(template);\n }\n return templateFn;\n}\n/**\n * @private\n * @param {HTMLCollection} element - Specifies the element\n * @param {string} labelId - Specifies the label id\n * @param {Object} data - Specifies the data\n * @returns {HTMLElement} - Returns the element\n */\nexport function convertElement(element, labelId, data) {\n var childElement = createElement('div', {\n id: labelId\n });\n childElement.style.cssText = 'position: absolute;pointer-events: auto;';\n var elementLength = element.length;\n while (elementLength > 0) {\n childElement.appendChild(element[0]);\n elementLength--;\n }\n var templateHtml = childElement.innerHTML;\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n var regExp = RegExp;\n templateHtml = templateHtml.replace(new regExp('{{:' + keys[i] + '}}', 'g'), data[keys[i].toString()]);\n }\n childElement.innerHTML = templateHtml;\n return childElement;\n}\n/**\n *\n * @param {Rect} rect - Specifies the area.\n * @param {LabelPosition} position - Specifies the position\n * @param {Size} labelSize - Specifies the label size.\n * @param {string} type - Specifies the type.\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @returns {Location} - Returns the text location.\n */\nexport function findLabelLocation(rect, position, labelSize, type, treemap) {\n var location = new Location(0, 0);\n var padding = 5;\n var paddings = 2;\n var x = (type === 'Template') ? treemap.areaRect.x : 0;\n var y = (type === 'Template') ? treemap.areaRect.y : 0;\n location.x = (Math.abs(x - ((position.indexOf('Left') > -1) ? rect.x + padding : !(position.indexOf('Right') > -1) ?\n rect.x + ((rect.width / 2) - (labelSize.width / 2)) : (rect.x + rect.width) - labelSize.width))) - paddings;\n if (treemap.enableDrillDown && (treemap.renderDirection === 'BottomLeftTopRight'\n || treemap.renderDirection === 'BottomRightTopLeft')) {\n location.y = Math.abs((rect.y + rect.height) - labelSize.height + padding);\n }\n else {\n location.y = Math.abs(y - ((position.indexOf('Top') > -1) ? (type === 'Template' ? rect.y : rect.y + labelSize.height) :\n !(position.indexOf('Bottom') > -1) ? type === 'Template' ? (rect.y + ((rect.height / 2) - (labelSize.height / 2))) :\n (rect.y + (rect.height / 2) + labelSize.height / 4) : (rect.y + rect.height) - labelSize.height));\n }\n return location;\n}\n/**\n *\n * @param {HTMLElement} element - Specifies the element to be measured.\n * @param {HTMLElement} parentElement - Specifies the parent element of the element to be measured.\n * @returns {Size} - Returns the element size.\n */\nexport function measureElement(element, parentElement) {\n var size = new Size(0, 0);\n parentElement.appendChild(element);\n size.height = element.offsetHeight;\n size.width = element.offsetWidth;\n var measureElementId = document.getElementById(element.id);\n measureElementId.parentNode.removeChild(measureElementId);\n return size;\n}\n/**\n *\n * @param {Rect} rect - Specifies the area.\n * @returns {number} - Returns the area width.\n */\nexport function getArea(rect) {\n return (rect.width - rect.x) * (rect.height - rect.y);\n}\n/**\n *\n * @param {Rect} input - Specifies input for the calculation.\n * @returns {number} - Returns the shortest edge.\n */\nexport function getShortestEdge(input) {\n var container = convertToContainer(input);\n var width = container.width;\n var height = container.height;\n var result = Math.min(width, height);\n return result;\n}\n/**\n *\n * @param {Rect} rect - Specifies the rectangle bounds of the container.\n * @returns {Rect} - Returns the rectangle bounds.\n */\nexport function convertToContainer(rect) {\n var x = rect.x;\n var y = rect.y;\n var width = rect.width;\n var height = rect.height;\n return {\n x: x,\n y: y,\n width: width - x,\n height: height - y\n };\n}\n/**\n *\n * @param {Rect} container - Specifies the rectangle bounds of the container.\n * @returns {Rect} - Returns the rectangle bounds.\n */\nexport function convertToRect(container) {\n var xOffset = container.x;\n var yOffset = container.y;\n var width = container.width;\n var height = container.height;\n return {\n x: xOffset,\n y: yOffset,\n width: xOffset + width,\n height: yOffset + height\n };\n}\n/**\n *\n * @param {number} pageX - Specifies the horizontal position of the mouse location.\n * @param {number} pageY - Specifies the vertical position of the mouse location.\n * @param {Element} element - Specifies the element to which the click is done.\n * @returns {Location} - Returns the clicked location.\n */\nexport function getMousePosition(pageX, pageY, element) {\n var elementRect = element.getBoundingClientRect();\n var pageXOffset = element.ownerDocument.defaultView.pageXOffset;\n var pageYOffset = element.ownerDocument.defaultView.pageYOffset;\n var clientTop = element.ownerDocument.documentElement.clientTop;\n var clientLeft = element.ownerDocument.documentElement.clientLeft;\n var positionX = elementRect.left + pageXOffset - clientLeft;\n var positionY = elementRect.top + pageYOffset - clientTop;\n return new Location((pageX - positionX), (pageY - positionY));\n}\n/**\n *\n * @param {ColorMappingModel[]} colorMapping - Specifies the color mapping instance.\n * @param {string} equalValue - Specifies the equal value.\n * @param {number | string} value - Specifies the range value.\n * @returns {any} - Returns the color mapping object.\n * @private\n */\nexport function colorMap(colorMapping, equalValue, value) {\n var fill;\n var paths = [];\n var opacity;\n if (isNullOrUndefined(equalValue) && (isNullOrUndefined(value) && isNaN(value))) {\n return null;\n }\n for (var i = 0; i < colorMapping.length; i++) {\n var isEqualColor = false;\n var dataValue = value;\n if (!isNullOrUndefined(colorMapping[i].from) && !isNullOrUndefined(colorMapping[i].to)\n && !isNullOrUndefined(colorMapping[i].value)) {\n if ((value >= colorMapping[i].from && colorMapping[i].to >= value) &&\n (colorMapping[i].value === equalValue)) {\n isEqualColor = true;\n if (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') {\n fill = !isEqualColor ? colorCollections(colorMapping[i], dataValue) : colorMapping[i].color[0];\n }\n else {\n fill = colorMapping[i].color;\n }\n }\n }\n else if ((!isNullOrUndefined(colorMapping[i].from) && !isNullOrUndefined(colorMapping[i].to))\n || !isNullOrUndefined((colorMapping[i].value))) {\n if ((value >= colorMapping[i].from && colorMapping[i].to >= value)\n || (colorMapping[i].value === equalValue)) {\n if (colorMapping[i].value === equalValue) {\n isEqualColor = true;\n }\n if (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') {\n fill = !isEqualColor ? colorCollections(colorMapping[i], dataValue) : colorMapping[i].color[0];\n }\n else {\n fill = colorMapping[i].color;\n }\n }\n }\n if (((value >= colorMapping[i].from && value <= colorMapping[i].to)\n || (colorMapping[i].value === equalValue))\n && !isNullOrUndefined(colorMapping[i].minOpacity) && !isNullOrUndefined(colorMapping[i].maxOpacity)\n && fill) {\n opacity = deSaturationColor(colorMapping[i], value);\n }\n if ((fill === '' || isNullOrUndefined(fill))\n && isNullOrUndefined(colorMapping[i].from) && isNullOrUndefined(colorMapping[i].to)\n && isNullOrUndefined(colorMapping[i].minOpacity) && isNullOrUndefined(colorMapping[i].maxOpacity)\n && isNullOrUndefined(colorMapping[i].value)) {\n fill = (Object.prototype.toString.call(colorMapping[i].color) === '[object Array]') ?\n colorMapping[i].color[0] : colorMapping[i].color;\n }\n opacity = !isNullOrUndefined(opacity) ? opacity : '1';\n paths.push(fill);\n }\n for (var j = paths.length - 1; j >= 0; j--) {\n fill = paths[j];\n j = (fill) ? -1 : j;\n }\n return { fill: fill, opacity: opacity };\n}\n/**\n *\n * @param {ColorMappingModel} colorMapping - Specifies the color mapping object.\n * @param {number} rangeValue - Specifies the range value.\n * @returns {string} - Returns the opacity for the color mapping.\n * @private\n */\nexport function deSaturationColor(colorMapping, rangeValue) {\n var opacity = 1;\n if ((rangeValue >= colorMapping.from && rangeValue <= colorMapping.to)) {\n var ratio = (rangeValue - colorMapping.from) / (colorMapping.to - colorMapping.from);\n opacity = (ratio * (colorMapping.maxOpacity - colorMapping.minOpacity)) + colorMapping.minOpacity;\n }\n return opacity.toString();\n}\n/**\n *\n * @param {ColorMappingModel} colorMap - Specifies the color mapping object.\n * @param {number} value - Specifies the range value.\n * @returns {string} - Returns the fill color.\n */\nexport function colorCollections(colorMap, value) {\n var gradientFill = getColorByValue(colorMap, value);\n return gradientFill;\n}\n/**\n *\n * @param {number} r - Specifies the red color value.\n * @param {number} g - Specifies the green color value.\n * @param {number} b - Specifies the blue color value.\n * @returns {string} - Returns the fill color.\n */\nexport function rgbToHex(r, g, b) {\n return '#' + componentToHex(r) + componentToHex(g) + componentToHex(b);\n}\n/**\n *\n * @param {ColorMappingModel} colorMap - Specifies the color mapping.\n * @param {number} value - Specifies the range value.\n * @returns {string} - Returns the fill color.\n */\nexport function getColorByValue(colorMap, value) {\n var color = '';\n var rbg;\n if (Number(value) === colorMap.from) {\n color = colorMap.color[0];\n }\n else if (Number(value) === colorMap.to) {\n color = colorMap.color[colorMap.color.length - 1];\n }\n else {\n rbg = getGradientColor(Number(value), colorMap);\n color = rgbToHex(rbg.r, rbg.g, rbg.b);\n }\n return color;\n}\n/**\n *\n * @param {number} value - Specifies the range value.\n * @param {ColorMappingModel} colorMap - Specifies the color mapping.\n * @returns {ColorValue} - Returns the color value object.\n */\nexport function getGradientColor(value, colorMap) {\n var previousOffset = colorMap.from;\n var nextOffset = colorMap.to;\n var percent = 0;\n var full = nextOffset - previousOffset;\n var midColor;\n percent = (value - previousOffset) / full;\n var previousColor;\n var nextColor;\n if (colorMap.color.length <= 2) {\n previousColor = colorMap.color[0].charAt(0) === '#' ? colorMap.color[0] : colorNameToHex(colorMap.color[0]);\n nextColor = colorMap.color[colorMap.color.length - 1].charAt(0) === '#' ?\n colorMap.color[colorMap.color.length - 1] : colorNameToHex(colorMap.color[colorMap.color.length - 1]);\n }\n else {\n previousColor = colorMap.color[0].charAt(0) === '#' ? colorMap.color[0] : colorNameToHex(colorMap.color[0]);\n nextColor = colorMap.color[colorMap.color.length - 1].charAt(0) === '#' ?\n colorMap.color[colorMap.color.length - 1] : colorNameToHex(colorMap.color[colorMap.color.length - 1]);\n var a = full / (colorMap.color.length - 1);\n var b = void 0;\n var c = void 0;\n var length_1 = colorMap.color.length - 1;\n var splitColorValueOffset = [];\n var splitColor = {};\n for (var j = 1; j < length_1; j++) {\n c = j * a;\n b = previousOffset + c;\n splitColor = { b: b, color: colorMap.color[j] };\n splitColorValueOffset.push(splitColor);\n }\n for (var i = 0; i < splitColorValueOffset.length; i++) {\n if (previousOffset <= value && value <= splitColorValueOffset[i]['b'] && i === 0) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n nextColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ? 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a)\n : (value - splitColorValueOffset[i]['b']) / a;\n }\n else if (splitColorValueOffset[i]['b'] <= value && value <= nextOffset && i === (splitColorValueOffset.length - 1)) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ?\n 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a) : (value - splitColorValueOffset[i]['b']) / a;\n }\n if (i !== splitColorValueOffset.length - 1 && i < splitColorValueOffset.length) {\n if (splitColorValueOffset[i]['b'] <= value && value <= splitColorValueOffset[i + 1]['b']) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n nextColor = splitColorValueOffset[i + 1]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i + 1]['color'] : colorNameToHex(splitColorValueOffset[i + 1]['color']);\n percent = Math.abs((value - splitColorValueOffset[i + 1]['b'])) / a;\n }\n }\n }\n }\n return getPercentageColor(percent, previousColor, nextColor);\n}\n/**\n *\n * @param {number} percent - Specifies the percentage of the color.\n * @param {number} previous - Specifies the previous color.\n * @param {number} next - Specifies the next color.\n * @returns {ColorValue} - Returns the color value object.\n */\nexport function getPercentageColor(percent, previous, next) {\n var nextColor = next.split('#')[1];\n var prevColor = previous.split('#')[1];\n var r = getPercentage(percent, parseInt(prevColor.substr(0, 2), 16), parseInt(nextColor.substr(0, 2), 16));\n var g = getPercentage(percent, parseInt(prevColor.substr(2, 2), 16), parseInt(nextColor.substr(2, 2), 16));\n var b = getPercentage(percent, parseInt(prevColor.substr(4, 2), 16), parseInt(nextColor.substr(4, 2), 16));\n return new ColorValue(r, g, b);\n}\n/**\n *\n * @param {number} percent - Specifies the percentage of the color.\n * @param {number} previous - Specifies the previous color.\n * @param {number} next - Specifies the next color.\n * @returns {number} - Returns the color value.\n */\nexport function getPercentage(percent, previous, next) {\n var full = next - previous;\n return Math.round((previous + (full * percent)));\n}\n/**\n *\n * @param {number} maximumWidth - Specifies the length of the text.\n * @param {string} dataLabel - Specifies the label.\n * @param {FontModel} font - Specifies the font of the label.\n * @returns {string[]} - Returns the labels.\n */\nexport function wordWrap(maximumWidth, dataLabel, font) {\n var textCollection = dataLabel.split(' ');\n var label = '';\n var labelCollection = [];\n var text;\n for (var i = 0, len = textCollection.length; i < len; i++) {\n text = textCollection[i];\n if (measureText(label.concat(text), font).width < maximumWidth) {\n label = label.concat((label === '' ? '' : ' ') + text);\n }\n else {\n if (label !== '') {\n labelCollection.push(textTrim(maximumWidth, label, font));\n label = text;\n }\n else {\n labelCollection.push(textTrim(maximumWidth, text, font));\n text = '';\n }\n }\n if (label && i === len - 1) {\n labelCollection.push(textTrim(maximumWidth, label, font));\n }\n }\n return labelCollection;\n}\n/**\n *\n * @param {number} maxWidth - Specifies the length of the text.\n * @param {string} label - Specifies the label.\n * @param {FontModel} font - Specifies the font of the label.\n * @returns {string[]} - Returns the labels.\n */\nexport function textWrap(maxWidth, label, font) {\n var resultText = [];\n var currentLength = 0;\n var totalWidth = measureText(label, font).width;\n var totalLength = label.length;\n if (maxWidth >= totalWidth) {\n resultText.push(label);\n return resultText;\n }\n else {\n for (var i = label.length; i > currentLength; i--) {\n var sliceString = label.slice(currentLength, i);\n totalWidth = measureText(sliceString, font).width;\n if (totalWidth <= maxWidth) {\n resultText.push(sliceString);\n currentLength += sliceString.length;\n if (totalLength === currentLength) {\n return resultText;\n }\n i = totalLength + 1;\n }\n }\n }\n return resultText;\n}\n/**\n * hide function\n *\n * @param {number} maxWidth - Specifies the maximum width.\n * @param {number} maxHeight - Specifies the maximum height.\n * @param {string} text - Specifies the text.\n * @param {FontModel} font - Specifies the font.\n * @returns {string} - Returns the hidden text.\n * @private\n */\nexport function hide(maxWidth, maxHeight, text, font) {\n var hideText = text;\n var textSize = measureText(text, font);\n hideText = (textSize.width > maxWidth || textSize.height > maxHeight) ? ' ' : text;\n return hideText;\n}\n/**\n *\n * @param {number} a - Specifies the first value of the leaf.\n * @param {number} b - Specifies the second value of the leaf.\n * @returns {number} - Returns whether values are equal or not.\n */\nexport function orderByArea(a, b) {\n if (a['itemArea'] === b['itemArea']) {\n return 0;\n }\n else if (a['itemArea'] < b['itemArea']) {\n return 1;\n }\n return -1;\n}\n/**\n *\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @param {Element} element - Specifies the selected TreeMap leaf item.\n * @param {string} className -Specifies the selected class name.\n * @returns {void}\n */\nexport function maintainSelection(treemap, element, className) {\n var elementId = treemap.levelSelection;\n if (elementId) {\n for (var index = 0; index < elementId.length; index++) {\n if (element.getAttribute('id') === elementId[index]) {\n if (element.childElementCount > 0) {\n element.children[0].setAttribute('class', className);\n applyOptions(element.childNodes[0], {\n border: treemap.selectionSettings.border, fill: treemap.selectionSettings.fill,\n opacity: treemap.selectionSettings.opacity\n });\n }\n }\n else {\n element.setAttribute('class', '');\n }\n }\n }\n}\n/**\n *\n * @param {TreeMap} treemap - Specifies the treemap instance.\n * @param {Element} legendGroup - Specifies the selected element.\n * @returns {void}\n */\nexport function legendMaintain(treemap, legendGroup) {\n var elementId = treemap.legendId;\n if (elementId) {\n for (var i = 0; i < elementId.length; i++) {\n for (var j = 0; j < legendGroup.childElementCount; j++) {\n if (legendGroup.childNodes[j]['id'] === elementId[i]) {\n var treemapSVGRectElement = legendGroup.childNodes[j];\n treemapSVGRectElement.setAttribute('fill', treemap.selectionSettings.fill);\n treemapSVGRectElement.setAttribute('stroke', treemap.selectionSettings.border.color);\n treemapSVGRectElement.setAttribute('stroke-width', (treemap.selectionSettings.border.width).toString());\n treemapSVGRectElement.setAttribute('opacity', treemap.selectionSettings.opacity);\n }\n }\n }\n }\n}\n/**\n *\n * @param {HTMLCollection} elements - Specifies the selected TreeMap element.\n * @param {string} type - Specifies the selection type.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {void}\n */\nexport function removeClassNames(elements, type, treemap) {\n var element;\n var options = {};\n for (var j = 0; j < elements.length; j++) {\n element = isNullOrUndefined(elements[j].childNodes[0]) ? elements[j] :\n elements[j].childNodes[0];\n options = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])]['options'];\n applyOptions(element, options);\n elements[j].classList.remove(type);\n j -= 1;\n }\n}\n/**\n *\n * @param {SVGPathElement} element - Specifies the SVG path element.\n * @param {any} options - Specifies the settings for the SVG path element.\n * @returns {void}\n */\nexport function applyOptions(element, options) {\n element.setAttribute('opacity', options['opacity']);\n if (!isNullOrUndefined(options['fill'])) {\n element.setAttribute('fill', options['fill']);\n }\n element.setAttribute('stroke', options['border']['color']);\n element.setAttribute('stroke-width', options['border']['width']);\n}\n/**\n *\n * @param {string} format - Specifies the format value.\n * @param {any} data - Specifies the data source object.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {string} - Returns the formatted text.\n */\nexport function textFormatter(format, data, treemap) {\n if (isNullOrUndefined(format)) {\n return null;\n }\n var keys = Object.keys(data);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n format = format.split('${' + key + '}').join(formatValue(data[key], treemap).toString());\n }\n return format;\n}\n/**\n *\n * @param {number} value - Specifies the text to be formatted.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {string | number} - Returns the formatted text.\n */\nexport function formatValue(value, treemap) {\n var formatValue;\n var formatFunction;\n if (treemap.format && !isNaN(Number(value))) {\n formatFunction = treemap.intl.getNumberFormat({ format: treemap.format, useGrouping: treemap.useGroupingSeparator });\n formatValue = formatFunction(Number(value));\n }\n else {\n formatValue = value;\n }\n return formatValue ? formatValue : '';\n}\n/**\n * @private\n */\nvar ColorValue = /** @class */ (function () {\n function ColorValue(r, g, b) {\n this.r = r;\n this.g = g;\n this.b = b;\n }\n return ColorValue;\n}());\nexport { ColorValue };\n/**\n * @param {ColorValue} value - Specfies the color value\n * @returns {string} - Returns the string\n * @private\n */\nexport function convertToHexCode(value) {\n return '#' + componentToHex(value.r) + componentToHex(value.g) + componentToHex(value.b);\n}\n/**\n * @param {number} value - Specifies the value\n * @returns {string} - Returns the string\n * @private */\nexport function componentToHex(value) {\n var hex = value.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n}\n/**\n * @param {string} hex - Specifies the hex value\n * @returns {ColorValue} - Returns the color value\n * @private\n */\nexport function convertHexToColor(hex) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? new ColorValue(parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)) :\n new ColorValue(255, 255, 255);\n}\n/**\n * @param {string} color - Specifies the color\n * @returns {string} - Returns the string\n * @private\n */\nexport function colorNameToHex(color) {\n color = color === 'transparent' ? 'white' : color;\n var element = document.getElementById('treeMapMeasureText');\n element.style.color = color;\n color = window.getComputedStyle(element).color;\n var isRGBValue = color.replace(/[()RGBrgba ]/g, '').split(',');\n return convertToHexCode(new ColorValue(parseInt(isRGBValue[0], 10), parseInt(isRGBValue[1], 10), parseInt(isRGBValue[2], 10)));\n}\n/**\n * @param {Location} location - Specifies the location\n * @param {string} shape - Specifies the shape\n * @param {Size} size - Specifies the size\n * @param {string} url - Specifies the url\n * @param {PathOption} options - Specifies the options\n * @param {string} label - Specifies the label\n * @returns {Element} - Returns the element\n * @private\n */\nexport function drawSymbol(location, shape, size, url, options, label) {\n var svgRenderer = new SvgRenderer('');\n var temp = renderLegendShape(location, size, shape, options, url);\n var htmlElement = svgRenderer['draw' + temp.functionName](temp.renderOption);\n htmlElement.setAttribute('aria-label', label);\n htmlElement.setAttribute('role', 'region');\n return htmlElement;\n}\n/**\n * @param {Location} location - Specifies the location\n * @param {Size} size - Specifies the size\n * @param {string} shape - Specifies the shape\n * @param {PathOption} options - Specifies the path option\n * @param {string} url - Specifies the string\n * @returns {IShapes} - Returns the shapes\n * @private\n */\nexport function renderLegendShape(location, size, shape, options, url) {\n var renderPath;\n var functionName = 'Path';\n var shapeWidth = size.width;\n var shapeHeight = size.height;\n var shapeX = location.x;\n var shapeY = location.y;\n var x = location.x + (-shapeWidth / 2);\n var y = location.y + (-shapeHeight / 2);\n switch (shape) {\n case 'Circle':\n case 'Bubble':\n functionName = 'Ellipse';\n merge(options, { 'rx': shapeWidth / 2, 'ry': shapeHeight / 2, 'cx': shapeX, 'cy': shapeY });\n break;\n case 'VerticalLine':\n renderPath = 'M' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' + 'L' + ' ' + shapeX + ' '\n + (shapeY + (-shapeHeight / 2));\n merge(options, { 'd': renderPath });\n break;\n case 'Diamond':\n renderPath = 'M' + ' ' + x + ' ' + shapeY + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + shapeY + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + shapeY + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Rectangle':\n renderPath = 'M' + ' ' + x + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (-shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Triangle':\n renderPath = 'M' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (-shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (shapeY + (shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'InvertedTriangle':\n renderPath = 'M' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX - (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' ' +\n 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + (shapeY - (shapeHeight / 2)) + ' z';\n merge(options, { 'd': renderPath });\n break;\n case 'Pentagon':\n // eslint-disable-next-line no-case-declarations\n var eq = 72;\n // eslint-disable-next-line no-case-declarations\n var xValue = void 0;\n // eslint-disable-next-line no-case-declarations\n var yValue = void 0;\n for (var i = 0; i <= 5; i++) {\n xValue = (shapeWidth / 2) * Math.cos((Math.PI / 180) * (i * eq));\n yValue = (shapeWidth / 2) * Math.sin((Math.PI / 180) * (i * eq));\n if (i === 0) {\n renderPath = 'M' + ' ' + (shapeX + xValue) + ' ' + (shapeY + yValue) + ' ';\n }\n else {\n renderPath = renderPath.concat('L' + ' ' + (shapeX + xValue) + ' ' + (shapeY + yValue) + ' ');\n }\n }\n renderPath = renderPath.concat('Z');\n merge(options, { 'd': renderPath });\n break;\n case 'Star':\n renderPath = 'M ' + (location.x + size.width / 3) + ' ' + (location.y - size.height / 2) + ' L ' + (location.x - size.width / 2)\n + ' ' + (location.y + size.height / 6) + ' L ' + (location.x + size.width / 2) + ' ' + (location.y + size.height / 6)\n + ' L ' + (location.x - size.width / 3) + ' ' + (location.y - size.height / 2) + ' L ' + location.x + ' ' +\n (location.y + size.height / 2) + ' L ' + (location.x + size.width / 3) + ' ' + (location.y - size.height / 2) + ' Z';\n merge(options, { 'd': renderPath });\n break;\n case 'Cross':\n renderPath = 'M' + ' ' + x + ' ' + shapeY + ' ' + 'L' + ' ' + (shapeX + (shapeWidth / 2)) + ' ' + shapeY + ' ' +\n 'M' + ' ' + shapeX + ' ' + (shapeY + (shapeHeight / 2)) + ' ' + 'L' + ' ' + shapeX + ' ' +\n (shapeY + (-shapeHeight / 2));\n merge(options, { 'd': renderPath });\n break;\n case 'Image':\n functionName = 'Image';\n merge(options, { 'href': url, 'height': shapeHeight, 'width': shapeWidth, x: x, y: y });\n break;\n }\n return { renderOption: options, functionName: functionName };\n}\n/**\n *\n * @param {any} data - Specifies the data source object.\n * @param {any} item - Specifies the leaf item.\n * @returns {boolean} - Returns whether the TreeMap item is level item or leaf item.\n */\nexport function isParentItem(data, item) {\n var isParentItem = false;\n for (var j = 0; j < data.length; j++) {\n if (item['levelOrderName'] === data[j]['levelOrderName']) {\n isParentItem = true;\n break;\n }\n }\n return isParentItem;\n}\n/**\n * Specifies the data to be received through Ajax request for treemap.\n */\nvar TreeMapAjax = /** @class */ (function () {\n function TreeMapAjax(options, type, async, contentType, sendData) {\n this.dataOptions = options;\n this.type = type || 'GET';\n this.async = async || true;\n this.contentType = contentType;\n this.sendData = sendData;\n }\n return TreeMapAjax;\n}());\nexport { TreeMapAjax };\n/**\n *\n * @param {any[]} collection - Specifies the legend collection.\n * @returns {void}\n * @private\n */\nexport function removeShape(collection) {\n if (collection.length > 0) {\n for (var i = 0; i < collection.length; i++) {\n var item = collection[i];\n setColor(item['legendEle'], item['oldFill'], item['oldOpacity'], item['oldBorderColor'], item['oldBorderWidth']);\n }\n }\n}\n/**\n *\n * @param {any[]} collection - Specifies the legend collection.\n * @returns {void}\n * @private\n */\nexport function removeLegend(collection) {\n if (collection.length > 0) {\n for (var j = 0; j < collection.length; j++) {\n var item = collection[j];\n setColor(item['legendEle'], item['oldFill'], item['oldOpacity'], item['oldBorderColor'], item['oldBorderWidth']);\n var dataCount = item['ShapeCollection']['Elements'].length;\n for (var k = 0; k < dataCount; k++) {\n setColor(item['ShapeCollection']['Elements'][k], item['shapeOldFill'], item['shapeOldOpacity'], item['shapeOldBorderColor'], item['shapeOldBorderWidth']);\n }\n }\n }\n}\n/**\n *\n * @param {Element} element - Specifies the selected element.\n * @param {string} fill - Specifies the fill color.\n * @param {string} opacity - Specifies the opacity.\n * @param {string} borderColor - Specifies the border color.\n * @param {string} borderWidth - Specifies the border width.\n * @returns {void}\n */\nexport function setColor(element, fill, opacity, borderColor, borderWidth) {\n element.setAttribute('fill', fill);\n element.setAttribute('opacity', opacity);\n element.setAttribute('stroke', borderColor);\n element.setAttribute('stroke-width', borderWidth);\n}\n/**\n *\n * @param {any[]} collection - Specifies the selected item collection.\n * @param {any[]} element - Specifies the selected element collection.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {void}\n */\nexport function removeSelectionWithHighlight(collection, element, treemap) {\n removeShape(collection);\n element = [];\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n}\n/**\n *\n * @param {number} length - Specifies the length of the legend group.\n * @param {any} item - Specifies the legend item.\n * @param {TreeMap} treemap - Specifies the TreeMap instance.\n * @returns {number} - Returns the legend index.\n */\nexport function getLegendIndex(length, item, treemap) {\n var index;\n for (var i = 0; i < length; i++) {\n var dataLength = treemap.treeMapLegendModule.legendCollections[i]['legendData'].length;\n for (var j = 0; j < dataLength; j++) {\n if (treemap.treeMapLegendModule.legendCollections[i]['legendData'][j]['levelOrderName'] === item['levelOrderName']) {\n index = i;\n break;\n }\n }\n }\n return index;\n}\n/**\n *\n * @param {any[]} collection - Specifies the legend collection.\n * @param {number} index - Specifies the index of legend.\n * @param {number} number - Specifies the leaf item index.\n * @param {Element} legendElement - Specifies the legend element.\n * @param {Element} shapeElement - Specifies the shape element.\n * @param {any[]} renderItems - Specifies the item index.\n * @param {any[]} legendCollection - Specifies the legend collection.\n * @returns {void}\n */\nexport function pushCollection(collection, index, number, legendElement, shapeElement, renderItems, legendCollection) {\n collection.push({\n legendEle: legendElement, oldFill: legendCollection[index]['legendFill'],\n oldOpacity: legendCollection[index]['opacity'], oldBorderColor: legendCollection[index]['borderColor'],\n oldBorderWidth: legendCollection[index]['borderWidth'],\n shapeElement: shapeElement, shapeOldFill: renderItems[number]['options']['fill'],\n shapeOldOpacity: renderItems[number]['options']['opacity'],\n shapeOldBorderColor: renderItems[number]['options']['border']['color'],\n shapeOldBorderWidth: renderItems[number]['options']['border']['width']\n });\n}\n/**\n * To trigger the download element\n *\n * @param {string} fileName - Specifies the file name\n * @param {ExportType} type - Specifies the type\n * @param {string} url - Specifies the url\n * @param {boolean} isDownload - Specifies the boolean value\n * @returns {void}\n * @private\n */\nexport function triggerDownload(fileName, type, url, isDownload) {\n createElement('a', {\n attrs: {\n 'download': fileName + '.' + type.toLocaleLowerCase(),\n 'href': url\n }\n }).dispatchEvent(new MouseEvent(isDownload ? 'click' : 'move', {\n view: window,\n bubbles: false,\n cancelable: true\n }));\n}\n/**\n *\n * @param {string} id - Specifies the id of the element to be removed.\n * @returns {void}\n */\nexport function removeElement(id) {\n var element = document.getElementById(id);\n return element ? remove(element) : null;\n}\n","/**\n * Maps Themes doc\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Theme;\n(function (Theme) {\n /**\n * @private\n */\n Theme.mapsTitleFont = {\n size: '14px',\n fontWeight: 'Medium',\n color: '#424242',\n fontStyle: 'Medium',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n})(Theme || (Theme = {}));\n/**\n * To get the theme style based on treemap theme.\n *\n * @param {TreeMapTheme} theme Specifies the theme of the treemap control.\n * @returns {IThemeStyle} Returns the theme.\n * @private\n */\nexport function getThemeStyle(theme) {\n var style;\n var color;\n switch (theme.toLowerCase()) {\n case 'materialdark':\n color = '#303030';\n break;\n case 'fabricdark':\n color = '#201F1F';\n break;\n case 'bootstrapdark':\n color = '#1A1A1A';\n break;\n }\n switch (theme.toLowerCase()) {\n case 'bootstrapdark':\n case 'fabricdark':\n case 'materialdark':\n style = {\n backgroundColor: color,\n titleFontColor: '#FFFFFF',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n tooltipFontSize: '13px',\n legendTitleColor: '#DADADA',\n legendTextColor: '#DADADA',\n fontSize: '15px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n break;\n case 'highcontrast':\n style = {\n backgroundColor: '#000000',\n titleFontColor: '#FFFFFF',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n tooltipFontSize: '13px',\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontSize: '15px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n break;\n case 'bootstrap4':\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#212529',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#212529',\n tooltipFillColor: '#000000',\n tooltipFontColor: '#FFFFFF',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 0.9,\n legendTitleColor: '#212529',\n legendTextColor: '#212529',\n fontFamily: 'HelveticaNeue-Medium',\n fontSize: '16px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'HelveticaNeue'\n };\n break;\n case 'tailwind':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#374151',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#374151',\n tooltipFillColor: '#111827',\n tooltipFontColor: '#F9FAFB',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#374151',\n legendTextColor: '#374151',\n fontFamily: 'Inter',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter'\n };\n break;\n case 'tailwinddark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#D1D5DB',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#D1D5DB',\n tooltipFillColor: '#F9FAFB',\n tooltipFontColor: '#1F2937',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#D1D5DB',\n legendTextColor: '#D1D5DB',\n fontFamily: 'Inter',\n fontWeight: 'Normal',\n fontSize: '14px',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Inter'\n };\n break;\n case 'bootstrap5':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#212529',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#212529',\n tooltipFillColor: '#212529',\n tooltipFontColor: '#F9FAFB',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#212529',\n legendTextColor: '#212529',\n fontFamily: 'Helvetica Neue',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Helvetica Neue'\n };\n break;\n case 'bootstrap5dark':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#FFFFFF',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#FFFFFF',\n tooltipFillColor: '#E9ECEF',\n tooltipFontColor: '#212529',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#FFFFFF',\n legendTextColor: '#FFFFFF',\n fontFamily: 'Helvetica Neue',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Helvetica Neue'\n };\n break;\n case 'fluent':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#201F1E',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#201F1E',\n tooltipFillColor: '#FFFFFF',\n tooltipFontColor: '#323130',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#201F1E',\n legendTextColor: '#201F1E',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI'\n };\n break;\n case 'fluentdark':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#F3F2F1',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#F3F2F1',\n tooltipFillColor: '#252423',\n tooltipFontColor: '#F3F2F1',\n tooltipFontSize: '13px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#F3F2F1',\n legendTextColor: '#F3F2F1',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n fontWeight: 'Normal',\n subtitleFontSize: '12px',\n legendFontSize: '12px',\n labelFontFamily: 'Segoe UI'\n };\n break;\n case 'material3':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#1C1B1F',\n titleFontWeight: '500',\n subTitleFontColor: '#1C1B1F',\n tooltipFillColor: '#313033',\n tooltipFontColor: '#F4EFF4',\n tooltipFontSize: '14px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#1C1B1F',\n legendTextColor: '#49454E',\n fontFamily: 'Roboto',\n fontSize: '16px',\n fontWeight: '400',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'Roboto'\n };\n break;\n case 'material3dark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#E6E1E5',\n titleFontWeight: '500',\n subTitleFontColor: '#E6E1E5',\n tooltipFillColor: '#E6E1E5',\n tooltipFontColor: '#313033',\n tooltipFontSize: '14px',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n legendTitleColor: '#E6E1E5',\n legendTextColor: '#CAC4D0',\n fontFamily: 'Roboto',\n fontSize: '16px',\n fontWeight: '400',\n subtitleFontSize: '14px',\n legendFontSize: '14px',\n labelFontFamily: 'Roboto'\n };\n break;\n default:\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#424242',\n titleFontWeight: 'Normal',\n subTitleFontColor: '#424242',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n tooltipFontSize: '13px',\n legendTitleColor: '#353535',\n legendTextColor: '#353535',\n fontSize: '15px',\n fontWeight: 'Normal',\n subtitleFontSize: '14px',\n legendFontSize: '13px',\n fontFamily: 'Roboto, Noto, Sans-serif'\n };\n break;\n }\n return style;\n}\n","/**\n * TreeMap constants doc\n */\n/**\n * Triggers when the treemap is on load.\n *\n * @private\n */\nexport var load = 'load';\n/**\n * Triggers after treemap rendered.\n *\n * @private\n */\nexport var loaded = 'loaded';\n/**\n * Trigger before call the print method.\n *\n * @private\n */\nexport var beforePrint = 'beforePrint';\n/**\n * Trigger before each treemap item rendered.\n *\n * @private\n */\nexport var itemRendering = 'itemRendering';\n/**\n * Trigger after click on treemap item.\n *\n * @private\n */\nexport var drillStart = 'drillStart';\n/**\n * Trigger after drill start event completed.\n *\n * @private\n */\nexport var drillEnd = 'drillEnd';\n/**\n * Trigger after select the treemap item.\n *\n * @private\n */\nexport var itemSelected = 'itemSelected';\n/**\n * Trigger after hover on the treemap item.\n *\n * @private\n */\nexport var itemHighlight = 'itemHighlight';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport var tooltipRendering = 'tooltipRendering';\n/**\n * Trigger after click on the treemap item.\n *\n * @private\n */\nexport var itemClick = 'itemClick';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport var itemMove = 'itemMove';\n/**\n * Trigger after click on the treemap item.\n *\n * @private\n */\nexport var click = 'click';\n/**\n * Trigger after double click on the treemap item.\n *\n * @private\n */\nexport var doubleClick = 'doubleClick';\n/**\n * Trigger after right click on the treemap item.\n *\n * @private\n */\nexport var rightClick = 'rightClick';\n/**\n * Trigger after mouse hover on the treemap item.\n *\n * @private\n */\nexport var mouseMove = 'mouseMove';\n/**\n * Trigger before each treemap item.\n *\n * @private\n */\nexport var legendItemRendering = 'legendItemRendering';\n/**\n * Trigger before legend items.\n *\n * @private\n */\nexport var legendRendering = 'legendRendering';\n/**\n * Trigger after resize the treemap.\n *\n * @private\n */\nexport var resize = 'resize';\n/**\n * Define the font family in treemap.\n *\n * @private\n */\nexport var defaultFont = 'Roboto, Segoe UI, Noto, Sans-serif';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * Maps base doc\n */\nimport { Property, ChildProperty, Complex, Collection } from '@syncfusion/ej2-base';\nimport { defaultFont } from './constants';\n/**\n * Sets and gets the options for customizing the color and width of the border in treemap.\n */\nvar Border = /** @class */ (function (_super) {\n __extends(Border, _super);\n function Border() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('#808080')\n ], Border.prototype, \"color\", void 0);\n __decorate([\n Property(0)\n ], Border.prototype, \"width\", void 0);\n return Border;\n}(ChildProperty));\nexport { Border };\n/**\n * Sets and gets the margin for the treemap.\n */\nvar Margin = /** @class */ (function (_super) {\n __extends(Margin, _super);\n function Margin() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(10)\n ], Margin.prototype, \"left\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"right\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"top\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"bottom\", void 0);\n return Margin;\n}(ChildProperty));\nexport { Margin };\n/**\n * Sets and gets the options to customize the style of the text contents in the treemap.\n */\nvar Font = /** @class */ (function (_super) {\n __extends(Font, _super);\n function Font() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], Font.prototype, \"size\", void 0);\n __decorate([\n Property(null)\n ], Font.prototype, \"color\", void 0);\n __decorate([\n Property(defaultFont)\n ], Font.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('')\n ], Font.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontStyle\", void 0);\n __decorate([\n Property(1)\n ], Font.prototype, \"opacity\", void 0);\n return Font;\n}(ChildProperty));\nexport { Font };\n/**\n * Sets and gets the options for customizing the title of the treemap.\n */\nvar CommonTitleSettings = /** @class */ (function (_super) {\n __extends(CommonTitleSettings, _super);\n function CommonTitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], CommonTitleSettings.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], CommonTitleSettings.prototype, \"description\", void 0);\n return CommonTitleSettings;\n}(ChildProperty));\nexport { CommonTitleSettings };\n/**\n * Sets and gets the options for customizing the subtitle of the treemap.\n */\nvar SubTitleSettings = /** @class */ (function (_super) {\n __extends(SubTitleSettings, _super);\n function SubTitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ fontFamily: null, fontWeight: null }, Font)\n ], SubTitleSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property('Center')\n ], SubTitleSettings.prototype, \"alignment\", void 0);\n return SubTitleSettings;\n}(CommonTitleSettings));\nexport { SubTitleSettings };\n/**\n * Sets and gets the options for customizing the title of the treemap.\n */\nvar TitleSettings = /** @class */ (function (_super) {\n __extends(TitleSettings, _super);\n function TitleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ fontFamily: null, fontWeight: null }, Font)\n ], TitleSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property('Center')\n ], TitleSettings.prototype, \"alignment\", void 0);\n __decorate([\n Complex({}, SubTitleSettings)\n ], TitleSettings.prototype, \"subtitleSettings\", void 0);\n return TitleSettings;\n}(CommonTitleSettings));\nexport { TitleSettings };\n/**\n * Sets and gets the options to customize the color-mapping in treemap.\n */\nvar ColorMapping = /** @class */ (function (_super) {\n __extends(ColorMapping, _super);\n function ColorMapping() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"from\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"to\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"color\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"label\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"minOpacity\", void 0);\n __decorate([\n Property(null)\n ], ColorMapping.prototype, \"maxOpacity\", void 0);\n __decorate([\n Property(true)\n ], ColorMapping.prototype, \"showLegend\", void 0);\n return ColorMapping;\n}(ChildProperty));\nexport { ColorMapping };\n/**\n * Sets and gets the options for customizing the legend of the treemap.\n */\nvar LegendSettings = /** @class */ (function (_super) {\n __extends(LegendSettings, _super);\n function LegendSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('Default')\n ], LegendSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('transparent')\n ], LegendSettings.prototype, \"background\", void 0);\n __decorate([\n Property('Circle')\n ], LegendSettings.prototype, \"shape\", void 0);\n __decorate([\n Property('')\n ], LegendSettings.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], LegendSettings.prototype, \"height\", void 0);\n __decorate([\n Complex({ size: '12px', fontFamily: null, fontWeight: null }, Font)\n ], LegendSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], LegendSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(15)\n ], LegendSettings.prototype, \"shapeWidth\", void 0);\n __decorate([\n Property(15)\n ], LegendSettings.prototype, \"shapeHeight\", void 0);\n __decorate([\n Property(10)\n ], LegendSettings.prototype, \"shapePadding\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"imageUrl\", void 0);\n __decorate([\n Complex({ color: '#000000', width: 0 }, Border)\n ], LegendSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ color: '#000000', width: 0 }, Border)\n ], LegendSettings.prototype, \"shapeBorder\", void 0);\n __decorate([\n Complex({}, CommonTitleSettings)\n ], LegendSettings.prototype, \"title\", void 0);\n __decorate([\n Complex({ size: '14px' }, Font)\n ], LegendSettings.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('Bottom')\n ], LegendSettings.prototype, \"position\", void 0);\n __decorate([\n Property('None')\n ], LegendSettings.prototype, \"orientation\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"invertedPointer\", void 0);\n __decorate([\n Property('After')\n ], LegendSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('None')\n ], LegendSettings.prototype, \"labelDisplayMode\", void 0);\n __decorate([\n Property('Center')\n ], LegendSettings.prototype, \"alignment\", void 0);\n __decorate([\n Property({ x: 0, y: 0 })\n ], LegendSettings.prototype, \"location\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"showLegendPath\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"valuePath\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"removeDuplicateLegend\", void 0);\n return LegendSettings;\n}(ChildProperty));\nexport { LegendSettings };\n/**\n * Sets and gets the settings for drill down to visualize the treemap rendered in the initial state.\n */\nvar InitialDrillSettings = /** @class */ (function (_super) {\n __extends(InitialDrillSettings, _super);\n function InitialDrillSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], InitialDrillSettings.prototype, \"groupIndex\", void 0);\n __decorate([\n Property(null)\n ], InitialDrillSettings.prototype, \"groupName\", void 0);\n return InitialDrillSettings;\n}(ChildProperty));\nexport { InitialDrillSettings };\n/**\n * Sets and gets the options for customizing the leaf item of the treemap.\n */\nvar LeafItemSettings = /** @class */ (function (_super) {\n __extends(LeafItemSettings, _super);\n function LeafItemSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(false)\n ], LeafItemSettings.prototype, \"autoFill\", void 0);\n __decorate([\n Complex({}, Border)\n ], LeafItemSettings.prototype, \"border\", void 0);\n __decorate([\n Property(0)\n ], LeafItemSettings.prototype, \"gap\", void 0);\n __decorate([\n Property(10)\n ], LeafItemSettings.prototype, \"padding\", void 0);\n __decorate([\n Property(1)\n ], LeafItemSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LeafItemSettings.prototype, \"showLabels\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelPath\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelFormat\", void 0);\n __decorate([\n Property('TopLeft')\n ], LeafItemSettings.prototype, \"labelPosition\", void 0);\n __decorate([\n Complex({ color: null, size: '12px' }, Font)\n ], LeafItemSettings.prototype, \"labelStyle\", void 0);\n __decorate([\n Property(null)\n ], LeafItemSettings.prototype, \"labelTemplate\", void 0);\n __decorate([\n Property('Center')\n ], LeafItemSettings.prototype, \"templatePosition\", void 0);\n __decorate([\n Property('Trim')\n ], LeafItemSettings.prototype, \"interSectAction\", void 0);\n __decorate([\n Collection([], ColorMapping)\n ], LeafItemSettings.prototype, \"colorMapping\", void 0);\n return LeafItemSettings;\n}(ChildProperty));\nexport { LeafItemSettings };\n/**\n * Sets and gets the options for customizing the tooltip of the treemap.\n */\nvar TooltipSettings = /** @class */ (function (_super) {\n __extends(TooltipSettings, _super);\n function TooltipSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('')\n ], TooltipSettings.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(0.75)\n ], TooltipSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(['Circle'])\n ], TooltipSettings.prototype, \"markerShapes\", void 0);\n __decorate([\n Complex({}, Border)\n ], TooltipSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ fontFamily: defaultFont, size: null, fontWeight: null }, Font)\n ], TooltipSettings.prototype, \"textStyle\", void 0);\n return TooltipSettings;\n}(ChildProperty));\nexport { TooltipSettings };\n/**\n * Sets and gets the options for customizing the selection of the leaf items in treemap.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], SelectionSettings.prototype, \"fill\", void 0);\n __decorate([\n Property('0.5')\n ], SelectionSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, Border)\n ], SelectionSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Item')\n ], SelectionSettings.prototype, \"mode\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Sets and gets the options for customizing the highlighting of the treemap item,\n * when the mouse hover is performed in it.\n */\nvar HighlightSettings = /** @class */ (function (_super) {\n __extends(HighlightSettings, _super);\n function HighlightSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], HighlightSettings.prototype, \"enable\", void 0);\n __decorate([\n Property('#808080')\n ], HighlightSettings.prototype, \"fill\", void 0);\n __decorate([\n Property('0.5')\n ], HighlightSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, Border)\n ], HighlightSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Item')\n ], HighlightSettings.prototype, \"mode\", void 0);\n return HighlightSettings;\n}(ChildProperty));\nexport { HighlightSettings };\n/**\n * Sets and gets the options for customizing the level leaf items of the treemap.\n */\nvar LevelSettings = /** @class */ (function (_super) {\n __extends(LevelSettings, _super);\n function LevelSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"groupPath\", void 0);\n __decorate([\n Property(0)\n ], LevelSettings.prototype, \"groupGap\", void 0);\n __decorate([\n Property(10)\n ], LevelSettings.prototype, \"groupPadding\", void 0);\n __decorate([\n Complex({}, Border)\n ], LevelSettings.prototype, \"border\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(false)\n ], LevelSettings.prototype, \"autoFill\", void 0);\n __decorate([\n Property(1)\n ], LevelSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LevelSettings.prototype, \"showHeader\", void 0);\n __decorate([\n Property(20)\n ], LevelSettings.prototype, \"headerHeight\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], LevelSettings.prototype, \"headerFormat\", void 0);\n __decorate([\n Property('Near')\n ], LevelSettings.prototype, \"headerAlignment\", void 0);\n __decorate([\n Complex({ color: null, size: '13px' }, Font)\n ], LevelSettings.prototype, \"headerStyle\", void 0);\n __decorate([\n Property('TopLeft')\n ], LevelSettings.prototype, \"templatePosition\", void 0);\n __decorate([\n Collection([], ColorMapping)\n ], LevelSettings.prototype, \"colorMapping\", void 0);\n return LevelSettings;\n}(ChildProperty));\nexport { LevelSettings };\n","import { Rect, itemsToOrder, TextOption, measureText, textTrim, hide, wordWrap, textWrap, getTemplateFunction, convertElement, findLabelLocation, PathOption, textFormatter, colorNameToHex, convertHexToColor, colorMap, measureElement, convertToContainer, convertToRect, getShortestEdge, getArea, orderByArea, isParentItem, maintainSelection } from '../utils/helper';\nimport { isNullOrUndefined, createElement, extend } from '@syncfusion/ej2-base';\nimport { findChildren, renderTextElement } from '../utils/helper';\nimport { itemRendering } from '../model/constants';\n/**\n * To calculate and render the shape layer\n */\nvar LayoutPanel = /** @class */ (function () {\n function LayoutPanel(treemap) {\n this.treemap = treemap;\n }\n LayoutPanel.prototype.processLayoutPanel = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data;\n var totalRect;\n if (this.treemap.treemapLevelData.levelsData && this.treemap.treemapLevelData.levelsData.length > 0) {\n data = (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) &&\n !isNullOrUndefined(this.treemap.initialDrillDown.groupName)) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length === 0) ?\n this.getDrilldownData(this.treemap.treemapLevelData.levelsData[0], [])[0] : this.treemap.treemapLevelData.levelsData[0];\n totalRect = extend({}, this.treemap.areaRect, totalRect, false);\n if (!isNullOrUndefined(this.treemap.treeMapLegendModule) && !isNullOrUndefined(this.treemap.totalRect)) {\n if (this.treemap.legendSettings.position !== 'Float') {\n totalRect = this.treemap.totalRect;\n }\n }\n if (!isNullOrUndefined(this.treemap.currentLevel) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? !isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length !== 0)) {\n var count = this.treemap.drilledItems.length - 1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var x = this.treemap.drilledItems[count]['data'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var y = {};\n y[this.treemap.drilledItems[count]['data']['groupName']] = [x];\n if (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) && !this.treemap.enableBreadcrumb) {\n this.treemap.currentLevel = this.treemap.drilledItems[count]['data']['groupIndex'];\n }\n this.calculateLayoutItems(y || this.treemap.treemapLevelData.levelsData[0], totalRect);\n this.renderLayoutItems();\n }\n else {\n if (!isNullOrUndefined(this.treemap.initialDrillDown.groupIndex) &&\n (isNullOrUndefined(this.treemap.drilledItems) ? isNullOrUndefined(this.treemap.drilledItems)\n : this.treemap.drilledItems.length === 0)) {\n this.treemap.currentLevel = this.treemap.initialDrillDown.groupIndex;\n }\n this.calculateLayoutItems(data || this.treemap.treemapLevelData.levelsData[0], totalRect);\n this.renderLayoutItems();\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getDrilldownData = function (data, drillData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var treemap = this.treemap;\n var newData = {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n if (child && child.length > 0 && drillData.length === 0) {\n for (var i = 0; i < child.length; i++) {\n if (child[i]['groupIndex'] === treemap.initialDrillDown.groupIndex &&\n child[i]['name'] === treemap.initialDrillDown.groupName) {\n child[i]['isDrilled'] = true;\n newData[child[i]['groupName']] = [child[i]];\n drillData.push(newData);\n }\n }\n for (var j = 0; j < child.length; j++) {\n this.getDrilldownData(child[j], drillData);\n }\n }\n return drillData;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n LayoutPanel.prototype.calculateLayoutItems = function (data, rect) {\n this.renderItems = [];\n this.parentData = [];\n if (!isNullOrUndefined(this.treemap.weightValuePath)) {\n if (this.treemap.layoutType.indexOf('SliceAndDice') > -1) {\n this.computeSliceAndDiceDimensional(data, rect);\n }\n else {\n rect.height = rect.height + rect.y;\n rect.width = rect.width + rect.x;\n this.computeSquarifyDimensional(data, rect);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeSliceAndDiceDimensional = function (data, coords) {\n var leafItem = this.treemap.leafItemSettings;\n var rect;\n var groups = this.treemap.levels;\n var groupIndex;\n var isLeafItem = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var children = findChildren(data)['values'];\n var gap;\n var headerHeight;\n if (children && children.length > 0) {\n this.sliceAndDiceProcess(children, coords);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < children.length; i++) {\n groupIndex = children[i]['groupIndex'];\n isLeafItem = (groups.length === 0 || groupIndex === groups.length);\n gap = isLeafItem ? leafItem.gap : groups[groupIndex].groupGap;\n headerHeight = groups.length === 0 ? 0 : groups[groupIndex] ? groups[groupIndex].showHeader ?\n groups[groupIndex].headerHeight : 0 : groups[groupIndex - 1].showHeader ?\n groups[groupIndex - 1].headerHeight : 0;\n rect = children[i]['rect'];\n rect = new Rect(rect.x + (gap / 2), rect.y + (headerHeight + (gap / 2)), rect.width - gap, Math.abs(rect.height - (gap + headerHeight)));\n this.computeSliceAndDiceDimensional(children[i], rect);\n }\n }\n }\n return data;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.sliceAndDiceProcess = function (processData, rect) {\n var parentArea = rect.height * rect.width;\n var levels = this.treemap.levels;\n var childValue;\n var alottedValue = 0;\n var totalWeight = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n processData.forEach(function (data) { totalWeight += data['weight']; });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n processData.forEach(function (child) {\n child['weightArea'] = parentArea * child['weight'] / totalWeight;\n });\n var isHorizontal = (this.treemap.layoutType === 'SliceAndDiceAuto') ? (rect.width > rect.height) :\n (this.treemap.layoutType === 'SliceAndDiceHorizontal');\n processData.sort(itemsToOrder);\n for (var i = 0; i < processData.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = processData[i];\n item['isLeafItem'] = (levels.length === 0) || ((this.treemap.isHierarchicalData ||\n isNullOrUndefined(this.treemap.leafItemSettings.labelPath)) ?\n item['groupIndex'] === levels.length - 1 : item['groupIndex'] === this.treemap.levels.length);\n if (isHorizontal) {\n childValue = ((parentArea / totalWeight) * processData[i]['weight']) / rect.height;\n if (alottedValue <= rect.width) {\n processData[i]['rect'] = new Rect(alottedValue + rect.x, rect.y, childValue, rect.height);\n }\n }\n else {\n childValue = ((parentArea / totalWeight) * processData[i]['weight']) / rect.width;\n if (alottedValue <= rect.height) {\n processData[i]['rect'] = new Rect(rect.x, alottedValue + rect.y, rect.width, childValue);\n }\n }\n alottedValue += childValue;\n this.renderItems.push(processData[i]);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeSquarifyDimensional = function (data, coords) {\n var leaf = this.treemap.leafItemSettings;\n var rect;\n var levels = this.treemap.levels;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n var index;\n var padding;\n var headerHeight;\n if (child && child.length > 0) {\n if (this.parentData.length === 0) {\n this.parentData = [];\n this.parentData.push(child);\n }\n this.calculateChildrenLayout(data, child, coords);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < child.length; i++) {\n item = child[i];\n index = item['groupIndex'];\n rect = item['rect'];\n padding = (item['isLeafItem'] ? leaf.padding : levels[index].groupPadding) / 2;\n headerHeight = this.treemap.isHierarchicalData ? index === 0 && item['isLeafItem'] ? 0 : levels[index] ?\n levels[index].showHeader ? levels[index].headerHeight : 0 : 0 :\n (levels.length === 0) ? 0 : levels[index] ?\n levels[index].showHeader ? levels[index].headerHeight : 0 : 0;\n rect = new Rect(rect.x + padding, rect.y + (headerHeight + padding), rect.width - padding, rect.height - padding);\n if (!item['isLeafItem'] && item['weight'] > 0) {\n this.computeSquarifyDimensional(child[i], rect);\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.calculateChildrenLayout = function (parent, children, coords) {\n this.computeTotalArea(children, getArea(coords));\n children.sort(orderByArea);\n this.performRowsLayout(children, [], coords, []);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.performRowsLayout = function (data, currentRow, rect, stack) {\n var dataLength = data.length;\n if (dataLength === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newCoordinates = this.getCoordinates(currentRow, rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newStack = stack.concat(newCoordinates);\n return newStack;\n }\n var width = getShortestEdge(rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var nextDatum = data[0];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var restData = data.slice(1, dataLength);\n if (this.aspectRatio(currentRow, nextDatum, width)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newRow = currentRow.concat(nextDatum);\n return this.performRowsLayout(restData, newRow, rect, stack);\n }\n else {\n var currentRowLength = currentRow.length;\n var valueSum = 0;\n for (var i = 0; i < currentRowLength; i += 1) {\n valueSum += currentRow[i]['itemArea'];\n }\n var newContainer = this.cutArea(rect, valueSum);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newCoordinates = this.getCoordinates(currentRow, rect);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newStack = stack.concat(newCoordinates);\n return this.performRowsLayout(data, [], newContainer, newStack);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.aspectRatio = function (currentRow, nextDatum, length) {\n if (currentRow.length === 0) {\n return true;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newRow = currentRow.concat(nextDatum);\n var currentMaxAspectRatio = this.findMaxAspectRatio(currentRow, length);\n var newMaxAspectRatio = this.findMaxAspectRatio(newRow, length);\n return (currentMaxAspectRatio >= newMaxAspectRatio);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.findMaxAspectRatio = function (row, length) {\n var rowLength = row.length;\n var minArea = Infinity;\n var maxArea = -Infinity;\n var sumArea = 0;\n for (var i = 0; i < rowLength; i += 1) {\n var area = row[i]['itemArea'];\n if (area < minArea) {\n minArea = area;\n }\n if (area > maxArea) {\n maxArea = area;\n }\n sumArea += area;\n }\n var result = Math.max((Math.pow(length, 2)) * maxArea / (Math.pow(sumArea, 2)), (Math.pow(sumArea, 2)) /\n ((Math.pow(length, 2)) * minArea));\n return result;\n };\n LayoutPanel.prototype.cutArea = function (rect, area) {\n var newContainer = convertToContainer(rect);\n var width = newContainer.width;\n var height = newContainer.height;\n var xOffset = newContainer.x;\n var yOffset = newContainer.y;\n if (width >= height) {\n var areaWidth = area / height;\n var newWidth = width - areaWidth;\n var container = {\n x: xOffset + areaWidth,\n y: yOffset,\n width: newWidth,\n height: height\n };\n return convertToRect(container);\n }\n else {\n var areaHeight = area / width;\n var newHeight = height - areaHeight;\n var container = {\n x: xOffset,\n y: yOffset + areaHeight,\n width: width,\n height: newHeight\n };\n return convertToRect(container);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getCoordinates = function (row, rect) {\n var container = convertToContainer(rect);\n var width = container.width;\n var height = container.height;\n var xOffset = container.x;\n var yOffset = container.y;\n var rowLength = row.length;\n var levels = this.treemap.levels;\n var leaf = this.treemap.leafItemSettings;\n var index;\n var valueSum = 0;\n for (var i = 0; i < rowLength; i += 1) {\n valueSum += row[i]['itemArea'];\n }\n var areaWidth = valueSum / height;\n var areaHeight = valueSum / width;\n var subXOffset = xOffset;\n var subYOffset = yOffset;\n var padding;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var coordinates = [];\n var isParent;\n var parentRect;\n for (var i = 0; i < rowLength; i += 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = row[i];\n index = item['groupIndex'];\n item['isLeafItem'] = (levels.length === 0) || (this.treemap.isHierarchicalData ? index === levels.length :\n isNullOrUndefined(leaf.labelPath) ? false : index === levels.length);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isParent = isParentItem(this.parentData[0], item);\n parentRect = isParent ? this.treemap.areaRect : item['parent'].rect;\n padding = item['isLeafItem'] ? leaf.padding : levels[index].groupPadding;\n if (width >= height) {\n var y1 = subYOffset + item['itemArea'] / areaWidth;\n item['rect'] = {\n x: subXOffset,\n y: subYOffset,\n width: subXOffset + areaWidth,\n height: y1\n };\n subYOffset = y1;\n }\n else {\n var x1 = subXOffset + item['itemArea'] / areaHeight;\n item['rect'] = {\n x: subXOffset,\n y: subYOffset,\n width: x1,\n height: subYOffset + areaHeight\n };\n subXOffset = x1;\n }\n if (item['weight'] > 0 && (isParent || (Math.round(rect.y + (padding / 2)) <=\n Math.round(parentRect.y + (parentRect.height - parentRect.y)) && Math.round(rect.x + (padding / 2)) <=\n Math.round(parentRect.x + (parentRect.width - parentRect.x))))) {\n this.renderItems.push(item);\n coordinates.push(item);\n }\n }\n return coordinates;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.computeTotalArea = function (data, area) {\n var dataLength = data.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var result = [];\n for (var i = 0; i < dataLength; i += 1) {\n var dataLength_1 = data.length;\n var dataSum = 0;\n for (var i_1 = 0; i_1 < dataLength_1; i_1 += 1) {\n dataSum += data[i_1]['weight'];\n }\n var multiplier = area / dataSum;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var datum = void 0;\n for (var j = 0; j < dataLength_1; j++) {\n datum = data[j];\n datum['itemArea'] = datum['weight'] * multiplier;\n result.push(datum);\n }\n }\n return result;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n LayoutPanel.prototype.onDemandProcess = function (childItems) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentItem = {};\n var totalRect;\n parentItem = childItems[0]['parent'];\n this.treemap.currentLevel = parentItem['isDrilled'] ? parentItem['groupIndex'] : null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentItemGroupname = {};\n if (isNullOrUndefined(parentItem['groupName'])) {\n parentItemGroupname = parentItem;\n }\n else {\n parentItemGroupname[parentItem['groupName']] = [parentItem];\n }\n totalRect = extend({}, this.treemap.areaRect, totalRect, false);\n if (!isNullOrUndefined(this.treemap.treeMapLegendModule) && !isNullOrUndefined(this.treemap.totalRect)) {\n totalRect = this.treemap.totalRect;\n }\n var count = this.treemap.levels.length;\n for (var i = 0; i < count; i++) {\n var levelCount = childItems[0]['groupIndex'];\n if (count === levelCount) {\n this.treemap.levels[count] = this.treemap.levels[i];\n }\n else {\n this.treemap.levels.splice(count - 1, 1);\n }\n }\n this.calculateLayoutItems(parentItemGroupname, totalRect);\n this.renderLayoutItems();\n };\n // eslint-disable-next-line valid-jsdoc\n /** @private */\n LayoutPanel.prototype.renderLayoutItems = function () {\n var _this = this;\n var position;\n var treeMap = this.treemap;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var txtVisible;\n var getItemColor;\n var eventArgs;\n this.renderer = treeMap.renderer;\n var pathOptions;\n var elementID = treeMap.element.id;\n var index;\n var templatePosition;\n var mode = treeMap.layoutType;\n var rect;\n var format;\n var interSectAction = this.treemap.leafItemSettings.interSectAction;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var fill;\n var item;\n var renderText;\n var opacity;\n var rectPath = '';\n var secondaryEle = document.getElementById(treeMap.element.id + '_Secondary_Element');\n var groupId;\n var templateEle;\n var gap;\n var textStyle;\n var levels = treeMap.levels;\n this.layoutGroup = this.renderer.createGroup({ id: elementID + '_TreeMap_' + mode + '_Layout' });\n var itemGroup;\n var template;\n var border;\n var templateGroup = createElement('div', {\n id: treeMap.element.id + '_Label_Template_Group',\n className: 'template'\n });\n templateGroup.style.cssText = 'overflow: hidden; position: absolute;pointer-events: none;' +\n 'top:' + treeMap.areaRect.y + 'px;' +\n 'left:' + treeMap.areaRect.x + 'px;' +\n 'height:' + treeMap.areaRect.height + 'px;' +\n 'width:' + treeMap.areaRect.width + 'px;';\n var isLeafItem = false;\n var leaf = treeMap.leafItemSettings;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childItems;\n var connectorText;\n var _loop_1 = function (i) {\n item = this_1.renderItems[i];\n index = item['groupIndex'];\n if (this_1.treemap.drillDownView && isNullOrUndefined(this_1.treemap.currentLevel)\n && index > 0 || this_1.treemap.drillDownView\n && index > (this_1.treemap.currentLevel + 1)) {\n return \"continue\";\n }\n rect = item['rect'];\n isLeafItem = item['isLeafItem'];\n groupId = elementID + '_Level_Index_' + index + '_Item_Index_' + i;\n itemGroup = this_1.renderer.createGroup({ id: groupId + '_Group' });\n gap = (isLeafItem ? leaf.gap : levels[index].groupGap) / 2;\n var treemapItemRect = this_1.treemap.totalRect ? convertToContainer(this_1.treemap.totalRect) : this_1.treemap.areaRect;\n if (treeMap.layoutType === 'Squarified') {\n rect.width = Math.abs(rect.x - rect.width) - gap;\n rect.height = Math.abs(rect.y - rect.height) - gap;\n }\n if (treeMap.renderDirection === 'TopRightBottomLeft') {\n rect.x = (treemapItemRect.x + treemapItemRect.width) - rect.width - Math.abs(treemapItemRect.x - rect.x);\n }\n else if (treeMap.renderDirection === 'BottomLeftTopRight') {\n rect.y = (treemapItemRect.y + treemapItemRect.height) - rect.height - Math.abs(treemapItemRect.y - rect.y);\n }\n else if (treeMap.renderDirection === 'BottomRightTopLeft') {\n rect.x = (treemapItemRect.x + treemapItemRect.width) - rect.width - Math.abs(treemapItemRect.x - rect.x);\n rect.y = (treemapItemRect.y + treemapItemRect.height) - rect.height - Math.abs(treemapItemRect.y - rect.y);\n }\n getItemColor = this_1.getItemColor(isLeafItem, item);\n fill = getItemColor['fill'];\n opacity = getItemColor['opacity'];\n format = isLeafItem ? leaf.labelFormat : (levels[index]).headerFormat;\n var levelName;\n txtVisible = isLeafItem ? leaf.showLabels : (levels[index]).showHeader;\n if (index === this_1.treemap.currentLevel) {\n if (this_1.treemap.enableBreadcrumb) {\n var re = /#/gi;\n connectorText = '#' + this_1.treemap.breadcrumbConnector + '#';\n levelName = item['levelOrderName'].replace(re, connectorText);\n levelName = index !== 0 ? '#' + levelName : levelName;\n }\n else {\n levelName = item['name'];\n }\n }\n else {\n if (this_1.treemap.enableBreadcrumb) {\n item['isDrilled'] = false;\n }\n levelName = item['name'];\n }\n renderText = textFormatter(format, item['data'], this_1.treemap) || levelName || 'undefined';\n childItems = findChildren(item)['values'];\n renderText = !isLeafItem && childItems && childItems.length > 0 && this_1.treemap.enableDrillDown ?\n !item['isDrilled'] ? treeMap.enableRtl ? renderText + ' [+]' : '[+] ' + renderText :\n treeMap.enableRtl ? renderText + ' [-]' : '[-] ' + renderText : renderText;\n textStyle = (isLeafItem ? leaf.labelStyle : levels[index].headerStyle);\n textStyle.fontFamily = this_1.treemap.themeStyle.labelFontFamily || textStyle.fontFamily;\n textStyle.fontWeight = textStyle.fontWeight || this_1.treemap.themeStyle.fontWeight;\n border = isLeafItem ? leaf.border : levels[index].border;\n position = !isLeafItem ? (levels[index].headerAlignment) === 'Near' ? 'TopLeft' : (levels[index].headerAlignment) === 'Center' ?\n 'TopCenter' : 'TopRight' : leaf.labelPosition;\n templatePosition = isLeafItem ? leaf.templatePosition : levels[index].templatePosition;\n template = isLeafItem ? leaf.labelTemplate : levels[index].headerTemplate;\n item['options'] = { border: border, opacity: opacity, fill: fill };\n eventArgs = {\n cancel: false, name: itemRendering, treemap: this_1.treemap, text: renderText,\n currentItem: item, RenderItems: this_1.renderItems, options: item['options']\n };\n this_1.treemap.trigger(itemRendering, eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n rectPath = ' M ' + rect.x + ' ' + rect.y + ' L ' + (rect.x + rect.width) + ' ' + rect.y +\n ' L ' + (rect.x + rect.width) + ' ' + (rect.y + rect.height) + ' L ' + rect.x + ' ' + (rect.y + rect.height) + 'z';\n pathOptions = new PathOption(groupId + '_RectPath', fill, border.width, border.color, opacity, null, rectPath);\n var path = _this.renderer.drawPath(pathOptions);\n itemGroup.appendChild(path);\n if (txtVisible) {\n if (eventArgs.text !== renderText) {\n eventArgs.text = textFormatter(eventArgs.text, item['data'], _this.treemap) || levelName;\n }\n _this.renderItemText(eventArgs.text.toString(), itemGroup, textStyle, rect, interSectAction, groupId, fill, position, connectorText);\n }\n if (template) {\n templateEle = _this.renderTemplate(secondaryEle, groupId, rect, templatePosition, template, item, isLeafItem);\n if (!isNullOrUndefined(templateEle)) {\n templateGroup.appendChild(templateEle);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.treemap.renderReactTemplates();\n }\n }\n itemGroup.setAttribute('aria-label', item['name']);\n if ((_this.treemap.enableDrillDown && isLeafItem) || (_this.treemap.selectionSettings.enable || _this.treemap.highlightSettings.enable)) {\n itemGroup.setAttribute('role', 'button');\n itemGroup.setAttribute('tabindex', (_this.treemap.tabIndex + i + 2).toString());\n itemGroup.style.cursor = _this.treemap.highlightSettings.enable && !_this.treemap.selectionSettings.enable && (_this.treemap.enableDrillDown && item['groupIndex'] == (_this.treemap.levels.length - 1)) ? 'default' :\n _this.treemap.highlightSettings.enable && !_this.treemap.selectionSettings.enable && !_this.treemap.enableDrillDown ? 'default' : 'pointer';\n }\n else {\n itemGroup.setAttribute('role', 'region');\n }\n maintainSelection(_this.treemap, itemGroup, 'treeMapSelection');\n _this.layoutGroup.appendChild(itemGroup);\n }\n });\n };\n var this_1 = this;\n for (var i = 0; i < this.renderItems.length; i++) {\n _loop_1(i);\n }\n if (templateGroup.childNodes.length > 0) {\n secondaryEle.appendChild(templateGroup);\n }\n this.treemap.svgObject.appendChild(this.layoutGroup);\n };\n LayoutPanel.prototype.renderItemText = function (text, parentElement, textStyle, rect, interSectAction, groupId, fill, position, connectorText) {\n var padding = 5;\n var textSize;\n var textCollection = [];\n var customText;\n var tspanText = [];\n var height = 0;\n var textName;\n textCollection = ((text.indexOf('<br>')) !== -1) ? text.split('<br>') : null;\n customText = this.labelInterSectAction(rect, text, textStyle, interSectAction);\n textSize = measureText(textCollection && textCollection[0] || customText[0], textStyle);\n if (this.treemap.enableRtl) {\n var labelSize = measureText(text, textStyle);\n var drillSymbolCount = text.search('[+]') || text.search('[-]');\n if (rect.width < labelSize.width && drillSymbolCount > 0) {\n var label = text.substring(drillSymbolCount - 1, text.length);\n var drillSymbol = '[+]';\n var drillSymbolSize = measureText(drillSymbol, textStyle);\n customText['0'] = textTrim(rect.width - drillSymbolSize.width - padding, customText[0], textStyle) + label;\n }\n }\n var textLocation = findLabelLocation(rect, position, textSize, 'Text', this.treemap);\n if (!isNullOrUndefined(textCollection)) {\n var collection = [];\n var texts = null;\n var maxNumber = [];\n for (var i = 0; i < textCollection.length; i++) {\n texts = textTrim((rect.width - 5), textCollection[i], textStyle);\n textSize = measureText(texts, textStyle);\n height += textSize.height;\n maxNumber.push(textSize.width);\n collection.push(texts);\n }\n customText = collection;\n textSize.width = Math.max.apply(null, maxNumber);\n textSize.height = height;\n }\n if (interSectAction === 'WrapByWord' || interSectAction === 'Wrap' || interSectAction === 'Trim') {\n for (var j = 0; j < customText.length; j++) {\n textSize = measureText(customText[j], textStyle);\n height += textSize.height;\n if ((rect.height - padding) > height) {\n tspanText.push(customText[j]);\n }\n }\n if (interSectAction === 'Wrap' && customText.length !== tspanText.length && tspanText.length) {\n var collectionLength = tspanText.length - 1;\n var stringText = tspanText[collectionLength];\n stringText = stringText.substring(0, (stringText.length - 1)) + '...';\n tspanText.splice(collectionLength);\n if (stringText !== '...') {\n tspanText.push(stringText);\n }\n }\n }\n else {\n textName = customText;\n tspanText.push(textName);\n }\n var textOptions = new TextOption(groupId + '_Text', textLocation.x, textLocation.y, 'start', tspanText, '', '', connectorText);\n renderTextElement(textOptions, textStyle, textStyle.color || this.getSaturatedColor(fill), parentElement);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LayoutPanel.prototype.getItemColor = function (isLeafItem, item) {\n var treemap = this.treemap;\n var itemFill = isLeafItem ? treemap.leafItemSettings.fill : treemap.levels[item['groupIndex']].fill;\n var itemOpacity = isLeafItem ? treemap.leafItemSettings.opacity : treemap.levels[item['groupIndex']].opacity;\n if (!isNullOrUndefined(treemap.treemapLevelData.defaultLevelsData)) {\n if (treemap.treemapLevelData.defaultLevelsData.length > 0) {\n treemap.treemapLevelData.levelsData = treemap.treemapLevelData.defaultLevelsData;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentData = findChildren(treemap.treemapLevelData.levelsData[0])['values'];\n var colorMapping = isLeafItem ? treemap.leafItemSettings.colorMapping :\n treemap.levels[item['groupIndex']].colorMapping;\n if (colorMapping.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var option = colorMap(colorMapping, item['data'][treemap.equalColorValuePath], item['data'][treemap.rangeColorValuePath]);\n itemFill = !isNullOrUndefined(option['fill']) ? option['fill'] : treemap.leafItemSettings.fill;\n itemOpacity = option['opacity'];\n }\n else {\n for (var i = 0; i < parentData.length; i++) {\n if (parentData[i]['levelOrderName'] === item['levelOrderName'].split('#')[0]) {\n itemFill = !isNullOrUndefined(itemFill) ? itemFill : !isNullOrUndefined(treemap.colorValuePath) ?\n parentData[i]['data'][treemap.colorValuePath] : treemap.palette.length > 0 ?\n treemap.palette[i % treemap.palette.length] : '#808080';\n }\n }\n }\n return { fill: itemFill, opacity: itemOpacity };\n };\n /**\n * To find saturated color for datalabel\n *\n * @param {string} color - Specifies the color\n * @returns {string} - Returns the color\n */\n LayoutPanel.prototype.getSaturatedColor = function (color) {\n var saturatedColor = color;\n saturatedColor = (saturatedColor === 'transparent') ? window.getComputedStyle(document.body, null).backgroundColor : saturatedColor;\n var rgbValue = convertHexToColor(colorNameToHex(saturatedColor));\n var contrast = Math.round((rgbValue.r * 299 + rgbValue.g * 587 + rgbValue.b * 114) / 1000);\n return contrast >= 128 ? 'black' : 'white';\n };\n LayoutPanel.prototype.renderTemplate = function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, max-len\n secondaryEle, groupId, rect, position, template, item, isLeafItem) {\n var templateId = isLeafItem ? groupId + '_LabelTemplate' : groupId + '_HeaderTemplate';\n var baseTemplateId = isLeafItem ? '_LabelTemplate' : '_HeaderTemplate';\n if (isNullOrUndefined(template['prototype']) && typeof template === 'string') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var keys = Object.keys(item['data']);\n for (var i = 0; i < keys.length; i++) {\n var regExp = RegExp;\n template = template.replace(new regExp('{{:' + keys[i] + '}}', 'g'), item['data'][keys[i].toString()]);\n }\n }\n var labelElement;\n if (!isNullOrUndefined(document.getElementById(this.treemap.element.id + '_Secondary_Element'))) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateFn = getTemplateFunction(template);\n var templateElement = templateFn(item['data'], this.treemap, template, this.treemap.element.id + baseTemplateId, false);\n labelElement = convertElement(templateElement, templateId, item['data']);\n var templateSize = measureElement(labelElement, secondaryEle);\n var templateLocation = findLabelLocation(rect, position, templateSize, 'Template', this.treemap);\n labelElement.style.left = templateLocation.x + 'px';\n labelElement.style.top = templateLocation.y + 'px';\n }\n return labelElement;\n };\n LayoutPanel.prototype.labelInterSectAction = function (rect, text, textStyle, alignment) {\n var textValue;\n var maxWidth = rect.width - 10;\n switch (alignment) {\n case 'Hide':\n textValue = [hide(maxWidth, rect.height, text, textStyle)];\n break;\n case 'Trim':\n textValue = [textTrim((maxWidth + 3), text, textStyle)];\n break;\n case 'WrapByWord':\n textValue = wordWrap(maxWidth, text, textStyle);\n break;\n case 'Wrap':\n textValue = textWrap(maxWidth, text, textStyle);\n break;\n }\n return textValue;\n };\n /**\n *\n * @returns {void}\n * @private\n */\n LayoutPanel.prototype.destroy = function () {\n this.treemap = null;\n this.currentRect = null;\n this.layoutGroup = null;\n this.renderer = null;\n this.renderItems = [];\n this.parentData = [];\n };\n return LayoutPanel;\n}());\nexport { LayoutPanel };\n","import { print as printFunction, createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getElement } from '../utils/helper';\nimport { beforePrint } from '../model/constants';\n/**\n * Print module handles the print functionality for treemap.\n *\n * @hidden\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n function Print(control) {\n }\n /**\n * This method is used to perform the print functionality in treemap.\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param { string[] | string | Element} elements - Specifies the element.\n * @returns {void}\n * @private\n */\n Print.prototype.print = function (treeMap, elements) {\n var printWindow = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n printWindow.moveTo(0, 0);\n printWindow.resizeTo(screen.availWidth, screen.availHeight);\n var argsData = {\n cancel: false, htmlContent: this.getHTMLContent(treeMap, elements), name: beforePrint\n };\n treeMap.trigger(beforePrint, argsData, function () {\n if (!argsData.cancel) {\n printFunction(argsData.htmlContent, printWindow);\n }\n });\n };\n /**\n * To get the html string of the Maps\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param {string[] | string | Element} elements - Specifies the element\n * @returns {Element} - Returns the element\n * @private\n */\n Print.prototype.getHTMLContent = function (treeMap, elements) {\n var div = createElement('div');\n if (elements) {\n if (elements instanceof Array) {\n elements.forEach(function (value) {\n div.appendChild(getElement(value).cloneNode(true));\n });\n }\n else if (elements instanceof Element) {\n div.appendChild(elements.cloneNode(true));\n }\n else {\n div.appendChild(getElement(elements).cloneNode(true));\n }\n }\n else {\n var exportElement = treeMap.element.cloneNode(true);\n var backgroundElement = exportElement.getElementsByTagName('svg')[0];\n if (!isNullOrUndefined(backgroundElement)) {\n backgroundElement = backgroundElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n var backgroundColor = backgroundElement.getAttribute('fill');\n if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n backgroundElement.setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n backgroundElement.setAttribute('fill', 'rgba(0, 0, 0, 1)');\n }\n }\n }\n div.appendChild(exportElement);\n }\n return div;\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n Print.prototype.getModuleName = function () {\n // Returns te module name\n return 'Print';\n };\n /**\n * To destroy the Print module.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n Print.prototype.destroy = function () { };\n return Print;\n}());\nexport { Print };\n","import { createElement, Browser, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { triggerDownload } from '../utils/helper';\n/**\n * ImageExport module handles the export to image functionality for treemap.\n *\n * @hidden\n */\nvar ImageExport = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n function ImageExport(control) {\n }\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param {ExportType} type - Specifies the type of the image file.\n * @param {string} fileName - Specifies the file name of the image file.\n * @param {boolean} allowDownload - Specifies whether to download the file or not.\n * @returns {Promise} - Returns the promise string.\n * @private\n */\n ImageExport.prototype.export = function (treeMap, type, fileName, allowDownload) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n var promise = new Promise(function (resolve, reject) {\n var element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'height': treeMap.availableSize.height.toString(),\n 'width': treeMap.availableSize.width.toString()\n }\n });\n var exportElement = treeMap.svgObject.cloneNode(true);\n var backgroundElement = exportElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n var backgroundColor = backgroundElement.getAttribute('fill');\n if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(0, 0, 0, 1)');\n }\n }\n var isDownload = !(Browser.userAgent.toString().indexOf('HeadlessChrome') > -1);\n var svgData = '<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">' +\n exportElement.outerHTML +\n '</svg>';\n var url = window.URL.createObjectURL(new Blob(type === 'SVG' ? [svgData] :\n [(new XMLSerializer()).serializeToString(exportElement)], { type: 'image/svg+xml' }));\n if (type === 'SVG') {\n if (allowDownload) {\n triggerDownload(fileName, type, url, isDownload);\n }\n else {\n resolve(null);\n }\n }\n else {\n var image_1 = new Image();\n var context_1 = element.getContext('2d');\n image_1.onload = (function () {\n context_1.drawImage(image_1, 0, 0);\n window.URL.revokeObjectURL(url);\n if (allowDownload) {\n triggerDownload(fileName, type, element.toDataURL('image/png').replace('image/png', 'image/octet-stream'), isDownload);\n }\n else {\n if (type === 'JPEG') {\n resolve(element.toDataURL('image/jpeg'));\n }\n else if (type === 'PNG') {\n resolve(element.toDataURL('image/png'));\n }\n }\n });\n image_1.src = url;\n }\n });\n return promise;\n };\n ImageExport.prototype.getModuleName = function () {\n // Returns te module name\n return 'ImageExport';\n };\n /**\n * To destroy the ImageExport.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n ImageExport.prototype.destroy = function () { };\n return ImageExport;\n}());\nexport { ImageExport };\n","import { createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { PdfPageOrientation, PdfDocument, PdfBitmap } from '@syncfusion/ej2-pdf-export';\n/**\n * PdfExport module handles the export to pdf functionality for treemap.\n *\n * @hidden\n */\nvar PdfExport = /** @class */ (function () {\n /**\n * Constructor for Maps\n *\n * @param {TreeMap} control - Specifies the treemap instance\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n function PdfExport(control) {\n }\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {TreeMap} treeMap - Specifies the treemap instance.\n * @param {ExportType} type - Specifies the type of the document.\n * @param {string} fileName - Specifies the name of the document.\n * @param {PdfPageOrientation} orientation - Specifies the orientation of the PDF document to export the treemap.\n * @param {boolean} allowDownload - Specifies whether to download the document or not.\n * @returns {Promise} - Returns the string.\n * @private\n */\n PdfExport.prototype.export = function (treeMap, type, fileName, orientation, allowDownload) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n var promise = new Promise(function (resolve, reject) {\n var element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'width': treeMap.availableSize.width.toString(),\n 'height': treeMap.availableSize.height.toString()\n }\n });\n orientation = isNullOrUndefined(orientation) ? PdfPageOrientation.Landscape : orientation;\n var exportElement = treeMap.svgObject.cloneNode(true);\n var backgroundElement = exportElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n var backgroundColor = backgroundElement.getAttribute('fill');\n if ((treeMap.theme === 'Tailwind' || treeMap.theme === 'Bootstrap5' || treeMap.theme === 'Fluent' || treeMap.theme === 'Material3') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n else if ((treeMap.theme === 'TailwindDark' || treeMap.theme === 'Bootstrap5Dark' || treeMap.theme === 'FluentDark' || treeMap.theme === 'Material3Dark') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(0, 0, 0, 1)');\n }\n }\n var url = window.URL.createObjectURL(new Blob([(new XMLSerializer()).serializeToString(exportElement)], { type: 'image/svg+xml' }));\n var image = new Image();\n var context = element.getContext('2d');\n image.onload = (function () {\n context.drawImage(image, 0, 0);\n window.URL.revokeObjectURL(url);\n var document = new PdfDocument();\n var imageString = element.toDataURL('image/jpeg').replace('image/jpeg', 'image/octet-stream');\n document.pageSettings.orientation = orientation;\n imageString = imageString.slice(imageString.indexOf(',') + 1);\n document.pages.add().graphics.drawImage(new PdfBitmap(imageString), 0, 0, (treeMap.availableSize.width - 60), treeMap.availableSize.height);\n if (allowDownload) {\n document.save(fileName + '.pdf');\n document.destroy();\n }\n else {\n resolve(null);\n }\n });\n image.src = url;\n });\n return promise;\n };\n PdfExport.prototype.getModuleName = function () {\n // Returns te module name\n return 'PdfExport';\n };\n /**\n * To destroy the PdfExport.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n PdfExport.prototype.destroy = function () { };\n return PdfExport;\n}());\nexport { PdfExport };\n","/**\n * Tree Map Components\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, NotifyPropertyChanges, Property, extend, Fetch } from '@syncfusion/ej2-base';\nimport { Complex, Collection } from '@syncfusion/ej2-base';\nimport { Event, Internationalization } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\nimport { isNullOrUndefined, createElement, EventHandler, Browser, remove } from '@syncfusion/ej2-base';\nimport { Border, Margin, TitleSettings, LegendSettings, InitialDrillSettings } from './model/base';\nimport { SelectionSettings, TooltipSettings, LevelSettings, LeafItemSettings, HighlightSettings } from './model/base';\nimport { Size, stringToNumber, RectOption, Rect, textTrim, measureText, findChildren, removeElement, setItemTemplateContent } from '../treemap/utils/helper';\nimport { removeClassNames, removeShape, textFormatter } from '../treemap/utils/helper';\nimport { findPosition, TextOption, renderTextElement, isContainsData, TreeMapAjax } from '../treemap/utils/helper';\nimport { load, loaded, drillStart, drillEnd } from '../treemap/model/constants';\nimport { itemClick, itemMove, click, mouseMove, resize, doubleClick, rightClick } from '../treemap/model/constants';\nimport { LayoutPanel } from './layout/render-panel';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { getThemeStyle } from './model/theme';\nimport { Print } from './model/print';\nimport { ImageExport } from './model/image-export';\nimport { PdfExport } from './model/pdf-export';\n/**\n * Represents the treemap control. It is used to visualize both hierarchical and flat data.\n * ```html\n * <div id=\"container\"/>\n * <script>\n * var treemap = new TreeMap();\n * treemap.appendTo(\"#container\");\n * </script>\n * ```\n */\nvar TreeMap = /** @class */ (function (_super) {\n __extends(TreeMap, _super);\n /**\n * Constructor for TreeMap.\n *\n * @param {TreeMapModel} options - Specifies the treemap instance.\n * @param {string | HTMLElement} element - Specifies the treemap element.\n */\n function TreeMap(options, element) {\n var _this = _super.call(this, options, element) || this;\n /**\n * resize the treemap\n */\n _this.isResize = false;\n /** @private */\n _this.orientation = 'Horizontal';\n /** @private */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.drilledItems = [];\n /** @private */\n _this.isHierarchicalData = false;\n /** @private */\n _this.levelSelection = [];\n /** @private */\n _this.legendId = [];\n return _this;\n }\n TreeMap.prototype.preRender = function () {\n var _this = this;\n this.trigger(load, { treemap: this }, function () {\n _this.initPrivateVariable();\n _this.unWireEVents();\n _this.createSvg();\n _this.wireEVents();\n _this.setCulture();\n });\n };\n TreeMap.prototype.render = function () {\n this.renderElements();\n };\n TreeMap.prototype.renderElements = function () {\n this.treemapLevelData = new LevelsData();\n this.treemapLevelData.levelsData = null;\n this.treemapLevelData.defaultLevelsData = null;\n this.treemapLevelData.hierarchyData = null;\n this.createSecondaryElement();\n this.addTabIndex();\n this.themeStyle = getThemeStyle(this.theme);\n this.renderBorder();\n this.renderTitle(this.titleSettings, 'title', null, null);\n if (!isNullOrUndefined(this.treemapLevelData.levelsData)) {\n this.treemapLevelData.defaultLevelsData = this.treemapLevelData.levelsData;\n }\n this.processDataManager();\n };\n TreeMap.prototype.processDataManager = function () {\n var _this = this;\n var dataModule;\n var queryModule;\n var fetchApiModule;\n var localAjax;\n if (this.dataSource instanceof DataManager) {\n dataModule = this.dataSource;\n queryModule = this.query instanceof Query ? this.query : new Query();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataManager = dataModule.executeQuery(queryModule);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataManager.then(function (e) {\n _this.dataSource = e['result'];\n _this.renderTreeMapElements();\n });\n }\n else if (this.dataSource instanceof TreeMapAjax) {\n localAjax = this.dataSource;\n fetchApiModule = new Fetch(localAjax.dataOptions, localAjax.type, localAjax.contentType);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fetchApiModule.onSuccess = function (args) {\n if (!isNullOrUndefined(args.type) && args.type === 'application/octet-stream') {\n var reader_1 = new FileReader();\n var treemap_1 = _this;\n reader_1.onload = function (data) {\n args = JSON.parse(reader_1.result.toString());\n treemap_1.dataSource = args;\n treemap_1.renderTreeMapElements();\n };\n reader_1.readAsText(args);\n }\n else {\n _this.dataSource = args;\n _this.renderTreeMapElements();\n }\n };\n fetchApiModule.send(localAjax.sendData);\n }\n else {\n this.renderTreeMapElements();\n }\n };\n TreeMap.prototype.renderTreeMapElements = function () {\n this.processingData();\n if (this.treeMapLegendModule && this.legendSettings.visible) {\n this.treeMapLegendModule.renderLegend();\n }\n this.layout.processLayoutPanel();\n this.element.appendChild(this.svgObject);\n this.elementChange();\n this.trigger(loaded, { treemap: this, isResized: this.isResize });\n this.isResize = false;\n this.renderComplete();\n };\n TreeMap.prototype.createSvg = function () {\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n if (isNullOrUndefined(this.renderer)) {\n this.renderer = new SvgRenderer(this.element.id);\n }\n if (isNullOrUndefined(this.layout)) {\n this.layout = new LayoutPanel(this);\n }\n this.clearTemplate();\n var containerWidth = this.element.clientWidth;\n var containerHeight = this.element.clientHeight;\n this.availableSize = new Size(stringToNumber(this.width, containerWidth) || containerWidth || 600, stringToNumber(this.height, containerHeight) || containerHeight || 450);\n this.svgObject = this.renderer.createSvg({\n id: this.element.id + '_svg',\n width: this.availableSize.width,\n height: this.availableSize.height\n });\n };\n /**\n * To initilize the private varibales of treemap.\n *\n * @returns {void}\n */\n TreeMap.prototype.initPrivateVariable = function () {\n if (this.element.id === '') {\n var collection = document.getElementsByClassName('e-treemap').length;\n this.element.id = 'treemap_control_' + collection;\n }\n this.renderer = new SvgRenderer(this.element.id);\n this.layout = new LayoutPanel(this);\n };\n TreeMap.prototype.createSecondaryElement = function () {\n var secondaryEle = document.getElementById(this.element.id + '_Secondary_Element');\n if (secondaryEle && secondaryEle.childElementCount > 0) {\n secondaryEle.parentNode.removeChild(secondaryEle);\n }\n if (isNullOrUndefined(document.getElementById(this.element.id + '_Secondary_Element'))) {\n var secondaryElement = createElement('div', {\n id: this.element.id + '_Secondary_Element'\n });\n secondaryElement.style.cssText = 'position: absolute;z-index:1;';\n this.element.appendChild(secondaryElement);\n }\n };\n TreeMap.prototype.elementChange = function () {\n if (this.treeMapLegendModule && this.legendSettings.visible && this.treeMapLegendModule.legendGroup && this.layout.layoutGroup\n && !isNullOrUndefined(this.svgObject) && !isNullOrUndefined(document.getElementById(this.layout.layoutGroup.id))\n && !isNullOrUndefined(document.getElementById(this.treeMapLegendModule.legendGroup.id))) {\n this.svgObject.insertBefore(this.layout.layoutGroup, this.treeMapLegendModule.legendGroup);\n }\n };\n /**\n * Render the treemap border\n *\n * @private\n * @returns {void}\n */\n TreeMap.prototype.renderBorder = function () {\n var width = this.border.width;\n var borderElement = this.svgObject.querySelector('#' + this.element.id + '_TreeMap_Border');\n if ((this.border.width > 0 || (this.background || this.themeStyle.backgroundColor)) && isNullOrUndefined(borderElement)) {\n var borderRect = new RectOption(this.element.id + '_TreeMap_Border', this.background || this.themeStyle.backgroundColor, this.border, 1, new Rect(width / 2, width / 2, this.availableSize.width - width, this.availableSize.height - width));\n this.svgObject.appendChild(this.renderer.drawRectangle(borderRect));\n }\n else if (borderElement) {\n borderElement.setAttribute('fill', this.background || this.themeStyle.backgroundColor);\n }\n };\n TreeMap.prototype.renderTitle = function (title, type, bounds, groupEle) {\n var style = {\n color: title.textStyle.color, size: title.textStyle.size, fontFamily: title.textStyle.fontFamily,\n fontStyle: title.textStyle.fontStyle, fontWeight: title.textStyle.fontWeight, opacity: title.textStyle.opacity\n };\n var height;\n var titlePadding = 10;\n var width = (this.availableSize.width - this.margin.right - this.margin.left);\n style.fontFamily = style.fontFamily || this.themeStyle.fontFamily;\n style.fontWeight = style.fontWeight || this.themeStyle.titleFontWeight;\n style.size = style.size || (type === 'title' ? this.themeStyle.fontSize : this.themeStyle.subtitleFontSize);\n if (title.text) {\n if (isNullOrUndefined(groupEle)) {\n groupEle = this.renderer.createGroup({ id: this.element.id + '_Title_Group' });\n }\n var trimmedTitle = textTrim(width, title.text, style);\n var elementSize = measureText(trimmedTitle, style);\n var rect = (isNullOrUndefined(bounds)) ? new Rect(this.margin.left, this.margin.top, this.availableSize.width, this.availableSize.height) : bounds;\n var location_1 = findPosition(rect, title.alignment, elementSize, type);\n var options = new TextOption(this.element.id + '_TreeMap_' + type, location_1.x, location_1.y, 'start', trimmedTitle);\n var titleBounds = new Rect(location_1.x, location_1.y, elementSize.width, elementSize.height);\n var element = renderTextElement(options, style, style.color || (type === 'title' ? this.themeStyle.titleFontColor : this.themeStyle.subTitleFontColor), groupEle);\n element.setAttribute('aria-label', title.description || title.text);\n element.setAttribute('role', '');\n element.setAttribute('tabindex', (this.tabIndex + (type === 'title' ? 1 : 2)).toString());\n if ((type === 'title' && !title.subtitleSettings.text) || (type === 'subtitle')) {\n height = (this.availableSize.height - titleBounds.y - titlePadding - this.margin.bottom);\n this.areaRect = new Rect(this.margin.left, titleBounds.y + titlePadding, width, height);\n }\n if (type !== 'subtitle' && title.subtitleSettings.text) {\n this.renderTitle(title.subtitleSettings, 'subtitle', titleBounds, groupEle);\n }\n else {\n this.svgObject.appendChild(groupEle);\n }\n }\n else {\n height = (this.availableSize.height - this.margin.top - this.margin.bottom);\n this.areaRect = new Rect(this.margin.left, this.margin.top, width, height);\n }\n };\n TreeMap.prototype.processingData = function () {\n var _this = this;\n var path;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource = this.dataSource;\n if (!isNullOrUndefined(this.dataSource) && this.dataSource.length > 0 && this.weightValuePath) {\n this.treemapLevelData.levelsData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource.map(function (data) {\n data[_this.weightValuePath] = (data[_this.weightValuePath]) ? data[_this.weightValuePath].toString() :\n data[_this.weightValuePath];\n });\n this.leafItemSettings.labelPath = this.leafItemSettings.labelPath || this.weightValuePath;\n this.checkIsHierarchicalData();\n if (this.levels.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data_1 = {};\n data_1['level'] = 0;\n path = this.leafItemSettings.labelPath;\n data_1[path] = [];\n for (var i = 0; i < this.dataSource.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(this.dataSource[i])['values'];\n if (this.isHierarchicalData && child && child.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n child.forEach(function (currentData) {\n if (currentData[path]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data_1[path].push({\n groupIndex: 0, name: currentData[path],\n levelOrderName: currentData[path].toString(),\n data: currentData, weight: currentData[_this.weightValuePath]\n });\n }\n });\n }\n else {\n if (this.dataSource[i][path]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data_1[path].push({\n groupIndex: 0, name: this.dataSource[i][path], levelOrderName: this.dataSource[i][path].toString(), data: this.dataSource[i],\n weight: this.dataSource[i][this.weightValuePath]\n });\n }\n }\n }\n this.treemapLevelData.levelsData.push(data_1);\n }\n else {\n if (this.isHierarchicalData) {\n this.treemapLevelData.hierarchyData = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemapLevelData.hierarchyData = extend([], this.dataSource, this.treemapLevelData.hierarchyData, true);\n for (var i = 0; i < this.treemapLevelData.hierarchyData.length; i++) {\n this.processHierarchicalData(this.treemapLevelData.hierarchyData[i], i);\n }\n this.treemapLevelData.levelsData = this.treemapLevelData.hierarchyData;\n }\n else {\n this.processFlatJsonData();\n if (this.treemapLevelData.levelsData.length > 1) {\n this.reOrderLevelData(this.treemapLevelData.levelsData.length - 1);\n }\n }\n path = this.levels[0].groupPath;\n }\n if (!this.isHierarchicalData) {\n this.findTotalWeight(this.treemapLevelData.levelsData[0][path], 'Parent');\n }\n }\n };\n TreeMap.prototype.checkIsHierarchicalData = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child;\n this.dataSource = this.dataSource;\n for (var i = 0; i < this.dataSource.length; i++) {\n child = findChildren(this.dataSource[i])['values'];\n if (child && child.length) {\n this.isHierarchicalData = true;\n break;\n }\n else if (i === this.dataSource.length - 1) {\n this.isHierarchicalData = false;\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.processHierarchicalData = function (data, dataCount) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childData;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newData = {};\n var levelIndex;\n var path = this.leafItemSettings.labelPath ? this.leafItemSettings.labelPath : this.weightValuePath;\n var key;\n newData = findChildren(data);\n childData = newData ? newData['values'] : null;\n if (childData && childData.length > 0) {\n key = newData['key'];\n for (var i = 0; i < this.levels.length; i++) {\n if (key === this.levels[i].groupPath) {\n levelIndex = i;\n }\n }\n for (var j = 0; j < childData.length; j++) {\n childData[j]['name'] = childData[j][path];\n childData[j]['levelOrderName'] = (levelIndex === 0 ? childData[j]['name'] :\n data['levelOrderName'] + '#' + childData[j]['name']) + '';\n var childItemLevel = childData[j]['levelOrderName'];\n var childLevel = void 0;\n if (childItemLevel.search('#') > 0) {\n childLevel = childItemLevel.split('#').length - 1;\n }\n childData[j]['groupIndex'] = isNullOrUndefined(levelIndex) ? childLevel === this.levels.length\n ? this.levels.length : childLevel : levelIndex;\n if (levelIndex !== 0) {\n childData[j]['parent'] = data;\n }\n childData[j]['groupName'] = key;\n childData[j]['data'] = childData[j];\n childData[j]['isDrilled'] = false;\n childData[j]['weight'] = childData[j][this.weightValuePath];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childData.forEach(function (currentData) {\n _this.processHierarchicalData(currentData, dataCount);\n });\n }\n if (dataCount === this.treemapLevelData.hierarchyData.length - 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var mainData_1 = this.treemapLevelData.hierarchyData[0][this.levels[0].groupPath];\n for (var k = 0; k < this.treemapLevelData.hierarchyData.length; k++) {\n childData = findChildren(this.treemapLevelData.hierarchyData[k])['values'];\n if (k !== 0 && childData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childData.forEach(function (currentData) { mainData_1.push(currentData); });\n this.treemapLevelData.hierarchyData.splice(k, 1);\n k -= 1;\n }\n }\n mainData_1 = this.treemapLevelData.hierarchyData[0][this.levels[0].groupPath];\n for (var l = 0; l < mainData_1.length; l++) {\n newData[this.levels[0].groupPath] = mainData_1;\n mainData_1[l]['parent'] = newData;\n }\n }\n };\n /* eslint-disable valid-jsdoc */\n /**\n * This method is used to perform the print functionality in treemap.\n *\n * @param {string[] | string | Element} id - Specifies the element to print the treemap.\n * @returns {void}\n */\n TreeMap.prototype.print = function (id) {\n if (this.allowPrint && this.printModule) {\n this.printModule.print(this, id);\n }\n };\n /**\n * This method is used to perform the export functionality for the rendered treemap.\n *\n * @param {ExportType} type - Specifies the extension type of the exported document.\n * @param {string} fileName - Specifies file name for exporting the rendered TreeMap.\n * @param {PdfPageOrientation} orientation - Specifies the orientation of the PDF document.\n * @param {boolean} allowDownload - Specifies whether the exported file should be downloaded or not.\n * @returns {string} - Specifies the base64 string of the exported image which is returned when the allowDownload is set to false.\n */\n TreeMap.prototype.export = function (type, fileName, orientation, allowDownload) {\n var _this = this;\n if (isNullOrUndefined(allowDownload)) {\n allowDownload = true;\n }\n if (type === 'PDF' && this.allowPdfExport && this.pdfExportModule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n resolve(_this.pdfExportModule.export(_this, type, fileName, orientation, allowDownload));\n });\n }\n else if (this.allowImageExport && (type !== 'PDF') && this.imageExportModule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n resolve(_this.imageExportModule.export(_this, type, fileName, allowDownload));\n });\n }\n return null;\n };\n TreeMap.prototype.processFlatJsonData = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dataSource = this.dataSource;\n var groupPath;\n var orderNames = [];\n for (var i = 0; i < this.levels.length + 1; i++) {\n groupPath = this.levels[i] ? this.levels[i].groupPath : this.leafItemSettings.labelPath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var level = {};\n level['level'] = i;\n level[groupPath] = [];\n this.treemapLevelData.levelsData.push(level);\n for (var j = 0; j < this.dataSource.length; j++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = {};\n var childName = '';\n if (!isNullOrUndefined(groupPath)) {\n var name_1 = this.dataSource[j][groupPath];\n if (i !== 0) {\n for (var k = 0; k <= i; k++) {\n var childGroupPath = this.levels[k] ? this.levels[k].groupPath : groupPath;\n childName += (this.dataSource[j][childGroupPath]) + ((k === i) ? '' : '#');\n }\n }\n if (!(orderNames.length > 0 ? orderNames.indexOf(childName ?\n childName : name_1) !== -1 : false)) {\n currentData['name'] = name_1;\n currentData['levelOrderName'] = ((childName) ? childName : name_1) + '';\n currentData['groupIndex'] = i;\n currentData['isDrilled'] = false;\n currentData['groupName'] = groupPath;\n currentData['data'] = this.dataSource[j];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, max-len\n this.treemapLevelData.levelsData[(this.treemapLevelData.levelsData.length - 1)][groupPath].push(currentData);\n orderNames.push((childName) ? childName : name_1);\n }\n }\n }\n }\n };\n /**\n * This method orders the treemap level data.\n *\n * @param {number} start - Specifies the start value of the treemap level.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.reOrderLevelData = function (start) {\n var currentName;\n var currentPath = this.levels[start] ? this.levels[start].groupPath : this.leafItemSettings.labelPath;\n var prevPath = this.levels[start - 1].groupPath;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = this.treemapLevelData.levelsData[start][currentPath];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var previousData = this.treemapLevelData.levelsData[start - 1][prevPath];\n for (var i = 0; i < currentData.length; i++) {\n currentName = currentData[i]['levelOrderName'];\n for (var j = 0; j < previousData.length; j++) {\n previousData[j][currentPath] = isNullOrUndefined(previousData[j][currentPath]) ?\n [] : previousData[j][currentPath];\n if (this.IsChildHierarchy(currentName.split('#'), previousData[j]['levelOrderName'].split('#'))) {\n if (isNullOrUndefined(currentData[i]['parent'])) {\n currentData[i]['parent'] = previousData[j];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n previousData[j][currentPath].push(currentData[i]);\n break;\n }\n }\n }\n this.findTotalWeight(this.treemapLevelData.levelsData[this.treemapLevelData.levelsData.length - 1][currentPath], 'Child');\n this.treemapLevelData.levelsData.splice(start, 1);\n if ((start - 1) > 0) {\n this.reOrderLevelData(start - 1);\n }\n };\n TreeMap.prototype.IsChildHierarchy = function (current, previous) {\n var isChild = false;\n for (var i = 0; i < previous.length; i++) {\n if (current.length < i || previous[i] !== current[i]) {\n return false;\n }\n else {\n isChild = true;\n }\n }\n return isChild;\n };\n /**\n * This method finds the weight value of the treemap level.\n *\n * @param {any[]} processData - Specifies the treemap data.\n * @param {string} type - Specifies the type of the data.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMap.prototype.findTotalWeight = function (processData, type) {\n var _this = this;\n var totalWeight;\n var split;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var groupName;\n var groupObj = {};\n var _loop_1 = function (i) {\n totalWeight = 0;\n groupName = processData[i]['groupName'];\n split = processData[i]['levelOrderName'].split('#');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this_1.dataSource.forEach(function (data) {\n if (isContainsData(split, processData[i]['levelOrderName'], data, _this)) {\n totalWeight += parseFloat(data[_this.weightValuePath]);\n }\n });\n if (type === 'Parent') {\n groupObj[groupName] = processData;\n processData[i]['parent'] = groupObj;\n }\n processData[i]['weight'] = totalWeight;\n };\n var this_1 = this;\n for (var i = 0; i < processData.length; i++) {\n _loop_1(i);\n }\n };\n /**\n * To unbind event handlers for treemap.\n *\n * @returns {void}\n * @private\n */\n TreeMap.prototype.unWireEVents = function () {\n EventHandler.remove(this.element, 'click', this.clickOnTreeMap);\n EventHandler.remove(this.element, 'dblclick', this.doubleClickOnTreeMap);\n EventHandler.remove(this.element, 'contextmenu', this.rightClickOnTreeMap);\n EventHandler.remove(this.element, Browser.touchStartEvent, this.mouseDownOnTreeMap);\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.mouseMoveOnTreeMap);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.mouseEndOnTreeMap);\n EventHandler.remove(this.element, 'pointerleave mouseleave', this.mouseLeaveOnTreeMap);\n window.removeEventListener('resize', this.resizeEvent);\n };\n /**\n * To bind event handlers for treemap.\n *\n * @returns {void}\n */\n TreeMap.prototype.wireEVents = function () {\n EventHandler.add(this.element, 'click', this.clickOnTreeMap, this);\n EventHandler.add(this.element, 'dblclick', this.doubleClickOnTreeMap, this);\n EventHandler.add(this.element, 'contextmenu', this.rightClickOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchStartEvent, this.mouseDownOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchMoveEvent, this.mouseMoveOnTreeMap, this);\n EventHandler.add(this.element, Browser.touchEndEvent, this.mouseEndOnTreeMap, this);\n EventHandler.add(this.element, 'pointerleave mouseleave', this.mouseLeaveOnTreeMap, this);\n this.resizeEvent = this.resizeOnTreeMap.bind(this);\n window.addEventListener('resize', this.resizeEvent);\n };\n /**\n * Method to set culture for maps\n *\n * @returns {void}\n */\n TreeMap.prototype.setCulture = function () {\n this.intl = new Internationalization();\n };\n /**\n * To add tab index for treemap element\n *\n * @returns {void}\n */\n TreeMap.prototype.addTabIndex = function () {\n this.element.setAttribute('aria-label', this.description || 'TreeMap Element');\n if (this.enableDrillDown || (this.selectionSettings.enable || this.highlightSettings.enable)) {\n this.element.setAttribute('role', 'button');\n this.element.setAttribute('tabindex', this.tabIndex.toString());\n this.element.style.cursor = this.highlightSettings.enable && !this.selectionSettings.enable && !this.enableDrillDown ? 'default' : 'pointer';\n }\n else {\n this.element.setAttribute('role', 'region');\n }\n };\n /**\n * This method handles the window resize event on treemap.\n *\n * @param {Event} e - Specifies the pointer event.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TreeMap.prototype.resizeOnTreeMap = function (e) {\n var _this = this;\n if (!this.isDestroyed) {\n this.isResize = true;\n var args_1 = {\n name: resize,\n cancel: false,\n previousSize: this.availableSize,\n currentSize: new Size(0, 0),\n treemap: this\n };\n if (this.resizeTo) {\n clearTimeout(this.resizeTo);\n }\n if (!isNullOrUndefined(this.element) && this.element.classList.contains('e-treemap')) {\n this.resizeTo = setTimeout(function () {\n _this.unWireEVents();\n _this.createSvg();\n _this.refreshing = true;\n _this.wireEVents();\n args_1.currentSize = _this.availableSize;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _this.trigger(resize, args_1, function (observedArgs) {\n _this.render();\n _this.refreshing = false;\n });\n }, 500);\n }\n }\n };\n /**\n * This method handles the click event on the treemap.\n *\n * @param {PointerEvent} e - Specifies the mouse click event in the treemap.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.clickOnTreeMap = function (e) {\n var _this = this;\n var targetEle = e.target;\n var targetId = targetEle.id;\n var eventArgs;\n var itemIndex;\n var labelText = targetEle.innerHTML;\n var clickArgs = { cancel: false, name: click, treemap: this, mouseEvent: e };\n this.trigger(click, clickArgs);\n if (targetId.indexOf('_Item_Index') > -1) {\n e.preventDefault();\n itemIndex = parseFloat(targetId.split('_Item_Index_')[1]);\n eventArgs = {\n cancel: false, name: itemClick, treemap: this, item: this.layout.renderItems[itemIndex], mouseEvent: e,\n groupIndex: this.layout.renderItems[itemIndex]['groupIndex'], groupName: this.layout.renderItems[itemIndex]['name'],\n text: labelText, contentItemTemplate: labelText\n };\n this.trigger(itemClick, eventArgs, function (observedArgs) {\n if (observedArgs.text !== labelText || observedArgs.contentItemTemplate !== labelText) {\n if (isNullOrUndefined(_this.leafItemSettings.labelTemplate)) {\n observedArgs.text = textFormatter(observedArgs.text, observedArgs['item']['data'], observedArgs.treemap);\n targetEle.textContent = observedArgs.text;\n }\n else {\n setItemTemplateContent(targetId, targetEle, observedArgs.contentItemTemplate);\n }\n }\n });\n }\n var end = new Date().getMilliseconds();\n var doubleTapTimer1;\n if (!isNullOrUndefined(this.doubleClick)) {\n if (!isNullOrUndefined(doubleTapTimer1) && end - doubleTapTimer1 < 500) {\n this.doubleClickOnTreeMap(e);\n }\n doubleTapTimer1 = end;\n }\n };\n /**\n * This method handles the double click event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n */\n TreeMap.prototype.doubleClickOnTreeMap = function (e) {\n var doubleClickArgs = { cancel: false, name: doubleClick, treemap: this, mouseEvent: e };\n this.trigger(doubleClick, doubleClickArgs);\n //this.notify('dblclick', e);\n };\n /**\n * This method handles the right click event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.rightClickOnTreeMap = function (e) {\n var rightClickArgs = { cancel: false, name: rightClick, treemap: this, mouseEvent: e };\n this.trigger(rightClick, rightClickArgs);\n };\n /**\n * This method handles the mouse down event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.mouseDownOnTreeMap = function (e) {\n if (e.target.id.indexOf('_Item_Index') > -1) {\n this.mouseDown = true;\n }\n this.notify(Browser.touchStartEvent, e);\n };\n /**\n * This method handles the mouse move event in the treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse click.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.mouseMoveOnTreeMap = function (e) {\n var targetEle = e.target;\n var targetId = targetEle.id;\n var eventArgs;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n var moveArgs = { cancel: false, name: mouseMove, treemap: this, mouseEvent: e };\n this.trigger(mouseMove, moveArgs);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childItems;\n if (targetId.indexOf('_Item_Index') > -1) {\n item = this.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n childItems = findChildren(item)['values'];\n this.element.style.cursor = (!item['isLeafItem'] && childItems && childItems.length > 0 && this.enableDrillDown) ?\n 'pointer' : 'auto';\n eventArgs = { cancel: false, name: itemMove, treemap: this, item: item, mouseEvent: e };\n this.trigger(itemMove, eventArgs);\n }\n this.notify(Browser.touchMoveEvent, e);\n };\n /**\n * This method calculates the selected treemap levels.\n *\n * @param {string} labelText - Specifies the label text.\n * @param {any} item - Specifies the treemap item.\n * @returns {any} - Returns label of the drilled level.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n TreeMap.prototype.calculateSelectedTextLevels = function (labelText, item) {\n //to find the levels by clicking the particular text both for drillDownView as true / false.\n var drillLevel;\n var k;\n var text;\n var levelLabels = item['levelOrderName'];\n var levelText = levelLabels.split('#');\n for (var _i = 0, _a = Object.keys(levelText); _i < _a.length; _i++) {\n k = _a[_i];\n if (levelText[k] === labelText) {\n drillLevel = parseInt(k, 10);\n text = labelText;\n }\n }\n return { drillLevel: drillLevel, currentLevelLabel: text, levelText: levelText };\n };\n /**\n * This method calculates the previous level of child items in treemap.\n *\n * @param {any} drillLevelValues - Specifies the values of drill level.\n * @param {any} item - Specifies the treemap item.\n * @param {boolean} directLevel - Specifies the current level.\n * @returns {boolean} - check whether it is previous level or not.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n TreeMap.prototype.calculatePreviousLevelChildItems = function (drillLevelValues, item, directLevel) {\n //By clicking any child items drilldown to the particular level.\n //At the time store all the previous drilled level items in drilledItems\n // This condition satisfies while drilldown View is set as false and the text contains '[+]'\n var text;\n var p = 0;\n var levelItems;\n var text1;\n var drillTextLevel = this.layout.renderItems[0]['levelOrderName'].split('#').length;\n for (var h = 0; h < drillTextLevel; h++) {\n text1 = h === 0 ? drillLevelValues['levelText'][h] : text1 + '#' + drillLevelValues['levelText'][h];\n }\n p = drillTextLevel > 1 ? drillTextLevel : p;\n for (var _i = 0, _a = Object['values'](this.layout.renderItems); _i < _a.length; _i++) {\n levelItems = _a[_i];\n var drillLevelText = levelItems['levelOrderName'].split('#');\n if (drillLevelText[0] === drillLevelValues['levelText'][0]) {\n text = p === 0 ? isNullOrUndefined(text1) ? text1 : drillLevelValues['levelText'][p] :\n directLevel ? text1 : text1 + '#' + drillLevelValues['levelText'][p];\n if (text === levelItems['levelOrderName']) {\n this.drilledItems.push({ name: levelItems['levelOrderName'], data: levelItems });\n p++;\n directLevel = true;\n if (p <= item['groupIndex']) {\n text = text + '#' + drillLevelValues['levelText'][p];\n text1 = text;\n }\n }\n }\n }\n return directLevel;\n };\n /**\n * This method compares the selected labels with the drill down items.\n *\n * @param {any} drillLevelValues - Specifies the values of drill level.\n * @param {any} item - Specifies the treemap item.\n * @param {number} i - Specifies the treemap item.\n * @returns {any} - return the new drill down object.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n TreeMap.prototype.compareSelectedLabelWithDrillDownItems = function (drillLevelValues, item, i) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var drillLevelChild;\n var newDrillItem = {};\n var b = drillLevelValues['drillLevel'] + 1;\n if (b === this.drilledItems[i]['data']['groupIndex']) {\n drillLevelChild = this.drilledItems[i]['data']['parent'];\n drillLevelChild['isDrilled'] = true;\n newDrillItem[drillLevelChild[this.drilledItems[i]['data']['groupName']]]\n = [drillLevelChild];\n // to remove all the items after matched drilled items\n this.drilledItems.splice(i, this.drilledItems.length);\n }\n else if (drillLevelValues['drillLevel'] === (this.drilledItems.length - 1)\n || drillLevelValues['drillLevel'] === item['groupIndex']) {\n newDrillItem[item['groupName']] = [item];\n }\n return newDrillItem;\n };\n /**\n * This method handles mouse end event in treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse.\n * @returns {void}\n * @private\n */\n TreeMap.prototype.mouseEndOnTreeMap = function (e) {\n var _this = this;\n var targetEle = e.target;\n var targetId = targetEle.id;\n var totalRect;\n var startEvent;\n var endEvent;\n var directLevel = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var index;\n var newDrillItem = {};\n var item;\n var process = true;\n var layoutID = this.element.id + '_TreeMap_' + this.layoutType + '_Layout';\n var drillLevel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateID = this.element.id + '_Label_Template_Group';\n var drillLevelValues;\n if (targetId.indexOf('_Item_Index') > -1 && this.enableDrillDown && !this.drillMouseMove) {\n if (e.cancelable) {\n e.preventDefault();\n }\n index = parseFloat(targetId.split('_Item_Index_')[1]);\n item = this.layout.renderItems[index];\n var labelText = targetEle.textContent;\n if (this.enableBreadcrumb) {\n drillLevelValues = this.calculateSelectedTextLevels(labelText, item);\n drillLevel = drillLevelValues['drillLevel'];\n if (!this.drillDownView && labelText.search('[+]') !== -1) {\n directLevel = this.calculatePreviousLevelChildItems(drillLevelValues, item, directLevel);\n }\n }\n if (this.levels.length !== 0 && !item['isLeafItem'] && findChildren(item)['values'] &&\n findChildren(item)['values'].length > 0) {\n if (this.drilledItems.length > 0) {\n item = directLevel ? this.drilledItems[this.drilledItems.length - 1]['data'] : item;\n for (var i = 0; i < this.drilledItems.length; i++) {\n if (!isNullOrUndefined(drillLevel)) { //Compare the selected text level with drilled items\n var drillLength = this.drilledItems.length;\n newDrillItem = this.compareSelectedLabelWithDrillDownItems(drillLevelValues, item, i);\n if (drillLength !== this.drilledItems.length) {\n i -= 1;\n break;\n }\n } //when clicking the levels drill back to the previous level process takes place\n if (item['levelOrderName'] === this.drilledItems[i]['name'] && !directLevel && isNullOrUndefined(drillLevel)) {\n if (item['groupIndex'] === 0 && item['parent'][item['groupName']] instanceof Array) {\n item['isDrilled'] = !(item['isDrilled']);\n if (!item['isDrilled']) {\n newDrillItem = item['parent'];\n }\n else {\n newDrillItem[item['groupName']] = [item];\n }\n }\n else {\n item['isDrilled'] = false;\n item['parent']['isDrilled'] = true;\n item = item['parent'];\n newDrillItem[item['groupName']] = [item];\n }\n this.drilledItems.splice(i, 1);\n i -= 1;\n break;\n }\n else if (i === this.drilledItems.length - 1 && isNullOrUndefined(drillLevel)) {\n item['isDrilled'] = true; // click the items move to next level.\n newDrillItem[item['groupName']] = [item];\n }\n }\n }\n else {\n item['isDrilled'] = true;\n newDrillItem[item['groupName']] = [item];\n }\n startEvent = {\n cancel: false, name: drillStart, treemap: this,\n element: targetEle, groupIndex: this.enableBreadcrumb &&\n this.drilledItems.length !== 0 && !isNullOrUndefined(drillLevel) ?\n this.drilledItems[this.drilledItems.length - 1]['data']['groupIndex'] : item['groupIndex'],\n groupName: this.enableBreadcrumb && this.drilledItems.length !== 0 && !isNullOrUndefined(drillLevel) ?\n this.drilledItems[this.drilledItems.length - 1]['data']['name'] : item['name'],\n rightClick: e.which === 3 ? true : false, childItems: null, item: newDrillItem\n };\n this.trigger(drillStart, startEvent, function (observedArgs) {\n _this.currentLevel = item['isDrilled'] && isNullOrUndefined(drillLevel) ? item['groupIndex'] :\n (!isNullOrUndefined(drillLevel) && _this.enableBreadcrumb && item['isDrilled']) ? drillLevel : null;\n if (!observedArgs.cancel) {\n if (document.getElementById(layoutID)) {\n var layerElementId = document.getElementById(layoutID);\n layerElementId.parentNode.removeChild(layerElementId);\n }\n totalRect = extend({}, _this.areaRect, totalRect, true);\n if (_this.legendSettings.visible && !isNullOrUndefined(_this.treeMapLegendModule)) {\n if (!isNullOrUndefined(newDrillItem)) {\n _this.treeMapLegendModule.legendGroup.textContent = '';\n _this.treeMapLegendModule.legendGroup = null;\n _this.treeMapLegendModule.widthIncrement = 0;\n _this.treeMapLegendModule.heightIncrement = 0;\n if (_this.enableBreadcrumb && !isNullOrUndefined(drillLevel)) {\n _this.drilledLegendItems = {\n name: _this.drilledItems[_this.drilledItems.length - 1]['data']['levelOrderName'],\n data: _this.drilledItems[_this.drilledItems.length - 1]['data']\n };\n }\n else {\n _this.drilledLegendItems = { name: item['levelOrderName'], data: item };\n }\n _this.treeMapLegendModule.renderLegend();\n }\n totalRect = !isNullOrUndefined(_this.totalRect) ? _this.totalRect : totalRect;\n }\n if (document.getElementById(templateID)) {\n var drillElementId = document.getElementById(templateID);\n drillElementId.parentNode.removeChild(drillElementId);\n }\n if (!isNullOrUndefined(observedArgs.childItems) && !observedArgs.cancel) {\n _this.layout.onDemandProcess(observedArgs.childItems);\n }\n else {\n _this.layout.calculateLayoutItems(newDrillItem, totalRect);\n _this.layout.renderLayoutItems();\n }\n }\n });\n endEvent = { cancel: false, name: drillEnd, treemap: this, renderItems: this.layout.renderItems };\n this.trigger(drillEnd, endEvent);\n if (process) {\n if (!directLevel && isNullOrUndefined(drillLevel)) {\n this.drilledItems.push({ name: item['levelOrderName'], data: item });\n }\n }\n }\n }\n this.mouseDown = false;\n this.notify(Browser.touchEndEvent, e);\n };\n /**\n * This method handles mouse leave event in treemap.\n *\n * @param {PointerEvent} e - Specifies the pointer event of mouse.\n * @return {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TreeMap.prototype.mouseLeaveOnTreeMap = function (e) {\n if (this.treeMapTooltipModule) {\n this.treeMapTooltipModule.removeTooltip();\n }\n if (this.treeMapLegendModule) {\n this.treeMapLegendModule.removeInteractivePointer();\n }\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', this);\n if (this.treeMapHighlightModule) {\n removeShape(this.treeMapHighlightModule.shapeHighlightCollection);\n this.treeMapHighlightModule.highLightId = '';\n }\n };\n /**\n * This method is used to select or remove the selection of treemap item based on the provided selection settings.\n *\n * @param {string[]} levelOrder - Specifies the order of the level.\n * @param {boolean} isSelected - Specifies whether the treemap item should be selected or the selection should be removed.\n * @return {void}\n */\n TreeMap.prototype.selectItem = function (levelOrder, isSelected) {\n if (isNullOrUndefined(isSelected)) {\n isSelected = true;\n }\n var levelOrderName = '';\n for (var i = 0; i < levelOrder.length; i++) {\n if (i !== levelOrder.length - 1) {\n levelOrderName += levelOrder[i] + '#';\n }\n else {\n levelOrderName += levelOrder[i];\n }\n }\n if (this.treeMapSelectionModule && this.selectionSettings.enable) {\n this.treeMapSelectionModule.selectTreemapItem(levelOrderName, isSelected);\n }\n };\n /**\n * To provide the array of modules needed for maps rendering\n *\n * @returns {ModuleDeclaration[]} Returns the modules\n * @private\n */\n TreeMap.prototype.requiredModules = function () {\n var modules = [];\n if (this.tooltipSettings.visible) {\n modules.push({\n member: 'treeMapTooltip',\n args: [this]\n });\n }\n if (this.highlightSettings.enable) {\n modules.push({\n member: 'treeMapHighlight',\n args: [this]\n });\n }\n if (this.selectionSettings.enable) {\n modules.push({\n member: 'treeMapSelection',\n args: [this]\n });\n }\n if (this.legendSettings.visible) {\n modules.push({\n member: 'treeMapLegend',\n args: [this]\n });\n }\n if (this.allowPrint) {\n modules.push({\n member: 'Print',\n args: [this, Print]\n });\n }\n if (this.allowImageExport) {\n modules.push({\n member: 'ImageExport',\n args: [this, ImageExport]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this, PdfExport]\n });\n }\n return modules;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TreeMapModel} newProp - Specifies the new property\n * @param {TreeMapModel} oldProp - Specifies the old property\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TreeMap.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.isDestroyed) {\n var render = false;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'background':\n this.renderBorder();\n break;\n case 'height':\n case 'width':\n case 'layoutType':\n case 'levels':\n case 'drillDownView':\n case 'renderDirection':\n case 'leafItemSettings':\n case 'legendSettings':\n case 'dataSource':\n render = true;\n break;\n }\n }\n if (render) {\n this.createSvg();\n this.renderElements();\n }\n }\n };\n /**\n * Gets component name.\n *\n * @returns {string} - return the treemap instance.\n * @private\n */\n TreeMap.prototype.getModuleName = function () {\n return 'treemap';\n };\n /**\n * This method destroys the treemap. This method removes the events associated with the treemap and disposes the objects created for rendering and updating the treemap.\n */\n TreeMap.prototype.destroy = function () {\n this.unWireEVents();\n removeElement('treeMapMeasureText');\n this.drilledItems = [];\n this.levelSelection = [];\n this.legendId = [];\n this.removeSvg();\n _super.prototype.destroy.call(this);\n };\n TreeMap.prototype.removeSvg = function () {\n removeElement(this.element.id + '_Secondary_Element');\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Returns the string value.\n * @private\n */\n TreeMap.prototype.getPersistData = function () {\n return '';\n };\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowPrint\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowImageExport\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"height\", void 0);\n __decorate([\n Complex({}, Border)\n ], TreeMap.prototype, \"border\", void 0);\n __decorate([\n Complex({}, Margin)\n ], TreeMap.prototype, \"margin\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"background\", void 0);\n __decorate([\n Property('Material')\n ], TreeMap.prototype, \"theme\", void 0);\n __decorate([\n Complex({}, TitleSettings)\n ], TreeMap.prototype, \"titleSettings\", void 0);\n __decorate([\n Property('Squarified')\n ], TreeMap.prototype, \"layoutType\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"weightValuePath\", void 0);\n __decorate([\n Property('')\n ], TreeMap.prototype, \"rangeColorValuePath\", void 0);\n __decorate([\n Property('')\n ], TreeMap.prototype, \"equalColorValuePath\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"colorValuePath\", void 0);\n __decorate([\n Property([])\n ], TreeMap.prototype, \"palette\", void 0);\n __decorate([\n Property('TopLeftBottomRight')\n ], TreeMap.prototype, \"renderDirection\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"enableDrillDown\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"enableBreadcrumb\", void 0);\n __decorate([\n Property(' - ')\n ], TreeMap.prototype, \"breadcrumbConnector\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"drillDownView\", void 0);\n __decorate([\n Complex({}, InitialDrillSettings)\n ], TreeMap.prototype, \"initialDrillDown\", void 0);\n __decorate([\n Complex({}, LeafItemSettings)\n ], TreeMap.prototype, \"leafItemSettings\", void 0);\n __decorate([\n Collection([], LevelSettings)\n ], TreeMap.prototype, \"levels\", void 0);\n __decorate([\n Complex({}, HighlightSettings)\n ], TreeMap.prototype, \"highlightSettings\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], TreeMap.prototype, \"selectionSettings\", void 0);\n __decorate([\n Complex({}, TooltipSettings)\n ], TreeMap.prototype, \"tooltipSettings\", void 0);\n __decorate([\n Complex({}, LegendSettings)\n ], TreeMap.prototype, \"legendSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeMap.prototype, \"useGroupingSeparator\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"description\", void 0);\n __decorate([\n Property(1)\n ], TreeMap.prototype, \"tabIndex\", void 0);\n __decorate([\n Property(null)\n ], TreeMap.prototype, \"format\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"drillStart\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"drillEnd\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemSelected\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemHighlight\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"tooltipRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"itemMove\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"doubleClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"rightClick\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"mouseMove\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"resize\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"legendItemRendering\", void 0);\n __decorate([\n Event()\n ], TreeMap.prototype, \"legendRendering\", void 0);\n TreeMap = __decorate([\n NotifyPropertyChanges\n ], TreeMap);\n return TreeMap;\n}(Component));\nexport { TreeMap };\n/**\n * @private\n */\nvar LevelsData = /** @class */ (function () {\n function LevelsData() {\n }\n return LevelsData;\n}());\nexport { LevelsData };\n","import { findChildren, Location, Rect, Size, measureText, TextOption, PathOption, RectOption, drawSymbol, orderByArea, legendMaintain } from '../utils/helper';\nimport { Browser, isNullOrUndefined, EventHandler, extend } from '@syncfusion/ej2-base';\nimport { renderTextElement, textTrim } from '../utils/helper';\nimport { legendItemRendering, legendRendering } from '../model/constants';\n/**\n * Legend module class\n */\nvar TreeMapLegend = /** @class */ (function () {\n function TreeMapLegend(treemap) {\n this.page = 0;\n /** @private */\n this.legendBorderRect = new Rect(0, 0, 0, 0);\n this.currentPage = 0;\n /** @private */\n this.heightIncrement = 0;\n /** @private */\n this.widthIncrement = 0;\n this.textMaxWidth = 0;\n this.legendInteractiveGradient = [];\n this.legendItemRect = new Rect(0, 0, 0, 0);\n this.treemap = treemap;\n this.addEventListener();\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * method for legend\n * @private\n */\n TreeMapLegend.prototype.renderLegend = function () {\n var _this = this;\n this.page = 0;\n this.legendRenderingCollections = [];\n this.legendCollections = [];\n this.legendNames = [];\n this.totalPages = [];\n this.gradientCount = 1;\n this.widthIncrement = 0;\n this.heightIncrement = 0;\n this.defsElement = this.treemap.renderer.createDefs();\n this.treemap.svgObject.appendChild(this.defsElement);\n var eventArgs = {\n cancel: false, name: legendRendering, treemap: this.treemap, _changePosition: this.treemap.legendSettings.position,\n position: this.treemap.legendSettings.position\n };\n this.treemap.trigger(legendRendering, eventArgs, function (observedArgs) {\n if (!observedArgs.cancel && observedArgs._changePosition !== _this.treemap.legendSettings.position) {\n _this.treemap.legendSettings.position = observedArgs._changePosition;\n }\n _this.calculateLegendBounds();\n if (_this.legendCollections.length > 0) {\n _this.drawLegend();\n }\n });\n };\n // eslint-disable-next-line valid-jsdoc\n /** @private */\n TreeMapLegend.prototype.calculateLegendBounds = function () {\n var _this = this;\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n this.findColorMappingLegendItems(treemap.treemapLevelData.levelsData[0]);\n if ((this.treemap.palette.length > 0 || !isNullOrUndefined(treemap.colorValuePath))\n && this.legendCollections.length === 0) {\n this.findPaletteLegendItems(treemap.treemapLevelData.levelsData[0]);\n }\n if (this.legendCollections.length > 0) {\n // eslint-disable-next-line @typescript-eslint/tslint/config\n this.legendCollections.sort(function (firstItem, nextItem) { return (firstItem.levelIndex > nextItem.levelIndex) ? 1 :\n (firstItem.levelIndex < nextItem.levelIndex) ? -1 : 0; });\n // eslint-disable-next-line @typescript-eslint/tslint/config\n this.legendCollections.sort(function (firstItem, nextItem) { return (firstItem.groupIndex > nextItem.groupIndex) ? 1 :\n (firstItem.groupIndex < nextItem.groupIndex) ? -1 : 0; });\n // eslint-disable-next-line @typescript-eslint/tslint/config\n this.legendCollections.sort(function (firstItem, nextItem) { return (firstItem.leafIndex > nextItem.leafIndex) ? 1 :\n (firstItem.leafIndex < nextItem.leafIndex) ? -1 : 0; });\n var defaultSize = 25;\n var textPadding = 10;\n var position = legend.position;\n var legendTitle = legend.title.text;\n var titleTextStyle = legend.titleStyle;\n var legendMode = legend.mode;\n var shapeX = 0;\n var shapeY = 0;\n var textX = 0;\n var textY = 0;\n var shapeHeight = legend.shapeHeight;\n var shapeWidth = legend.shapeWidth;\n var shapeLocation = [];\n var textLocation = [];\n var orientation_1 = (legend.orientation === 'None') ? ((position === 'Top' || position === 'Bottom'\n || (position === 'Auto' && treemap.availableSize.width <= treemap.availableSize.height))\n ? 'Horizontal' : 'Vertical') : legend.orientation;\n var leftPadding = 10;\n var topPadding = 10;\n var spacing = 10;\n var legendWidth = (legend.width.length > 1) ? (legend.width.indexOf('%') > -1) ? (treemap.availableSize.width / 100)\n * parseFloat(legend.width) : parseFloat(legend.width) : null;\n var legendHeight = (legend.height.length > 1) ? (legend.height.indexOf('%') > -1) ?\n (treemap.availableSize.height / 100) * parseFloat(legend.height) : parseFloat(legend.height) : null;\n titleTextStyle.fontFamily = treemap.themeStyle.fontFamily || titleTextStyle.fontFamily;\n titleTextStyle.fontWeight = titleTextStyle.fontWeight || treemap.themeStyle.titleFontWeight;\n titleTextStyle.size = treemap.themeStyle.legendFontSize || titleTextStyle.size;\n var legendTitleSize = measureText(legendTitle, titleTextStyle);\n var startX_1 = 0;\n var startY_1 = 0;\n var shapePadding = legend.shapePadding;\n var itemTextStyle = legend.textStyle;\n itemTextStyle.size = itemTextStyle.size || treemap.themeStyle.legendFontSize;\n itemTextStyle.fontFamily = itemTextStyle.fontFamily || treemap.themeStyle.fontFamily;\n itemTextStyle.fontWeight = itemTextStyle.fontWeight || treemap.themeStyle.fontWeight;\n if (legendMode === 'Default') {\n legendWidth = (isNullOrUndefined(legendWidth)) ? treemap.areaRect.width : legendWidth;\n legendHeight = (isNullOrUndefined(legendHeight)) ? treemap.areaRect.height : legendHeight;\n var j = 0;\n for (var i = 0; i < this.legendCollections.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var legendItem = this.legendCollections[i];\n if (isNullOrUndefined(this.totalPages[this.page])) {\n this.totalPages[this.page] = { Page: (this.page + 1), Collection: [] };\n }\n var legendTextSize = measureText(legendItem['legendName'], itemTextStyle);\n this.textMaxWidth = Math.max(this.textMaxWidth, legendTextSize.width);\n if (i === 0) {\n startX_1 = shapeX = (leftPadding + (shapeWidth / 2));\n startY_1 = shapeY = topPadding + legendTitleSize.height + (shapeHeight > legendTextSize.height ? shapeHeight / 2\n : (legendTextSize.height / 4));\n }\n else {\n var maxSize = (legendTextSize.height > shapeHeight) ? legendTextSize.height : shapeHeight;\n if (orientation_1 === 'Horizontal') {\n var prvePositionX = (textLocation[j - 1].x + textLocation[j - 1].width) + textPadding + shapeWidth;\n if ((prvePositionX + shapePadding + legendTextSize.width) > legendWidth) {\n var nextPositionY = (textLocation[j - 1].y > (shapeLocation[j - 1].y + (shapeHeight / 2)) ?\n textLocation[j - 1].y : (shapeLocation[j - 1].y + (shapeHeight / 2))) + topPadding;\n if ((nextPositionY + maxSize) > legendHeight) {\n this.getPageChanged();\n j = 0;\n shapeLocation = [];\n textLocation = [];\n shapeX = startX_1;\n shapeY = startY_1;\n }\n else {\n shapeX = (shapeLocation[0].x);\n shapeY = (nextPositionY + (maxSize / 2));\n }\n }\n else {\n shapeX = (prvePositionX - (shapeWidth / 2));\n shapeY = (shapeLocation[j - 1]).y;\n }\n }\n else {\n var prevPositionY = textLocation[j - 1].y > shapeLocation[j - 1].y + (shapeHeight / 2) ?\n textLocation[j - 1].y : shapeLocation[j - 1].y + (shapeHeight / 2);\n if ((prevPositionY + topPadding + maxSize) > legendHeight) {\n var nextPositionX = (textLocation[j - 1].x + this.textMaxWidth + textPadding);\n if ((nextPositionX + shapePadding + legendTextSize.width) > legendWidth) {\n shapeX = startX_1;\n shapeY = startY_1;\n textLocation = [];\n shapeLocation = [];\n this.getPageChanged();\n j = 0;\n }\n else {\n shapeX = nextPositionX + (shapeWidth / 2);\n shapeY = (shapeLocation[0].y);\n }\n }\n else {\n shapeX = shapeLocation[j - 1].x;\n shapeY = prevPositionY + topPadding + (shapeHeight / 2);\n }\n }\n }\n textX = shapeX + (shapeWidth / 2) + shapePadding;\n textY = shapeY + (legendTextSize.height / 4);\n shapeLocation.push({ x: shapeX, y: shapeY });\n textLocation.push({ x: textX, y: textY, width: legendTextSize.width, height: (legendTextSize.height / 2) });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalPages[this.page]['Collection'].push({\n DisplayText: legendItem['legendName'], element: legendItem['gradientElement'],\n Shape: { x: shapeX, y: shapeY },\n Text: { x: textX, y: textY },\n Fill: legendItem['legendFill'],\n Data: legendItem['legendData'],\n Rect: {\n x: shapeLocation[j].x - (shapeWidth / 2),\n y: (shapeLocation[j].y - (shapeHeight / 2)) < (textY - legendTextSize.height) ?\n (shapeLocation[j].y - (shapeHeight / 2)) : (textY - legendTextSize.height),\n width: Math.abs((shapeLocation[j].x - (shapeWidth / 2)) - (textX + legendTextSize.width)),\n height: ((shapeHeight > legendTextSize.height) ? shapeHeight : legendTextSize.height)\n }\n });\n j++;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.totalPages[0]['Collection'];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n collection.forEach(function (legendObj, index) {\n var legendRect = new Rect(legendObj['Rect']['x'], legendObj['Rect']['y'], legendObj['Rect']['width'], legendObj['Rect']['height']);\n if (index === 0) {\n startX_1 = legendRect.x;\n startY_1 = legendRect.y;\n }\n _this.widthIncrement = Math.max(_this.widthIncrement, Math.abs(startX_1 - (legendRect.x + legendRect.width)));\n _this.heightIncrement = Math.max(_this.heightIncrement, Math.abs(startY_1 - (legendRect.y + legendRect.height)));\n });\n legendWidth = ((this.widthIncrement < legendWidth) ? this.widthIncrement : legendWidth);\n legendHeight = ((this.heightIncrement < legendHeight) ? this.heightIncrement : legendHeight);\n this.legendItemRect = {\n x: collection[0]['Rect']['x'], y: collection[0]['Rect']['y'],\n width: legendWidth, height: legendHeight\n };\n }\n else {\n var legendLength = this.legendCollections.length;\n var rectWidth = (orientation_1 === 'Horizontal') ? (isNullOrUndefined(legendWidth)) ? (treemap.areaRect.width / legendLength) :\n (legendWidth / legendLength) : (isNullOrUndefined(legendWidth)) ? defaultSize : legendWidth;\n var rectHeight = (orientation_1 === 'Horizontal') ? (isNullOrUndefined(legendHeight)) ? defaultSize : legendHeight :\n (isNullOrUndefined(legendHeight)) ? (treemap.areaRect.height / legendLength) : (legendHeight / legendLength);\n startX_1 = 0;\n startY_1 = legendTitleSize.height + spacing;\n var textPadding_1 = 10;\n var placement = legend.labelPosition;\n var itemStartX = 0;\n var itemStartY = 0;\n var labelAction = legend.labelDisplayMode;\n var maxTextHeight = 0;\n var maxTextWidth = 0;\n for (var i = 0; i < this.legendCollections.length; i++) {\n startX_1 = (orientation_1 === 'Horizontal') ? (startX_1 + rectWidth) : startX_1;\n startY_1 = (orientation_1 === 'Horizontal') ? startY_1 : (startY_1 + rectHeight);\n var legendText = this.legendCollections[i]['legendName'];\n var itemTextSize = new Size(0, 0);\n if (labelAction === 'None') {\n itemTextSize = measureText(legendText, itemTextStyle);\n }\n else if (labelAction === 'Trim') {\n legendText = textTrim((orientation_1 === 'Horizontal' ? rectWidth : rectHeight), legendText, itemTextStyle);\n itemTextSize = measureText(legendText, itemTextStyle);\n }\n else {\n legendText = '';\n }\n maxTextHeight = Math.max(maxTextHeight, itemTextSize.height);\n maxTextWidth = Math.max(maxTextWidth, itemTextSize.width);\n if (itemTextSize.width > 0 && itemTextSize.height > 0) {\n if (orientation_1 === 'Horizontal') {\n textX = startX_1 + (rectWidth / 2);\n textY = (placement === 'After') ? (startY_1 + rectHeight + (itemTextSize.height / 2)) + textPadding_1 :\n (startY_1 - textPadding_1);\n }\n else {\n textX = (placement === 'After') ? startX_1 - (itemTextSize.width / 2) - textPadding_1\n : (startX_1 + rectWidth + itemTextSize.width / 2) + textPadding_1;\n textY = startY_1 + (rectHeight / 2) + (itemTextSize.height / 4);\n }\n }\n if (i === 0) {\n itemStartX = (orientation_1 === 'Horizontal') ? startX_1 : (placement === 'After') ?\n textX - (itemTextSize.width / 2) : startX_1;\n itemStartY = (orientation_1 === 'Horizontal') ? (placement === 'After') ? startY_1 :\n textY - (itemTextSize.height / 2) : startY_1;\n }\n if (i === legendLength - 1) {\n legendWidth = (orientation_1 === 'Horizontal') ? Math.abs((startX_1 + rectWidth) - itemStartX) :\n (rectWidth + maxTextWidth + textPadding_1);\n legendHeight = (orientation_1 === 'Horizontal') ? (rectHeight + (maxTextHeight / 2) + textPadding_1) :\n Math.abs((startY_1 + rectHeight) - itemStartY);\n }\n this.legendRenderingCollections.push({\n fill: this.legendCollections[i]['legendFill'], x: startX_1, y: startY_1,\n width: rectWidth, height: rectHeight, element: this.legendCollections[i]['gradientElement'],\n text: legendText, textX: textX, textY: textY,\n textWidth: itemTextSize.width, textHeight: itemTextSize.height,\n data: this.legendCollections[i]['legendData']\n });\n }\n this.legendItemRect = { x: itemStartX, y: itemStartY, width: legendWidth, height: legendHeight };\n }\n }\n };\n TreeMapLegend.prototype.getPageChanged = function () {\n this.page++;\n if (isNullOrUndefined(this.totalPages[this.page])) {\n this.totalPages[this.page] = { Page: (this.page + 1), Collection: [] };\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.findColorMappingLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child = findChildren(data)['values'];\n if (child && child.length > 0) {\n this.calculateLegendItems(child);\n if (this.treemap.levels.length > 0) {\n for (var i = 0; i < child.length; i++) {\n this.findColorMappingLegendItems(child[i]);\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.findPaletteLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var child;\n var legendFillColor;\n if (!isNullOrUndefined(this.treemap.drilledItems)) {\n if (this.treemap.drilledItems.length === 0 && !isNullOrUndefined(this.treemap.initialDrillDown.groupName)\n && isNullOrUndefined(this.treemap.drilledLegendItems)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var items = findChildren(data)['values'];\n for (var k = 0; k < items.length; k++) {\n if (items[k]['Name'] === this.treemap.initialDrillDown.groupName) {\n items[k]['isDrilled'] = !items[k]['isDrilled'];\n data = items[k];\n this.treemap.currentLevel = this.treemap.initialDrillDown.groupIndex;\n legendFillColor = this.treemap.palette.length > 0 ? this.treemap.palette[k % this.treemap.palette.length] :\n items[k]['data'][this.treemap.colorValuePath];\n break;\n }\n }\n }\n }\n if (this.treemap.enableDrillDown && !isNullOrUndefined(this.treemap.drilledLegendItems)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childElement = this.treemap.drilledLegendItems;\n legendFillColor = childElement['data']['options']['fill'];\n if (childElement['data']['isDrilled']) {\n child = findChildren(childElement['data'])['values'];\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parentElement = childElement['data']['parent'];\n child = findChildren(parentElement)['values'];\n }\n }\n else {\n child = findChildren(data)['values'];\n }\n var isDuplicate;\n var legendName;\n if (child && child.length > 0) {\n for (var i = 0; i < child.length; i++) {\n if (isNullOrUndefined(child[i]['data'][this.treemap.legendSettings.showLegendPath]) ||\n child[i]['data'][this.treemap.legendSettings.showLegendPath]) {\n legendName = child[i]['data'][this.treemap.legendSettings.valuePath] ?\n child[i]['data'][this.treemap.legendSettings.valuePath] : child[i]['name'];\n isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, legendName) : false;\n if (!isDuplicate) {\n this.legendCollections.push({\n legendName: legendName,\n legendFill: this.treemap.palette.length > 0 ? !isNullOrUndefined(this.treemap.currentLevel)\n ? legendFillColor : this.treemap.palette[i % this.treemap.palette.length] :\n child[i]['data'][this.treemap.colorValuePath],\n legendData: [],\n itemArea: child[i]['weight']\n });\n }\n }\n }\n this.legendCollections.sort(orderByArea);\n if (this.treemap.palette.length > 0) {\n for (var j = 0; j < this.legendCollections.length; j++) {\n this.legendCollections[j]['legendFill'] = !isNullOrUndefined(this.treemap.currentLevel)\n ? legendFillColor : this.treemap.palette[j % this.treemap.palette.length];\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.calculateLegendItems = function (data) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isAddData;\n var fill;\n var rangeValue;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData;\n var legendText;\n var isLeafItem;\n var colorMapProcess = false;\n var colorMapping;\n var groupIndex;\n var leaf = this.treemap.leafItemSettings;\n var levels = this.treemap.levels;\n var equalValue;\n var position = this.treemap.legendSettings.position;\n var gradientElement;\n var x2;\n var y2;\n var actualValue;\n var isDuplicate;\n var isEqualColor;\n var isRange;\n var isDesaturation = false;\n var legendIndex = 0;\n var outfill;\n var labelLegend;\n var otherIndex;\n this.outOfRangeLegend = null;\n for (var i = 0; i < data.length; i++) {\n fill = '';\n isEqualColor = false;\n isRange = false;\n isDesaturation = false;\n currentData = data[i]['data'];\n groupIndex = data[i]['groupIndex'];\n isLeafItem = (this.treemap.levels.length === 0 || groupIndex === this.treemap.levels.length);\n colorMapping = isLeafItem ? leaf.colorMapping : levels[groupIndex].colorMapping;\n for (var j = 0; j < colorMapping.length; j++) {\n var colorMap = colorMapping[j];\n gradientElement = null;\n rangeValue = Number(currentData[this.treemap.rangeColorValuePath]);\n equalValue = currentData[this.treemap.equalColorValuePath];\n colorMap.value = !isNullOrUndefined(colorMap.value) ? colorMap.value.toString() : colorMap.value;\n if (!isNullOrUndefined(colorMap.from) && !isNullOrUndefined(colorMap.to) &&\n rangeValue >= colorMap.from && rangeValue <= colorMap.to && colorMap.showLegend) {\n colorMapProcess = true;\n isRange = true;\n actualValue = colorMap.from + ' - ' + colorMap.to;\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : colorMap.from + ' - ' + colorMap.to;\n fill = isNullOrUndefined(colorMap.color) ? fill : colorMap.color;\n isAddData = this.isAddNewLegendData(actualValue);\n }\n else if (!isNullOrUndefined(colorMap.value) && equalValue === colorMap.value && colorMap.showLegend) {\n colorMapProcess = true;\n isEqualColor = true;\n actualValue = colorMap.value.toString();\n legendText = !isNullOrUndefined(colorMap.label) ? colorMap.label : colorMap.value.toString();\n fill = isNullOrUndefined(colorMap.color) ? fill :\n Object.prototype.toString.call(colorMap.color) === '[object Array]' ? colorMap.color[0] : colorMap.color;\n isAddData = this.isAddNewLegendData(actualValue);\n }\n if (colorMapProcess && isNullOrUndefined(colorMap.value) && colorMap.maxOpacity && colorMap.minOpacity\n && this.treemap.legendSettings.mode === 'Interactive') {\n var colors = [];\n isDesaturation = true;\n if (Object.prototype.toString.call(colorMap.color) === '[object Array]') {\n for (var q = 0; q < colorMap.color.length; q++) {\n var offsetColor = 100 / (colorMap.color.length - 1);\n var offsetValue = q * offsetColor + '%';\n var stop1Color = { colorStop: offsetValue.toString(), color: colorMap.color[q] };\n colors.push(stop1Color);\n }\n }\n else {\n var stop1Color = { colorStop: '0%', color: fill };\n var stop2Color = { colorStop: '100%', color: fill };\n colors.push(stop1Color);\n colors.push(stop2Color);\n }\n x2 = position === 'Top' || position === 'Bottom' ? '100%' : '0%';\n y2 = position === 'Top' || position === 'Bottom' ? '0%' : '100%';\n var gradient = {\n id: 'groupIndex_' + groupIndex + '_colorIndex_' + this.gradientCount, x1: '0%', y1: '0%', x2: x2, y2: y2\n };\n gradientElement = this.treemap.renderer.drawGradient('linearGradient', gradient, colors).childNodes[0];\n if (Object.prototype.toString.call(colorMap.color) !== '[object Array]') {\n gradientElement.childNodes[0].setAttribute('stop-opacity', colorMap.minOpacity.toString());\n gradientElement.childNodes[1].setAttribute('stop-opacity', colorMap.maxOpacity.toString());\n }\n this.defsElement.appendChild(gradientElement);\n this.gradientCount++;\n }\n isDuplicate = this.treemap.legendSettings.removeDuplicateLegend ?\n this.removeDuplicates(this.legendCollections, legendText) : false;\n if (isAddData && isAddData['process'] && colorMapProcess && !isDuplicate) {\n colorMapProcess = false;\n fill = ((Object.prototype.toString.call(colorMap.color) === '[object Array]')) && isNullOrUndefined(gradientElement)\n && isNullOrUndefined(colorMap.value) ? this.legendGradientColor(colorMap, legendIndex) : fill;\n this.legendCollections.push({\n actualValue: actualValue, levelIndex: !isLeafItem ? j : -1, leafIndex: isLeafItem ? j : -1,\n legendName: legendText, legendFill: fill, legendData: [], groupIndex: !isLeafItem ? groupIndex : -1,\n gradientElement: !isNullOrUndefined(gradientElement) ? gradientElement : isNullOrUndefined(colorMap.value)\n ? this.legendLinearGradient : null, name: data[i]['name'],\n opacity: this.treemap.legendSettings.opacity, borderColor: this.treemap.legendSettings.border.color,\n borderWidth: this.treemap.legendSettings.border.width\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[this.legendCollections.length - 1]['legendData'].push(data[i]);\n legendIndex++;\n }\n else if (colorMapProcess && !isDuplicate) {\n colorMapProcess = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[isAddData['value']]['legendData'].push(data[i]);\n }\n if (!isRange && !isDesaturation && !isEqualColor) {\n if (isNullOrUndefined(colorMap.from) && isNullOrUndefined(colorMap.to)\n && isNullOrUndefined(colorMap.minOpacity) &&\n isNullOrUndefined(colorMap.maxOpacity) && isNullOrUndefined(colorMap.value) &&\n !isNullOrUndefined(colorMap.color)) {\n outfill = ((Object.prototype.toString.call(colorMap.color) === '[object Array]'))\n ? colorMap.color[0] : colorMap.color;\n labelLegend = !isNullOrUndefined(colorMap.label) ? colorMap.label : 'Others';\n if (isNullOrUndefined(this.outOfRangeLegend)) {\n this.legendCollections.push({\n actualValue: labelLegend, legendData: [],\n legendName: labelLegend, legendFill: outfill\n });\n otherIndex = this.legendCollections.length;\n this.outOfRangeLegend = this.legendCollections[otherIndex - 1];\n legendIndex++;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendCollections[otherIndex - 1]['legendData'].push(data[i]);\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.removeDuplicates = function (legendCollection, text) {\n var isDuplicate = false;\n for (var i = 0; i < legendCollection.length; i++) {\n if (legendCollection[i]['legendName'] === text) {\n isDuplicate = true;\n break;\n }\n else {\n continue;\n }\n }\n return isDuplicate;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.isAddNewLegendData = function (legendText) {\n var newDataProcess;\n var itemValue;\n if (this.legendCollections.length === 0) {\n newDataProcess = true;\n }\n else {\n for (var j = 0; j < this.legendCollections.length; j++) {\n if (legendText === this.legendCollections[j]['actualValue']) {\n newDataProcess = false;\n itemValue = j;\n break;\n }\n else if (j === this.legendCollections.length - 1) {\n newDataProcess = true;\n }\n }\n }\n return { process: newDataProcess, value: itemValue };\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To draw the legend\n * @private\n */\n TreeMapLegend.prototype.drawLegend = function () {\n var legend = this.treemap.legendSettings;\n var render = this.treemap.renderer;\n var fill;\n var textOptions;\n var gradientElement;\n var textFont = legend.textStyle;\n this.legendGroup = render.createGroup({ id: this.treemap.element.id + '_Legend_Group' });\n this.renderLegendBorder();\n this.renderLegendTitle();\n if (legend.mode === 'Default') {\n this.drawLegendItem(this.currentPage);\n }\n else {\n for (var i = 0; i < this.legendRenderingCollections.length; i++) {\n var itemId = this.treemap.element.id + '_Legend_Index_' + i;\n var textId = this.treemap.element.id + '_Legend_Index_' + i + '_Text';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = this.legendRenderingCollections[i];\n gradientElement = item['element'];\n fill = gradientElement ? 'url(#' + gradientElement.id + ')' : item['fill'];\n var bounds = new Rect(item['x'], item['y'], item['width'], item['height']);\n var textLocation = new Location(item['textX'], item['textY']);\n var rectOptions = new RectOption(itemId, fill, legend.shapeBorder, legend.opacity, bounds);\n if (this.treemap.enableRtl) {\n if (this.treemap.legendSettings.position === 'Left' || this.treemap.legendSettings.position === 'Right'\n || (this.treemap.legendSettings.position === 'Auto'\n && this.treemap.availableSize.width >= this.treemap.availableSize.height)) {\n rectOptions.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - (this.translate.y + rectOptions.height) - Math.abs(this.legendBorderRect.y - rectOptions.y);\n textLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - (this.translate.y) + (item['textHeight'] / 2)\n - Math.abs(this.legendBorderRect.y - textLocation.y);\n }\n else {\n rectOptions.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + rectOptions.width)\n - Math.abs(this.legendBorderRect.x - rectOptions.x);\n textLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - this.translate.x - Math.abs(this.legendBorderRect.x - textLocation.x);\n }\n }\n textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'middle', item['text'], '', '');\n renderTextElement(textOptions, textFont, textFont.color || this.treemap.themeStyle.legendTextColor, this.legendGroup);\n this.legendGroup.appendChild(render.drawRectangle(rectOptions));\n }\n }\n legendMaintain(this.treemap, this.legendGroup);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeMapLegend.prototype.defaultLegendRtlLocation = function (collection, spacing, treemap, legend) {\n var shapeLocation = collection['Shape'];\n var textLocation = collection['Text'];\n var legendText = collection['DisplayText'];\n var textSize = measureText(legendText, legend.textStyle);\n shapeLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + spacing) - Math.abs(this.legendBorderRect.x - shapeLocation.x);\n textLocation.x = (this.translate.x + this.legendBorderRect.x + this.legendBorderRect.width)\n - (this.translate.x + textSize.width + spacing) - Math.abs(this.legendBorderRect.x - textLocation.x);\n if (treemap.legendSettings.position === 'Left' || treemap.legendSettings.position === 'Right'\n || (treemap.legendSettings.position === 'Auto'\n && this.treemap.availableSize.width >= this.treemap.availableSize.height)) {\n shapeLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - this.translate.y - Math.abs(Math.abs(this.legendBorderRect.y) - shapeLocation.y) - (legend.shapeHeight / 2);\n textLocation.y = (this.translate.y + this.legendBorderRect.y + this.legendBorderRect.height)\n - this.translate.y - Math.abs(Math.abs(this.legendBorderRect.y) - textLocation.y);\n }\n return { shapeLocation: shapeLocation, textLocation: textLocation };\n };\n TreeMapLegend.prototype.drawLegendItem = function (page) {\n var _this = this;\n var treemap = this.treemap;\n var spacing = 10;\n var legend = treemap.legendSettings;\n var shapeSize = new Size(legend.shapeWidth, legend.shapeHeight);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var textOptions;\n var legendRtlLocation;\n var render = treemap.renderer;\n var shapeBorder = legend.shapeBorder;\n var eventArgs;\n if (page >= 0 && page < this.totalPages.length) {\n if (document.getElementById(this.legendGroup.id)) {\n document.getElementById(this.legendGroup.id).remove();\n }\n var isLineShape_1 = (legend.shape === 'HorizontalLine' || legend.shape === 'VerticalLine' || legend.shape === 'Cross');\n var strokeColor_1 = isLineShape_1 ? isNullOrUndefined(legend.fill) ? '#000000' : legend.fill : shapeBorder.color;\n var strokeWidth_1 = isLineShape_1 ? (shapeBorder.width === 0) ? 1 : shapeBorder.width : shapeBorder.width;\n var _loop_1 = function (i) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this_1.totalPages[page]['Collection'][i];\n var legendElement = render.createGroup({ id: treemap.element.id + '_Legend_Index_' + i });\n var legendText = collection['DisplayText'];\n var shapeId = treemap.element.id + '_Legend_Shape_Index_' + i;\n var textId = treemap.element.id + '_Legend_Text_Index_' + i;\n var shapeLocation = collection['Shape'];\n var textLocation = collection['Text'];\n if (treemap.enableRtl) {\n legendRtlLocation = this_1.defaultLegendRtlLocation(collection, spacing, treemap, legend);\n shapeLocation = legendRtlLocation['shapeLocation'];\n textLocation = legendRtlLocation['textLocation'];\n }\n eventArgs = {\n cancel: false, name: legendItemRendering, treemap: treemap, fill: collection['Fill'],\n shape: legend.shape, imageUrl: legend.imageUrl\n };\n treemap.trigger(legendItemRendering, eventArgs, function (observedArgs) {\n var renderOptions = new PathOption(shapeId, observedArgs.fill, strokeWidth_1, isLineShape_1 ? collection['Fill'] : strokeColor_1, legend.opacity, '');\n legendElement.appendChild(drawSymbol(shapeLocation, observedArgs.shape, shapeSize, observedArgs.imageUrl, renderOptions, legendText));\n textOptions = new TextOption(textId, textLocation.x, textLocation.y, 'start', legendText, '', '');\n renderTextElement(textOptions, legend.textStyle, legend.textStyle.color || treemap.themeStyle.legendTextColor, legendElement);\n _this.legendGroup.appendChild(legendElement);\n });\n };\n var this_1 = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (var i = 0; i < this.totalPages[page]['Collection'].length; i++) {\n _loop_1(i);\n }\n var pagingGroup = void 0;\n var width = spacing;\n var height = (spacing / 2);\n if (this.page !== 0) {\n var pagingText = (page + 1) + '/' + this.totalPages.length;\n var pagingFont = legend.textStyle;\n var pagingTextSize = measureText(pagingText, pagingFont);\n var leftPageX = (this.legendItemRect.x + this.legendItemRect.width) - pagingTextSize.width -\n (width * 2) - spacing;\n var rightPageX = (this.legendItemRect.x + this.legendItemRect.width);\n var locY = (this.legendItemRect.y + this.legendItemRect.height) + (height / 2) + spacing;\n var pageTextX = rightPageX - width - (pagingTextSize.width / 2) - (spacing / 2);\n pagingGroup = render.createGroup({ id: treemap.element.id + '_Legend_Paging_Group' });\n var leftPageElement = render.createGroup({ id: treemap.element.id + '_Legend_Left_Paging_Group' });\n var rightPageElement = render.createGroup({ id: treemap.element.id + '_Legend_Right_Paging_Group' });\n var rightPath = ' M ' + rightPageX + ' ' + locY + ' L ' + (rightPageX - width) + ' ' + (locY - height) +\n ' L ' + (rightPageX - width) + ' ' + (locY + height) + ' z ';\n var leftPath = ' M ' + leftPageX + ' ' + locY + ' L ' + (leftPageX + width) + ' ' + (locY - height) +\n ' L ' + (leftPageX + width) + ' ' + (locY + height) + ' z ';\n var leftPageOptions = new PathOption(treemap.element.id + '_Left_Page', '#a6a6a6', 0, '#a6a6a6', 1, '', leftPath);\n leftPageElement.appendChild(render.drawPath(leftPageOptions));\n var leftRectPageOptions = new RectOption(treemap.element.id + '_Left_Page_Rect', 'transparent', {}, 1, new Rect(leftPageX - (width / 2), (locY - (height * 2)), width * 2, spacing * 2), '');\n leftPageElement.appendChild(render.drawRectangle(leftRectPageOptions));\n this.wireEvents(leftPageElement);\n var rightPageOptions = new PathOption(treemap.element.id + '_Right_Page', '#a6a6a6', 0, '#a6a6a6', 1, '', rightPath);\n rightPageElement.appendChild(render.drawPath(rightPageOptions));\n var rightRectPageOptions = new RectOption(treemap.element.id + '_Right_Page_Rect', 'transparent', {}, 1, new Rect((rightPageX - width), (locY - height), width, spacing), '');\n rightPageElement.appendChild(render.drawRectangle(rightRectPageOptions));\n this.wireEvents(rightPageElement);\n pagingGroup.appendChild(leftPageElement);\n pagingGroup.appendChild(rightPageElement);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var pageTextOptions = {\n 'id': treemap.element.id + '_Paging_Text',\n 'x': pageTextX,\n 'y': locY + (pagingTextSize.height / 4),\n 'fill': '#a6a6a6',\n 'font-size': '14px',\n 'font-style': pagingFont.fontStyle,\n 'font-family': pagingFont.fontFamily,\n 'font-weight': pagingFont.fontWeight,\n 'text-anchor': 'middle',\n 'transform': '',\n 'opacity': 1,\n 'dominant-baseline': ''\n };\n pagingGroup.appendChild(render.createText(pageTextOptions, pagingText));\n this.legendGroup.appendChild(pagingGroup);\n }\n }\n };\n TreeMapLegend.prototype.renderLegendBorder = function () {\n var treemap = this.treemap;\n var legend = treemap.legendSettings;\n var legendTitle = legend.title.text;\n var spacing = 10;\n var textStyle = legend.titleStyle;\n var title = textTrim((this.legendItemRect.width + (spacing * 2)), legendTitle, textStyle);\n var textSize = measureText(title, textStyle);\n this.legendBorderRect = new Rect((this.legendItemRect.x - spacing), (this.legendItemRect.y - spacing - textSize.height), (this.legendItemRect.width) + (spacing * 2), (this.legendItemRect.height) + (spacing * 2) + textSize.height +\n (legend.mode === 'Interactive' ? 0 : (this.page !== 0) ? spacing : 0));\n var renderOptions = new RectOption(treemap.element.id + '_Legend_Border', legend.background, legend.border, 1, this.legendBorderRect, '');\n var legendBorder = treemap.renderer.drawRectangle(renderOptions);\n legendBorder.style.pointerEvents = 'none';\n this.legendGroup.appendChild(legendBorder);\n this.getLegendAlignment(treemap, this.legendBorderRect.width, this.legendBorderRect.height, legend);\n this.legendGroup.setAttribute('transform', 'translate( ' + (this.translate.x + (-(this.legendBorderRect.x))) + ' ' +\n (this.translate.y + (-(this.legendBorderRect.y))) + ' )');\n treemap.svgObject.appendChild(this.legendGroup);\n };\n TreeMapLegend.prototype.renderLegendTitle = function () {\n var legend = this.treemap.legendSettings;\n var textStyle = legend.titleStyle;\n var legendTitle = legend.title.text;\n var textOptions;\n var spacing = 10;\n var trimTitle = textTrim((this.legendItemRect.width + (spacing * 2)), legendTitle, textStyle);\n var textSize = measureText(trimTitle, textStyle);\n if (legendTitle) {\n textOptions = new TextOption(this.treemap.element.id + '_LegendTitle', (this.legendItemRect.x) + (this.legendItemRect.width / 2), this.legendItemRect.y - (textSize.height / 2) - (spacing / 2), 'middle', trimTitle, '');\n renderTextElement(textOptions, textStyle, textStyle.color || this.treemap.themeStyle.legendTitleColor, this.legendGroup);\n }\n };\n /**\n * To rendered the interactive pointer\n *\n * @param {PointerEvent | TouchEvent} e - Specifies the pointer argument.\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.renderInteractivePointer = function (e) {\n var treemap = this.treemap;\n var target = e.target;\n var interactiveId = treemap.element.id + '_Interactive_Legend';\n target = !(e.type.indexOf('touch') > -1) ? target :\n document.elementFromPoint(e.changedTouches[0].clientX, e.changedTouches[0].clientY);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetItem;\n var legend = treemap.legendSettings;\n if (target.id.indexOf('_Item_Index') > -1 && legend.visible && this.legendRenderingCollections.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = void 0;\n var legendRect = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var data = void 0;\n var fill = void 0;\n var stroke = void 0;\n var strokeWidth = void 0;\n var legendElement = void 0;\n targetItem = treemap.layout.renderItems[parseFloat(target.id.split('_Item_Index_')[1])];\n var svgRect = treemap.svgObject.getBoundingClientRect();\n for (var i = 0; i < this.legendCollections.length; i++) {\n currentData = this.legendCollections[i];\n legendElement = document.getElementById(treemap.element.id + '_Legend_Index_' + i);\n legendRect = legendElement.getBoundingClientRect();\n var rect = new Rect(Math.abs(legendRect.left - svgRect.left), Math.abs(legendRect.top - svgRect.top), legendRect.width, legendRect.height);\n fill = legendElement.getAttribute('fill');\n stroke = legend.shapeBorder.color;\n strokeWidth = legend.shapeBorder.width;\n if (!isNullOrUndefined(currentData['legendData'])) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data = currentData['legendData'];\n for (var j = 0; j < data.length; j++) {\n if (data[j]['levelOrderName'] === targetItem['levelOrderName']) {\n this.drawInteractivePointer(legend, fill, stroke, interactiveId, strokeWidth, rect);\n break;\n }\n }\n }\n }\n }\n else {\n this.removeInteractivePointer();\n }\n };\n TreeMapLegend.prototype.drawInteractivePointer = function (legend, fill, stroke, id, strokeWidth, rect) {\n var path;\n var locX;\n var locY;\n var height = 10;\n var width = 10;\n var direction = (legend.orientation === 'None') ? (legend.position === 'Top' || legend.position === 'Bottom')\n ? 'Horizontal' : 'Vertical' : legend.orientation;\n if (direction === 'Horizontal') {\n if (!legend.invertedPointer) {\n locX = rect.x + (rect.width / 2);\n locY = rect.y;\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX - width) + ' ' + (locY - height) +\n ' L ' + (locX + width) + ' ' + (locY - height) + ' Z ';\n }\n else {\n locX = rect.x + (rect.width / 2);\n locY = rect.y + (rect.height);\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX - width) + ' ' + (locY + height) +\n ' L ' + (locX + width) + ' ' + (locY + height) + ' Z ';\n }\n }\n else {\n if (!legend.invertedPointer) {\n locX = rect.x + (rect.width);\n locY = rect.y + (rect.height / 2);\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX + width) + ' ' + (locY - height) +\n ' L ' + (locX + width) + ' ' + (locY + height) + ' z ';\n }\n else {\n locX = rect.x;\n locY = rect.y + (rect.height / 2);\n path = ' M ' + locX + ' ' + locY + ' L ' + (locX - width) + ' ' + (locY - height) +\n ' L ' + (locX - width) + ' ' + (locY + height) + ' z ';\n }\n }\n var pathOptions = new PathOption(id, fill, strokeWidth, stroke, 1, '', path);\n this.treemap.svgObject.appendChild(this.treemap.renderer.drawPath(pathOptions));\n };\n TreeMapLegend.prototype.getLegendAlignment = function (treemap, width, height, legend) {\n var x;\n var y;\n var spacing = 10;\n var totalRect;\n // eslint-disable-next-line prefer-const\n totalRect = extend({}, treemap.areaRect, totalRect, true);\n var areaX = totalRect.x;\n var areaY = totalRect.y;\n var areaHeight = totalRect.height;\n var areaWidth = totalRect.width;\n var totalWidth = treemap.availableSize.width;\n var totalHeight = treemap.availableSize.height;\n var position = legend.position === 'Auto' ? (totalWidth > totalHeight) ? 'Right' : 'Bottom' : legend.position;\n if (legend.position === 'Float') {\n this.translate = legend.location;\n }\n else {\n switch (position) {\n case 'Top':\n case 'Bottom':\n totalRect.height = (areaHeight - height);\n x = (totalWidth / 2) - (width / 2);\n y = (position === 'Top') ? areaY : (areaY + totalRect.height) + spacing;\n totalRect.y = (position === 'Top') ? areaY + height + spacing : areaY;\n break;\n case 'Left':\n case 'Right':\n totalRect.width = (areaWidth - width);\n x = (position === 'Left') ? areaX : areaX + totalRect.width;\n y = (totalHeight / 2) - (height / 2);\n totalRect.x = (position === 'Left') ? areaX + width : areaX;\n break;\n }\n switch (legend.alignment) {\n case 'Near':\n if (position === 'Top' || position === 'Bottom') {\n x = totalRect.x;\n }\n else {\n y = totalRect.y;\n }\n break;\n case 'Far':\n if (position === 'Top' || position === 'Bottom') {\n x = totalWidth - width;\n }\n else {\n y = totalHeight - height;\n }\n break;\n }\n this.treemap.totalRect = totalRect;\n this.translate = new Location(x, y);\n }\n };\n // eslint-disable-next-line valid-jsdoc\n /** @private */\n TreeMapLegend.prototype.mouseUpHandler = function (e) {\n this.renderInteractivePointer(e);\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeInteractivePointer.bind(this), 3000);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To remove the interactive pointer\n * @private\n */\n TreeMapLegend.prototype.removeInteractivePointer = function () {\n if (document.getElementById(this.treemap.element.id + '_Interactive_Legend')) {\n var legendElementId = document.getElementById(this.treemap.element.id + '_Interactive_Legend');\n legendElementId.parentNode.removeChild(legendElementId);\n }\n };\n /**\n * To change the next page\n *\n * @param {PointerEvent} e - Specifies the pointer event argument.\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.changeNextPage = function (e) {\n this.currentPage = (e.target.id.indexOf('_Left_Page_') > -1) ? (this.currentPage - 1) :\n (this.currentPage + 1);\n if (this.currentPage >= 0 && this.currentPage < this.totalPages.length) {\n this.drawLegend();\n }\n else {\n this.currentPage = (e.target.id.indexOf('_Left_Page_') > -1) ? 0 : this.totalPages.length - 1;\n }\n };\n /**\n * Wire events for event handler\n *\n * @param {Element} element - Specifies the element.\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.wireEvents = function (element) {\n EventHandler.add(element, Browser.touchStartEvent, this.changeNextPage, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To add the event listener\n * @private\n */\n TreeMapLegend.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.renderInteractivePointer, this);\n this.treemap.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To remove the event listener\n * @private\n */\n TreeMapLegend.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.renderInteractivePointer);\n this.treemap.off(Browser.touchEndEvent, this.mouseUpHandler);\n };\n /**\n * Get module name.\n *\n * @returns {string} Returns the legend module name.\n */\n TreeMapLegend.prototype.getModuleName = function () {\n return 'treeMapLegend';\n };\n /**\n * To destroy the legend.\n *\n * @returns {void}\n * @private\n */\n TreeMapLegend.prototype.destroy = function () {\n this.legendRenderingCollections = [];\n this.legendCollections = [];\n this.outOfRangeLegend = null;\n this.totalPages = [];\n this.translate = null;\n this.legendBorderRect = null;\n this.legendGroup = null;\n this.legendNames = [];\n this.defsElement = null;\n this.legendLinearGradient = null;\n this.legendInteractiveGradient = [];\n this.legendItemRect = null;\n this.removeEventListener();\n //TODO: The removeInteractivePointer method (calling method) is called in a timer in the mouseUpHandler method. Because of this handling, adding the below code results in a spec failure.\n //this.treemap = null;\n };\n /**\n * Get the gradient color for interactive legend.\n *\n * @param {ColorMappingModel} colorMap - Specifies the color mapping instance.\n * @param {number} legendIndex - Specifies the index of legend.\n * @returns {string} - Returns the legend color.\n * @private\n */\n TreeMapLegend.prototype.legendGradientColor = function (colorMap, legendIndex) {\n var legendFillColor;\n var xmlns = 'http://www.w3.org/2000/svg';\n if (!isNullOrUndefined(colorMap.color) && Object.prototype.toString.call(colorMap.color) === '[object Array]') {\n var defElement = this.treemap.renderer.createDefs();\n var linerGradientEle = document.createElementNS(xmlns, 'linearGradient');\n var opacity = 1;\n var position = this.treemap.legendSettings.position;\n var x2 = position === 'Top' || position === 'Bottom' ? '100' : '0';\n var y2 = position === 'Top' || position === 'Bottom' ? '0' : '100';\n linerGradientEle.setAttribute('id', 'linear_' + legendIndex);\n linerGradientEle.setAttribute('x1', 0 + '%');\n linerGradientEle.setAttribute('y1', 0 + '%');\n linerGradientEle.setAttribute('x2', x2 + '%');\n linerGradientEle.setAttribute('y2', y2 + '%');\n for (var b = 0; b < colorMap.color.length; b++) {\n var offsetColor = 100 / (colorMap.color.length - 1);\n var stopEle = document.createElementNS(xmlns, 'stop');\n stopEle.setAttribute('offset', b * offsetColor + '%');\n stopEle.setAttribute('stop-color', colorMap.color[b]);\n stopEle.setAttribute('stop-opacity', opacity.toString());\n linerGradientEle.appendChild(stopEle);\n }\n defElement.appendChild(linerGradientEle);\n this.legendLinearGradient = linerGradientEle;\n var color = 'url(' + '#linear_' + legendIndex + ')';\n this.defsElement.appendChild(linerGradientEle);\n legendFillColor = color;\n }\n return legendFillColor;\n };\n return TreeMapLegend;\n}());\nexport { TreeMapLegend };\n","import { Browser } from '@syncfusion/ej2-base';\nimport { itemHighlight, itemSelected } from '../model/constants';\nimport { findHightLightItems, removeClassNames, applyOptions, removeShape, removeLegend, removeSelectionWithHighlight, setColor, getLegendIndex, pushCollection, setItemTemplateContent } from '../utils/helper';\n/**\n * Performing treemap highlight\n */\nvar TreeMapHighlight = /** @class */ (function () {\n function TreeMapHighlight(treeMap) {\n this.target = 'highlight';\n this.shapeTarget = 'highlight';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.shapeHighlightCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendHighlightCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentElement = [];\n this.treemap = treeMap;\n this.addEventListener();\n }\n /**\n * Mouse down event in highlight\n *\n * @param {PointerEvent} e - Specifies the pointer argument.\n * @returns {boolean} - return the highlight process is true or false.\n * @private\n */\n TreeMapHighlight.prototype.mouseMove = function (e) {\n var treemap = this.treemap;\n var processHighlight;\n var targetId = e.target.id;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var eventArgs;\n var items = [];\n var highlight = this.treemap.highlightSettings;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n var highLightElements = [];\n var process;\n var treeMapElement;\n var element;\n var orders;\n var selectionModule = this.treemap.treeMapSelectionModule;\n if (targetId.indexOf('_Item_Index') > -1 && (selectionModule ? this.treemap.selectionId !== targetId : true)) {\n if (this.highLightId !== targetId) {\n treeMapElement = document.getElementById(treemap.element.id + '_TreeMap_' + treemap.layoutType + '_Layout');\n var selectionElements = document.getElementsByClassName('treeMapSelection');\n item = this.treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n var index = void 0;\n if (this.treemap.legendSettings.visible) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n var length_1 = this.treemap.treeMapLegendModule.legendCollections.length;\n index = getLegendIndex(length_1, item, treemap);\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index) : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index);\n if (this.shapeElement !== null && (selectionModule ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true)) {\n if (selectionModule ? this.shapeElement !== selectionModule.shapeElement : true) {\n this.currentElement.push({ currentElement: this.shapeElement });\n removeShape(this.shapeHighlightCollection);\n this.shapeHighlightCollection.push({ legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n setColor(this.shapeElement, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n this.target = 'highlight';\n }\n else if (this.currentElement.length > 0 && this.currentElement[this.currentElement.length - 1]['currentElement'] !== this.shapeElement) {\n removeSelectionWithHighlight(this.shapeHighlightCollection, this.currentElement, treemap);\n this.highLightId = '';\n }\n }\n else if (this.currentElement.length > 0 && this.currentElement[this.currentElement.length - 1]['currentElement'] !== this.shapeElement) {\n removeSelectionWithHighlight(this.shapeHighlightCollection, this.currentElement, treemap);\n this.highLightId = '';\n }\n }\n orders = findHightLightItems(item, [], highlight.mode, treemap);\n if (this.treemap.legendSettings.visible ? selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true : true) {\n if (this.treemap.legendSettings.visible ? selectionModule ?\n this.shapeElement !== selectionModule.shapeElement : true : true) {\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n process = true;\n item = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])];\n for (var j = 0; j < selectionElements.length; j++) {\n if (element.id === selectionElements[j].id) {\n process = false;\n break;\n }\n }\n if (orders.indexOf(item['levelOrderName']) > -1 && process) {\n highLightElements.push(element);\n items.push(item);\n }\n }\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n for (var k = 0; k < highLightElements.length; k++) {\n element = highLightElements[k];\n applyOptions(element.childNodes[0], { border: highlight.border, fill: highlight.fill, opacity: highlight.opacity });\n element.classList.add('treeMapHighLight');\n this.highLightId = targetId;\n }\n eventArgs = { cancel: false, name: itemHighlight, treemap: treemap, items: items, elements: highLightElements };\n treemap.trigger(itemHighlight, eventArgs);\n }\n else {\n processHighlight = false;\n }\n }\n }\n }\n else if (targetId.indexOf('_Legend_Shape') > -1 || targetId.indexOf('_Legend_Index') > -1) {\n if (this.treemap.legendSettings.visible && (selectionModule ? selectionModule.legendSelectId !== targetId : true)\n && (selectionModule ? selectionModule.shapeSelectId !== targetId : true)) {\n var itemIndex = void 0;\n var groupIndex = void 0;\n var length_2;\n var targetEle = document.getElementById(targetId);\n if (this.shapeTarget === 'highlight') {\n removeLegend(this.legendHighlightCollection);\n }\n this.shapeTarget = 'highlight';\n var index = this.treemap.legendSettings.mode === 'Default' ? parseFloat(targetId.split('_Legend_Shape_Index_')[1]) : parseFloat(targetId.split('_Legend_Index_')[1]);\n var dataLength = this.treemap.treeMapLegendModule.legendCollections[index]['legendData'].length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n var legendIndex = parseInt(targetId[targetId.length - 1], 10);\n for (var i = 0; i < dataLength; i++) {\n for (var j = 0; j < this.treemap.layout.renderItems.length; j++) {\n if (this.treemap.treeMapLegendModule.legendCollections[index]['legendData'][i]['levelOrderName'] === this.treemap.layout.renderItems[j]['levelOrderName']) {\n itemIndex = j;\n groupIndex = this.treemap.layout.renderItems[j]['groupIndex'];\n var nodeEle = document.getElementById(this.treemap.element.id + '_Level_Index_' + groupIndex + '_Item_Index_' + itemIndex + '_RectPath');\n if (i === 0) {\n this.legendHighlightCollection = [];\n pushCollection(this.legendHighlightCollection, legendIndex, j, targetEle, nodeEle, this.treemap.layout.renderItems, collection);\n length_2 = this.legendHighlightCollection.length;\n this.legendHighlightCollection[length_2 - 1]['ShapeCollection'] = { Elements: [] };\n }\n setColor(targetEle, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n setColor(nodeEle, highlight.fill, highlight.opacity, highlight.border.color, highlight.border.width.toString());\n length_2 = this.legendHighlightCollection.length;\n this.legendHighlightCollection[length_2 - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n }\n }\n else {\n if (selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true) {\n if (selectionModule ? this.shapeElement !== selectionModule.shapeElement : true && this.treemap.legendSettings.visible) {\n removeClassNames(document.getElementsByClassName('treeMapHighLight'), 'treeMapHighLight', treemap);\n }\n }\n if ((this.shapeTarget === 'highlight' || this.target === 'highlight') && this.treemap.legendSettings.visible) {\n if (selectionModule ? this.shapeElement ? this.shapeElement.getAttribute('id') !== selectionModule.legendSelectId : true : true) {\n if (selectionModule ? this.shapeElement !== selectionModule.shapeElement : true && selectionModule ?\n selectionModule.legendSelect : true) {\n removeShape(this.shapeHighlightCollection);\n this.shapeHighlightCollection = [];\n }\n }\n }\n if (this.shapeTarget === 'highlight' && this.treemap.legendSettings.visible) {\n removeLegend(this.legendHighlightCollection);\n }\n this.highLightId = '';\n processHighlight = false;\n }\n return processHighlight;\n };\n /**\n * To bind events for highlight\n *\n * @returns {void}\n */\n TreeMapHighlight.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.mouseMove, this);\n };\n /**\n * To unbind events for highlight\n *\n * @returns {void}\n */\n TreeMapHighlight.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.mouseMove);\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name\n */\n TreeMapHighlight.prototype.getModuleName = function () {\n return 'treeMapHighlight';\n };\n /**\n * To destroy the hightlight.\n *\n * @returns {void}\n * @private\n */\n TreeMapHighlight.prototype.destroy = function () {\n this.shapeElement = null;\n this.shapeHighlightCollection = [];\n this.legendHighlightCollection = [];\n this.currentElement = [];\n this.removeEventListener();\n this.treemap = null;\n };\n return TreeMapHighlight;\n}());\nexport { TreeMapHighlight };\n/**\n * Performing treemap selection\n */\nvar TreeMapSelection = /** @class */ (function () {\n function TreeMapSelection(treeMap) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.shapeSelectionCollection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.legendSelectionCollection = [];\n this.shapeSelect = true;\n this.legendSelect = true;\n this.treemap = treeMap;\n this.addEventListener();\n }\n /**\n * Mouse down event in selection\n *\n * @param {PointerEvent} e - Specifies the pointer argument.\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.mouseDown = function (e) {\n var targetEle = e.target;\n var eventArgs;\n var treemap = this.treemap;\n treemap.levelSelection = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var items = [];\n var targetId = targetEle.id;\n var labelText = targetEle.innerHTML;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item;\n var selectionElements = [];\n var treeMapElement;\n var element;\n var orders;\n var selection = treemap.selectionSettings;\n var highlightModule = this.treemap.treeMapHighlightModule;\n var layoutID = treemap.element.id + '_TreeMap_' + treemap.layoutType + '_Layout';\n if (targetId.indexOf('_Item_Index') > -1) {\n e.preventDefault();\n if (this.treemap.selectionId !== targetId && this.legendSelect) {\n treeMapElement = document.getElementById(layoutID);\n item = treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n var index = void 0;\n if (this.treemap.legendSettings.visible) {\n this.shapeSelect = false;\n var length_3 = this.treemap.treeMapLegendModule.legendCollections.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n this.shapeElement = undefined;\n removeShape(this.shapeSelectionCollection);\n if (highlightModule) {\n highlightModule.shapeTarget = 'selection';\n highlightModule.shapeHighlightCollection = [];\n }\n index = getLegendIndex(length_3, item, treemap);\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index) : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index);\n if (this.shapeElement !== null) {\n this.shapeSelectId = this.shapeElement.getAttribute('id');\n this.shapeSelectionCollection.push({ legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n setColor(this.shapeElement, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n }\n }\n orders = findHightLightItems(item, [], selection.mode, treemap);\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n item = treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])];\n if (orders.indexOf(item['levelOrderName']) > -1) {\n selectionElements.push(element);\n treemap.levelSelection.push(element.id);\n items.push(item);\n }\n }\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', treemap);\n this.treemap.selectionId = targetId;\n var highLightElements = document.getElementsByClassName('treeMapHighLight');\n for (var k = 0; k < selectionElements.length; k++) {\n element = selectionElements[k];\n if (highLightElements.length > 0) {\n for (var j = 0; j < highLightElements.length; j++) {\n if (highLightElements[j].id === element.id) {\n highLightElements[j].classList.remove('treeMapHighLight');\n }\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n else {\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n eventArgs = { cancel: false, name: itemSelected, treemap: treemap, items: items, elements: selectionElements,\n text: labelText, contentItemTemplate: labelText };\n treemap.trigger(itemSelected, eventArgs, function (observedArgs) {\n if (observedArgs.contentItemTemplate !== labelText) {\n setItemTemplateContent(targetId, targetEle, observedArgs.contentItemTemplate);\n }\n });\n }\n }\n else {\n removeShape(this.shapeSelectionCollection);\n this.shapeSelectionCollection = [];\n this.shapeElement = undefined;\n this.shapeSelect = true;\n this.shapeSelectId = '';\n this.treemap.legendId = [];\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', treemap);\n this.treemap.selectionId = '';\n }\n }\n else if (targetId.indexOf('_Legend_Shape') > -1 || targetId.indexOf('_Legend_Index') > -1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n if (this.treemap.legendSettings.visible && this.legendSelectId !== targetId && this.shapeSelect) {\n var itemIndex = void 0;\n var groupIndex = void 0;\n var length_4;\n this.legendSelectId = targetId;\n this.legendSelect = false;\n var legendIndex = parseInt(targetId[targetId.length - 1], 10);\n var targetEle_1 = document.getElementById(targetId);\n removeLegend(this.legendSelectionCollection);\n if (highlightModule) {\n highlightModule.shapeTarget = 'selection';\n }\n var index = this.treemap.legendSettings.mode === 'Default' ? parseFloat(targetId.split('_Legend_Shape_Index_')[1]) : parseFloat(targetId.split('_Legend_Index_')[1]);\n var dataLength = this.treemap.treeMapLegendModule.legendCollections[index]['legendData'].length;\n for (var k = 0; k < dataLength; k++) {\n for (var l = 0; l < this.treemap.layout.renderItems.length; l++) {\n if (this.treemap.treeMapLegendModule.legendCollections[index]['legendData'][k]['levelOrderName'] === this.treemap.layout.renderItems[l]['levelOrderName']) {\n itemIndex = l;\n groupIndex = this.treemap.layout.renderItems[l]['groupIndex'];\n var nodeEle = document.getElementById(this.treemap.element.id + '_Level_Index_' + groupIndex + '_Item_Index_' + itemIndex + '_RectPath');\n if (k === 0) {\n pushCollection(this.legendSelectionCollection, legendIndex, l, targetEle_1, nodeEle, this.treemap.layout.renderItems, collection);\n length_4 = this.legendSelectionCollection.length;\n this.legendSelectionCollection[length_4 - 1]['ShapeCollection'] = { Elements: [] };\n }\n setColor(targetEle_1, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n setColor(nodeEle, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n length_4 = this.legendSelectionCollection.length;\n this.legendSelectionCollection[length_4 - 1]['ShapeCollection']['Elements'].push(nodeEle);\n }\n }\n }\n }\n else {\n removeLegend(this.legendSelectionCollection);\n if (highlightModule) {\n highlightModule.shapeTarget = 'highlight';\n }\n this.legendSelect = true;\n this.legendSelectId = '';\n }\n }\n };\n /**\n * @param {string} levelOrder - Specifies the level order of treemap item\n * @param {boolean} enable - Specifies the boolean value\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.selectTreemapItem = function (levelOrder, enable) {\n if (enable) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var item = void 0;\n for (var s = 0; s < this.treemap.layout.renderItems.length; s++) {\n if (levelOrder === this.treemap.layout.renderItems[s]['levelOrderName']) {\n item = this.treemap.layout.renderItems[s];\n break;\n }\n }\n var selection = this.treemap.selectionSettings;\n var selectionElements = [];\n var element = void 0;\n var index = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var items = [];\n this.treemap.levelSelection = [];\n var layoutID = this.treemap.element.id + '_TreeMap_' + this.treemap.layoutType + '_Layout';\n var treeMapElement = document.getElementById(layoutID);\n var orders = findHightLightItems(item, [], selection.mode, this.treemap);\n for (var i = 0; i < treeMapElement.childElementCount; i++) {\n element = treeMapElement.childNodes[i];\n item = this.treemap.layout.renderItems[parseFloat(element.id.split('_Item_Index_')[1])];\n if (orders.indexOf(item['levelOrderName']) > -1) {\n selectionElements.push(element);\n this.treemap.levelSelection.push(element.id);\n items.push(item);\n }\n }\n if (this.treemap.legendSettings.visible) {\n for (var m = 0; m < items.length; m++) {\n this.shapeSelect = false;\n var length_5 = this.treemap.treeMapLegendModule.legendCollections.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var collection = this.treemap.treeMapLegendModule.legendCollections;\n this.shapeElement = undefined;\n removeShape(this.shapeSelectionCollection);\n index = getLegendIndex(length_5, items[m], this.treemap);\n this.shapeElement = this.treemap.legendSettings.mode === 'Default' ? document.getElementById(this.treemap.element.id + '_Legend_Shape_Index_' + index) : document.getElementById(this.treemap.element.id + '_Legend_Index_' + index);\n if (this.shapeElement !== null) {\n this.shapeSelectId = this.shapeElement.getAttribute('id');\n this.treemap.legendId.push(this.shapeSelectId);\n this.shapeSelectionCollection.push({\n legendEle: this.shapeElement, oldFill: collection[index]['legendFill'],\n oldOpacity: collection[index]['opacity'], oldBorderColor: collection[index]['borderColor'],\n oldBorderWidth: collection[index]['borderWidth']\n });\n setColor(this.shapeElement, selection.fill, selection.opacity, selection.border.color, selection.border.width.toString());\n }\n }\n }\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', this.treemap);\n var selectionElement = document.getElementById(this.treemap.levelSelection[0]);\n this.treemap.selectionId = selectionElement.childNodes[0]['id'];\n var highLightElements = document.getElementsByClassName('treeMapHighLight');\n for (var k = 0; k < selectionElements.length; k++) {\n element = selectionElements[k];\n if (highLightElements.length > 0) {\n for (var j = 0; j < highLightElements.length; j++) {\n if (highLightElements[j].id === element.id) {\n highLightElements[j].classList.remove('treeMapHighLight');\n }\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n else {\n selection.fill = selection.fill === 'null' ?\n this.treemap.layout.renderItems[parseInt(element.id.split('Item_Index_')[1], 10)]['options']['fill']\n : selection.fill;\n applyOptions(element.childNodes[0], { border: selection.border, fill: selection.fill, opacity: selection.opacity });\n element.classList.add('treeMapSelection');\n }\n }\n }\n else {\n removeShape(this.shapeSelectionCollection);\n this.shapeElement = undefined;\n this.treemap.levelSelection = [];\n this.shapeSelect = true;\n this.shapeSelectId = '';\n this.treemap.legendId = [];\n removeClassNames(document.getElementsByClassName('treeMapSelection'), 'treeMapSelection', this.treemap);\n this.treemap.selectionId = '';\n }\n };\n /**\n * To bind events for selection\n *\n * @returns {void}\n */\n TreeMapSelection.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchStartEvent, this.mouseDown, this);\n };\n /**\n * To unbind events for selection\n *\n * @returns {void}\n */\n TreeMapSelection.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchStartEvent, this.mouseDown);\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n TreeMapSelection.prototype.getModuleName = function () {\n return 'treeMapSelection';\n };\n /**\n * To destroy the selection.\n *\n * @returns {void}\n * @private\n */\n TreeMapSelection.prototype.destroy = function () {\n this.shapeElement = null;\n this.shapeSelectionCollection = [];\n this.legendSelectionCollection = [];\n this.removeEventListener();\n this.treemap = null;\n };\n return TreeMapSelection;\n}());\nexport { TreeMapSelection };\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport { Tooltip } from '@syncfusion/ej2-svg-base';\nimport { Browser, createElement, isNullOrUndefined, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getMousePosition, textFormatter, formatValue } from '../utils/helper';\nimport { tooltipRendering } from '../model/constants';\n/**\n * Render Tooltip\n */\nvar TreeMapTooltip = /** @class */ (function () {\n function TreeMapTooltip(treeMap) {\n this.treemap = treeMap;\n this.tooltipSettings = this.treemap.tooltipSettings;\n this.tooltipId = this.treemap.element.id + '_TreeMapTooltip';\n this.addEventListener();\n }\n TreeMapTooltip.prototype.renderTooltip = function (e) {\n var _this = this;\n var pageX;\n var pageY;\n var target;\n var touchArg;\n var tootipArgs;\n if (e.type.indexOf('touch') !== -1) {\n this.isTouch = true;\n touchArg = e;\n pageX = touchArg.changedTouches[0].pageX;\n pageY = touchArg.changedTouches[0].pageY;\n target = touchArg.target;\n }\n else {\n this.isTouch = e.pointerType === 'touch';\n pageX = e.pageX;\n pageY = e.pageY;\n target = e.target;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value;\n var targetId = target.id;\n var item = {};\n var tooltipEle;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var location;\n var toolTipData = {};\n var tooltipContent = [];\n var markerFill;\n if (targetId.indexOf('_Item_Index') > -1) {\n item = this.treemap.layout.renderItems[parseFloat(targetId.split('_Item_Index_')[1])];\n if (!isNullOrUndefined(item)) {\n value = item['weight'];\n toolTipData = item['data'];\n if (!isNullOrUndefined(item['options'])) {\n markerFill = item['options']['fill'];\n }\n if (this.treemap.enableRtl) {\n tooltipContent = [SanitizeHtmlHelper.sanitize(textFormatter(this.tooltipSettings.format, toolTipData, this.treemap)) ||\n SanitizeHtmlHelper.sanitize(formatValue(value, this.treemap) + ' : ' + this.treemap.weightValuePath.toString())];\n }\n else {\n tooltipContent = [SanitizeHtmlHelper.sanitize(textFormatter(this.tooltipSettings.format, toolTipData, this.treemap)) ||\n SanitizeHtmlHelper.sanitize(this.treemap.weightValuePath.toString() + ' : ' + formatValue(value, this.treemap))];\n }\n if (document.getElementById(this.tooltipId)) {\n tooltipEle = document.getElementById(this.tooltipId);\n }\n else {\n tooltipEle = createElement('div', {\n id: this.treemap.element.id + '_TreeMapTooltip',\n className: 'EJ2-TreeMap-Tooltip'\n });\n tooltipEle.style.cssText = 'position: absolute;pointer-events:none;';\n document.getElementById(this.treemap.element.id + '_Secondary_Element').appendChild(tooltipEle);\n }\n location = getMousePosition(pageX, pageY, this.treemap.svgObject);\n location.y = (this.tooltipSettings.template) ? location.y + 10 : location.y;\n this.tooltipSettings.textStyle.size = this.tooltipSettings.textStyle.size || this.treemap.themeStyle.tooltipFontSize;\n this.tooltipSettings.textStyle.fontFamily = this.treemap.themeStyle.fontFamily;\n this.tooltipSettings.textStyle.fontStyle = !isNullOrUndefined(this.tooltipSettings.textStyle.fontStyle) ? this.tooltipSettings.textStyle.fontStyle : 'Normal';\n this.tooltipSettings.textStyle.fontWeight = this.tooltipSettings.textStyle.fontWeight || this.treemap.themeStyle.fontWeight;\n this.tooltipSettings.textStyle.color = this.treemap.themeStyle.tooltipFontColor\n || this.tooltipSettings.textStyle.color;\n this.tooltipSettings.textStyle.opacity = this.treemap.themeStyle.tooltipTextOpacity\n || this.tooltipSettings.textStyle.opacity;\n tootipArgs = {\n cancel: false, name: tooltipRendering, item: item,\n options: {\n location: location, text: tooltipContent, data: toolTipData,\n textStyle: this.tooltipSettings.textStyle, template: this.tooltipSettings.template\n },\n treemap: this.treemap,\n element: target, eventArgs: e\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.treemap.trigger(tooltipRendering, tootipArgs, function (args) {\n _this.addTooltip(tootipArgs, markerFill, tooltipEle);\n });\n }\n }\n else {\n this.removeTooltip();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.clearTemplate();\n }\n };\n TreeMapTooltip.prototype.addTooltip = function (tootipArgs, markerFill, tooltipEle, eventArgs) {\n var cancel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var args;\n if (!isNullOrUndefined(tootipArgs)) {\n var c = tootipArgs.cancel, otherArgs = __rest(tootipArgs, [\"cancel\"]);\n cancel = c;\n args = otherArgs.options;\n }\n else {\n cancel = eventArgs.cancel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args = eventArgs;\n }\n if (!cancel) {\n this.svgTooltip = new Tooltip({\n enable: true,\n header: '',\n data: args['data'],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n template: args['template'],\n content: args['text'],\n shapes: [],\n location: args['location'],\n palette: [markerFill],\n areaBounds: this.treemap.areaRect,\n textStyle: args['textStyle'],\n fill: this.treemap.tooltipSettings.fill ? this.treemap.tooltipSettings.fill : this.treemap.themeStyle.tooltipFillColor\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.treemap.isVue || this.treemap.isVue3) {\n this.svgTooltip.controlInstance = this.treemap;\n }\n this.svgTooltip.opacity = this.treemap.themeStyle.tooltipFillOpacity || this.svgTooltip.opacity;\n this.svgTooltip.appendTo(tooltipEle);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.renderReactTemplates();\n }\n else {\n this.removeTooltip();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.treemap.clearTemplate();\n }\n };\n TreeMapTooltip.prototype.mouseUpHandler = function (e) {\n this.renderTooltip(e);\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeTooltip.bind(this), 2000);\n };\n TreeMapTooltip.prototype.removeTooltip = function () {\n if (document.getElementsByClassName('EJ2-TreeMap-Tooltip').length > 0) {\n var tooltipElementId = document.getElementsByClassName('EJ2-TreeMap-Tooltip')[0];\n tooltipElementId.parentNode.removeChild(tooltipElementId);\n }\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To bind events for tooltip module\n * @private\n */\n TreeMapTooltip.prototype.addEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.on(Browser.touchMoveEvent, this.renderTooltip, this);\n this.treemap.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To unbind events for tooltip module\n * @private\n */\n TreeMapTooltip.prototype.removeEventListener = function () {\n if (this.treemap.isDestroyed) {\n return;\n }\n this.treemap.off(Browser.touchMoveEvent, this.renderTooltip);\n this.treemap.off(Browser.touchEndEvent, this.mouseUpHandler);\n };\n /**\n * Get module name.\n *\n * @returns {string} returns string\n */\n TreeMapTooltip.prototype.getModuleName = function () {\n return 'treeMapTooltip';\n };\n /**\n * To destroy the tooltip.\n *\n * @returns {void}\n * @private\n */\n TreeMapTooltip.prototype.destroy = function () {\n if (!isNullOrUndefined(this.svgTooltip)) {\n this.svgTooltip.destroy();\n }\n this.svgTooltip = null;\n this.tooltipSettings = null;\n this.removeEventListener();\n this.treemap = null;\n };\n return TreeMapTooltip;\n}());\nexport { TreeMapTooltip };\n"],"names":["stringToNumber","value","containerSize","undefined","indexOf","parseInt","measureText","text","font","measureObject","document","getElementById","createElement","id","body","appendChild","innerHTML","SanitizeHtmlHelper","sanitize","style","position","fontSize","size","fontWeight","fontStyle","fontFamily","visibility","top","left","whiteSpace","lineHeight","Size","clientWidth","clientHeight","textTrim","maxWidth","label","width","i","length","substring","findPosition","location","alignment","textSize","type","x","y","height","Location","createTextStyle","renderer","renderOptions","htmlObject","createText","setAttributeNS","renderTextElement","options","color","parent","isMinus","tspanElement","font-size","font-style","font-family","font-weight","text-anchor","anchor","transform","opacity","dominant-baseline","baseLine","fill","SvgRenderer","isNullOrUndefined","connectorText","search","drillLevelText","split","z","drillText","replace","len","createTSpan","setItemTemplateContent","targetId","targetElement","contentItemTemplate","itemTemplate","itemSelect","querySelector","getElement","itemsToOrder","a","b","isContainsData","source","pathName","processData","treemap","isExist","name","leaf","leafItemSettings","data","levels","groupPath","labelPath","weightValuePath","findChildren","children","keys","Object","Array","findHightLightItems","items","mode","treeMap","push","j","parentName","currentItem","layout","renderItems","getTemplateFunction","template","templateFn","querySelectorAll","compile","trim","e","convertElement","element","labelId","childElement","cssText","elementLength","templateHtml","regExp","RegExp","toString","findLabelLocation","rect","labelSize","areaRect","Math","abs","enableDrillDown","renderDirection","measureElement","parentElement","offsetHeight","offsetWidth","measureElementId","parentNode","removeChild","getArea","getShortestEdge","input","container","convertToContainer","min","convertToRect","xOffset","yOffset","getMousePosition","pageX","pageY","elementRect","getBoundingClientRect","pageXOffset","ownerDocument","defaultView","pageYOffset","clientTop","documentElement","clientLeft","positionX","positionY","colorMap","colorMapping","equalValue","paths","isNaN","isEqualColor","dataValue","from","to","prototype","call","colorCollections","minOpacity","maxOpacity","deSaturationColor","rangeValue","getColorByValue","rgbToHex","r","g","componentToHex","rbg","Number","getGradientColor","previousOffset","nextOffset","percent","full","previousColor","nextColor","charAt","colorNameToHex","length_1","splitColorValueOffset","splitColor","getPercentageColor","previous","next","prevColor","getPercentage","substr","ColorValue","round","wordWrap","maximumWidth","dataLabel","textCollection","labelCollection","concat","textWrap","resultText","currentLength","totalWidth","totalLength","sliceString","slice","hide","maxHeight","orderByArea","maintainSelection","className","elementId","levelSelection","index","getAttribute","childElementCount","setAttribute","applyOptions","childNodes","border","selectionSettings","legendMaintain","legendGroup","legendId","treemapSVGRectElement","removeClassNames","elements","parseFloat","classList","remove","textFormatter","format","_i","keys_1","key","join","formatValue","intl","getNumberFormat","useGrouping","useGroupingSeparator","formatFunction","convertToHexCode","hex","convertHexToColor","result","exec","isRGBValue","window","getComputedStyle","drawSymbol","shape","url","svgRenderer","temp","renderLegendShape","htmlElement","functionName","renderOption","renderPath","shapeWidth","shapeHeight","shapeX","shapeY","merge","rx","ry","cx","cy","d","xValue","yValue","cos","PI","sin","href","isParentItem","item","removeShape","collection","setColor","removeLegend","dataCount","k","borderColor","borderWidth","removeSelectionWithHighlight","getElementsByClassName","getLegendIndex","dataLength","treeMapLegendModule","legendCollections","pushCollection","number","legendElement","shapeElement","legendCollection","legendEle","oldFill","oldOpacity","oldBorderColor","oldBorderWidth","shapeOldFill","shapeOldOpacity","shapeOldBorderColor","shapeOldBorderWidth","triggerDownload","fileName","isDownload","attrs","download","toLocaleLowerCase","dispatchEvent","MouseEvent","view","bubbles","cancelable","removeElement","getThemeStyle","theme","toLowerCase","backgroundColor","titleFontColor","titleFontWeight","subTitleFontColor","tooltipFillColor","tooltipFontColor","tooltipFontSize","legendTitleColor","legendTextColor","subtitleFontSize","legendFontSize","tooltipFillOpacity","tooltipTextOpacity","labelFontFamily","beforePrint","itemRendering","drillStart","drillEnd","itemSelected","itemHighlight","tooltipRendering","itemClick","itemMove","doubleClick","rightClick","mouseMove","legendItemRendering","legendRendering","resize","defaultFont","__extends","extendStatics","setPrototypeOf","__proto__","p","hasOwnProperty","__","this","constructor","create","__decorate","decorators","target","desc","c","arguments","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","Border","_super","apply","Property","ChildProperty","Margin","Font","CommonTitleSettings","SubTitleSettings","Complex","TitleSettings","ColorMapping","LegendSettings","InitialDrillSettings","LeafItemSettings","Collection","TooltipSettings","SelectionSettings","HighlightSettings","LevelSettings","Rect","RectOption","dashArray","stroke","PathOption","TextOption","TreeMapAjax","async","contentType","sendData","dataOptions","LayoutPanel","processLayoutPanel","totalRect","treemapLevelData","levelsData","initialDrillDown","groupIndex","groupName","drilledItems","getDrilldownData","extend","legendSettings","currentLevel","calculateLayoutItems","renderLayoutItems","count","enableBreadcrumb","drillData","newData","child","parentData","layoutType","computeSliceAndDiceDimensional","computeSquarifyDimensional","coords","gap","headerHeight","leafItem","groups","sliceAndDiceProcess","groupGap","showHeader","childValue","parentArea","alottedValue","totalWeight","forEach","isHorizontal","sort","isHierarchicalData","padding","calculateChildrenLayout","groupPadding","computeTotalArea","performRowsLayout","currentRow","stack","newCoordinates","getCoordinates","newStack","nextDatum","restData","aspectRatio","newRow","currentRowLength","valueSum","newContainer","cutArea","findMaxAspectRatio","row","rowLength","minArea","Infinity","maxArea","sumArea","area","max","pow","areaWidth","areaHeight","isParent","parentRect","subXOffset","subYOffset","coordinates","y1","x1","dataLength_1","dataSum","i_1","multiplier","datum","onDemandProcess","childItems","parentItem","parentItemGroupname","splice","txtVisible","getItemColor","eventArgs","_this","pathOptions","templatePosition","renderText","groupId","templateEle","textStyle","elementID","interSectAction","rectPath","secondaryEle","layoutGroup","createGroup","itemGroup","templateGroup","isLeafItem","_loop_1","this_1","drillDownView","treemapItemRect","labelFormat","headerFormat","levelName","showLabels","breadcrumbConnector","enableRtl","labelStyle","headerStyle","themeStyle","labelPosition","labelTemplate","headerTemplate","cancel","RenderItems","trigger","observedArgs","path","drawPath","renderItemText","renderTemplate","renderReactTemplates","enable","highlightSettings","tabIndex","cursor","svgObject","customText","textName","tspanText","labelInterSectAction","drillSymbolCount","drillSymbolSize","textLocation","texts","maxNumber","collectionLength","stringText","getSaturatedColor","itemFill","itemOpacity","defaultLevelsData","option","equalColorValuePath","rangeColorValuePath","colorValuePath","palette","saturatedColor","rgbValue","templateId","baseTemplateId","labelElement","templateLocation","textValue","destroy","currentRect","Theme","mapsTitleFont","Print","control","print","printWindow","open","outerHeight","outerWidth","moveTo","resizeTo","screen","availWidth","availHeight","argsData","htmlContent","getHTMLContent","printFunction","div","cloneNode","Element","exportElement","backgroundElement","getElementsByTagName","getModuleName","ImageExport","export","allowDownload","Promise","resolve","reject","availableSize","Browser","userAgent","svgData","outerHTML","URL","createObjectURL","Blob","XMLSerializer","serializeToString","image_1","Image","context_1","getContext","onload","drawImage","revokeObjectURL","toDataURL","src","PdfExport","orientation","PdfPageOrientation","Landscape","image","context","PdfDocument","imageString","pageSettings","pages","add","graphics","PdfBitmap","save","TreeMap","isResize","preRender","initPrivateVariable","unWireEVents","createSvg","wireEVents","setCulture","render","renderElements","LevelsData","hierarchyData","createSecondaryElement","addTabIndex","renderBorder","renderTitle","titleSettings","processDataManager","dataModule","queryModule","fetchApiModule","localAjax","dataSource","DataManager","query","Query","executeQuery","then","renderTreeMapElements","Fetch","onSuccess","args","reader_1","FileReader","treemap_1","JSON","parse","readAsText","send","processingData","visible","renderLegend","elementChange","isResized","renderComplete","firstChild","hasChildNodes","clearTemplate","containerWidth","containerHeight","secondaryElement","insertBefore","borderElement","background","borderRect","drawRectangle","title","bounds","groupEle","margin","right","trimmedTitle","elementSize","location_1","titleBounds","description","subtitleSettings","bottom","map","checkIsHierarchicalData","data_1","currentData","levelOrderName","weight","processHierarchicalData","processFlatJsonData","reOrderLevelData","findTotalWeight","childData","levelIndex","childItemLevel","childLevel","mainData_1","l","allowPrint","printModule","allowPdfExport","pdfExportModule","allowImageExport","imageExportModule","orderNames","level","childName","name_1","childGroupPath","start","currentName","currentPath","prevPath","previousData","IsChildHierarchy","current","isChild","groupObj","EventHandler","clickOnTreeMap","doubleClickOnTreeMap","rightClickOnTreeMap","touchStartEvent","mouseDownOnTreeMap","touchMoveEvent","mouseMoveOnTreeMap","touchEndEvent","mouseEndOnTreeMap","mouseLeaveOnTreeMap","removeEventListener","resizeEvent","resizeOnTreeMap","bind","addEventListener","Internationalization","isDestroyed","args_1","previousSize","currentSize","clearTimeout","contains","setTimeout","refreshing","itemIndex","targetEle","labelText","clickArgs","mouseEvent","preventDefault","textContent","doubleTapTimer1","end","Date","getMilliseconds","doubleClickArgs","rightClickArgs","mouseDown","notify","moveArgs","calculateSelectedTextLevels","drillLevel","levelText","_a","currentLevelLabel","calculatePreviousLevelChildItems","drillLevelValues","directLevel","levelItems","text1","drillTextLevel","h","compareSelectedLabelWithDrillDownItems","drillLevelChild","newDrillItem","startEvent","endEvent","layoutID","templateID","drillMouseMove","drillLength","which","layerElementId","widthIncrement","heightIncrement","drilledLegendItems","drillElementId","treeMapTooltipModule","removeTooltip","removeInteractivePointer","treeMapHighlightModule","shapeHighlightCollection","highLightId","selectItem","levelOrder","isSelected","treeMapSelectionModule","selectTreemapItem","requiredModules","modules","tooltipSettings","member","onPropertyChanged","newProp","oldProp","removeSvg","getPersistData","Event","NotifyPropertyChanges","Component","TreeMapLegend","page","legendBorderRect","currentPage","textMaxWidth","legendInteractiveGradient","legendItemRect","legendRenderingCollections","legendNames","totalPages","gradientCount","defsElement","createDefs","_changePosition","calculateLegendBounds","drawLegend","legend","findColorMappingLegendItems","findPaletteLegendItems","firstItem","nextItem","leafIndex","legendTitle","titleTextStyle","titleStyle","legendMode","textX","textY","shapeLocation","orientation_1","legendWidth","legendHeight","legendTitleSize","startX_1","startY_1","shapePadding","itemTextStyle","legendItem","Page","legendTextSize","maxSize","prvePositionX","nextPositionY","getPageChanged","prevPositionY","nextPositionX","DisplayText","Shape","Text","Fill","Data","legendObj","legendRect","legendLength","rectWidth","rectHeight","placement","itemStartX","itemStartY","labelAction","labelDisplayMode","maxTextHeight","maxTextWidth","legendText","itemTextSize","textWidth","textHeight","calculateLegendItems","legendFillColor","legendName","showLegendPath","valuePath","removeDuplicateLegend","removeDuplicates","legendFill","legendData","itemArea","isAddData","gradientElement","x2","y2","actualValue","isDuplicate","isRange","outfill","labelLegend","otherIndex","colorMapProcess","isDesaturation","legendIndex","outOfRangeLegend","showLegend","isAddNewLegendData","colors","q","stop1Color","colorStop","stop2Color","gradient","drawGradient","legendGradientColor","legendLinearGradient","newDataProcess","itemValue","process","textFont","renderLegendBorder","renderLegendTitle","drawLegendItem","itemId","textId","rectOptions","shapeBorder","translate","defaultLegendRtlLocation","spacing","legendRtlLocation","shapeSize","isLineShape_1","strokeColor_1","strokeWidth_1","shapeId","imageUrl","pagingGroup","pagingText","pagingFont","pagingTextSize","leftPageX","rightPageX","locY","pageTextX","leftPageElement","rightPageElement","rightPath","leftPath","leftPageOptions","leftRectPageOptions","wireEvents","rightPageOptions","rightRectPageOptions","pageTextOptions","legendBorder","pointerEvents","getLegendAlignment","trimTitle","renderInteractivePointer","interactiveId","elementFromPoint","changedTouches","clientX","clientY","targetItem","strokeWidth","svgRect","drawInteractivePointer","locX","invertedPointer","areaX","areaY","totalHeight","mouseUpHandler","legendElementId","changeNextPage","on","off","xmlns","defElement","linerGradientEle","createElementNS","offsetColor","stopEle","TreeMapHighlight","shapeTarget","legendHighlightCollection","currentElement","processHighlight","treeMapElement","orders","highlight","highLightElements","selectionModule","selectionId","selectionElements","legendSelectId","shapeSelectId","length_2","nodeEle","Elements","legendSelect","TreeMapSelection","shapeSelectionCollection","legendSelectionCollection","shapeSelect","selection","highlightModule","length_3","length_4","targetEle_1","s","m","length_5","selectionElement","__rest","t","getOwnPropertySymbols","TreeMapTooltip","tooltipId","renderTooltip","touchArg","tootipArgs","isTouch","pointerType","tooltipEle","markerFill","toolTipData","tooltipContent","addTooltip","svgTooltip","Tooltip","header","content","shapes","areaBounds","isVue","isVue3","controlInstance","appendTo","tooltipElementId"],"mappings":"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"}
|