{"version":3,"sources":["node_modules/ag-grid-enterprise/dist/ag-grid-enterprise.auto.esm.js"],"sourcesContent":["/**\n * @ag-grid-enterprise/all-modules - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license Commercial\n */\nimport { _, Autowired, PreConstruct, Bean, BeanStub, PostConstruct, RefSelector, Component, ModuleNames, Constants, Events, ChangedPath, Optional, CsvExportModule, KeyCode, EventService, Column, ProvidedColumnGroup, AgMenuList, AgMenuItemComponent, AgCheckbox, CssClassApplier, DragSourceType, DragAndDropService, TouchListener, AutoScrollService, VirtualList, PreDestroy, NumberSequence, RowNode, ManagedFocusFeature, PositionableFeature, TabGuardComp, ModuleRegistry, ExcelFactoryMode, XmlFactory, RowType, BaseGridSerializingSession, Downloader, BaseCreator, ZipContainer, GridSerializer, CsvCreator, AgGroupComponent, CellRangeType, AgAbstractField, AgRadioButton, AgToggleButton, AgSelect, AgSlider, AgAngleSelect, DEFAULT_CHART_GROUPS, TabbedLayout, AgPromise, CHART_TOOLBAR_ALLOW_LIST, CHART_TOOL_PANEL_ALLOW_LIST, CHART_TOOL_PANEL_MENU_OPTIONS, AgPanel, Color as Color$2, AgDialog, SelectionHandleType, Grid, ProvidedFilter, PopupComponent, ServerSideTransactionResultStatus, RowNodeBlock, Qualifier, TextFilter, AllCommunityModules } from 'ag-grid-community';\nexport * from 'ag-grid-community';\nvar __extends$3t = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$2l = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __read$Y = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar LicenseManager = /** @class */function (_super) {\n __extends$3t(LicenseManager, _super);\n function LicenseManager() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.watermarkMessage = undefined;\n return _this;\n }\n LicenseManager_1 = LicenseManager;\n LicenseManager.prototype.validateLicense = function () {\n if (_.missingOrEmpty(LicenseManager_1.licenseKey)) {\n this.outputMissingLicenseKey();\n } else if (LicenseManager_1.licenseKey.length > 32) {\n var _a = LicenseManager_1.extractLicenseComponents(LicenseManager_1.licenseKey),\n md5 = _a.md5,\n license = _a.license,\n version = _a.version,\n isTrial = _a.isTrial;\n if (md5 === this.md5.md5(license)) {\n if (_.exists(version) && version) {\n this.validateLicenseKeyForVersion(version, !!isTrial, license);\n } else {\n this.validateLegacyKey(license);\n }\n } else {\n this.outputInvalidLicenseKey();\n }\n } else {\n this.outputInvalidLicenseKey();\n }\n };\n LicenseManager.extractExpiry = function (license) {\n var restrictionHashed = license.substring(license.lastIndexOf('_') + 1, license.length);\n return new Date(parseInt(LicenseManager_1.decode(restrictionHashed), 10));\n };\n LicenseManager.extractLicenseComponents = function (licenseKey) {\n // when users copy the license key from a PDF extra zero width characters are sometimes copied too\n // carriage returns and line feeds are problematic too\n // all of which causes license key validation to fail - strip these out\n var cleanedLicenseKey = licenseKey.replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n cleanedLicenseKey = cleanedLicenseKey.replace(/\\r?\\n|\\r/g, '');\n var hashStart = cleanedLicenseKey.length - 32;\n var md5 = cleanedLicenseKey.substring(hashStart);\n var license = cleanedLicenseKey.substring(0, hashStart);\n var _a = __read$Y(LicenseManager_1.extractBracketedInformation(cleanedLicenseKey), 2),\n version = _a[0],\n isTrial = _a[1];\n return {\n md5: md5,\n license: license,\n version: version,\n isTrial: isTrial\n };\n };\n LicenseManager.prototype.getLicenseDetails = function (licenseKey) {\n var _a = LicenseManager_1.extractLicenseComponents(licenseKey),\n md5 = _a.md5,\n license = _a.license,\n version = _a.version,\n isTrial = _a.isTrial;\n var valid = md5 === this.md5.md5(license);\n var expiry = null;\n if (valid) {\n expiry = LicenseManager_1.extractExpiry(license);\n valid = !isNaN(expiry.getTime());\n }\n return {\n licenseKey: licenseKey,\n valid: valid,\n expiry: valid ? LicenseManager_1.formatDate(expiry) : null,\n version: version ? version : 'legacy',\n isTrial: isTrial\n };\n };\n LicenseManager.prototype.isDisplayWatermark = function () {\n return !_.missingOrEmpty(this.watermarkMessage);\n };\n LicenseManager.prototype.getWatermarkMessage = function () {\n return this.watermarkMessage || '';\n };\n LicenseManager.formatDate = function (date) {\n var monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n var day = date.getDate();\n var monthIndex = date.getMonth();\n var year = date.getFullYear();\n return day + ' ' + monthNames[monthIndex] + ' ' + year;\n };\n LicenseManager.getGridReleaseDate = function () {\n return new Date(parseInt(LicenseManager_1.decode(LicenseManager_1.RELEASE_INFORMATION), 10));\n };\n LicenseManager.decode = function (input) {\n var keystr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var t = '';\n var n, r, i;\n var s, o, u, a;\n var f = 0;\n var e = input.replace(/[^A-Za-z0-9+/=]/g, '');\n while (f < e.length) {\n s = keystr.indexOf(e.charAt(f++));\n o = keystr.indexOf(e.charAt(f++));\n u = keystr.indexOf(e.charAt(f++));\n a = keystr.indexOf(e.charAt(f++));\n n = s << 2 | o >> 4;\n r = (o & 15) << 4 | u >> 2;\n i = (u & 3) << 6 | a;\n t = t + String.fromCharCode(n);\n if (u != 64) {\n t = t + String.fromCharCode(r);\n }\n if (a != 64) {\n t = t + String.fromCharCode(i);\n }\n }\n t = LicenseManager_1.utf8_decode(t);\n return t;\n };\n LicenseManager.utf8_decode = function (input) {\n input = input.replace(/rn/g, 'n');\n var t = '';\n for (var n = 0; n < input.length; n++) {\n var r = input.charCodeAt(n);\n if (r < 128) {\n t += String.fromCharCode(r);\n } else if (r > 127 && r < 2048) {\n t += String.fromCharCode(r >> 6 | 192);\n t += String.fromCharCode(r & 63 | 128);\n } else {\n t += String.fromCharCode(r >> 12 | 224);\n t += String.fromCharCode(r >> 6 & 63 | 128);\n t += String.fromCharCode(r & 63 | 128);\n }\n }\n return t;\n };\n LicenseManager.setLicenseKey = function (licenseKey) {\n LicenseManager_1.licenseKey = licenseKey;\n };\n LicenseManager.extractBracketedInformation = function (licenseKey) {\n var matches = licenseKey.split('[').filter(function (v) {\n return v.indexOf(']') > -1;\n }).map(function (value) {\n return value.split(']')[0];\n });\n if (!matches || matches.length === 0) {\n return [null, null];\n }\n var isTrial = matches.filter(function (match) {\n return match === 'TRIAL';\n }).length === 1;\n var version = matches.filter(function (match) {\n return match.indexOf(\"v\") === 0;\n }).map(function (match) {\n return match.replace(/^v/, \"\");\n })[0];\n return [version, isTrial];\n };\n LicenseManager.prototype.validateLicenseKeyForVersion = function (version, isTrial, license) {\n if (version !== '2') {\n return;\n }\n if (isTrial) {\n this.validateForTrial(license);\n } else {\n this.validateLegacyKey(license);\n }\n };\n LicenseManager.prototype.validateLegacyKey = function (license) {\n var gridReleaseDate = LicenseManager_1.getGridReleaseDate();\n var expiry = LicenseManager_1.extractExpiry(license);\n var valid = false;\n var current = false;\n if (!isNaN(expiry.getTime())) {\n valid = true;\n current = gridReleaseDate < expiry;\n }\n if (!valid) {\n this.outputInvalidLicenseKey();\n } else if (!current) {\n var formattedExpiryDate = LicenseManager_1.formatDate(expiry);\n var formattedReleaseDate = LicenseManager_1.formatDate(gridReleaseDate);\n this.outputIncompatibleVersion(formattedExpiryDate, formattedReleaseDate);\n }\n };\n LicenseManager.prototype.validateForTrial = function (license) {\n var expiry = LicenseManager_1.extractExpiry(license);\n var now = new Date();\n var valid = false;\n var current = false;\n if (!isNaN(expiry.getTime())) {\n valid = true;\n current = expiry > now;\n }\n if (!valid) {\n this.outputInvalidLicenseKey();\n } else if (!current) {\n var formattedExpiryDate = LicenseManager_1.formatDate(expiry);\n this.outputExpiredTrialKey(formattedExpiryDate);\n }\n };\n LicenseManager.prototype.outputInvalidLicenseKey = function () {\n console.error('*****************************************************************************************************************');\n console.error('***************************************** AG Grid Enterprise License ********************************************');\n console.error('********************************************* Invalid License ***************************************************');\n console.error('* Your license for AG Grid Enterprise is not valid - please contact info@ag-grid.com to obtain a valid license. *');\n console.error('*****************************************************************************************************************');\n console.error('*****************************************************************************************************************');\n this.watermarkMessage = \"Invalid License\";\n };\n LicenseManager.prototype.outputExpiredTrialKey = function (formattedExpiryDate) {\n console.error('****************************************************************************************************************');\n console.error('***************************************** AG Grid Enterprise License *******************************************');\n console.error('***************************************** Trial Period Expired. *******************************************');\n console.error(\"* Your license for AG Grid Enterprise expired on \" + formattedExpiryDate + \". *\");\n console.error('* Please email info@ag-grid.com to purchase a license. *');\n console.error('****************************************************************************************************************');\n console.error('****************************************************************************************************************');\n this.watermarkMessage = \"Trial Period Expired\";\n };\n LicenseManager.prototype.outputMissingLicenseKey = function () {\n console.error('****************************************************************************************************************');\n console.error('***************************************** AG Grid Enterprise License *******************************************');\n console.error('****************************************** License Key Not Found ***********************************************');\n console.error('* All AG Grid Enterprise features are unlocked. *');\n console.error('* This is an evaluation only version, it is not licensed for development projects intended for production. *');\n console.error('* If you want to hide the watermark, please email info@ag-grid.com for a trial license. *');\n console.error('****************************************************************************************************************');\n console.error('****************************************************************************************************************');\n this.watermarkMessage = \"For Trial Use Only\";\n };\n LicenseManager.prototype.outputIncompatibleVersion = function (formattedExpiryDate, formattedReleaseDate) {\n console.error('****************************************************************************************************************************');\n console.error('****************************************************************************************************************************');\n console.error('* AG Grid Enterprise License *');\n console.error('* License not compatible with installed version of AG Grid Enterprise. *');\n console.error('* *');\n console.error(\"* Your AG Grid License entitles you to all versions of AG Grid that we release within the time covered by your license *\");\n console.error(\"* - typically we provide one year licenses which entitles you to all releases / updates of AG Grid within that year. *\");\n console.error(\"* Your license has an end (expiry) date which stops the license key working with versions of AG Grid released after the *\");\n console.error(\"* license end date. The license key that you have expires on \" + formattedExpiryDate + \", however the version of AG Grid you *\");\n console.error(\"* are trying to use was released on \" + formattedReleaseDate + \". *\");\n console.error('* *');\n console.error('* Please contact info@ag-grid.com to renew your subscription to new versions and get a new license key to work with this *');\n console.error('* version of AG Grid. *');\n console.error('****************************************************************************************************************************');\n console.error('****************************************************************************************************************************');\n this.watermarkMessage = \"License Expired\";\n };\n var LicenseManager_1;\n LicenseManager.RELEASE_INFORMATION = 'MTY2NzI0NjAxNTYyNw==';\n __decorate$2l([Autowired('md5')], LicenseManager.prototype, \"md5\", void 0);\n __decorate$2l([PreConstruct], LicenseManager.prototype, \"validateLicense\", null);\n LicenseManager = LicenseManager_1 = __decorate$2l([Bean('licenseManager')], LicenseManager);\n return LicenseManager;\n}(BeanStub);\nvar __extends$3s = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$2k = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar MD5 = /** @class */function (_super) {\n __extends$3s(MD5, _super);\n function MD5() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.ieCompatibility = false;\n return _this;\n }\n MD5.prototype.init = function () {\n this.ieCompatibility = this.md5('hello') != '5d41402abc4b2a76b9719d911017c592';\n };\n MD5.prototype.md5cycle = function (x, k) {\n var a = x[0],\n b = x[1],\n c = x[2],\n d = x[3];\n a = this.ff(a, b, c, d, k[0], 7, -680876936);\n d = this.ff(d, a, b, c, k[1], 12, -389564586);\n c = this.ff(c, d, a, b, k[2], 17, 606105819);\n b = this.ff(b, c, d, a, k[3], 22, -1044525330);\n a = this.ff(a, b, c, d, k[4], 7, -176418897);\n d = this.ff(d, a, b, c, k[5], 12, 1200080426);\n c = this.ff(c, d, a, b, k[6], 17, -1473231341);\n b = this.ff(b, c, d, a, k[7], 22, -45705983);\n a = this.ff(a, b, c, d, k[8], 7, 1770035416);\n d = this.ff(d, a, b, c, k[9], 12, -1958414417);\n c = this.ff(c, d, a, b, k[10], 17, -42063);\n b = this.ff(b, c, d, a, k[11], 22, -1990404162);\n a = this.ff(a, b, c, d, k[12], 7, 1804603682);\n d = this.ff(d, a, b, c, k[13], 12, -40341101);\n c = this.ff(c, d, a, b, k[14], 17, -1502002290);\n b = this.ff(b, c, d, a, k[15], 22, 1236535329);\n a = this.gg(a, b, c, d, k[1], 5, -165796510);\n d = this.gg(d, a, b, c, k[6], 9, -1069501632);\n c = this.gg(c, d, a, b, k[11], 14, 643717713);\n b = this.gg(b, c, d, a, k[0], 20, -373897302);\n a = this.gg(a, b, c, d, k[5], 5, -701558691);\n d = this.gg(d, a, b, c, k[10], 9, 38016083);\n c = this.gg(c, d, a, b, k[15], 14, -660478335);\n b = this.gg(b, c, d, a, k[4], 20, -405537848);\n a = this.gg(a, b, c, d, k[9], 5, 568446438);\n d = this.gg(d, a, b, c, k[14], 9, -1019803690);\n c = this.gg(c, d, a, b, k[3], 14, -187363961);\n b = this.gg(b, c, d, a, k[8], 20, 1163531501);\n a = this.gg(a, b, c, d, k[13], 5, -1444681467);\n d = this.gg(d, a, b, c, k[2], 9, -51403784);\n c = this.gg(c, d, a, b, k[7], 14, 1735328473);\n b = this.gg(b, c, d, a, k[12], 20, -1926607734);\n a = this.hh(a, b, c, d, k[5], 4, -378558);\n d = this.hh(d, a, b, c, k[8], 11, -2022574463);\n c = this.hh(c, d, a, b, k[11], 16, 1839030562);\n b = this.hh(b, c, d, a, k[14], 23, -35309556);\n a = this.hh(a, b, c, d, k[1], 4, -1530992060);\n d = this.hh(d, a, b, c, k[4], 11, 1272893353);\n c = this.hh(c, d, a, b, k[7], 16, -155497632);\n b = this.hh(b, c, d, a, k[10], 23, -1094730640);\n a = this.hh(a, b, c, d, k[13], 4, 681279174);\n d = this.hh(d, a, b, c, k[0], 11, -358537222);\n c = this.hh(c, d, a, b, k[3], 16, -722521979);\n b = this.hh(b, c, d, a, k[6], 23, 76029189);\n a = this.hh(a, b, c, d, k[9], 4, -640364487);\n d = this.hh(d, a, b, c, k[12], 11, -421815835);\n c = this.hh(c, d, a, b, k[15], 16, 530742520);\n b = this.hh(b, c, d, a, k[2], 23, -995338651);\n a = this.ii(a, b, c, d, k[0], 6, -198630844);\n d = this.ii(d, a, b, c, k[7], 10, 1126891415);\n c = this.ii(c, d, a, b, k[14], 15, -1416354905);\n b = this.ii(b, c, d, a, k[5], 21, -57434055);\n a = this.ii(a, b, c, d, k[12], 6, 1700485571);\n d = this.ii(d, a, b, c, k[3], 10, -1894986606);\n c = this.ii(c, d, a, b, k[10], 15, -1051523);\n b = this.ii(b, c, d, a, k[1], 21, -2054922799);\n a = this.ii(a, b, c, d, k[8], 6, 1873313359);\n d = this.ii(d, a, b, c, k[15], 10, -30611744);\n c = this.ii(c, d, a, b, k[6], 15, -1560198380);\n b = this.ii(b, c, d, a, k[13], 21, 1309151649);\n a = this.ii(a, b, c, d, k[4], 6, -145523070);\n d = this.ii(d, a, b, c, k[11], 10, -1120210379);\n c = this.ii(c, d, a, b, k[2], 15, 718787259);\n b = this.ii(b, c, d, a, k[9], 21, -343485551);\n x[0] = this.add32(a, x[0]);\n x[1] = this.add32(b, x[1]);\n x[2] = this.add32(c, x[2]);\n x[3] = this.add32(d, x[3]);\n };\n MD5.prototype.cmn = function (q, a, b, x, s, t) {\n a = this.add32(this.add32(a, q), this.add32(x, t));\n return this.add32(a << s | a >>> 32 - s, b);\n };\n MD5.prototype.ff = function (a, b, c, d, x, s, t) {\n return this.cmn(b & c | ~b & d, a, b, x, s, t);\n };\n MD5.prototype.gg = function (a, b, c, d, x, s, t) {\n return this.cmn(b & d | c & ~d, a, b, x, s, t);\n };\n MD5.prototype.hh = function (a, b, c, d, x, s, t) {\n return this.cmn(b ^ c ^ d, a, b, x, s, t);\n };\n MD5.prototype.ii = function (a, b, c, d, x, s, t) {\n return this.cmn(c ^ (b | ~d), a, b, x, s, t);\n };\n MD5.prototype.md51 = function (s) {\n var n = s.length;\n var state = [1732584193, -271733879, -1732584194, 271733878];\n var i;\n for (i = 64; i <= s.length; i += 64) {\n this.md5cycle(state, this.md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n var tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < s.length; i++) {\n tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n }\n tail[i >> 2] |= 0x80 << (i % 4 << 3);\n if (i > 55) {\n this.md5cycle(state, tail);\n for (i = 0; i < 16; i++) {\n tail[i] = 0;\n }\n }\n tail[14] = n * 8;\n this.md5cycle(state, tail);\n return state;\n };\n /* there needs to be support for Unicode here, * unless we pretend that we can redefine the MD-5\n * algorithm for multi-byte characters (perhaps by adding every four 16-bit characters and\n * shortening the sum to 32 bits). Otherwise I suthis.ggest performing MD-5 as if every character\n * was two bytes--e.g., 0040 0025 = @%--but then how will an ordinary MD-5 sum be matched?\n * There is no way to standardize text to something like UTF-8 before transformation; speed cost is\n * utterly prohibitive. The JavaScript standard itself needs to look at this: it should start\n * providing access to strings as preformed UTF-8 8-bit unsigned value arrays.\n */\n MD5.prototype.md5blk = function (s) {\n var md5blks = [];\n /* Andy King said do it this way. */\n for (var i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n };\n MD5.prototype.rhex = function (n) {\n var hex_chr = '0123456789abcdef'.split('');\n var s = '',\n j = 0;\n for (; j < 4; j++) {\n s += hex_chr[n >> j * 8 + 4 & 0x0F] + hex_chr[n >> j * 8 & 0x0F];\n }\n return s;\n };\n MD5.prototype.hex = function (x) {\n for (var i = 0; i < x.length; i++) {\n x[i] = this.rhex(x[i]);\n }\n return x.join('');\n };\n MD5.prototype.md5 = function (s) {\n return this.hex(this.md51(s));\n };\n MD5.prototype.add32 = function (a, b) {\n return this.ieCompatibility ? this.add32Compat(a, b) : this.add32Std(a, b);\n };\n /* this function is much faster, so if possible we use it. Some IEs are the only ones I know of that\n need the idiotic second function, generated by an if clause. */\n MD5.prototype.add32Std = function (a, b) {\n return a + b & 0xFFFFFFFF;\n };\n MD5.prototype.add32Compat = function (x, y) {\n var lsw = (x & 0xFFFF) + (y & 0xFFFF),\n msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xFFFF;\n };\n __decorate$2k([PostConstruct], MD5.prototype, \"init\", null);\n MD5 = __decorate$2k([Bean('md5')], MD5);\n return MD5;\n}(BeanStub);\nvar __extends$3r = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$2j = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar WatermarkComp = /** @class */function (_super) {\n __extends$3r(WatermarkComp, _super);\n function WatermarkComp() {\n return _super.call(this, \"
\\n
\\n
\") || this;\n }\n WatermarkComp.prototype.postConstruct = function () {\n var _this = this;\n var show = this.shouldDisplayWatermark();\n this.addOrRemoveCssClass('ag-hidden', !show);\n if (show) {\n this.eLicenseTextRef.innerText = this.licenseManager.getWatermarkMessage();\n window.setTimeout(function () {\n return _this.addCssClass('ag-opacity-zero');\n }, 0);\n window.setTimeout(function () {\n return _this.addCssClass('ag-hidden');\n }, 5000);\n }\n };\n WatermarkComp.prototype.shouldDisplayWatermark = function () {\n var eDocument = this.gridOptionsWrapper.getDocument();\n var win = eDocument.defaultView || window;\n var loc = win.location;\n var _a = loc.hostname,\n hostname = _a === void 0 ? '' : _a,\n pathname = loc.pathname;\n var isDisplayWatermark = this.licenseManager.isDisplayWatermark();\n var isWhiteListURL = hostname.match('^(?:127\\.0\\.0\\.1|localhost|(?:\\w+\\.)?ag-grid\\.com)$') != null;\n var isForceWatermark = pathname ? pathname.indexOf('forceWatermark') !== -1 : false;\n return isForceWatermark || isDisplayWatermark && !isWhiteListURL;\n };\n __decorate$2j([Autowired('licenseManager')], WatermarkComp.prototype, \"licenseManager\", void 0);\n __decorate$2j([RefSelector('eLicenseTextRef')], WatermarkComp.prototype, \"eLicenseTextRef\", void 0);\n __decorate$2j([PostConstruct], WatermarkComp.prototype, \"postConstruct\", null);\n return WatermarkComp;\n}(Component);\nvar EnterpriseCoreModule = {\n moduleName: ModuleNames.EnterpriseCoreModule,\n beans: [LicenseManager, MD5],\n agStackComponents: [{\n componentName: 'AgWatermark',\n componentClass: WatermarkComp\n }]\n};\nvar __extends$3q = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$2i = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar ClipboardService = /** @class */function (_super) {\n __extends$3q(ClipboardService, _super);\n function ClipboardService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.lastPasteOperationTime = 0;\n _this.navigatorApiFailed = false;\n return _this;\n }\n ClipboardService.prototype.init = function () {\n var _this = this;\n this.logger = this.loggerFactory.create('ClipboardService');\n if (this.rowModel.getType() === Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n this.clientSideRowModel = this.rowModel;\n }\n this.ctrlsService.whenReady(function (p) {\n _this.gridCtrl = p.gridCtrl;\n });\n };\n ClipboardService.prototype.pasteFromClipboard = function () {\n var _this = this;\n this.logger.log('pasteFromClipboard');\n // Method 1 - native clipboard API, available in modern chrome browsers\n var allowNavigator = !this.gridOptionsWrapper.isSuppressClipboardApi();\n // Some browsers (Firefox) do not allow Web Applications to read from\n // the clipboard so verify if not only the ClipboardAPI is available,\n // but also if the `readText` method is public.\n if (allowNavigator && !this.navigatorApiFailed && navigator.clipboard && navigator.clipboard.readText) {\n navigator.clipboard.readText().then(this.processClipboardData.bind(this)).catch(function (e) {\n _.doOnce(function () {\n console.warn(e);\n console.warn('AG Grid: Unable to use the Clipboard API (navigator.clipboard.readText()). ' + 'The reason why it could not be used has been logged in the previous line. ' + 'For this reason the grid has defaulted to using a workaround which doesn\\'t perform as well. ' + 'Either fix why Clipboard API is blocked, OR stop this message from appearing by setting grid ' + 'property suppressClipboardApi=true (which will default the grid to using the workaround rather than the API');\n }, 'clipboardApiError');\n _this.navigatorApiFailed = true;\n _this.pasteFromClipboardLegacy();\n });\n } else {\n this.pasteFromClipboardLegacy();\n }\n };\n ClipboardService.prototype.pasteFromClipboardLegacy = function () {\n var _this = this;\n // Method 2 - if modern API fails, the old school hack\n var defaultPrevented = false;\n var handlePasteEvent = function (e) {\n var currentPastOperationTime = new Date().getTime();\n if (currentPastOperationTime - _this.lastPasteOperationTime < 50) {\n defaultPrevented = true;\n e.preventDefault();\n }\n _this.lastPasteOperationTime = currentPastOperationTime;\n };\n this.executeOnTempElement(function (textArea) {\n textArea.addEventListener('paste', handlePasteEvent);\n textArea.focus({\n preventScroll: true\n });\n }, function (element) {\n var data = element.value;\n if (!defaultPrevented) {\n _this.processClipboardData(data);\n } else {\n _this.refocusLastFocusedCell();\n }\n element.removeEventListener('paste', handlePasteEvent);\n });\n };\n ClipboardService.prototype.refocusLastFocusedCell = function () {\n var focusedCell = this.focusService.getFocusedCell();\n if (focusedCell) {\n this.focusService.setFocusedCell({\n rowIndex: focusedCell.rowIndex,\n column: focusedCell.column,\n rowPinned: focusedCell.rowPinned,\n forceBrowserFocus: true\n });\n }\n };\n ClipboardService.prototype.processClipboardData = function (data) {\n var _this = this;\n if (data == null) {\n return;\n }\n var parsedData = _.stringToArray(data, this.gridOptionsWrapper.getClipboardDelimiter());\n var userFunc = this.gridOptionsWrapper.getProcessDataFromClipboardFunc();\n if (userFunc) {\n parsedData = userFunc({\n data: parsedData\n });\n }\n if (parsedData == null) {\n return;\n }\n if (this.gridOptionsWrapper.isSuppressLastEmptyLineOnPaste()) {\n this.removeLastLineIfBlank(parsedData);\n }\n var pasteOperation = function (cellsToFlash, updatedRowNodes, focusedCell, changedPath) {\n var rangeActive = _this.rangeService && _this.rangeService.isMoreThanOneCell();\n var pasteIntoRange = rangeActive && !_this.hasOnlyOneValueToPaste(parsedData);\n if (pasteIntoRange) {\n _this.pasteIntoActiveRange(parsedData, cellsToFlash, updatedRowNodes, changedPath);\n } else {\n _this.pasteStartingFromFocusedCell(parsedData, cellsToFlash, updatedRowNodes, focusedCell, changedPath);\n }\n };\n this.doPasteOperation(pasteOperation);\n };\n // common code to paste operations, e.g. paste to cell, paste to range, and copy range down\n ClipboardService.prototype.doPasteOperation = function (pasteOperationFunc) {\n var api = this.gridOptionsWrapper.getApi();\n var columnApi = this.gridOptionsWrapper.getColumnApi();\n var source = 'clipboard';\n this.eventService.dispatchEvent({\n type: Events.EVENT_PASTE_START,\n api: api,\n columnApi: columnApi,\n source: source\n });\n var changedPath;\n if (this.clientSideRowModel) {\n var onlyChangedColumns = this.gridOptionsWrapper.isAggregateOnlyChangedColumns();\n changedPath = new ChangedPath(onlyChangedColumns, this.clientSideRowModel.getRootNode());\n }\n var cellsToFlash = {};\n var updatedRowNodes = [];\n var focusedCell = this.focusService.getFocusedCell();\n pasteOperationFunc(cellsToFlash, updatedRowNodes, focusedCell, changedPath);\n if (changedPath) {\n this.clientSideRowModel.doAggregate(changedPath);\n }\n this.rowRenderer.refreshCells();\n this.dispatchFlashCells(cellsToFlash);\n this.fireRowChanged(updatedRowNodes);\n // if using the clipboard hack with a temp element, then the focus has been lost,\n // so need to put it back. otherwise paste operation loosed focus on cell and keyboard\n // navigation stops.\n this.refocusLastFocusedCell();\n var event = {\n type: Events.EVENT_PASTE_END,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n ClipboardService.prototype.pasteIntoActiveRange = function (clipboardData, cellsToFlash, updatedRowNodes, changedPath) {\n var _this = this;\n // true if clipboard data can be evenly pasted into range, otherwise false\n var abortRepeatingPasteIntoRows = this.getRangeSize() % clipboardData.length != 0;\n var indexOffset = 0;\n var dataRowIndex = 0;\n var rowCallback = function (currentRow, rowNode, columns, index) {\n var atEndOfClipboardData = index - indexOffset >= clipboardData.length;\n if (atEndOfClipboardData) {\n if (abortRepeatingPasteIntoRows) {\n return;\n }\n // increment offset and reset data index to repeat paste of data\n indexOffset += dataRowIndex;\n dataRowIndex = 0;\n }\n var currentRowData = clipboardData[index - indexOffset];\n // otherwise we are not the first row, so copy\n updatedRowNodes.push(rowNode);\n var processCellFromClipboardFunc = _this.gridOptionsWrapper.getProcessCellFromClipboardFunc();\n columns.forEach(function (column, idx) {\n if (!column.isCellEditable(rowNode) || column.isSuppressPaste(rowNode)) {\n return;\n }\n // repeat data for columns we don't have data for - happens when to range is bigger than copied data range\n if (idx >= currentRowData.length) {\n idx = idx % currentRowData.length;\n }\n var newValue = _this.processCell(rowNode, column, currentRowData[idx], Constants.EXPORT_TYPE_DRAG_COPY, processCellFromClipboardFunc);\n rowNode.setDataValue(column, newValue, Constants.SOURCE_PASTE);\n if (changedPath) {\n changedPath.addParentNode(rowNode.parent, [column]);\n }\n var cellId = _this.cellPositionUtils.createIdFromValues(currentRow.rowIndex, column, currentRow.rowPinned);\n cellsToFlash[cellId] = true;\n });\n dataRowIndex++;\n };\n this.iterateActiveRanges(false, rowCallback);\n };\n ClipboardService.prototype.pasteStartingFromFocusedCell = function (parsedData, cellsToFlash, updatedRowNodes, focusedCell, changedPath) {\n if (!focusedCell) {\n return;\n }\n var currentRow = {\n rowIndex: focusedCell.rowIndex,\n rowPinned: focusedCell.rowPinned\n };\n var columnsToPasteInto = this.columnModel.getDisplayedColumnsStartingAt(focusedCell.column);\n if (this.isPasteSingleValueIntoRange(parsedData)) {\n this.pasteSingleValueIntoRange(parsedData, updatedRowNodes, cellsToFlash, changedPath);\n } else {\n this.pasteMultipleValues(parsedData, currentRow, updatedRowNodes, columnsToPasteInto, cellsToFlash, Constants.EXPORT_TYPE_CLIPBOARD, changedPath);\n }\n };\n // if range is active, and only one cell, then we paste this cell into all cells in the active range.\n ClipboardService.prototype.isPasteSingleValueIntoRange = function (parsedData) {\n return this.hasOnlyOneValueToPaste(parsedData) && this.rangeService != null && !this.rangeService.isEmpty();\n };\n ClipboardService.prototype.pasteSingleValueIntoRange = function (parsedData, updatedRowNodes, cellsToFlash, changedPath) {\n var _this = this;\n var value = parsedData[0][0];\n var rowCallback = function (currentRow, rowNode, columns) {\n updatedRowNodes.push(rowNode);\n columns.forEach(function (column) {\n return _this.updateCellValue(rowNode, column, value, cellsToFlash, Constants.EXPORT_TYPE_CLIPBOARD, changedPath);\n });\n };\n this.iterateActiveRanges(false, rowCallback);\n };\n ClipboardService.prototype.hasOnlyOneValueToPaste = function (parsedData) {\n return parsedData.length === 1 && parsedData[0].length === 1;\n };\n ClipboardService.prototype.copyRangeDown = function () {\n var _this = this;\n if (!this.rangeService || this.rangeService.isEmpty()) {\n return;\n }\n var firstRowValues = [];\n var pasteOperation = function (cellsToFlash, updatedRowNodes, focusedCell, changedPath) {\n var processCellForClipboardFunc = _this.gridOptionsWrapper.getProcessCellForClipboardFunc();\n var processCellFromClipboardFunc = _this.gridOptionsWrapper.getProcessCellFromClipboardFunc();\n var rowCallback = function (currentRow, rowNode, columns) {\n // take reference of first row, this is the one we will be using to copy from\n if (!firstRowValues.length) {\n // two reasons for looping through columns\n columns.forEach(function (column) {\n // get the initial values to copy down\n var value = _this.processCell(rowNode, column, _this.valueService.getValue(column, rowNode), Constants.EXPORT_TYPE_DRAG_COPY, processCellForClipboardFunc);\n firstRowValues.push(value);\n });\n } else {\n // otherwise we are not the first row, so copy\n updatedRowNodes.push(rowNode);\n columns.forEach(function (column, index) {\n if (!column.isCellEditable(rowNode) || column.isSuppressPaste(rowNode)) {\n return;\n }\n var firstRowValue = _this.processCell(rowNode, column, firstRowValues[index], Constants.EXPORT_TYPE_DRAG_COPY, processCellFromClipboardFunc);\n rowNode.setDataValue(column, firstRowValue, Constants.SOURCE_PASTE);\n if (changedPath) {\n changedPath.addParentNode(rowNode.parent, [column]);\n }\n var cellId = _this.cellPositionUtils.createIdFromValues(currentRow.rowIndex, column, currentRow.rowPinned);\n cellsToFlash[cellId] = true;\n });\n }\n };\n _this.iterateActiveRanges(true, rowCallback);\n };\n this.doPasteOperation(pasteOperation);\n };\n ClipboardService.prototype.removeLastLineIfBlank = function (parsedData) {\n // remove last row if empty, excel puts empty last row in\n var lastLine = _.last(parsedData);\n var lastLineIsBlank = lastLine && lastLine.length === 1 && lastLine[0] === '';\n if (lastLineIsBlank) {\n // do not remove the last empty line when that is the only line pasted\n if (parsedData.length === 1) {\n return;\n }\n _.removeFromArray(parsedData, lastLine);\n }\n };\n ClipboardService.prototype.fireRowChanged = function (rowNodes) {\n var _this = this;\n if (!this.gridOptionsWrapper.isFullRowEdit()) {\n return;\n }\n rowNodes.forEach(function (rowNode) {\n var event = {\n type: Events.EVENT_ROW_VALUE_CHANGED,\n node: rowNode,\n data: rowNode.data,\n rowIndex: rowNode.rowIndex,\n rowPinned: rowNode.rowPinned\n };\n _this.eventService.dispatchEvent(event);\n });\n };\n ClipboardService.prototype.pasteMultipleValues = function (clipboardGridData, currentRow, updatedRowNodes, columnsToPasteInto, cellsToFlash, type, changedPath) {\n var _this = this;\n var rowPointer = currentRow;\n // if doing CSRM and NOT tree data, then it means groups are aggregates, which are read only,\n // so we should skip them when doing paste operations.\n var skipGroupRows = this.clientSideRowModel != null && !this.gridOptionsWrapper.isTreeData();\n var getNextGoodRowNode = function () {\n while (true) {\n if (!rowPointer) {\n return null;\n }\n var res = _this.rowPositionUtils.getRowNode(rowPointer);\n // move to next row down for next set of values\n rowPointer = _this.cellNavigationService.getRowBelow({\n rowPinned: rowPointer.rowPinned,\n rowIndex: rowPointer.rowIndex\n });\n // if no more rows, return null\n if (res == null) {\n return null;\n }\n // skip details rows and footer rows, never paste into them as they don't hold data\n var skipRow = res.detail || res.footer || skipGroupRows && res.group;\n // skipping row means we go into the next iteration of the while loop\n if (!skipRow) {\n return res;\n }\n }\n };\n clipboardGridData.forEach(function (clipboardRowData) {\n var rowNode = getNextGoodRowNode();\n // if we have come to end of rows in grid, then skip\n if (!rowNode) {\n return;\n }\n clipboardRowData.forEach(function (value, index) {\n return _this.updateCellValue(rowNode, columnsToPasteInto[index], value, cellsToFlash, type, changedPath);\n });\n updatedRowNodes.push(rowNode);\n });\n };\n ClipboardService.prototype.updateCellValue = function (rowNode, column, value, cellsToFlash, type, changedPath) {\n if (!rowNode || !column || !column.isCellEditable(rowNode) || column.isSuppressPaste(rowNode)) {\n return;\n }\n var processedValue = this.processCell(rowNode, column, value, type, this.gridOptionsWrapper.getProcessCellFromClipboardFunc());\n rowNode.setDataValue(column, processedValue, Constants.SOURCE_PASTE);\n var cellId = this.cellPositionUtils.createIdFromValues(rowNode.rowIndex, column, rowNode.rowPinned);\n cellsToFlash[cellId] = true;\n if (changedPath) {\n changedPath.addParentNode(rowNode.parent, [column]);\n }\n };\n ClipboardService.prototype.copyToClipboard = function (params) {\n if (params === void 0) {\n params = {};\n }\n var includeHeaders = params.includeHeaders,\n includeGroupHeaders = params.includeGroupHeaders;\n this.logger.log(\"copyToClipboard: includeHeaders = \" + includeHeaders);\n // don't override 'includeHeaders' if it has been explicitly set to 'false'\n if (includeHeaders == null) {\n includeHeaders = this.gridOptionsWrapper.isCopyHeadersToClipboard();\n }\n if (includeGroupHeaders == null) {\n includeGroupHeaders = this.gridOptionsWrapper.isCopyGroupHeadersToClipboard();\n }\n var copyParams = {\n includeHeaders: includeHeaders,\n includeGroupHeaders: includeGroupHeaders\n };\n var shouldCopyRows = !this.gridOptionsWrapper.isSuppressCopyRowsToClipboard();\n // Copy priority is Range > Row > Focus\n if (this.rangeService && !this.rangeService.isEmpty() && !this.shouldSkipSingleCellRange()) {\n this.copySelectedRangeToClipboard(copyParams);\n } else if (shouldCopyRows && !this.selectionService.isEmpty()) {\n this.copySelectedRowsToClipboard(copyParams);\n } else if (this.focusService.isAnyCellFocused()) {\n this.copyFocusedCellToClipboard(copyParams);\n }\n };\n ClipboardService.prototype.shouldSkipSingleCellRange = function () {\n return this.gridOptionsWrapper.isSuppressCopySingleCellRanges() && !this.rangeService.isMoreThanOneCell();\n };\n ClipboardService.prototype.iterateActiveRanges = function (onlyFirst, rowCallback, columnCallback) {\n var _this = this;\n if (!this.rangeService || this.rangeService.isEmpty()) {\n return;\n }\n var cellRanges = this.rangeService.getCellRanges();\n if (onlyFirst) {\n this.iterateActiveRange(cellRanges[0], rowCallback, columnCallback, true);\n } else {\n cellRanges.forEach(function (range, idx) {\n return _this.iterateActiveRange(range, rowCallback, columnCallback, idx === cellRanges.length - 1);\n });\n }\n };\n ClipboardService.prototype.iterateActiveRange = function (range, rowCallback, columnCallback, isLastRange) {\n if (!this.rangeService) {\n return;\n }\n var currentRow = this.rangeService.getRangeStartRow(range);\n var lastRow = this.rangeService.getRangeEndRow(range);\n if (columnCallback && range.columns) {\n columnCallback(range.columns);\n }\n var rangeIndex = 0;\n var isLastRow = false;\n // the currentRow could be missing if the user sets the active range manually, and sets a range\n // that is outside of the grid (eg. sets range rows 0 to 100, but grid has only 20 rows).\n while (!isLastRow && currentRow != null) {\n var rowNode = this.rowPositionUtils.getRowNode(currentRow);\n isLastRow = this.rowPositionUtils.sameRow(currentRow, lastRow);\n rowCallback(currentRow, rowNode, range.columns, rangeIndex++, isLastRow && isLastRange);\n currentRow = this.cellNavigationService.getRowBelow(currentRow);\n }\n };\n ClipboardService.prototype.copySelectedRangeToClipboard = function (params) {\n if (params === void 0) {\n params = {};\n }\n if (!this.rangeService || this.rangeService.isEmpty()) {\n return;\n }\n var allRangesMerge = this.rangeService.areAllRangesAbleToMerge();\n var _a = allRangesMerge ? this.buildDataFromMergedRanges(params) : this.buildDataFromRanges(params),\n data = _a.data,\n cellsToFlash = _a.cellsToFlash;\n this.copyDataToClipboard(data);\n this.dispatchFlashCells(cellsToFlash);\n };\n ClipboardService.prototype.buildDataFromMergedRanges = function (params) {\n var _this = this;\n var columnsSet = new Set();\n var ranges = this.rangeService.getCellRanges();\n var rowPositionsMap = new Map();\n var allRowPositions = [];\n var allCellsToFlash = {};\n ranges.forEach(function (range) {\n range.columns.forEach(function (col) {\n return columnsSet.add(col);\n });\n var _a = _this.getRangeRowPositionsAndCellsToFlash(range),\n rowPositions = _a.rowPositions,\n cellsToFlash = _a.cellsToFlash;\n rowPositions.forEach(function (rowPosition) {\n var rowPositionAsString = rowPosition.rowIndex + \"-\" + (rowPosition.rowPinned || 'null');\n if (!rowPositionsMap.get(rowPositionAsString)) {\n rowPositionsMap.set(rowPositionAsString, true);\n allRowPositions.push(rowPosition);\n }\n });\n Object.assign(allCellsToFlash, cellsToFlash);\n });\n var allColumns = this.columnModel.getAllDisplayedColumns();\n var exportedColumns = Array.from(columnsSet);\n exportedColumns.sort(function (a, b) {\n var posA = allColumns.indexOf(a);\n var posB = allColumns.indexOf(b);\n return posA - posB;\n });\n var data = this.buildExportParams({\n columns: exportedColumns,\n rowPositions: allRowPositions,\n includeHeaders: params.includeHeaders,\n includeGroupHeaders: params.includeGroupHeaders\n });\n return {\n data: data,\n cellsToFlash: allCellsToFlash\n };\n };\n ClipboardService.prototype.buildDataFromRanges = function (params) {\n var _this = this;\n var ranges = this.rangeService.getCellRanges();\n var data = [];\n var allCellsToFlash = {};\n ranges.forEach(function (range) {\n var _a = _this.getRangeRowPositionsAndCellsToFlash(range),\n rowPositions = _a.rowPositions,\n cellsToFlash = _a.cellsToFlash;\n Object.assign(allCellsToFlash, cellsToFlash);\n data.push(_this.buildExportParams({\n columns: range.columns,\n rowPositions: rowPositions,\n includeHeaders: params.includeHeaders,\n includeGroupHeaders: params.includeGroupHeaders\n }));\n });\n return {\n data: data.join('\\n'),\n cellsToFlash: allCellsToFlash\n };\n };\n ClipboardService.prototype.getRangeRowPositionsAndCellsToFlash = function (range) {\n var _this = this;\n var rowPositions = [];\n var cellsToFlash = {};\n var startRow = this.rangeService.getRangeStartRow(range);\n var lastRow = this.rangeService.getRangeEndRow(range);\n var node = startRow;\n while (node) {\n rowPositions.push(node);\n range.columns.forEach(function (column) {\n var cellId = _this.cellPositionUtils.createIdFromValues(node.rowIndex, column, node.rowPinned);\n cellsToFlash[cellId] = true;\n });\n if (this.rowPositionUtils.sameRow(node, lastRow)) {\n break;\n }\n node = this.cellNavigationService.getRowBelow(node);\n }\n return {\n rowPositions: rowPositions,\n cellsToFlash: cellsToFlash\n };\n };\n ClipboardService.prototype.copyFocusedCellToClipboard = function (params) {\n var _a;\n if (params === void 0) {\n params = {};\n }\n var focusedCell = this.focusService.getFocusedCell();\n if (focusedCell == null) {\n return;\n }\n var cellId = this.cellPositionUtils.createId(focusedCell);\n var currentRow = {\n rowPinned: focusedCell.rowPinned,\n rowIndex: focusedCell.rowIndex\n };\n var column = focusedCell.column;\n var data = this.buildExportParams({\n columns: [column],\n rowPositions: [currentRow],\n includeHeaders: params.includeHeaders,\n includeGroupHeaders: params.includeGroupHeaders\n });\n this.copyDataToClipboard(data);\n this.dispatchFlashCells((_a = {}, _a[cellId] = true, _a));\n };\n ClipboardService.prototype.copySelectedRowsToClipboard = function (params) {\n if (params === void 0) {\n params = {};\n }\n var columnKeys = params.columnKeys,\n includeHeaders = params.includeHeaders,\n includeGroupHeaders = params.includeGroupHeaders;\n var data = this.buildExportParams({\n columns: columnKeys,\n includeHeaders: includeHeaders,\n includeGroupHeaders: includeGroupHeaders\n });\n this.copyDataToClipboard(data);\n };\n ClipboardService.prototype.buildExportParams = function (params) {\n var columns = params.columns,\n rowPositions = params.rowPositions,\n _a = params.includeHeaders,\n includeHeaders = _a === void 0 ? false : _a,\n _b = params.includeGroupHeaders,\n includeGroupHeaders = _b === void 0 ? false : _b;\n var exportParams = {\n columnKeys: columns,\n rowPositions: rowPositions,\n skipColumnHeaders: !includeHeaders,\n skipColumnGroupHeaders: !includeGroupHeaders,\n suppressQuotes: true,\n columnSeparator: this.gridOptionsWrapper.getClipboardDelimiter(),\n onlySelected: !rowPositions,\n processCellCallback: this.gridOptionsWrapper.getProcessCellForClipboardFunc(),\n processRowGroupCallback: function (params) {\n return params.node.key;\n },\n processHeaderCallback: this.gridOptionsWrapper.getProcessHeaderForClipboardFunc(),\n processGroupHeaderCallback: this.gridOptionsWrapper.getProcessGroupHeaderForClipboardFunc()\n };\n return this.csvCreator.getDataAsCsv(exportParams, true);\n };\n ClipboardService.prototype.dispatchFlashCells = function (cellsToFlash) {\n var _this = this;\n window.setTimeout(function () {\n var event = {\n type: Events.EVENT_FLASH_CELLS,\n cells: cellsToFlash\n };\n _this.eventService.dispatchEvent(event);\n }, 0);\n };\n ClipboardService.prototype.processCell = function (rowNode, column, value, type, func) {\n if (func) {\n var params = {\n column: column,\n node: rowNode,\n value: value,\n type: type\n };\n return func(params);\n }\n return value;\n };\n ClipboardService.prototype.copyDataToClipboard = function (data) {\n var _this = this;\n var userProvidedFunc = this.gridOptionsWrapper.getSendToClipboardFunc();\n // method 1 - user provided func\n if (userProvidedFunc) {\n userProvidedFunc({\n data: data\n });\n return;\n }\n // method 2 - native clipboard API, available in modern chrome browsers\n var allowNavigator = !this.gridOptionsWrapper.isSuppressClipboardApi();\n if (allowNavigator && navigator.clipboard) {\n navigator.clipboard.writeText(data).catch(function (e) {\n _.doOnce(function () {\n console.warn(e);\n console.warn('AG Grid: Unable to use the Clipboard API (navigator.clipboard.writeText()). ' + 'The reason why it could not be used has been logged in the previous line. ' + 'For this reason the grid has defaulted to using a workaround which doesn\\'t perform as well. ' + 'Either fix why Clipboard API is blocked, OR stop this message from appearing by setting grid ' + 'property suppressClipboardApi=true (which will default the grid to using the workaround rather than the API.');\n }, 'clipboardApiError');\n _this.copyDataToClipboardLegacy(data);\n });\n return;\n }\n this.copyDataToClipboardLegacy(data);\n };\n ClipboardService.prototype.copyDataToClipboardLegacy = function (data) {\n var _this = this;\n // method 3 - if all else fails, the old school hack\n this.executeOnTempElement(function (element) {\n var eDocument = _this.gridOptionsWrapper.getDocument();\n var focusedElementBefore = eDocument.activeElement;\n element.value = data || ' '; // has to be non-empty value or execCommand will not do anything\n element.select();\n element.focus({\n preventScroll: true\n });\n var result = eDocument.execCommand('copy');\n if (!result) {\n console.warn('AG Grid: Browser did not allow document.execCommand(\\'copy\\'). Ensure ' + 'api.copySelectedRowsToClipboard() is invoked via a user event, i.e. button click, otherwise ' + 'the browser will prevent it for security reasons.');\n }\n if (focusedElementBefore != null && focusedElementBefore.focus != null) {\n focusedElementBefore.focus({\n preventScroll: true\n });\n }\n });\n };\n ClipboardService.prototype.executeOnTempElement = function (callbackNow, callbackAfter) {\n var eDoc = this.gridOptionsWrapper.getDocument();\n var eTempInput = eDoc.createElement('textarea');\n eTempInput.style.width = '1px';\n eTempInput.style.height = '1px';\n // removing items from the DOM causes the document element to scroll to the\n // position where the element was positioned. Here we set scrollTop / scrollLeft\n // to prevent the document element from scrolling when we remove it from the DOM.\n eTempInput.style.top = eDoc.documentElement.scrollTop + 'px';\n eTempInput.style.left = eDoc.documentElement.scrollLeft + 'px';\n eTempInput.style.position = 'absolute';\n eTempInput.style.opacity = '0';\n var guiRoot = this.gridCtrl.getGui();\n guiRoot.appendChild(eTempInput);\n try {\n callbackNow(eTempInput);\n } catch (err) {\n console.warn('AG Grid: Browser does not support document.execCommand(\\'copy\\') for clipboard operations');\n }\n //It needs 100 otherwise OS X seemed to not always be able to paste... Go figure...\n if (callbackAfter) {\n window.setTimeout(function () {\n callbackAfter(eTempInput);\n guiRoot.removeChild(eTempInput);\n }, 100);\n } else {\n guiRoot.removeChild(eTempInput);\n }\n };\n ClipboardService.prototype.getRangeSize = function () {\n var ranges = this.rangeService.getCellRanges();\n var startRangeIndex = 0;\n var endRangeIndex = 0;\n if (ranges.length > 0) {\n startRangeIndex = this.rangeService.getRangeStartRow(ranges[0]).rowIndex;\n endRangeIndex = this.rangeService.getRangeEndRow(ranges[0]).rowIndex;\n }\n return startRangeIndex - endRangeIndex + 1;\n };\n __decorate$2i([Autowired('csvCreator')], ClipboardService.prototype, \"csvCreator\", void 0);\n __decorate$2i([Autowired('loggerFactory')], ClipboardService.prototype, \"loggerFactory\", void 0);\n __decorate$2i([Autowired('selectionService')], ClipboardService.prototype, \"selectionService\", void 0);\n __decorate$2i([Optional('rangeService')], ClipboardService.prototype, \"rangeService\", void 0);\n __decorate$2i([Autowired('rowModel')], ClipboardService.prototype, \"rowModel\", void 0);\n __decorate$2i([Autowired('ctrlsService')], ClipboardService.prototype, \"ctrlsService\", void 0);\n __decorate$2i([Autowired('valueService')], ClipboardService.prototype, \"valueService\", void 0);\n __decorate$2i([Autowired('focusService')], ClipboardService.prototype, \"focusService\", void 0);\n __decorate$2i([Autowired('rowRenderer')], ClipboardService.prototype, \"rowRenderer\", void 0);\n __decorate$2i([Autowired('columnModel')], ClipboardService.prototype, \"columnModel\", void 0);\n __decorate$2i([Autowired('cellNavigationService')], ClipboardService.prototype, \"cellNavigationService\", void 0);\n __decorate$2i([Autowired('cellPositionUtils')], ClipboardService.prototype, \"cellPositionUtils\", void 0);\n __decorate$2i([Autowired('rowPositionUtils')], ClipboardService.prototype, \"rowPositionUtils\", void 0);\n __decorate$2i([PostConstruct], ClipboardService.prototype, \"init\", null);\n ClipboardService = __decorate$2i([Bean('clipboardService')], ClipboardService);\n return ClipboardService;\n}(BeanStub);\nvar ClipboardModule = {\n moduleName: ModuleNames.ClipboardModule,\n beans: [ClipboardService],\n dependantModules: [EnterpriseCoreModule, CsvExportModule]\n};\nvar __extends$3p = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$2h = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar ExpandState = /*#__PURE__*/function (ExpandState) {\n ExpandState[ExpandState[\"EXPANDED\"] = 0] = \"EXPANDED\";\n ExpandState[ExpandState[\"COLLAPSED\"] = 1] = \"COLLAPSED\";\n ExpandState[ExpandState[\"INDETERMINATE\"] = 2] = \"INDETERMINATE\";\n return ExpandState;\n}(ExpandState || {});\nvar PrimaryColsHeaderPanel = /** @class */function (_super) {\n __extends$3p(PrimaryColsHeaderPanel, _super);\n function PrimaryColsHeaderPanel() {\n return _super.call(this, PrimaryColsHeaderPanel.TEMPLATE) || this;\n }\n PrimaryColsHeaderPanel.prototype.postConstruct = function () {\n var _this = this;\n this.createExpandIcons();\n this.addManagedListener(this.eExpand, 'click', this.onExpandClicked.bind(this));\n this.addManagedListener(this.eExpand, 'keydown', function (e) {\n if (e.key === KeyCode.SPACE) {\n _this.onExpandClicked();\n }\n });\n this.addManagedListener(this.eSelect.getInputElement(), 'click', this.onSelectClicked.bind(this));\n this.eFilterTextField.onValueChange(function () {\n return _this.onFilterTextChanged();\n });\n this.addManagedListener(this.eFilterTextField.getInputElement(), 'keypress', this.onMiniFilterKeyPress.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.showOrHideOptions.bind(this));\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n this.eSelect.setInputAriaLabel(translate('ariaColumnSelectAll', 'Toggle Select All Columns'));\n this.eFilterTextField.setInputAriaLabel(translate('ariaFilterColumnsInput', 'Filter Columns Input'));\n };\n PrimaryColsHeaderPanel.prototype.init = function (params) {\n this.params = params;\n if (this.columnModel.isReady()) {\n this.showOrHideOptions();\n }\n };\n PrimaryColsHeaderPanel.prototype.createExpandIcons = function () {\n this.eExpand.appendChild(this.eExpandChecked = _.createIconNoSpan('columnSelectOpen', this.gridOptionsWrapper));\n this.eExpand.appendChild(this.eExpandUnchecked = _.createIconNoSpan('columnSelectClosed', this.gridOptionsWrapper));\n this.eExpand.appendChild(this.eExpandIndeterminate = _.createIconNoSpan('columnSelectIndeterminate', this.gridOptionsWrapper));\n this.setExpandState(ExpandState.EXPANDED);\n };\n // we only show expand / collapse if we are showing columns\n PrimaryColsHeaderPanel.prototype.showOrHideOptions = function () {\n var showFilter = !this.params.suppressColumnFilter;\n var showSelect = !this.params.suppressColumnSelectAll;\n var showExpand = !this.params.suppressColumnExpandAll;\n var groupsPresent = this.columnModel.isPrimaryColumnGroupsPresent();\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n this.eFilterTextField.setInputPlaceholder(translate('searchOoo', 'Search...'));\n _.setDisplayed(this.eFilterTextField.getGui(), showFilter);\n _.setDisplayed(this.eSelect.getGui(), showSelect);\n _.setDisplayed(this.eExpand, showExpand && groupsPresent);\n };\n PrimaryColsHeaderPanel.prototype.onFilterTextChanged = function () {\n var _this = this;\n if (!this.onFilterTextChangedDebounced) {\n this.onFilterTextChangedDebounced = _.debounce(function () {\n var filterText = _this.eFilterTextField.getValue();\n _this.dispatchEvent({\n type: \"filterChanged\",\n filterText: filterText\n });\n }, PrimaryColsHeaderPanel.DEBOUNCE_DELAY);\n }\n this.onFilterTextChangedDebounced();\n };\n PrimaryColsHeaderPanel.prototype.onMiniFilterKeyPress = function (e) {\n var _this = this;\n if (e.key === KeyCode.ENTER) {\n // we need to add a delay that corresponds to the filter text debounce delay to ensure\n // the text filtering has happened, otherwise all columns will be deselected\n setTimeout(function () {\n return _this.onSelectClicked();\n }, PrimaryColsHeaderPanel.DEBOUNCE_DELAY);\n }\n };\n PrimaryColsHeaderPanel.prototype.onSelectClicked = function () {\n this.dispatchEvent({\n type: this.selectState ? 'unselectAll' : 'selectAll'\n });\n };\n PrimaryColsHeaderPanel.prototype.onExpandClicked = function () {\n this.dispatchEvent({\n type: this.expandState === ExpandState.EXPANDED ? 'collapseAll' : 'expandAll'\n });\n };\n PrimaryColsHeaderPanel.prototype.setExpandState = function (state) {\n this.expandState = state;\n _.setDisplayed(this.eExpandChecked, this.expandState === ExpandState.EXPANDED);\n _.setDisplayed(this.eExpandUnchecked, this.expandState === ExpandState.COLLAPSED);\n _.setDisplayed(this.eExpandIndeterminate, this.expandState === ExpandState.INDETERMINATE);\n };\n PrimaryColsHeaderPanel.prototype.setSelectionState = function (state) {\n this.selectState = state;\n this.eSelect.setValue(this.selectState);\n };\n PrimaryColsHeaderPanel.DEBOUNCE_DELAY = 300;\n PrimaryColsHeaderPanel.TEMPLATE = \"
\\n
\\n \\n \\n
\";\n __decorate$2h([Autowired('columnModel')], PrimaryColsHeaderPanel.prototype, \"columnModel\", void 0);\n __decorate$2h([RefSelector('eExpand')], PrimaryColsHeaderPanel.prototype, \"eExpand\", void 0);\n __decorate$2h([RefSelector('eSelect')], PrimaryColsHeaderPanel.prototype, \"eSelect\", void 0);\n __decorate$2h([RefSelector('eFilterTextField')], PrimaryColsHeaderPanel.prototype, \"eFilterTextField\", void 0);\n __decorate$2h([PostConstruct], PrimaryColsHeaderPanel.prototype, \"postConstruct\", null);\n return PrimaryColsHeaderPanel;\n}(Component);\nvar ColumnModelItem = /** @class */function () {\n function ColumnModelItem(displayName, columnOrGroup, dept, group, expanded) {\n if (group === void 0) {\n group = false;\n }\n this.eventService = new EventService();\n this.displayName = displayName;\n this.dept = dept;\n this.group = group;\n if (group) {\n this.columnGroup = columnOrGroup;\n this.expanded = expanded;\n this.children = [];\n } else {\n this.column = columnOrGroup;\n }\n }\n ColumnModelItem.prototype.isGroup = function () {\n return this.group;\n };\n ColumnModelItem.prototype.getDisplayName = function () {\n return this.displayName;\n };\n ColumnModelItem.prototype.getColumnGroup = function () {\n return this.columnGroup;\n };\n ColumnModelItem.prototype.getColumn = function () {\n return this.column;\n };\n ColumnModelItem.prototype.getDept = function () {\n return this.dept;\n };\n ColumnModelItem.prototype.isExpanded = function () {\n return !!this.expanded;\n };\n ColumnModelItem.prototype.getChildren = function () {\n return this.children;\n };\n ColumnModelItem.prototype.isPassesFilter = function () {\n return this.passesFilter;\n };\n ColumnModelItem.prototype.setExpanded = function (expanded) {\n if (expanded === this.expanded) {\n return;\n }\n this.expanded = expanded;\n this.eventService.dispatchEvent({\n type: ColumnModelItem.EVENT_EXPANDED_CHANGED\n });\n };\n ColumnModelItem.prototype.setPassesFilter = function (passesFilter) {\n this.passesFilter = passesFilter;\n };\n ColumnModelItem.prototype.addEventListener = function (eventType, listener) {\n this.eventService.addEventListener(eventType, listener);\n };\n ColumnModelItem.prototype.removeEventListener = function (eventType, listener) {\n this.eventService.removeEventListener(eventType, listener);\n };\n ColumnModelItem.EVENT_EXPANDED_CHANGED = 'expandedChanged';\n return ColumnModelItem;\n}();\nvar __extends$3o = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$2g = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __read$X = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread$y = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$X(arguments[i]));\n return ar;\n};\nvar __values$x = undefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar ToolPanelContextMenu = /** @class */function (_super) {\n __extends$3o(ToolPanelContextMenu, _super);\n function ToolPanelContextMenu(column, mouseEvent, parentEl) {\n var _this = _super.call(this, /* html */\"
\") || this;\n _this.column = column;\n _this.mouseEvent = mouseEvent;\n _this.parentEl = parentEl;\n _this.displayName = null;\n return _this;\n }\n ToolPanelContextMenu.prototype.postConstruct = function () {\n this.initializeProperties(this.column);\n this.buildMenuItemMap();\n if (this.column instanceof Column) {\n this.displayName = this.columnModel.getDisplayNameForColumn(this.column, 'columnToolPanel');\n } else {\n this.displayName = this.columnModel.getDisplayNameForProvidedColumnGroup(null, this.column, 'columnToolPanel');\n }\n if (this.isActive()) {\n this.mouseEvent.preventDefault();\n this.displayContextMenu();\n }\n };\n ToolPanelContextMenu.prototype.initializeProperties = function (column) {\n if (column instanceof ProvidedColumnGroup) {\n this.columns = column.getLeafColumns();\n } else {\n this.columns = [column];\n }\n this.allowGrouping = this.columns.some(function (col) {\n return col.isPrimary() && col.isAllowRowGroup();\n });\n this.allowValues = this.columns.some(function (col) {\n return col.isPrimary() && col.isAllowValue();\n });\n this.allowPivoting = this.columnModel.isPivotMode() && this.columns.some(function (col) {\n return col.isPrimary() && col.isAllowPivot();\n });\n };\n ToolPanelContextMenu.prototype.buildMenuItemMap = function () {\n var _this = this;\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n this.menuItemMap = new Map();\n this.menuItemMap.set('rowGroup', {\n allowedFunction: function (col) {\n return col.isPrimary() && col.isAllowRowGroup();\n },\n activeFunction: function (col) {\n return col.isRowGroupActive();\n },\n activateLabel: function () {\n return localeTextFunc('groupBy', 'Group by') + \" \" + _this.displayName;\n },\n deactivateLabel: function () {\n return localeTextFunc('ungroupBy', 'Un-Group by') + \" \" + _this.displayName;\n },\n activateFunction: function () {\n var groupedColumns = _this.columnModel.getRowGroupColumns();\n _this.columnModel.setRowGroupColumns(_this.addColumnsToList(groupedColumns), \"toolPanelUi\");\n },\n deActivateFunction: function () {\n var groupedColumns = _this.columnModel.getRowGroupColumns();\n _this.columnModel.setRowGroupColumns(_this.removeColumnsFromList(groupedColumns), \"toolPanelUi\");\n },\n addIcon: 'menuAddRowGroup',\n removeIcon: 'menuRemoveRowGroup'\n });\n this.menuItemMap.set('value', {\n allowedFunction: function (col) {\n return col.isPrimary() && col.isAllowValue();\n },\n activeFunction: function (col) {\n return col.isValueActive();\n },\n activateLabel: function () {\n return localeTextFunc('addToValues', \"Add \" + _this.displayName + \" to values\", [_this.displayName]);\n },\n deactivateLabel: function () {\n return localeTextFunc('removeFromValues', \"Remove \" + _this.displayName + \" from values\", [_this.displayName]);\n },\n activateFunction: function () {\n var valueColumns = _this.columnModel.getValueColumns();\n _this.columnModel.setValueColumns(_this.addColumnsToList(valueColumns), \"toolPanelUi\");\n },\n deActivateFunction: function () {\n var valueColumns = _this.columnModel.getValueColumns();\n _this.columnModel.setValueColumns(_this.removeColumnsFromList(valueColumns), \"toolPanelUi\");\n },\n addIcon: 'valuePanel',\n removeIcon: 'valuePanel'\n });\n this.menuItemMap.set('pivot', {\n allowedFunction: function (col) {\n return _this.columnModel.isPivotMode() && col.isPrimary() && col.isAllowPivot();\n },\n activeFunction: function (col) {\n return col.isPivotActive();\n },\n activateLabel: function () {\n return localeTextFunc('addToLabels', \"Add \" + _this.displayName + \" to labels\", [_this.displayName]);\n },\n deactivateLabel: function () {\n return localeTextFunc('removeFromLabels', \"Remove \" + _this.displayName + \" from labels\", [_this.displayName]);\n },\n activateFunction: function () {\n var pivotColumns = _this.columnModel.getPivotColumns();\n _this.columnModel.setPivotColumns(_this.addColumnsToList(pivotColumns), \"toolPanelUi\");\n },\n deActivateFunction: function () {\n var pivotColumns = _this.columnModel.getPivotColumns();\n _this.columnModel.setPivotColumns(_this.removeColumnsFromList(pivotColumns), \"toolPanelUi\");\n },\n addIcon: 'pivotPanel',\n removeIcon: 'pivotPanel'\n });\n };\n ToolPanelContextMenu.prototype.addColumnsToList = function (columnList) {\n return __spread$y(columnList).concat(this.columns.filter(function (col) {\n return columnList.indexOf(col) === -1;\n }));\n };\n ToolPanelContextMenu.prototype.removeColumnsFromList = function (columnList) {\n var _this = this;\n return columnList.filter(function (col) {\n return _this.columns.indexOf(col) === -1;\n });\n };\n ToolPanelContextMenu.prototype.displayContextMenu = function () {\n var _this = this;\n var eGui = this.getGui();\n var menuList = this.createBean(new AgMenuList());\n var menuItemsMapped = this.getMappedMenuItems();\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var hideFunc = function () {};\n eGui.appendChild(menuList.getGui());\n menuList.addMenuItems(menuItemsMapped);\n menuList.addManagedListener(menuList, AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED, function () {\n _this.parentEl.focus();\n hideFunc();\n });\n var addPopupRes = this.popupService.addPopup({\n modal: true,\n eChild: eGui,\n closeOnEsc: true,\n afterGuiAttached: function () {\n return _this.focusService.focusInto(menuList.getGui());\n },\n ariaLabel: localeTextFunc('ariaLabelContextMenu', 'Context Menu'),\n closedCallback: function (e) {\n if (e instanceof KeyboardEvent) {\n _this.parentEl.focus();\n }\n _this.destroyBean(menuList);\n }\n });\n if (addPopupRes) {\n hideFunc = addPopupRes.hideFunc;\n }\n this.popupService.positionPopupUnderMouseEvent({\n type: 'columnContextMenu',\n mouseEvent: this.mouseEvent,\n ePopup: eGui\n });\n };\n ToolPanelContextMenu.prototype.isActive = function () {\n return this.allowGrouping || this.allowValues || this.allowPivoting;\n };\n ToolPanelContextMenu.prototype.getMappedMenuItems = function () {\n var e_1, _a;\n var ret = [];\n var _loop_1 = function (val) {\n var isInactive = this_1.columns.some(function (col) {\n return val.allowedFunction(col) && !val.activeFunction(col);\n });\n var isActive = this_1.columns.some(function (col) {\n return val.allowedFunction(col) && val.activeFunction(col);\n });\n if (isInactive) {\n ret.push({\n name: val.activateLabel(this_1.displayName),\n icon: _.createIconNoSpan(val.addIcon, this_1.gridOptionsWrapper, null),\n action: function () {\n return val.activateFunction();\n }\n });\n }\n if (isActive) {\n ret.push({\n name: val.deactivateLabel(this_1.displayName),\n icon: _.createIconNoSpan(val.removeIcon, this_1.gridOptionsWrapper, null),\n action: function () {\n return val.deActivateFunction();\n }\n });\n }\n };\n var this_1 = this;\n try {\n for (var _b = __values$x(this.menuItemMap.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\n var val = _c.value;\n _loop_1(val);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n return ret;\n };\n __decorate$2g([Autowired('columnModel')], ToolPanelContextMenu.prototype, \"columnModel\", void 0);\n __decorate$2g([Autowired('popupService')], ToolPanelContextMenu.prototype, \"popupService\", void 0);\n __decorate$2g([Autowired('focusService')], ToolPanelContextMenu.prototype, \"focusService\", void 0);\n __decorate$2g([PostConstruct], ToolPanelContextMenu.prototype, \"postConstruct\", null);\n return ToolPanelContextMenu;\n}(Component);\nvar __extends$3n = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$2f = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar ToolPanelColumnGroupComp = /** @class */function (_super) {\n __extends$3n(ToolPanelColumnGroupComp, _super);\n function ToolPanelColumnGroupComp(modelItem, allowDragging, eventType, focusWrapper) {\n var _this = _super.call(this) || this;\n _this.modelItem = modelItem;\n _this.allowDragging = allowDragging;\n _this.eventType = eventType;\n _this.focusWrapper = focusWrapper;\n _this.processingColumnStateChange = false;\n _this.modelItem = modelItem;\n _this.columnGroup = modelItem.getColumnGroup();\n _this.columnDept = modelItem.getDept();\n _this.allowDragging = allowDragging;\n return _this;\n }\n ToolPanelColumnGroupComp.prototype.init = function () {\n var _this = this;\n this.setTemplate(ToolPanelColumnGroupComp.TEMPLATE);\n this.eDragHandle = _.createIconNoSpan('columnDrag', this.gridOptionsWrapper);\n this.eDragHandle.classList.add('ag-drag-handle', 'ag-column-select-column-group-drag-handle');\n var checkboxGui = this.cbSelect.getGui();\n var checkboxInput = this.cbSelect.getInputElement();\n checkboxGui.insertAdjacentElement('afterend', this.eDragHandle);\n checkboxInput.setAttribute('tabindex', '-1');\n this.displayName = this.columnModel.getDisplayNameForProvidedColumnGroup(null, this.columnGroup, this.eventType);\n if (_.missing(this.displayName)) {\n this.displayName = '>>';\n }\n this.eLabel.innerHTML = this.displayName ? this.displayName : '';\n this.setupExpandContract();\n this.addCssClass('ag-column-select-indent-' + this.columnDept);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.onColumnStateChanged.bind(this));\n this.addManagedListener(this.eLabel, 'click', this.onLabelClicked.bind(this));\n this.addManagedListener(this.cbSelect, AgCheckbox.EVENT_CHANGED, this.onCheckboxChanged.bind(this));\n this.addManagedListener(this.modelItem, ColumnModelItem.EVENT_EXPANDED_CHANGED, this.onExpandChanged.bind(this));\n this.addManagedListener(this.focusWrapper, 'keydown', this.handleKeyDown.bind(this));\n this.addManagedListener(this.focusWrapper, 'contextmenu', this.onContextMenu.bind(this));\n this.setOpenClosedIcons();\n this.setupDragging();\n this.onColumnStateChanged();\n this.addVisibilityListenersToAllChildren();\n this.refreshAriaExpanded();\n this.refreshAriaLabel();\n this.setupTooltip();\n var classes = CssClassApplier.getToolPanelClassesFromColDef(this.columnGroup.getColGroupDef(), this.gridOptionsWrapper, null, this.columnGroup);\n classes.forEach(function (c) {\n return _this.addOrRemoveCssClass(c, true);\n });\n };\n ToolPanelColumnGroupComp.prototype.getColumns = function () {\n return this.columnGroup.getLeafColumns();\n };\n ToolPanelColumnGroupComp.prototype.setupTooltip = function () {\n var _this = this;\n var colGroupDef = this.columnGroup.getColGroupDef();\n if (!colGroupDef) {\n return;\n }\n var refresh = function () {\n var newTooltipText = colGroupDef.headerTooltip;\n _this.setTooltip(newTooltipText);\n };\n refresh();\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, refresh);\n };\n ToolPanelColumnGroupComp.prototype.getTooltipParams = function () {\n var res = _super.prototype.getTooltipParams.call(this);\n res.location = 'columnToolPanelColumnGroup';\n return res;\n };\n ToolPanelColumnGroupComp.prototype.handleKeyDown = function (e) {\n switch (e.key) {\n case KeyCode.LEFT:\n e.preventDefault();\n this.modelItem.setExpanded(false);\n break;\n case KeyCode.RIGHT:\n e.preventDefault();\n this.modelItem.setExpanded(true);\n break;\n case KeyCode.SPACE:\n e.preventDefault();\n if (this.isSelectable()) {\n this.onSelectAllChanged(!this.isSelected());\n }\n break;\n }\n };\n ToolPanelColumnGroupComp.prototype.onContextMenu = function (e) {\n var _this = this;\n var _a = this,\n columnGroup = _a.columnGroup,\n gridOptionsWrapper = _a.gridOptionsWrapper;\n if (gridOptionsWrapper.isFunctionsReadOnly()) {\n return;\n }\n var contextMenu = this.createBean(new ToolPanelContextMenu(columnGroup, e, this.focusWrapper));\n this.addDestroyFunc(function () {\n if (contextMenu.isAlive()) {\n _this.destroyBean(contextMenu);\n }\n });\n };\n ToolPanelColumnGroupComp.prototype.addVisibilityListenersToAllChildren = function () {\n var _this = this;\n this.columnGroup.getLeafColumns().forEach(function (column) {\n _this.addManagedListener(column, Column.EVENT_VISIBLE_CHANGED, _this.onColumnStateChanged.bind(_this));\n _this.addManagedListener(column, Column.EVENT_VALUE_CHANGED, _this.onColumnStateChanged.bind(_this));\n _this.addManagedListener(column, Column.EVENT_PIVOT_CHANGED, _this.onColumnStateChanged.bind(_this));\n _this.addManagedListener(column, Column.EVENT_ROW_GROUP_CHANGED, _this.onColumnStateChanged.bind(_this));\n });\n };\n ToolPanelColumnGroupComp.prototype.setupDragging = function () {\n var _this = this;\n if (!this.allowDragging) {\n _.setDisplayed(this.eDragHandle, false);\n return;\n }\n var hideColumnOnExit = !this.gridOptionsWrapper.isSuppressDragLeaveHidesColumns();\n var dragSource = {\n type: DragSourceType.ToolPanel,\n eElement: this.eDragHandle,\n dragItemName: this.displayName,\n defaultIconName: hideColumnOnExit ? DragAndDropService.ICON_HIDE : DragAndDropService.ICON_NOT_ALLOWED,\n getDragItem: function () {\n return _this.createDragItem();\n },\n onDragStarted: function () {\n var event = {\n type: Events.EVENT_COLUMN_PANEL_ITEM_DRAG_START,\n column: _this.columnGroup\n };\n _this.eventService.dispatchEvent(event);\n },\n onDragStopped: function () {\n var event = {\n type: Events.EVENT_COLUMN_PANEL_ITEM_DRAG_END\n };\n _this.eventService.dispatchEvent(event);\n },\n onGridEnter: function () {\n if (hideColumnOnExit) {\n // when dragged into the grid, mimic what happens when checkbox is enabled\n // this handles the behaviour for pivot which is different to just hiding a column.\n _this.onChangeCommon(true);\n }\n },\n onGridExit: function () {\n if (hideColumnOnExit) {\n // when dragged outside of the grid, mimic what happens when checkbox is disabled\n // this handles the behaviour for pivot which is different to just hiding a column.\n _this.onChangeCommon(false);\n }\n }\n };\n this.dragAndDropService.addDragSource(dragSource, true);\n this.addDestroyFunc(function () {\n return _this.dragAndDropService.removeDragSource(dragSource);\n });\n };\n ToolPanelColumnGroupComp.prototype.createDragItem = function () {\n var visibleState = {};\n this.columnGroup.getLeafColumns().forEach(function (col) {\n visibleState[col.getId()] = col.isVisible();\n });\n return {\n columns: this.columnGroup.getLeafColumns(),\n visibleState: visibleState\n };\n };\n ToolPanelColumnGroupComp.prototype.setupExpandContract = function () {\n this.eGroupClosedIcon.appendChild(_.createIcon('columnSelectClosed', this.gridOptionsWrapper, null));\n this.eGroupOpenedIcon.appendChild(_.createIcon('columnSelectOpen', this.gridOptionsWrapper, null));\n this.addManagedListener(this.eGroupClosedIcon, 'click', this.onExpandOrContractClicked.bind(this));\n this.addManagedListener(this.eGroupOpenedIcon, 'click', this.onExpandOrContractClicked.bind(this));\n var touchListener = new TouchListener(this.eColumnGroupIcons, true);\n this.addManagedListener(touchListener, TouchListener.EVENT_TAP, this.onExpandOrContractClicked.bind(this));\n this.addDestroyFunc(touchListener.destroy.bind(touchListener));\n };\n ToolPanelColumnGroupComp.prototype.onLabelClicked = function () {\n var nextState = !this.cbSelect.getValue();\n this.onChangeCommon(nextState);\n };\n ToolPanelColumnGroupComp.prototype.onCheckboxChanged = function (event) {\n this.onChangeCommon(event.selected);\n };\n ToolPanelColumnGroupComp.prototype.getVisibleLeafColumns = function () {\n var childColumns = [];\n var extractCols = function (children) {\n children.forEach(function (child) {\n if (!child.isPassesFilter()) {\n return;\n }\n if (child.isGroup()) {\n extractCols(child.getChildren());\n } else {\n childColumns.push(child.getColumn());\n }\n });\n };\n extractCols(this.modelItem.getChildren());\n return childColumns;\n };\n ToolPanelColumnGroupComp.prototype.onChangeCommon = function (nextState) {\n this.refreshAriaLabel();\n if (this.processingColumnStateChange) {\n return;\n }\n this.modelItemUtils.selectAllChildren(this.modelItem.getChildren(), nextState, this.eventType);\n };\n ToolPanelColumnGroupComp.prototype.refreshAriaLabel = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var columnLabel = translate('ariaColumnGroup', 'Column Group');\n var state = this.cbSelect.getValue() ? translate('ariaVisible', 'visible') : translate('ariaHidden', 'hidden');\n var visibilityLabel = translate('ariaToggleVisibility', 'Press SPACE to toggle visibility');\n _.setAriaLabel(this.focusWrapper, this.displayName + \" \" + columnLabel);\n this.cbSelect.setInputAriaLabel(visibilityLabel + \" (\" + state + \")\");\n _.setAriaDescribedBy(this.focusWrapper, this.cbSelect.getInputElement().id);\n };\n ToolPanelColumnGroupComp.prototype.onColumnStateChanged = function () {\n var selectedValue = this.workOutSelectedValue();\n var readOnlyValue = this.workOutReadOnlyValue();\n this.processingColumnStateChange = true;\n this.cbSelect.setValue(selectedValue);\n this.cbSelect.setReadOnly(readOnlyValue);\n this.addOrRemoveCssClass('ag-column-select-column-group-readonly', readOnlyValue);\n this.processingColumnStateChange = false;\n };\n ToolPanelColumnGroupComp.prototype.workOutSelectedValue = function () {\n var _this = this;\n var pivotMode = this.columnModel.isPivotMode();\n var visibleLeafColumns = this.getVisibleLeafColumns();\n var checkedCount = 0;\n var uncheckedCount = 0;\n visibleLeafColumns.forEach(function (column) {\n if (!pivotMode && column.getColDef().lockVisible) {\n return;\n }\n if (_this.isColumnChecked(column, pivotMode)) {\n checkedCount++;\n } else {\n uncheckedCount++;\n }\n });\n if (checkedCount > 0 && uncheckedCount > 0) {\n return undefined;\n }\n return checkedCount > 0;\n };\n ToolPanelColumnGroupComp.prototype.workOutReadOnlyValue = function () {\n var pivotMode = this.columnModel.isPivotMode();\n var colsThatCanAction = 0;\n this.columnGroup.getLeafColumns().forEach(function (col) {\n if (pivotMode) {\n if (col.isAnyFunctionAllowed()) {\n colsThatCanAction++;\n }\n } else {\n if (!col.getColDef().lockVisible) {\n colsThatCanAction++;\n }\n }\n });\n return colsThatCanAction === 0;\n };\n ToolPanelColumnGroupComp.prototype.isColumnChecked = function (column, pivotMode) {\n if (pivotMode) {\n var pivoted = column.isPivotActive();\n var grouped = column.isRowGroupActive();\n var aggregated = column.isValueActive();\n return pivoted || grouped || aggregated;\n }\n return column.isVisible();\n };\n ToolPanelColumnGroupComp.prototype.onExpandOrContractClicked = function () {\n var oldState = this.modelItem.isExpanded();\n this.modelItem.setExpanded(!oldState);\n };\n ToolPanelColumnGroupComp.prototype.onExpandChanged = function () {\n this.setOpenClosedIcons();\n this.refreshAriaExpanded();\n };\n ToolPanelColumnGroupComp.prototype.setOpenClosedIcons = function () {\n var folderOpen = this.modelItem.isExpanded();\n _.setDisplayed(this.eGroupClosedIcon, !folderOpen);\n _.setDisplayed(this.eGroupOpenedIcon, folderOpen);\n };\n ToolPanelColumnGroupComp.prototype.refreshAriaExpanded = function () {\n _.setAriaExpanded(this.focusWrapper, this.modelItem.isExpanded());\n };\n ToolPanelColumnGroupComp.prototype.getDisplayName = function () {\n return this.displayName;\n };\n ToolPanelColumnGroupComp.prototype.onSelectAllChanged = function (value) {\n var cbValue = this.cbSelect.getValue();\n var readOnly = this.cbSelect.isReadOnly();\n if (!readOnly && (value && !cbValue || !value && cbValue)) {\n this.cbSelect.toggle();\n }\n };\n ToolPanelColumnGroupComp.prototype.isSelected = function () {\n return this.cbSelect.getValue();\n };\n ToolPanelColumnGroupComp.prototype.isSelectable = function () {\n return !this.cbSelect.isReadOnly();\n };\n ToolPanelColumnGroupComp.prototype.setSelected = function (selected) {\n this.cbSelect.setValue(selected, true);\n };\n ToolPanelColumnGroupComp.TEMPLATE = \"
\\n \\n \\n \\n \\n \\n \\n
\";\n __decorate$2f([Autowired('columnModel')], ToolPanelColumnGroupComp.prototype, \"columnModel\", void 0);\n __decorate$2f([Autowired('dragAndDropService')], ToolPanelColumnGroupComp.prototype, \"dragAndDropService\", void 0);\n __decorate$2f([Autowired('modelItemUtils')], ToolPanelColumnGroupComp.prototype, \"modelItemUtils\", void 0);\n __decorate$2f([RefSelector('cbSelect')], ToolPanelColumnGroupComp.prototype, \"cbSelect\", void 0);\n __decorate$2f([RefSelector('eLabel')], ToolPanelColumnGroupComp.prototype, \"eLabel\", void 0);\n __decorate$2f([RefSelector('eGroupOpenedIcon')], ToolPanelColumnGroupComp.prototype, \"eGroupOpenedIcon\", void 0);\n __decorate$2f([RefSelector('eGroupClosedIcon')], ToolPanelColumnGroupComp.prototype, \"eGroupClosedIcon\", void 0);\n __decorate$2f([RefSelector('eColumnGroupIcons')], ToolPanelColumnGroupComp.prototype, \"eColumnGroupIcons\", void 0);\n __decorate$2f([PostConstruct], ToolPanelColumnGroupComp.prototype, \"init\", null);\n return ToolPanelColumnGroupComp;\n}(Component);\nvar __extends$3m = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$2e = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar PRIMARY_COLS_LIST_ITEM_HOVERED = 'ag-list-item-hovered';\nvar PrimaryColsListPanelItemDragFeature = /** @class */function (_super) {\n __extends$3m(PrimaryColsListPanelItemDragFeature, _super);\n function PrimaryColsListPanelItemDragFeature(comp, virtualList) {\n var _this = _super.call(this) || this;\n _this.comp = comp;\n _this.virtualList = virtualList;\n _this.currentDragColumn = null;\n _this.lastHoveredColumnItem = null;\n return _this;\n }\n PrimaryColsListPanelItemDragFeature.prototype.postConstruct = function () {\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PANEL_ITEM_DRAG_START, this.columnPanelItemDragStart.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PANEL_ITEM_DRAG_END, this.columnPanelItemDragEnd.bind(this));\n this.createDropTarget();\n this.createAutoScrollService();\n };\n PrimaryColsListPanelItemDragFeature.prototype.columnPanelItemDragStart = function (_a) {\n var column = _a.column;\n this.currentDragColumn = column;\n var currentColumns = this.getCurrentColumns();\n var hasNotMovable = currentColumns.find(function (col) {\n var colDef = col.getColDef();\n return !!colDef.suppressMovable || !!colDef.lockPosition;\n });\n if (hasNotMovable) {\n this.moveBlocked = true;\n }\n };\n PrimaryColsListPanelItemDragFeature.prototype.columnPanelItemDragEnd = function () {\n var _this = this;\n window.setTimeout(function () {\n _this.currentDragColumn = null;\n _this.moveBlocked = false;\n }, 10);\n };\n PrimaryColsListPanelItemDragFeature.prototype.createDropTarget = function () {\n var _this = this;\n var dropTarget = {\n isInterestedIn: function (type) {\n return type === DragSourceType.ToolPanel;\n },\n getIconName: function () {\n return DragAndDropService[_this.moveBlocked ? 'ICON_NOT_ALLOWED' : 'ICON_MOVE'];\n },\n getContainer: function () {\n return _this.comp.getGui();\n },\n onDragging: function (e) {\n return _this.onDragging(e);\n },\n onDragStop: function () {\n return _this.onDragStop();\n },\n onDragLeave: function () {\n return _this.onDragLeave();\n }\n };\n this.dragAndDropService.addDropTarget(dropTarget);\n };\n PrimaryColsListPanelItemDragFeature.prototype.createAutoScrollService = function () {\n var virtualListGui = this.virtualList.getGui();\n this.autoScrollService = new AutoScrollService({\n scrollContainer: virtualListGui,\n scrollAxis: 'y',\n getVerticalPosition: function () {\n return virtualListGui.scrollTop;\n },\n setVerticalPosition: function (position) {\n return virtualListGui.scrollTop = position;\n }\n });\n };\n PrimaryColsListPanelItemDragFeature.prototype.onDragging = function (e) {\n if (!this.currentDragColumn || this.moveBlocked) {\n return;\n }\n var hoveredColumnItem = this.getDragColumnItem(e);\n var comp = this.virtualList.getComponentAt(hoveredColumnItem.rowIndex);\n if (!comp) {\n return;\n }\n var el = comp.getGui().parentElement;\n if (this.lastHoveredColumnItem && this.lastHoveredColumnItem.rowIndex === hoveredColumnItem.rowIndex && this.lastHoveredColumnItem.position === hoveredColumnItem.position) {\n return;\n }\n this.autoScrollService.check(e.event);\n this.clearHoveredItems();\n this.lastHoveredColumnItem = hoveredColumnItem;\n _.radioCssClass(el, \"\" + PRIMARY_COLS_LIST_ITEM_HOVERED);\n _.radioCssClass(el, \"ag-item-highlight-\" + hoveredColumnItem.position);\n };\n PrimaryColsListPanelItemDragFeature.prototype.getDragColumnItem = function (e) {\n var virtualListGui = this.virtualList.getGui();\n var paddingTop = parseFloat(window.getComputedStyle(virtualListGui).paddingTop);\n var rowHeight = this.virtualList.getRowHeight();\n var scrollTop = this.virtualList.getScrollTop();\n var rowIndex = Math.max(0, (e.y - paddingTop + scrollTop) / rowHeight);\n var maxLen = this.comp.getDisplayedColsList().length - 1;\n var normalizedRowIndex = Math.min(maxLen, rowIndex) | 0;\n return {\n rowIndex: normalizedRowIndex,\n position: Math.round(rowIndex) > rowIndex || rowIndex > maxLen ? 'bottom' : 'top',\n component: this.virtualList.getComponentAt(normalizedRowIndex)\n };\n };\n PrimaryColsListPanelItemDragFeature.prototype.onDragStop = function () {\n if (this.moveBlocked) {\n return;\n }\n var targetIndex = this.getTargetIndex();\n var columnsToMove = this.getCurrentColumns();\n if (targetIndex != null) {\n this.columnModel.moveColumns(columnsToMove, targetIndex);\n }\n this.clearHoveredItems();\n this.autoScrollService.ensureCleared();\n };\n PrimaryColsListPanelItemDragFeature.prototype.getMoveDiff = function (end) {\n var allColumns = this.columnModel.getAllGridColumns();\n var currentColumns = this.getCurrentColumns();\n var currentColumn = currentColumns[0];\n var span = currentColumns.length;\n var currentIndex = allColumns.indexOf(currentColumn);\n if (currentIndex < end) {\n return span;\n }\n return 0;\n };\n PrimaryColsListPanelItemDragFeature.prototype.getCurrentColumns = function () {\n if (this.currentDragColumn instanceof ProvidedColumnGroup) {\n return this.currentDragColumn.getLeafColumns();\n }\n return [this.currentDragColumn];\n };\n PrimaryColsListPanelItemDragFeature.prototype.getTargetIndex = function () {\n if (!this.lastHoveredColumnItem) {\n return null;\n }\n var columnItemComponent = this.lastHoveredColumnItem.component;\n var isBefore = this.lastHoveredColumnItem.position === 'top';\n var targetColumn;\n if (columnItemComponent instanceof ToolPanelColumnGroupComp) {\n var columns = columnItemComponent.getColumns();\n targetColumn = columns[0];\n isBefore = true;\n } else {\n targetColumn = columnItemComponent.getColumn();\n }\n var targetColumnIndex = this.columnModel.getAllGridColumns().indexOf(targetColumn);\n var adjustedTarget = isBefore ? targetColumnIndex : targetColumnIndex + 1;\n var diff = this.getMoveDiff(adjustedTarget);\n return adjustedTarget - diff;\n };\n PrimaryColsListPanelItemDragFeature.prototype.onDragLeave = function () {\n this.clearHoveredItems();\n this.autoScrollService.ensureCleared();\n };\n PrimaryColsListPanelItemDragFeature.prototype.clearHoveredItems = function () {\n var virtualListGui = this.virtualList.getGui();\n virtualListGui.querySelectorAll(\".\" + PRIMARY_COLS_LIST_ITEM_HOVERED).forEach(function (el) {\n [PRIMARY_COLS_LIST_ITEM_HOVERED, 'ag-item-highlight-top', 'ag-item-highlight-bottom'].forEach(function (cls) {\n el.classList.remove(cls);\n });\n });\n this.lastHoveredColumnItem = null;\n };\n __decorate$2e([Autowired('columnModel')], PrimaryColsListPanelItemDragFeature.prototype, \"columnModel\", void 0);\n __decorate$2e([Autowired('dragAndDropService')], PrimaryColsListPanelItemDragFeature.prototype, \"dragAndDropService\", void 0);\n __decorate$2e([PostConstruct], PrimaryColsListPanelItemDragFeature.prototype, \"postConstruct\", null);\n return PrimaryColsListPanelItemDragFeature;\n}(BeanStub);\nvar __extends$3l = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$2d = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar ToolPanelColumnComp = /** @class */function (_super) {\n __extends$3l(ToolPanelColumnComp, _super);\n function ToolPanelColumnComp(column, columnDept, allowDragging, groupsExist, focusWrapper) {\n var _this = _super.call(this) || this;\n _this.column = column;\n _this.columnDept = columnDept;\n _this.allowDragging = allowDragging;\n _this.groupsExist = groupsExist;\n _this.focusWrapper = focusWrapper;\n _this.processingColumnStateChange = false;\n return _this;\n }\n ToolPanelColumnComp.prototype.init = function () {\n var _this = this;\n this.setTemplate(ToolPanelColumnComp.TEMPLATE);\n this.eDragHandle = _.createIconNoSpan('columnDrag', this.gridOptionsWrapper);\n this.eDragHandle.classList.add('ag-drag-handle', 'ag-column-select-column-drag-handle');\n var checkboxGui = this.cbSelect.getGui();\n var checkboxInput = this.cbSelect.getInputElement();\n checkboxGui.insertAdjacentElement('afterend', this.eDragHandle);\n checkboxInput.setAttribute('tabindex', '-1');\n this.displayName = this.columnModel.getDisplayNameForColumn(this.column, 'columnToolPanel');\n var displayNameSanitised = _.escapeString(this.displayName);\n this.eLabel.innerHTML = displayNameSanitised;\n // if grouping, we add an extra level of indent, to cater for expand/contract icons we need to indent for\n var indent = this.columnDept;\n if (this.groupsExist) {\n this.addCssClass('ag-column-select-add-group-indent');\n }\n this.addCssClass(\"ag-column-select-indent-\" + indent);\n this.setupDragging();\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.onColumnStateChanged.bind(this));\n this.addManagedListener(this.column, Column.EVENT_VALUE_CHANGED, this.onColumnStateChanged.bind(this));\n this.addManagedListener(this.column, Column.EVENT_PIVOT_CHANGED, this.onColumnStateChanged.bind(this));\n this.addManagedListener(this.column, Column.EVENT_ROW_GROUP_CHANGED, this.onColumnStateChanged.bind(this));\n this.addManagedListener(this.column, Column.EVENT_VISIBLE_CHANGED, this.onColumnStateChanged.bind(this));\n this.addManagedListener(this.focusWrapper, 'keydown', this.handleKeyDown.bind(this));\n this.addManagedListener(this.focusWrapper, 'contextmenu', this.onContextMenu.bind(this));\n this.addManagedListener(this.gridOptionsWrapper, 'functionsReadOnly', this.onColumnStateChanged.bind(this));\n this.addManagedListener(this.cbSelect, AgCheckbox.EVENT_CHANGED, this.onCheckboxChanged.bind(this));\n this.addManagedListener(this.eLabel, 'click', this.onLabelClicked.bind(this));\n this.onColumnStateChanged();\n this.refreshAriaLabel();\n this.setupTooltip();\n var classes = CssClassApplier.getToolPanelClassesFromColDef(this.column.getColDef(), this.gridOptionsWrapper, this.column, null);\n classes.forEach(function (c) {\n return _this.addOrRemoveCssClass(c, true);\n });\n };\n ToolPanelColumnComp.prototype.getColumn = function () {\n return this.column;\n };\n ToolPanelColumnComp.prototype.setupTooltip = function () {\n var _this = this;\n var refresh = function () {\n var newTooltipText = _this.column.getColDef().headerTooltip;\n _this.setTooltip(newTooltipText);\n };\n refresh();\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, refresh);\n };\n ToolPanelColumnComp.prototype.getTooltipParams = function () {\n var res = _super.prototype.getTooltipParams.call(this);\n res.location = 'columnToolPanelColumn';\n res.colDef = this.column.getColDef();\n return res;\n };\n ToolPanelColumnComp.prototype.onContextMenu = function (e) {\n var _this = this;\n var _a = this,\n column = _a.column,\n gridOptionsWrapper = _a.gridOptionsWrapper;\n if (gridOptionsWrapper.isFunctionsReadOnly()) {\n return;\n }\n var contextMenu = this.createBean(new ToolPanelContextMenu(column, e, this.focusWrapper));\n this.addDestroyFunc(function () {\n if (contextMenu.isAlive()) {\n _this.destroyBean(contextMenu);\n }\n });\n };\n ToolPanelColumnComp.prototype.handleKeyDown = function (e) {\n if (e.key === KeyCode.SPACE) {\n e.preventDefault();\n if (this.isSelectable()) {\n this.onSelectAllChanged(!this.isSelected());\n }\n }\n };\n ToolPanelColumnComp.prototype.onLabelClicked = function () {\n if (this.gridOptionsWrapper.isFunctionsReadOnly()) {\n return;\n }\n var nextState = !this.cbSelect.getValue();\n this.onChangeCommon(nextState);\n };\n ToolPanelColumnComp.prototype.onCheckboxChanged = function (event) {\n this.onChangeCommon(event.selected);\n };\n ToolPanelColumnComp.prototype.onChangeCommon = function (nextState) {\n // ignore lock visible columns\n if (this.cbSelect.isReadOnly()) {\n return;\n }\n this.refreshAriaLabel();\n // only want to action if the user clicked the checkbox, not if we are setting the checkbox because\n // of a change in the model\n if (this.processingColumnStateChange) {\n return;\n }\n this.modelItemUtils.setColumn(this.column, nextState, 'toolPanelUi');\n };\n ToolPanelColumnComp.prototype.refreshAriaLabel = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var columnLabel = translate('ariaColumn', 'Column');\n var state = this.cbSelect.getValue() ? translate('ariaVisible', 'visible') : translate('ariaHidden', 'hidden');\n var visibilityLabel = translate('ariaToggleVisibility', 'Press SPACE to toggle visibility');\n _.setAriaLabel(this.focusWrapper, this.displayName + \" \" + columnLabel);\n this.cbSelect.setInputAriaLabel(visibilityLabel + \" (\" + state + \")\");\n _.setAriaDescribedBy(this.focusWrapper, this.cbSelect.getInputElement().id);\n };\n ToolPanelColumnComp.prototype.setupDragging = function () {\n var _this = this;\n if (!this.allowDragging) {\n _.setDisplayed(this.eDragHandle, false);\n return;\n }\n var hideColumnOnExit = !this.gridOptionsWrapper.isSuppressDragLeaveHidesColumns();\n var dragSource = {\n type: DragSourceType.ToolPanel,\n eElement: this.eDragHandle,\n dragItemName: this.displayName,\n defaultIconName: hideColumnOnExit ? DragAndDropService.ICON_HIDE : DragAndDropService.ICON_NOT_ALLOWED,\n getDragItem: function () {\n return _this.createDragItem();\n },\n onDragStarted: function () {\n var event = {\n type: Events.EVENT_COLUMN_PANEL_ITEM_DRAG_START,\n column: _this.column\n };\n _this.eventService.dispatchEvent(event);\n },\n onDragStopped: function () {\n var event = {\n type: Events.EVENT_COLUMN_PANEL_ITEM_DRAG_END\n };\n _this.eventService.dispatchEvent(event);\n },\n onGridEnter: function () {\n if (hideColumnOnExit) {\n // when dragged into the grid, mimic what happens when checkbox is enabled\n // this handles the behaviour for pivot which is different to just hiding a column.\n _this.onChangeCommon(true);\n }\n },\n onGridExit: function () {\n if (hideColumnOnExit) {\n // when dragged outside of the grid, mimic what happens when checkbox is disabled\n // this handles the behaviour for pivot which is different to just hiding a column.\n _this.onChangeCommon(false);\n }\n }\n };\n this.dragAndDropService.addDragSource(dragSource, true);\n this.addDestroyFunc(function () {\n return _this.dragAndDropService.removeDragSource(dragSource);\n });\n };\n ToolPanelColumnComp.prototype.createDragItem = function () {\n var visibleState = {};\n visibleState[this.column.getId()] = this.column.isVisible();\n return {\n columns: [this.column],\n visibleState: visibleState\n };\n };\n ToolPanelColumnComp.prototype.onColumnStateChanged = function () {\n this.processingColumnStateChange = true;\n var isPivotMode = this.columnModel.isPivotMode();\n if (isPivotMode) {\n // if reducing, checkbox means column is one of pivot, value or group\n var anyFunctionActive = this.column.isAnyFunctionActive();\n this.cbSelect.setValue(anyFunctionActive);\n } else {\n // if not reducing, the checkbox tells us if column is visible or not\n this.cbSelect.setValue(this.column.isVisible());\n }\n var canBeToggled = true;\n var canBeDragged = true;\n if (isPivotMode) {\n // when in pivot mode, the item should be read only if:\n // a) gui is not allowed make any changes\n var functionsReadOnly = this.gridOptionsWrapper.isFunctionsReadOnly();\n // b) column is not allow any functions on it\n var noFunctionsAllowed = !this.column.isAnyFunctionAllowed();\n canBeToggled = !functionsReadOnly && !noFunctionsAllowed;\n canBeDragged = canBeToggled;\n } else {\n var _a = this.column.getColDef(),\n enableRowGroup = _a.enableRowGroup,\n enableValue = _a.enableValue,\n lockPosition = _a.lockPosition,\n suppressMovable = _a.suppressMovable,\n lockVisible = _a.lockVisible;\n var forceDraggable = !!enableRowGroup || !!enableValue;\n var disableDraggable = !!lockPosition || !!suppressMovable;\n canBeToggled = !lockVisible;\n canBeDragged = forceDraggable || !disableDraggable;\n }\n this.cbSelect.setReadOnly(!canBeToggled);\n this.eDragHandle.classList.toggle('ag-column-select-column-readonly', !canBeDragged);\n this.addOrRemoveCssClass('ag-column-select-column-readonly', !canBeDragged && !canBeToggled);\n var checkboxPassive = isPivotMode && this.gridOptionsWrapper.isFunctionsPassive();\n this.cbSelect.setPassive(checkboxPassive);\n this.processingColumnStateChange = false;\n };\n ToolPanelColumnComp.prototype.getDisplayName = function () {\n return this.displayName;\n };\n ToolPanelColumnComp.prototype.onSelectAllChanged = function (value) {\n if (value !== this.cbSelect.getValue()) {\n if (!this.cbSelect.isReadOnly()) {\n this.cbSelect.toggle();\n }\n }\n };\n ToolPanelColumnComp.prototype.isSelected = function () {\n return this.cbSelect.getValue();\n };\n ToolPanelColumnComp.prototype.isSelectable = function () {\n return !this.cbSelect.isReadOnly();\n };\n ToolPanelColumnComp.prototype.isExpandable = function () {\n return false;\n };\n ToolPanelColumnComp.prototype.setExpanded = function (value) {\n console.warn('AG Grid: can not expand a column item that does not represent a column group header');\n };\n ToolPanelColumnComp.TEMPLATE = \"
\\n \\n \\n
\";\n __decorate$2d([Autowired('columnModel')], ToolPanelColumnComp.prototype, \"columnModel\", void 0);\n __decorate$2d([Autowired('dragAndDropService')], ToolPanelColumnComp.prototype, \"dragAndDropService\", void 0);\n __decorate$2d([Autowired('modelItemUtils')], ToolPanelColumnComp.prototype, \"modelItemUtils\", void 0);\n __decorate$2d([RefSelector('eLabel')], ToolPanelColumnComp.prototype, \"eLabel\", void 0);\n __decorate$2d([RefSelector('cbSelect')], ToolPanelColumnComp.prototype, \"cbSelect\", void 0);\n __decorate$2d([PostConstruct], ToolPanelColumnComp.prototype, \"init\", null);\n return ToolPanelColumnComp;\n}(Component);\nvar __extends$3k = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$2c = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar UIColumnModel = /** @class */function () {\n function UIColumnModel(items) {\n this.items = items;\n }\n UIColumnModel.prototype.getRowCount = function () {\n return this.items.length;\n };\n UIColumnModel.prototype.getRow = function (index) {\n return this.items[index];\n };\n return UIColumnModel;\n}();\nvar PRIMARY_COLS_LIST_PANEL_CLASS = 'ag-column-select-list';\nvar PrimaryColsListPanel = /** @class */function (_super) {\n __extends$3k(PrimaryColsListPanel, _super);\n function PrimaryColsListPanel() {\n var _this = _super.call(this, PrimaryColsListPanel.TEMPLATE) || this;\n _this.destroyColumnItemFuncs = [];\n return _this;\n }\n PrimaryColsListPanel.prototype.destroyColumnTree = function () {\n this.allColsTree = [];\n this.destroyColumnItemFuncs.forEach(function (f) {\n return f();\n });\n this.destroyColumnItemFuncs = [];\n };\n PrimaryColsListPanel.prototype.init = function (params, allowDragging, eventType) {\n var _this = this;\n this.params = params;\n this.allowDragging = allowDragging;\n this.eventType = eventType;\n if (!this.params.suppressSyncLayoutWithGrid) {\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_MOVED, this.onColumnsChanged.bind(this));\n }\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onColumnsChanged.bind(this));\n var eventsImpactingCheckedState = [Events.EVENT_COLUMN_PIVOT_CHANGED, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, Events.EVENT_COLUMN_VALUE_CHANGED, Events.EVENT_COLUMN_VISIBLE, Events.EVENT_NEW_COLUMNS_LOADED];\n eventsImpactingCheckedState.forEach(function (event) {\n // update header select all checkbox with current selection state\n _this.addManagedListener(_this.eventService, event, _this.fireSelectionChangedEvent.bind(_this));\n });\n this.expandGroupsByDefault = !this.params.contractColumnSelection;\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var columnListName = translate('ariaColumnList', 'Column List');\n this.virtualList = this.createManagedBean(new VirtualList('column-select', 'tree', columnListName));\n this.appendChild(this.virtualList.getGui());\n this.virtualList.setComponentCreator(function (item, listItemElement) {\n _.setAriaLevel(listItemElement, item.getDept() + 1);\n return _this.createComponentFromItem(item, listItemElement);\n });\n if (this.columnModel.isReady()) {\n this.onColumnsChanged();\n }\n if (!params.suppressColumnMove && !this.gridOptionsWrapper.isSuppressMovableColumns()) {\n this.createManagedBean(new PrimaryColsListPanelItemDragFeature(this, this.virtualList));\n }\n };\n PrimaryColsListPanel.prototype.createComponentFromItem = function (item, listItemElement) {\n if (item.isGroup()) {\n var renderedGroup = new ToolPanelColumnGroupComp(item, this.allowDragging, this.eventType, listItemElement);\n this.getContext().createBean(renderedGroup);\n return renderedGroup;\n }\n var columnComp = new ToolPanelColumnComp(item.getColumn(), item.getDept(), this.allowDragging, this.groupsExist, listItemElement);\n this.getContext().createBean(columnComp);\n return columnComp;\n };\n PrimaryColsListPanel.prototype.onColumnsChanged = function () {\n var expandedStates = this.getExpandedStates();\n var pivotModeActive = this.columnModel.isPivotMode();\n var shouldSyncColumnLayoutWithGrid = !this.params.suppressSyncLayoutWithGrid && !pivotModeActive;\n if (shouldSyncColumnLayoutWithGrid) {\n this.buildTreeFromWhatGridIsDisplaying();\n } else {\n this.buildTreeFromProvidedColumnDefs();\n }\n this.setExpandedStates(expandedStates);\n this.markFilteredColumns();\n this.flattenAndFilterModel();\n };\n PrimaryColsListPanel.prototype.getDisplayedColsList = function () {\n return this.displayedColsList;\n };\n PrimaryColsListPanel.prototype.getExpandedStates = function () {\n if (!this.allColsTree) {\n return {};\n }\n var res = {};\n this.forEachItem(function (item) {\n if (!item.isGroup()) {\n return;\n }\n var colGroup = item.getColumnGroup();\n if (colGroup) {\n // group should always exist, this is defensive\n res[colGroup.getId()] = item.isExpanded();\n }\n });\n return res;\n };\n PrimaryColsListPanel.prototype.setExpandedStates = function (states) {\n if (!this.allColsTree) {\n return;\n }\n this.forEachItem(function (item) {\n if (!item.isGroup()) {\n return;\n }\n var colGroup = item.getColumnGroup();\n if (colGroup) {\n // group should always exist, this is defensive\n var expanded = states[colGroup.getId()];\n var groupExistedLastTime = expanded != null;\n if (groupExistedLastTime) {\n item.setExpanded(expanded);\n }\n }\n });\n };\n PrimaryColsListPanel.prototype.buildTreeFromWhatGridIsDisplaying = function () {\n this.colDefService.syncLayoutWithGrid(this.setColumnLayout.bind(this));\n };\n PrimaryColsListPanel.prototype.setColumnLayout = function (colDefs) {\n var columnTree = this.colDefService.createColumnTree(colDefs);\n this.buildListModel(columnTree);\n // using col defs to check if groups exist as it could be a custom layout\n this.groupsExist = colDefs.some(function (colDef) {\n return colDef && typeof colDef.children !== 'undefined';\n });\n this.markFilteredColumns();\n this.flattenAndFilterModel();\n };\n PrimaryColsListPanel.prototype.buildTreeFromProvidedColumnDefs = function () {\n // add column / group comps to tool panel\n this.buildListModel(this.columnModel.getPrimaryColumnTree());\n this.groupsExist = this.columnModel.isPrimaryColumnGroupsPresent();\n };\n PrimaryColsListPanel.prototype.buildListModel = function (columnTree) {\n var _this = this;\n var columnExpandedListener = this.onColumnExpanded.bind(this);\n var addListeners = function (item) {\n item.addEventListener(ColumnModelItem.EVENT_EXPANDED_CHANGED, columnExpandedListener);\n var removeFunc = item.removeEventListener.bind(item, ColumnModelItem.EVENT_EXPANDED_CHANGED, columnExpandedListener);\n _this.destroyColumnItemFuncs.push(removeFunc);\n };\n var recursivelyBuild = function (tree, dept, parentList) {\n tree.forEach(function (child) {\n if (child instanceof ProvidedColumnGroup) {\n createGroupItem(child, dept, parentList);\n } else {\n createColumnItem(child, dept, parentList);\n }\n });\n };\n var createGroupItem = function (columnGroup, dept, parentList) {\n var columnGroupDef = columnGroup.getColGroupDef();\n var skipThisGroup = columnGroupDef && columnGroupDef.suppressColumnsToolPanel;\n if (skipThisGroup) {\n return;\n }\n if (columnGroup.isPadding()) {\n recursivelyBuild(columnGroup.getChildren(), dept, parentList);\n return;\n }\n var displayName = _this.columnModel.getDisplayNameForProvidedColumnGroup(null, columnGroup, _this.eventType);\n var item = new ColumnModelItem(displayName, columnGroup, dept, true, _this.expandGroupsByDefault);\n parentList.push(item);\n addListeners(item);\n recursivelyBuild(columnGroup.getChildren(), dept + 1, item.getChildren());\n };\n var createColumnItem = function (column, dept, parentList) {\n var skipThisColumn = column.getColDef() && column.getColDef().suppressColumnsToolPanel;\n if (skipThisColumn) {\n return;\n }\n var displayName = _this.columnModel.getDisplayNameForColumn(column, 'columnToolPanel');\n parentList.push(new ColumnModelItem(displayName, column, dept));\n };\n this.destroyColumnTree();\n recursivelyBuild(columnTree, 0, this.allColsTree);\n };\n PrimaryColsListPanel.prototype.onColumnExpanded = function () {\n this.flattenAndFilterModel();\n };\n PrimaryColsListPanel.prototype.flattenAndFilterModel = function () {\n var _this = this;\n this.displayedColsList = [];\n var recursiveFunc = function (item) {\n if (!item.isPassesFilter()) {\n return;\n }\n _this.displayedColsList.push(item);\n if (item.isGroup() && item.isExpanded()) {\n item.getChildren().forEach(recursiveFunc);\n }\n };\n this.allColsTree.forEach(recursiveFunc);\n this.virtualList.setModel(new UIColumnModel(this.displayedColsList));\n var focusedRow = this.virtualList.getLastFocusedRow();\n this.virtualList.refresh();\n if (focusedRow != null) {\n this.focusRowIfAlive(focusedRow);\n }\n this.notifyListeners();\n };\n PrimaryColsListPanel.prototype.focusRowIfAlive = function (rowIndex) {\n var _this = this;\n window.setTimeout(function () {\n if (_this.isAlive()) {\n _this.virtualList.focusRow(rowIndex);\n }\n }, 0);\n };\n PrimaryColsListPanel.prototype.forEachItem = function (callback) {\n var recursiveFunc = function (items) {\n items.forEach(function (item) {\n callback(item);\n if (item.isGroup()) {\n recursiveFunc(item.getChildren());\n }\n });\n };\n recursiveFunc(this.allColsTree);\n };\n PrimaryColsListPanel.prototype.doSetExpandedAll = function (value) {\n this.forEachItem(function (item) {\n if (item.isGroup()) {\n item.setExpanded(value);\n }\n });\n };\n PrimaryColsListPanel.prototype.setGroupsExpanded = function (expand, groupIds) {\n if (!groupIds) {\n this.doSetExpandedAll(expand);\n return;\n }\n var expandedGroupIds = [];\n this.forEachItem(function (item) {\n if (!item.isGroup()) {\n return;\n }\n var groupId = item.getColumnGroup().getId();\n if (groupIds.indexOf(groupId) >= 0) {\n item.setExpanded(expand);\n expandedGroupIds.push(groupId);\n }\n });\n var unrecognisedGroupIds = groupIds.filter(function (groupId) {\n return !_.includes(expandedGroupIds, groupId);\n });\n if (unrecognisedGroupIds.length > 0) {\n console.warn('AG Grid: unable to find group(s) for supplied groupIds:', unrecognisedGroupIds);\n }\n };\n PrimaryColsListPanel.prototype.getExpandState = function () {\n var expandedCount = 0;\n var notExpandedCount = 0;\n this.forEachItem(function (item) {\n if (!item.isGroup()) {\n return;\n }\n if (item.isExpanded()) {\n expandedCount++;\n } else {\n notExpandedCount++;\n }\n });\n if (expandedCount > 0 && notExpandedCount > 0) {\n return ExpandState.INDETERMINATE;\n }\n if (notExpandedCount > 0) {\n return ExpandState.COLLAPSED;\n }\n return ExpandState.EXPANDED;\n };\n PrimaryColsListPanel.prototype.doSetSelectedAll = function (selectAllChecked) {\n this.modelItemUtils.selectAllChildren(this.allColsTree, selectAllChecked, this.eventType);\n };\n PrimaryColsListPanel.prototype.getSelectionState = function () {\n var checkedCount = 0;\n var uncheckedCount = 0;\n var pivotMode = this.columnModel.isPivotMode();\n this.forEachItem(function (item) {\n if (item.isGroup()) {\n return;\n }\n if (!item.isPassesFilter()) {\n return;\n }\n var column = item.getColumn();\n var colDef = column.getColDef();\n var checked;\n if (pivotMode) {\n var noPivotModeOptionsAllowed = !column.isAllowPivot() && !column.isAllowRowGroup() && !column.isAllowValue();\n if (noPivotModeOptionsAllowed) {\n return;\n }\n checked = column.isValueActive() || column.isPivotActive() || column.isRowGroupActive();\n } else {\n if (colDef.lockVisible) {\n return;\n }\n checked = column.isVisible();\n }\n checked ? checkedCount++ : uncheckedCount++;\n });\n if (checkedCount > 0 && uncheckedCount > 0) {\n return undefined;\n }\n return !(checkedCount === 0 || uncheckedCount > 0);\n };\n PrimaryColsListPanel.prototype.setFilterText = function (filterText) {\n this.filterText = _.exists(filterText) ? filterText.toLowerCase() : null;\n this.markFilteredColumns();\n this.flattenAndFilterModel();\n };\n PrimaryColsListPanel.prototype.markFilteredColumns = function () {\n var _this = this;\n var passesFilter = function (item) {\n if (!_.exists(_this.filterText)) {\n return true;\n }\n var displayName = item.getDisplayName();\n return displayName == null || displayName.toLowerCase().indexOf(_this.filterText) !== -1;\n };\n var recursivelyCheckFilter = function (item, parentPasses) {\n var atLeastOneChildPassed = false;\n if (item.isGroup()) {\n var groupPasses_1 = passesFilter(item);\n item.getChildren().forEach(function (child) {\n var childPasses = recursivelyCheckFilter(child, groupPasses_1 || parentPasses);\n if (childPasses) {\n atLeastOneChildPassed = childPasses;\n }\n });\n }\n var filterPasses = parentPasses || atLeastOneChildPassed ? true : passesFilter(item);\n item.setPassesFilter(filterPasses);\n return filterPasses;\n };\n this.allColsTree.forEach(function (item) {\n return recursivelyCheckFilter(item, false);\n });\n };\n PrimaryColsListPanel.prototype.notifyListeners = function () {\n this.fireGroupExpandedEvent();\n this.fireSelectionChangedEvent();\n };\n PrimaryColsListPanel.prototype.fireGroupExpandedEvent = function () {\n var expandState = this.getExpandState();\n this.dispatchEvent({\n type: 'groupExpanded',\n state: expandState\n });\n };\n PrimaryColsListPanel.prototype.fireSelectionChangedEvent = function () {\n var selectionState = this.getSelectionState();\n this.dispatchEvent({\n type: 'selectionChanged',\n state: selectionState\n });\n };\n PrimaryColsListPanel.TEMPLATE = \"
\";\n __decorate$2c([Autowired('columnModel')], PrimaryColsListPanel.prototype, \"columnModel\", void 0);\n __decorate$2c([Autowired('toolPanelColDefService')], PrimaryColsListPanel.prototype, \"colDefService\", void 0);\n __decorate$2c([Autowired('modelItemUtils')], PrimaryColsListPanel.prototype, \"modelItemUtils\", void 0);\n __decorate$2c([PreDestroy], PrimaryColsListPanel.prototype, \"destroyColumnTree\", null);\n return PrimaryColsListPanel;\n}(Component);\nvar __extends$3j = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$2b = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar PivotModePanel = /** @class */function (_super) {\n __extends$3j(PivotModePanel, _super);\n function PivotModePanel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PivotModePanel.prototype.createTemplate = function () {\n return /* html */\"
\\n \\n
\";\n };\n PivotModePanel.prototype.init = function () {\n this.setTemplate(this.createTemplate());\n this.cbPivotMode.setValue(this.columnModel.isPivotMode());\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n this.cbPivotMode.setLabel(localeTextFunc('pivotMode', 'Pivot Mode'));\n this.addManagedListener(this.cbPivotMode, AgCheckbox.EVENT_CHANGED, this.onBtPivotMode.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onPivotModeChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.onPivotModeChanged.bind(this));\n };\n PivotModePanel.prototype.onBtPivotMode = function () {\n var newValue = !!this.cbPivotMode.getValue();\n if (newValue !== this.columnModel.isPivotMode()) {\n this.columnModel.setPivotMode(newValue, \"toolPanelUi\");\n var api = this.gridOptionsWrapper.getApi();\n if (api) {\n api.refreshHeader();\n }\n }\n };\n PivotModePanel.prototype.onPivotModeChanged = function () {\n var pivotModeActive = this.columnModel.isPivotMode();\n this.cbPivotMode.setValue(pivotModeActive);\n };\n __decorate$2b([Autowired('columnModel')], PivotModePanel.prototype, \"columnModel\", void 0);\n __decorate$2b([RefSelector('cbPivotMode')], PivotModePanel.prototype, \"cbPivotMode\", void 0);\n __decorate$2b([PreConstruct], PivotModePanel.prototype, \"init\", null);\n return PivotModePanel;\n}(Component);\nvar __extends$3i = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$2a = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar AggregationStage = /** @class */function (_super) {\n __extends$3i(AggregationStage, _super);\n function AggregationStage() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // it's possible to recompute the aggregate without doing the other parts\n // + gridApi.recomputeAggregates()\n AggregationStage.prototype.execute = function (params) {\n // if changed path is active, it means we came from a) change detection or b) transaction update.\n // for both of these, if no value columns are present, it means there is nothing to aggregate now\n // and there is no cleanup to be done (as value columns don't change between transactions or change\n // detections). if no value columns and no changed path, means we have to go through all nodes in\n // case we need to clean up agg data from before.\n var noValueColumns = _.missingOrEmpty(this.columnModel.getValueColumns());\n var noUserAgg = !this.gridOptionsWrapper.getGroupRowAggFunc();\n var changedPathActive = params.changedPath && params.changedPath.isActive();\n if (noValueColumns && noUserAgg && changedPathActive) {\n return;\n }\n var aggDetails = this.createAggDetails(params);\n this.recursivelyCreateAggData(aggDetails);\n };\n AggregationStage.prototype.createAggDetails = function (params) {\n var pivotActive = this.columnModel.isPivotActive();\n var measureColumns = this.columnModel.getValueColumns();\n var pivotColumns = pivotActive ? this.columnModel.getPivotColumns() : [];\n var aggDetails = {\n changedPath: params.changedPath,\n valueColumns: measureColumns,\n pivotColumns: pivotColumns\n };\n return aggDetails;\n };\n AggregationStage.prototype.recursivelyCreateAggData = function (aggDetails) {\n var _this = this;\n // update prop, in case changed since last time\n this.filteredOnly = !this.gridOptionsWrapper.isSuppressAggFilteredOnly();\n var callback = function (rowNode) {\n var hasNoChildren = !rowNode.hasChildren();\n if (hasNoChildren) {\n // this check is needed for TreeData, in case the node is no longer a child,\n // but it was a child previously.\n if (rowNode.aggData) {\n rowNode.setAggData(null);\n }\n // never agg data for leaf nodes\n return;\n }\n //Optionally prevent the aggregation at the root Node\n //https://ag-grid.atlassian.net/browse/AG-388\n var isRootNode = rowNode.level === -1;\n if (isRootNode) {\n var notPivoting = !_this.columnModel.isPivotMode();\n var suppressAggAtRootLevel = _this.gridOptionsWrapper.isSuppressAggAtRootLevel();\n if (suppressAggAtRootLevel && notPivoting) {\n return;\n }\n }\n _this.aggregateRowNode(rowNode, aggDetails);\n };\n aggDetails.changedPath.forEachChangedNodeDepthFirst(callback, true);\n };\n AggregationStage.prototype.aggregateRowNode = function (rowNode, aggDetails) {\n var measureColumnsMissing = aggDetails.valueColumns.length === 0;\n var pivotColumnsMissing = aggDetails.pivotColumns.length === 0;\n var userFunc = this.gridOptionsWrapper.getGroupRowAggFunc();\n var aggResult;\n if (userFunc) {\n var params = {\n nodes: rowNode.childrenAfterFilter\n };\n aggResult = userFunc(params);\n } else if (measureColumnsMissing) {\n aggResult = null;\n } else if (pivotColumnsMissing) {\n aggResult = this.aggregateRowNodeUsingValuesOnly(rowNode, aggDetails);\n } else {\n aggResult = this.aggregateRowNodeUsingValuesAndPivot(rowNode);\n }\n rowNode.setAggData(aggResult);\n // if we are grouping, then it's possible there is a sibling footer\n // to the group, so update the data here also if there is one\n if (rowNode.sibling) {\n rowNode.sibling.setAggData(aggResult);\n }\n };\n AggregationStage.prototype.aggregateRowNodeUsingValuesAndPivot = function (rowNode) {\n var _this = this;\n var result = {};\n var pivotColumnDefs = this.pivotStage.getPivotColumnDefs();\n // Step 1: process value columns\n pivotColumnDefs.filter(function (v) {\n return !_.exists(v.pivotTotalColumnIds);\n }) // only process pivot value columns\n .forEach(function (valueColDef) {\n var keys = valueColDef.pivotKeys || [];\n var values;\n var valueColumn = valueColDef.pivotValueColumn;\n var colId = valueColDef.colId;\n if (rowNode.leafGroup) {\n // lowest level group, get the values from the mapped set\n values = _this.getValuesFromMappedSet(rowNode.childrenMapped, keys, valueColumn);\n } else {\n // value columns and pivot columns, non-leaf group\n values = _this.getValuesPivotNonLeaf(rowNode, colId);\n }\n result[colId] = _this.aggregateValues(values, valueColumn.getAggFunc(), valueColumn, rowNode);\n });\n // Step 2: process total columns\n pivotColumnDefs.filter(function (v) {\n return _.exists(v.pivotTotalColumnIds);\n }) // only process pivot total columns\n .forEach(function (totalColDef) {\n var aggResults = [];\n var pivotValueColumn = totalColDef.pivotValueColumn,\n pivotTotalColumnIds = totalColDef.pivotTotalColumnIds,\n colId = totalColDef.colId;\n //retrieve results for colIds associated with this pivot total column\n if (!pivotTotalColumnIds || !pivotTotalColumnIds.length) {\n return;\n }\n pivotTotalColumnIds.forEach(function (currentColId) {\n aggResults.push(result[currentColId]);\n });\n result[colId] = _this.aggregateValues(aggResults, pivotValueColumn.getAggFunc(), pivotValueColumn, rowNode);\n });\n return result;\n };\n AggregationStage.prototype.aggregateRowNodeUsingValuesOnly = function (rowNode, aggDetails) {\n var _this = this;\n var result = {};\n var changedValueColumns = aggDetails.changedPath.isActive() ? aggDetails.changedPath.getValueColumnsForNode(rowNode, aggDetails.valueColumns) : aggDetails.valueColumns;\n var notChangedValueColumns = aggDetails.changedPath.isActive() ? aggDetails.changedPath.getNotValueColumnsForNode(rowNode, aggDetails.valueColumns) : null;\n var values2d = this.getValuesNormal(rowNode, changedValueColumns);\n var oldValues = rowNode.aggData;\n changedValueColumns.forEach(function (valueColumn, index) {\n result[valueColumn.getId()] = _this.aggregateValues(values2d[index], valueColumn.getAggFunc(), valueColumn, rowNode);\n });\n if (notChangedValueColumns && oldValues) {\n notChangedValueColumns.forEach(function (valueColumn) {\n result[valueColumn.getId()] = oldValues[valueColumn.getId()];\n });\n }\n return result;\n };\n AggregationStage.prototype.getValuesPivotNonLeaf = function (rowNode, colId) {\n var values = [];\n rowNode.childrenAfterFilter.forEach(function (node) {\n var value = node.aggData[colId];\n values.push(value);\n });\n return values;\n };\n AggregationStage.prototype.getValuesFromMappedSet = function (mappedSet, keys, valueColumn) {\n var _this = this;\n var mapPointer = mappedSet;\n keys.forEach(function (key) {\n return mapPointer = mapPointer ? mapPointer[key] : null;\n });\n if (!mapPointer) {\n return [];\n }\n var values = [];\n mapPointer.forEach(function (rowNode) {\n var value = _this.valueService.getValue(valueColumn, rowNode);\n values.push(value);\n });\n return values;\n };\n AggregationStage.prototype.getValuesNormal = function (rowNode, valueColumns) {\n // create 2d array, of all values for all valueColumns\n var values = [];\n valueColumns.forEach(function () {\n return values.push([]);\n });\n var valueColumnCount = valueColumns.length;\n var nodeList = this.filteredOnly ? rowNode.childrenAfterFilter : rowNode.childrenAfterGroup;\n var rowCount = nodeList.length;\n for (var i = 0; i < rowCount; i++) {\n var childNode = nodeList[i];\n for (var j = 0; j < valueColumnCount; j++) {\n var valueColumn = valueColumns[j];\n // if the row is a group, then it will only have an agg result value,\n // which means valueGetter is never used.\n var value = this.valueService.getValue(valueColumn, childNode);\n values[j].push(value);\n }\n }\n return values;\n };\n AggregationStage.prototype.aggregateValues = function (values, aggFuncOrString, column, rowNode) {\n var aggFunc = typeof aggFuncOrString === 'string' ? this.aggFuncService.getAggFunc(aggFuncOrString) : aggFuncOrString;\n if (typeof aggFunc !== 'function') {\n console.error(\"AG Grid: unrecognised aggregation function \" + aggFuncOrString);\n return null;\n }\n var aggFuncAny = aggFunc;\n var params = {\n values: values,\n column: column,\n colDef: column ? column.getColDef() : undefined,\n rowNode: rowNode,\n data: rowNode ? rowNode.data : undefined,\n api: this.gridApi,\n columnApi: this.columnApi,\n context: this.gridOptionsWrapper.getContext()\n }; // the \"as any\" is needed to allow the deprecation warning messages\n return aggFuncAny(params);\n };\n __decorate$2a([Autowired('columnModel')], AggregationStage.prototype, \"columnModel\", void 0);\n __decorate$2a([Autowired('valueService')], AggregationStage.prototype, \"valueService\", void 0);\n __decorate$2a([Autowired('pivotStage')], AggregationStage.prototype, \"pivotStage\", void 0);\n __decorate$2a([Autowired('aggFuncService')], AggregationStage.prototype, \"aggFuncService\", void 0);\n __decorate$2a([Autowired('gridApi')], AggregationStage.prototype, \"gridApi\", void 0);\n __decorate$2a([Autowired('columnApi')], AggregationStage.prototype, \"columnApi\", void 0);\n AggregationStage = __decorate$2a([Bean('aggregationStage')], AggregationStage);\n return AggregationStage;\n}(BeanStub);\nvar BatchRemover = /** @class */function () {\n function BatchRemover() {\n this.allSets = {};\n this.allParents = [];\n }\n BatchRemover.prototype.removeFromChildrenAfterGroup = function (parent, child) {\n var set = this.getSet(parent);\n set.removeFromChildrenAfterGroup[child.id] = true;\n };\n BatchRemover.prototype.removeFromAllLeafChildren = function (parent, child) {\n var set = this.getSet(parent);\n set.removeFromAllLeafChildren[child.id] = true;\n };\n BatchRemover.prototype.getSet = function (parent) {\n if (!this.allSets[parent.id]) {\n this.allSets[parent.id] = {\n removeFromAllLeafChildren: {},\n removeFromChildrenAfterGroup: {}\n };\n this.allParents.push(parent);\n }\n return this.allSets[parent.id];\n };\n BatchRemover.prototype.getAllParents = function () {\n return this.allParents;\n };\n BatchRemover.prototype.flush = function () {\n var _this = this;\n this.allParents.forEach(function (parent) {\n var nodeDetails = _this.allSets[parent.id];\n parent.childrenAfterGroup = parent.childrenAfterGroup.filter(function (child) {\n return !nodeDetails.removeFromChildrenAfterGroup[child.id];\n });\n parent.allLeafChildren = parent.allLeafChildren.filter(function (child) {\n return !nodeDetails.removeFromAllLeafChildren[child.id];\n });\n parent.updateHasChildren();\n if (parent.sibling) {\n parent.sibling.childrenAfterGroup = parent.childrenAfterGroup;\n parent.sibling.allLeafChildren = parent.allLeafChildren;\n }\n });\n this.allSets = {};\n this.allParents.length = 0;\n };\n return BatchRemover;\n}();\nvar __extends$3h = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$29 = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __read$W = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread$x = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$W(arguments[i]));\n return ar;\n};\nvar GroupStage = /** @class */function (_super) {\n __extends$3h(GroupStage, _super);\n function GroupStage() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // we use a sequence variable so that each time we do a grouping, we don't\n // reuse the ids - otherwise the rowRenderer will confuse rowNodes between redraws\n // when it tries to animate between rows.\n _this.groupIdSequence = new NumberSequence();\n return _this;\n }\n GroupStage.prototype.postConstruct = function () {\n this.usingTreeData = this.gridOptionsWrapper.isTreeData();\n if (this.usingTreeData) {\n this.getDataPath = this.gridOptionsWrapper.getDataPathFunc();\n }\n };\n GroupStage.prototype.execute = function (params) {\n var details = this.createGroupingDetails(params);\n if (details.transactions) {\n this.handleTransaction(details);\n } else {\n var afterColsChanged = params.afterColumnsChanged === true;\n this.shotgunResetEverything(details, afterColsChanged);\n }\n this.positionLeafsAboveGroups(params.changedPath);\n this.orderGroups(details.rootNode);\n this.selectableService.updateSelectableAfterGrouping(details.rootNode);\n };\n GroupStage.prototype.positionLeafsAboveGroups = function (changedPath) {\n // we don't do group sorting for tree data\n if (this.usingTreeData) {\n return;\n }\n changedPath.forEachChangedNodeDepthFirst(function (group) {\n if (group.childrenAfterGroup) {\n var leafNodes_1 = [];\n var groupNodes_1 = [];\n group.childrenAfterGroup.forEach(function (row) {\n var _a;\n if (!((_a = row.childrenAfterGroup) === null || _a === void 0 ? void 0 : _a.length)) {\n leafNodes_1.push(row);\n } else {\n groupNodes_1.push(row);\n }\n });\n group.childrenAfterGroup = __spread$x(leafNodes_1, groupNodes_1);\n }\n }, false);\n };\n GroupStage.prototype.createGroupingDetails = function (params) {\n var rowNode = params.rowNode,\n changedPath = params.changedPath,\n rowNodeTransactions = params.rowNodeTransactions,\n rowNodeOrder = params.rowNodeOrder;\n var groupedCols = this.usingTreeData ? null : this.columnModel.getRowGroupColumns();\n var details = {\n // someone complained that the parent attribute was causing some change detection\n // to break is some angular add-on - which i never used. taking the parent out breaks\n // a cyclic dependency, hence this flag got introduced.\n includeParents: !this.gridOptionsWrapper.isSuppressParentsInRowNodes(),\n expandByDefault: this.gridOptionsWrapper.getGroupDefaultExpanded(),\n groupedCols: groupedCols,\n rootNode: rowNode,\n pivotMode: this.columnModel.isPivotMode(),\n groupedColCount: this.usingTreeData || !groupedCols ? 0 : groupedCols.length,\n rowNodeOrder: rowNodeOrder,\n transactions: rowNodeTransactions,\n // if no transaction, then it's shotgun, changed path would be 'not active' at this point anyway\n changedPath: changedPath\n };\n return details;\n };\n GroupStage.prototype.handleTransaction = function (details) {\n var _this = this;\n details.transactions.forEach(function (tran) {\n // we don't allow batch remover for tree data as tree data uses Filler Nodes,\n // and creating/deleting filler nodes needs to be done alongside the node deleting\n // and moving. if we want to Batch Remover working with tree data then would need\n // to consider how Filler Nodes would be impacted (it's possible that it can be easily\n // modified to work, however for now I don't have the brain energy to work it all out).\n var batchRemover = !_this.usingTreeData ? new BatchRemover() : undefined;\n // the order here of [add, remove, update] needs to be the same as in ClientSideNodeManager,\n // as the order is important when a record with the same id is added and removed in the same\n // transaction.\n if (_.existsAndNotEmpty(tran.remove)) {\n _this.removeNodes(tran.remove, details, batchRemover);\n }\n if (_.existsAndNotEmpty(tran.update)) {\n _this.moveNodesInWrongPath(tran.update, details, batchRemover);\n }\n if (_.existsAndNotEmpty(tran.add)) {\n _this.insertNodes(tran.add, details, false);\n }\n // must flush here, and not allow another transaction to be applied,\n // as each transaction must finish leaving the data in a consistent state.\n if (batchRemover) {\n var parentsWithChildrenRemoved = batchRemover.getAllParents().slice();\n batchRemover.flush();\n _this.removeEmptyGroups(parentsWithChildrenRemoved, details);\n }\n });\n if (details.rowNodeOrder) {\n this.sortChildren(details);\n }\n };\n // this is used when doing delta updates, eg Redux, keeps nodes in right order\n GroupStage.prototype.sortChildren = function (details) {\n details.changedPath.forEachChangedNodeDepthFirst(function (node) {\n if (!node.childrenAfterGroup) {\n return;\n }\n var didSort = _.sortRowNodesByOrder(node.childrenAfterGroup, details.rowNodeOrder);\n if (didSort) {\n details.changedPath.addParentNode(node);\n }\n }, false, true);\n };\n GroupStage.prototype.orderGroups = function (rootNode) {\n // we don't do group sorting for tree data\n if (this.usingTreeData) {\n return;\n }\n var comparator = this.gridOptionsWrapper.getInitialGroupOrderComparator();\n if (_.exists(comparator)) {\n recursiveSort(rootNode);\n }\n function recursiveSort(rowNode) {\n var doSort = _.exists(rowNode.childrenAfterGroup) &&\n // we only want to sort groups, so we do not sort leafs (a leaf group has leafs as children)\n !rowNode.leafGroup;\n if (doSort) {\n rowNode.childrenAfterGroup.sort(function (nodeA, nodeB) {\n return comparator({\n nodeA: nodeA,\n nodeB: nodeB\n });\n });\n rowNode.childrenAfterGroup.forEach(function (childNode) {\n return recursiveSort(childNode);\n });\n }\n }\n };\n GroupStage.prototype.getExistingPathForNode = function (node, details) {\n var res = [];\n // when doing tree data, the node is part of the path,\n // but when doing grid grouping, the node is not part of the path so we start with the parent.\n var pointer = this.usingTreeData ? node : node.parent;\n while (pointer && pointer !== details.rootNode) {\n res.push({\n key: pointer.key,\n rowGroupColumn: pointer.rowGroupColumn,\n field: pointer.field\n });\n pointer = pointer.parent;\n }\n res.reverse();\n return res;\n };\n GroupStage.prototype.moveNodesInWrongPath = function (childNodes, details, batchRemover) {\n var _this = this;\n childNodes.forEach(function (childNode) {\n // we add node, even if parent has not changed, as the data could have\n // changed, hence aggregations will be wrong\n if (details.changedPath.isActive()) {\n details.changedPath.addParentNode(childNode.parent);\n }\n var infoToKeyMapper = function (item) {\n return item.key;\n };\n var oldPath = _this.getExistingPathForNode(childNode, details).map(infoToKeyMapper);\n var newPath = _this.getGroupInfo(childNode, details).map(infoToKeyMapper);\n var nodeInCorrectPath = _.areEqual(oldPath, newPath);\n if (!nodeInCorrectPath) {\n _this.moveNode(childNode, details, batchRemover);\n }\n });\n };\n GroupStage.prototype.moveNode = function (childNode, details, batchRemover) {\n this.removeNodesInStages([childNode], details, batchRemover);\n this.insertOneNode(childNode, details, true);\n // hack - if we didn't do this, then renaming a tree item (ie changing rowNode.key) wouldn't get\n // refreshed into the gui.\n // this is needed to kick off the event that rowComp listens to for refresh. this in turn\n // then will get each cell in the row to refresh - which is what we need as we don't know which\n // columns will be displaying the rowNode.key info.\n childNode.setData(childNode.data);\n // we add both old and new parents to changed path, as both will need to be refreshed.\n // we already added the old parent (in calling method), so just add the new parent here\n if (details.changedPath.isActive()) {\n var newParent = childNode.parent;\n details.changedPath.addParentNode(newParent);\n }\n };\n GroupStage.prototype.removeNodes = function (leafRowNodes, details, batchRemover) {\n this.removeNodesInStages(leafRowNodes, details, batchRemover);\n if (details.changedPath.isActive()) {\n leafRowNodes.forEach(function (rowNode) {\n return details.changedPath.addParentNode(rowNode.parent);\n });\n }\n };\n GroupStage.prototype.removeNodesInStages = function (leafRowNodes, details, batchRemover) {\n this.removeNodesFromParents(leafRowNodes, details, batchRemover);\n if (this.usingTreeData) {\n this.postRemoveCreateFillerNodes(leafRowNodes, details);\n // When not TreeData, then removeEmptyGroups is called just before the BatchRemover is flushed.\n // However for TreeData, there is no BatchRemover, so we have to call removeEmptyGroups here.\n var nodeParents = leafRowNodes.map(function (n) {\n return n.parent;\n });\n this.removeEmptyGroups(nodeParents, details);\n }\n };\n GroupStage.prototype.forEachParentGroup = function (details, group, callback) {\n var pointer = group;\n while (pointer && pointer !== details.rootNode) {\n callback(pointer);\n pointer = pointer.parent;\n }\n };\n GroupStage.prototype.removeNodesFromParents = function (nodesToRemove, details, provided) {\n var _this = this;\n // this method can be called with BatchRemover as optional. if it is missed, we created a local version\n // and flush it at the end. if one is provided, we add to the provided one and it gets flushed elsewhere.\n var batchRemoverIsLocal = provided == null;\n var batchRemoverToUse = provided ? provided : new BatchRemover();\n nodesToRemove.forEach(function (nodeToRemove) {\n _this.removeFromParent(nodeToRemove, batchRemoverToUse);\n // remove from allLeafChildren. we clear down all parents EXCEPT the Root Node, as\n // the ClientSideNodeManager is responsible for the Root Node.\n _this.forEachParentGroup(details, nodeToRemove.parent, function (parentNode) {\n batchRemoverToUse.removeFromAllLeafChildren(parentNode, nodeToRemove);\n });\n });\n if (batchRemoverIsLocal) {\n batchRemoverToUse.flush();\n }\n };\n GroupStage.prototype.postRemoveCreateFillerNodes = function (nodesToRemove, details) {\n var _this = this;\n nodesToRemove.forEach(function (nodeToRemove) {\n // if not group, and children are present, need to move children to a group.\n // otherwise if no children, we can just remove without replacing.\n var replaceWithGroup = nodeToRemove.hasChildren();\n if (replaceWithGroup) {\n var oldPath = _this.getExistingPathForNode(nodeToRemove, details);\n // because we just removed the userGroup, this will always return new support group\n var newGroupNode_1 = _this.findParentForNode(nodeToRemove, oldPath, details);\n // these properties are the ones that will be incorrect in the newly created group,\n // so copy them from the old childNode\n newGroupNode_1.expanded = nodeToRemove.expanded;\n newGroupNode_1.allLeafChildren = nodeToRemove.allLeafChildren;\n newGroupNode_1.childrenAfterGroup = nodeToRemove.childrenAfterGroup;\n newGroupNode_1.childrenMapped = nodeToRemove.childrenMapped;\n newGroupNode_1.updateHasChildren();\n newGroupNode_1.childrenAfterGroup.forEach(function (rowNode) {\n return rowNode.parent = newGroupNode_1;\n });\n }\n });\n };\n GroupStage.prototype.removeEmptyGroups = function (possibleEmptyGroups, details) {\n var _this = this;\n // we do this multiple times, as when we remove groups, that means the parent of just removed\n // group can then be empty. to get around this, if we remove, then we check everything again for\n // newly emptied groups. the max number of times this will execute is the depth of the group tree.\n var checkAgain = true;\n var groupShouldBeRemoved = function (rowNode) {\n // because of the while loop below, it's possible we already moved the node,\n // so double check before trying to remove again.\n var mapKey = _this.getChildrenMappedKey(rowNode.key, rowNode.rowGroupColumn);\n var parentRowNode = rowNode.parent;\n var groupAlreadyRemoved = parentRowNode && parentRowNode.childrenMapped ? !parentRowNode.childrenMapped[mapKey] : true;\n if (groupAlreadyRemoved) {\n // if not linked, then group was already removed\n return false;\n }\n // if still not removed, then we remove if this group is empty\n return !!rowNode.isEmptyRowGroupNode();\n };\n var _loop_1 = function () {\n checkAgain = false;\n var batchRemover = new BatchRemover();\n possibleEmptyGroups.forEach(function (possibleEmptyGroup) {\n // remove empty groups\n _this.forEachParentGroup(details, possibleEmptyGroup, function (rowNode) {\n if (groupShouldBeRemoved(rowNode)) {\n checkAgain = true;\n _this.removeFromParent(rowNode, batchRemover);\n // we remove selection on filler nodes here, as the selection would not be removed\n // from the RowNodeManager, as filler nodes don't exist on the RowNodeManager\n rowNode.setSelected(false);\n }\n });\n });\n batchRemover.flush();\n };\n while (checkAgain) {\n _loop_1();\n }\n };\n // removes the node from the parent by:\n // a) removing from childrenAfterGroup (using batchRemover if present, otherwise immediately)\n // b) removing from childrenMapped (immediately)\n // c) setRowTop(null) - as the rowRenderer uses this to know the RowNode is no longer needed\n // d) setRowIndex(null) - as the rowNode will no longer be displayed.\n GroupStage.prototype.removeFromParent = function (child, batchRemover) {\n if (child.parent) {\n if (batchRemover) {\n batchRemover.removeFromChildrenAfterGroup(child.parent, child);\n } else {\n _.removeFromArray(child.parent.childrenAfterGroup, child);\n child.parent.updateHasChildren();\n }\n }\n var mapKey = this.getChildrenMappedKey(child.key, child.rowGroupColumn);\n if (child.parent && child.parent.childrenMapped) {\n child.parent.childrenMapped[mapKey] = undefined;\n }\n // this is important for transition, see rowComp removeFirstPassFuncs. when doing animation and\n // remove, if rowTop is still present, the rowComp thinks it's just moved position.\n child.setRowTop(null);\n child.setRowIndex(null);\n };\n GroupStage.prototype.addToParent = function (child, parent) {\n var mapKey = this.getChildrenMappedKey(child.key, child.rowGroupColumn);\n if (parent) {\n var children = parent.childrenMapped != null;\n if (children) {\n parent.childrenMapped[mapKey] = child;\n }\n parent.childrenAfterGroup.push(child);\n parent.updateHasChildren();\n }\n };\n GroupStage.prototype.areGroupColsEqual = function (d1, d2) {\n if (d1 == null || d2 == null || d1.pivotMode !== d2.pivotMode) {\n return false;\n }\n return _.areEqual(d1.groupedCols, d2.groupedCols);\n };\n GroupStage.prototype.checkAllGroupDataAfterColsChanged = function (details) {\n var _this = this;\n var recurse = function (rowNodes) {\n if (!rowNodes) {\n return;\n }\n rowNodes.forEach(function (rowNode) {\n var isLeafNode = !_this.usingTreeData && !rowNode.group;\n if (isLeafNode) {\n return;\n }\n var groupInfo = {\n field: rowNode.field,\n key: rowNode.key,\n rowGroupColumn: rowNode.rowGroupColumn\n };\n _this.setGroupData(rowNode, groupInfo);\n recurse(rowNode.childrenAfterGroup);\n });\n };\n recurse(details.rootNode.childrenAfterGroup);\n };\n GroupStage.prototype.shotgunResetEverything = function (details, afterColumnsChanged) {\n if (this.noChangeInGroupingColumns(details, afterColumnsChanged)) {\n return;\n }\n // groups are about to get disposed, so need to deselect any that are selected\n this.selectionService.removeGroupsFromSelection();\n var rootNode = details.rootNode,\n groupedCols = details.groupedCols;\n // because we are not creating the root node each time, we have the logic\n // here to change leafGroup once.\n // we set .leafGroup to false for tree data, as .leafGroup is only used when pivoting, and pivoting\n // isn't allowed with treeData, so the grid never actually use .leafGroup when doing treeData.\n rootNode.leafGroup = this.usingTreeData ? false : groupedCols.length === 0;\n // we are doing everything from scratch, so reset childrenAfterGroup and childrenMapped from the rootNode\n rootNode.childrenAfterGroup = [];\n rootNode.childrenMapped = {};\n rootNode.updateHasChildren();\n var sibling = rootNode.sibling;\n if (sibling) {\n sibling.childrenAfterGroup = rootNode.childrenAfterGroup;\n sibling.childrenMapped = rootNode.childrenMapped;\n }\n this.insertNodes(rootNode.allLeafChildren, details, false);\n };\n GroupStage.prototype.noChangeInGroupingColumns = function (details, afterColumnsChanged) {\n var noFurtherProcessingNeeded = false;\n var groupDisplayColumns = this.columnModel.getGroupDisplayColumns();\n var newGroupDisplayColIds = groupDisplayColumns ? groupDisplayColumns.map(function (c) {\n return c.getId();\n }).join('-') : '';\n if (afterColumnsChanged) {\n // we only need to redo grouping if doing normal grouping (ie not tree data)\n // and the group cols have changed.\n noFurtherProcessingNeeded = this.usingTreeData || this.areGroupColsEqual(details, this.oldGroupingDetails);\n // if the group display cols have changed, then we need to update rowNode.groupData\n // (regardless of tree data or row grouping)\n if (this.oldGroupDisplayColIds !== newGroupDisplayColIds) {\n this.checkAllGroupDataAfterColsChanged(details);\n }\n }\n this.oldGroupingDetails = details;\n this.oldGroupDisplayColIds = newGroupDisplayColIds;\n return noFurtherProcessingNeeded;\n };\n GroupStage.prototype.insertNodes = function (newRowNodes, details, isMove) {\n var _this = this;\n newRowNodes.forEach(function (rowNode) {\n _this.insertOneNode(rowNode, details, isMove);\n if (details.changedPath.isActive()) {\n details.changedPath.addParentNode(rowNode.parent);\n }\n });\n };\n GroupStage.prototype.insertOneNode = function (childNode, details, isMove) {\n var path = this.getGroupInfo(childNode, details);\n var parentGroup = this.findParentForNode(childNode, path, details);\n if (!parentGroup.group) {\n console.warn(\"AG Grid: duplicate group keys for row data, keys should be unique\", [parentGroup.data, childNode.data]);\n }\n if (this.usingTreeData) {\n this.swapGroupWithUserNode(parentGroup, childNode, isMove);\n } else {\n childNode.parent = parentGroup;\n childNode.level = path.length;\n parentGroup.childrenAfterGroup.push(childNode);\n parentGroup.updateHasChildren();\n }\n };\n GroupStage.prototype.findParentForNode = function (childNode, path, details) {\n var _this = this;\n var nextNode = details.rootNode;\n path.forEach(function (groupInfo, level) {\n nextNode = _this.getOrCreateNextNode(nextNode, groupInfo, level, details);\n // node gets added to all group nodes.\n // note: we do not add to rootNode here, as the rootNode is the master list of rowNodes\n nextNode.allLeafChildren.push(childNode);\n });\n return nextNode;\n };\n GroupStage.prototype.swapGroupWithUserNode = function (fillerGroup, userGroup, isMove) {\n userGroup.parent = fillerGroup.parent;\n userGroup.key = fillerGroup.key;\n userGroup.field = fillerGroup.field;\n userGroup.groupData = fillerGroup.groupData;\n userGroup.level = fillerGroup.level;\n // AG-3441 - preserve the existing expanded status of the node if we're moving it, so that\n // you can drag a sub tree from one parent to another without changing its expansion\n if (!isMove) {\n userGroup.expanded = fillerGroup.expanded;\n }\n // we set .leafGroup to false for tree data, as .leafGroup is only used when pivoting, and pivoting\n // isn't allowed with treeData, so the grid never actually use .leafGroup when doing treeData.\n userGroup.leafGroup = fillerGroup.leafGroup;\n // always null for userGroups, as row grouping is not allowed when doing tree data\n userGroup.rowGroupIndex = fillerGroup.rowGroupIndex;\n userGroup.allLeafChildren = fillerGroup.allLeafChildren;\n userGroup.childrenAfterGroup = fillerGroup.childrenAfterGroup;\n userGroup.childrenMapped = fillerGroup.childrenMapped;\n userGroup.updateHasChildren();\n this.removeFromParent(fillerGroup);\n userGroup.childrenAfterGroup.forEach(function (rowNode) {\n return rowNode.parent = userGroup;\n });\n this.addToParent(userGroup, fillerGroup.parent);\n };\n GroupStage.prototype.getOrCreateNextNode = function (parentGroup, groupInfo, level, details) {\n var key = this.getChildrenMappedKey(groupInfo.key, groupInfo.rowGroupColumn);\n var nextNode = parentGroup.childrenMapped ? parentGroup.childrenMapped[key] : undefined;\n if (!nextNode) {\n nextNode = this.createGroup(groupInfo, parentGroup, level, details);\n // attach the new group to the parent\n this.addToParent(nextNode, parentGroup);\n }\n return nextNode;\n };\n GroupStage.prototype.createGroup = function (groupInfo, parent, level, details) {\n var groupNode = new RowNode(this.beans);\n groupNode.group = true;\n groupNode.field = groupInfo.field;\n groupNode.rowGroupColumn = groupInfo.rowGroupColumn;\n this.setGroupData(groupNode, groupInfo);\n // we put 'row-group-' before the group id, so it doesn't clash with standard row id's. we also use 't-' and 'b-'\n // for top pinned and bottom pinned rows.\n groupNode.id = RowNode.ID_PREFIX_ROW_GROUP + this.groupIdSequence.next();\n groupNode.key = groupInfo.key;\n groupNode.level = level;\n groupNode.leafGroup = this.usingTreeData ? false : level === details.groupedColCount - 1;\n groupNode.allLeafChildren = [];\n // why is this done here? we are not updating the children count as we go,\n // i suspect this is updated in the filter stage\n groupNode.setAllChildrenCount(0);\n groupNode.rowGroupIndex = this.usingTreeData ? null : level;\n groupNode.childrenAfterGroup = [];\n groupNode.childrenMapped = {};\n groupNode.updateHasChildren();\n groupNode.parent = details.includeParents ? parent : null;\n this.setExpandedInitialValue(details, groupNode);\n return groupNode;\n };\n GroupStage.prototype.setGroupData = function (groupNode, groupInfo) {\n var _this = this;\n groupNode.groupData = {};\n var groupDisplayCols = this.columnModel.getGroupDisplayColumns();\n groupDisplayCols.forEach(function (col) {\n // newGroup.rowGroupColumn=null when working off GroupInfo, and we always display the group in the group column\n // if rowGroupColumn is present, then it's grid row grouping and we only include if configuration says so\n var displayGroupForCol = _this.usingTreeData || (groupNode.rowGroupColumn ? col.isRowGroupDisplayed(groupNode.rowGroupColumn.getId()) : false);\n if (displayGroupForCol) {\n groupNode.groupData[col.getColId()] = groupInfo.key;\n }\n });\n };\n GroupStage.prototype.getChildrenMappedKey = function (key, rowGroupColumn) {\n if (rowGroupColumn) {\n // grouping by columns\n return rowGroupColumn.getId() + '-' + key;\n }\n // tree data - we don't have rowGroupColumns\n return key;\n };\n GroupStage.prototype.setExpandedInitialValue = function (details, groupNode) {\n // if pivoting the leaf group is never expanded as we do not show leaf rows\n if (details.pivotMode && groupNode.leafGroup) {\n groupNode.expanded = false;\n return;\n }\n // use callback if exists\n var userCallback = this.gridOptionsWrapper.getIsGroupOpenByDefaultFunc();\n if (userCallback) {\n var params = {\n rowNode: groupNode,\n field: groupNode.field,\n key: groupNode.key,\n level: groupNode.level,\n rowGroupColumn: groupNode.rowGroupColumn\n };\n groupNode.expanded = userCallback(params) == true;\n return;\n }\n // use expandByDefault if exists\n var expandByDefault = details.expandByDefault;\n if (details.expandByDefault === -1) {\n groupNode.expanded = true;\n return;\n }\n // otherwise\n groupNode.expanded = groupNode.level < expandByDefault;\n };\n GroupStage.prototype.getGroupInfo = function (rowNode, details) {\n if (this.usingTreeData) {\n return this.getGroupInfoFromCallback(rowNode);\n }\n return this.getGroupInfoFromGroupColumns(rowNode, details);\n };\n GroupStage.prototype.getGroupInfoFromCallback = function (rowNode) {\n var keys = this.getDataPath ? this.getDataPath(rowNode.data) : null;\n if (keys === null || keys === undefined || keys.length === 0) {\n _.doOnce(function () {\n return console.warn(\"AG Grid: getDataPath() should not return an empty path for data\", rowNode.data);\n }, 'groupStage.getGroupInfoFromCallback');\n }\n var groupInfoMapper = function (key) {\n return {\n key: key,\n field: null,\n rowGroupColumn: null\n };\n };\n return keys ? keys.map(groupInfoMapper) : [];\n };\n GroupStage.prototype.getGroupInfoFromGroupColumns = function (rowNode, details) {\n var _this = this;\n var res = [];\n details.groupedCols.forEach(function (groupCol) {\n var key = _this.valueService.getKeyForNode(groupCol, rowNode);\n var keyExists = key !== null && key !== undefined;\n // unbalanced tree and pivot mode don't work together - not because of the grid, it doesn't make\n // mathematical sense as you are building up a cube. so if pivot mode, we put in a blank key where missing.\n // this keeps the tree balanced and hence can be represented as a group.\n if (details.pivotMode && !keyExists) {\n key = ' ';\n keyExists = true;\n }\n if (keyExists) {\n var item = {\n key: key,\n field: groupCol.getColDef().field,\n rowGroupColumn: groupCol\n };\n res.push(item);\n }\n });\n return res;\n };\n __decorate$29([Autowired('columnModel')], GroupStage.prototype, \"columnModel\", void 0);\n __decorate$29([Autowired('selectableService')], GroupStage.prototype, \"selectableService\", void 0);\n __decorate$29([Autowired('valueService')], GroupStage.prototype, \"valueService\", void 0);\n __decorate$29([Autowired('beans')], GroupStage.prototype, \"beans\", void 0);\n __decorate$29([Autowired('selectionService')], GroupStage.prototype, \"selectionService\", void 0);\n __decorate$29([PostConstruct], GroupStage.prototype, \"postConstruct\", null);\n GroupStage = __decorate$29([Bean('groupStage')], GroupStage);\n return GroupStage;\n}(BeanStub);\nvar __extends$3g = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign$H = undefined && undefined.__assign || function () {\n __assign$H = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$H.apply(this, arguments);\n};\nvar __decorate$28 = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __read$V = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread$w = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$V(arguments[i]));\n return ar;\n};\nvar PivotColDefService = /** @class */function (_super) {\n __extends$3g(PivotColDefService, _super);\n function PivotColDefService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PivotColDefService_1 = PivotColDefService;\n PivotColDefService.prototype.createPivotColumnDefs = function (uniqueValues) {\n // this is passed to the columnModel, to configure the columns and groups we show\n var pivotColumns = this.columnModel.getPivotColumns();\n var valueColumns = this.columnModel.getValueColumns();\n var levelsDeep = pivotColumns.length;\n var pivotColumnGroupDefs = this.recursiveBuildGroup(0, uniqueValues, [], levelsDeep, pivotColumns);\n function extractColDefs(input, arr) {\n if (arr === void 0) {\n arr = [];\n }\n input.forEach(function (def) {\n if (def.children !== undefined) {\n extractColDefs(def.children, arr);\n } else {\n arr.push(def);\n }\n });\n return arr;\n }\n var pivotColumnDefs = extractColDefs(pivotColumnGroupDefs);\n // additional columns that contain the aggregated total for each value column per row\n this.addRowGroupTotals(pivotColumnGroupDefs, pivotColumnDefs, valueColumns);\n // additional group columns that contain child totals for each collapsed child column / group\n this.addExpandablePivotGroups(pivotColumnGroupDefs, pivotColumnDefs);\n // additional group columns that contain an aggregated total across all child columns\n this.addPivotTotalsToGroups(pivotColumnGroupDefs, pivotColumnDefs);\n // we clone, so the colDefs in pivotColumnsGroupDefs and pivotColumnDefs are not shared. this is so that\n // any changes the user makes (via processSecondaryColumnDefinitions) don't impact the internal aggregations,\n // as these use the col defs also\n var pivotColumnDefsClone = pivotColumnDefs.map(function (colDef) {\n return _.cloneObject(colDef);\n });\n return {\n pivotColumnGroupDefs: pivotColumnGroupDefs,\n pivotColumnDefs: pivotColumnDefsClone\n };\n };\n PivotColDefService.prototype.recursiveBuildGroup = function (index, uniqueValue, pivotKeys, maxDepth, primaryPivotColumns) {\n var _this = this;\n var measureColumns = this.columnModel.getValueColumns();\n if (index >= maxDepth) {\n // Base case - build the measure columns\n return this.buildMeasureCols(pivotKeys);\n }\n // sort by either user provided comparator, or our own one\n var primaryPivotColumnDefs = primaryPivotColumns[index].getColDef();\n var comparator = this.headerNameComparator.bind(this, primaryPivotColumnDefs.pivotComparator);\n // Base case for the compact layout, instead of recursing build the last layer of groups as measure columns instead\n if (measureColumns.length === 1 && this.gridOptionsWrapper.isRemovePivotHeaderRowWhenSingleValueColumn() && index === maxDepth - 1) {\n var leafCols_1 = [];\n _.iterateObject(uniqueValue, function (key) {\n var newPivotKeys = __spread$w(pivotKeys, [key]);\n leafCols_1.push(__assign$H(__assign$H({}, _this.createColDef(measureColumns[0], key, newPivotKeys)), {\n columnGroupShow: 'open'\n }));\n });\n leafCols_1.sort(comparator);\n return leafCols_1;\n }\n // Recursive case\n var groups = [];\n _.iterateObject(uniqueValue, function (key, value) {\n var newPivotKeys = __spread$w(pivotKeys, [key]);\n groups.push({\n children: _this.recursiveBuildGroup(index + 1, value, newPivotKeys, maxDepth, primaryPivotColumns),\n headerName: key,\n pivotKeys: newPivotKeys,\n columnGroupShow: 'open',\n groupId: _this.generateColumnGroupId(newPivotKeys)\n });\n });\n groups.sort(comparator);\n return groups;\n };\n PivotColDefService.prototype.buildMeasureCols = function (pivotKeys) {\n var _this = this;\n var measureColumns = this.columnModel.getValueColumns();\n if (measureColumns.length === 0) {\n // if no value columns selected, then we insert one blank column, so the user at least sees columns\n // rendered. otherwise the grid would render with no columns (just empty groups) which would give the\n // impression that the grid is broken\n return [this.createColDef(null, '-', pivotKeys)];\n }\n return measureColumns.map(function (measureCol) {\n var columnName = _this.columnModel.getDisplayNameForColumn(measureCol, 'header');\n return __assign$H(__assign$H({}, _this.createColDef(measureCol, columnName, pivotKeys)), {\n columnGroupShow: 'open'\n });\n });\n };\n PivotColDefService.prototype.addExpandablePivotGroups = function (pivotColumnGroupDefs, pivotColumnDefs) {\n var _this = this;\n if (this.gridOptionsWrapper.isSuppressExpandablePivotGroups() || this.gridOptionsWrapper.getPivotColumnGroupTotals()) {\n return;\n }\n var recursivelyAddSubTotals = function (groupDef, currentPivotColumnDefs, acc) {\n var group = groupDef;\n if (group.children) {\n var childAcc_1 = new Map();\n group.children.forEach(function (grp) {\n recursivelyAddSubTotals(grp, currentPivotColumnDefs, childAcc_1);\n });\n var firstGroup_1 = !group.children.some(function (child) {\n return child.children;\n });\n _this.columnModel.getValueColumns().forEach(function (valueColumn) {\n var columnName = _this.columnModel.getDisplayNameForColumn(valueColumn, 'header');\n var totalColDef = _this.createColDef(valueColumn, columnName, groupDef.pivotKeys);\n totalColDef.pivotTotalColumnIds = childAcc_1.get(valueColumn.getColId());\n totalColDef.columnGroupShow = 'closed';\n totalColDef.aggFunc = valueColumn.getAggFunc();\n if (!firstGroup_1) {\n // add total colDef to group and pivot colDefs array\n var children = groupDef.children;\n children.push(totalColDef);\n currentPivotColumnDefs.push(totalColDef);\n }\n });\n _this.merge(acc, childAcc_1);\n } else {\n var def = groupDef;\n // check that value column exists, i.e. aggFunc is supplied\n if (!def.pivotValueColumn) {\n return;\n }\n var pivotValueColId = def.pivotValueColumn.getColId();\n var arr = acc.has(pivotValueColId) ? acc.get(pivotValueColId) : [];\n arr.push(def.colId);\n acc.set(pivotValueColId, arr);\n }\n };\n pivotColumnGroupDefs.forEach(function (groupDef) {\n recursivelyAddSubTotals(groupDef, pivotColumnDefs, new Map());\n });\n };\n PivotColDefService.prototype.addPivotTotalsToGroups = function (pivotColumnGroupDefs, pivotColumnDefs) {\n var _this = this;\n if (!this.gridOptionsWrapper.getPivotColumnGroupTotals()) {\n return;\n }\n var insertAfter = this.gridOptionsWrapper.getPivotColumnGroupTotals() === 'after';\n var valueCols = this.columnModel.getValueColumns();\n var aggFuncs = valueCols.map(function (valueCol) {\n return valueCol.getAggFunc();\n });\n // don't add pivot totals if there is less than 1 aggFunc or they are not all the same\n if (!aggFuncs || aggFuncs.length < 1 || !this.sameAggFuncs(aggFuncs)) {\n // console.warn('AG Grid: aborting adding pivot total columns - value columns require same aggFunc');\n return;\n }\n // arbitrarily select a value column to use as a template for pivot columns\n var valueColumn = valueCols[0];\n pivotColumnGroupDefs.forEach(function (groupDef) {\n _this.recursivelyAddPivotTotal(groupDef, pivotColumnDefs, valueColumn, insertAfter);\n });\n };\n PivotColDefService.prototype.recursivelyAddPivotTotal = function (groupDef, pivotColumnDefs, valueColumn, insertAfter) {\n var _this = this;\n var group = groupDef;\n if (!group.children) {\n var def = groupDef;\n return def.colId ? [def.colId] : null;\n }\n var colIds = [];\n // need to recurse children first to obtain colIds used in the aggregation stage\n group.children.forEach(function (grp) {\n var childColIds = _this.recursivelyAddPivotTotal(grp, pivotColumnDefs, valueColumn, insertAfter);\n if (childColIds) {\n colIds = colIds.concat(childColIds);\n }\n });\n // only add total colDef if there is more than 1 child node\n if (group.children.length > 1) {\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var headerName = localeTextFunc('pivotColumnGroupTotals', 'Total');\n //create total colDef using an arbitrary value column as a template\n var totalColDef = this.createColDef(valueColumn, headerName, groupDef.pivotKeys, true);\n totalColDef.pivotTotalColumnIds = colIds;\n totalColDef.aggFunc = valueColumn.getAggFunc();\n // add total colDef to group and pivot colDefs array\n var children = groupDef.children;\n insertAfter ? children.push(totalColDef) : children.unshift(totalColDef);\n pivotColumnDefs.push(totalColDef);\n }\n return colIds;\n };\n PivotColDefService.prototype.addRowGroupTotals = function (pivotColumnGroupDefs, pivotColumnDefs, valueColumns) {\n var _this = this;\n if (!this.gridOptionsWrapper.getPivotRowTotals()) {\n return;\n }\n var insertAfter = this.gridOptionsWrapper.getPivotRowTotals() === 'after';\n // order of row group totals depends on position\n var valueCols = insertAfter ? valueColumns.slice() : valueColumns.slice().reverse();\n var _loop_1 = function (i) {\n var valueCol = valueCols[i];\n var colIds = [];\n pivotColumnGroupDefs.forEach(function (groupDef) {\n colIds = colIds.concat(_this.extractColIdsForValueColumn(groupDef, valueCol));\n });\n var withGroup = valueCols.length > 1 || !this_1.gridOptionsWrapper.isRemovePivotHeaderRowWhenSingleValueColumn();\n this_1.createRowGroupTotal(pivotColumnGroupDefs, pivotColumnDefs, valueCol, colIds, insertAfter, withGroup);\n };\n var this_1 = this;\n for (var i = 0; i < valueCols.length; i++) {\n _loop_1(i);\n }\n };\n PivotColDefService.prototype.extractColIdsForValueColumn = function (groupDef, valueColumn) {\n var _this = this;\n var group = groupDef;\n if (!group.children) {\n var colDef = group;\n return colDef.pivotValueColumn === valueColumn && colDef.colId ? [colDef.colId] : [];\n }\n var colIds = [];\n group.children.forEach(function (grp) {\n _this.extractColIdsForValueColumn(grp, valueColumn);\n var childColIds = _this.extractColIdsForValueColumn(grp, valueColumn);\n colIds = colIds.concat(childColIds);\n });\n return colIds;\n };\n PivotColDefService.prototype.createRowGroupTotal = function (parentChildren, pivotColumnDefs, valueColumn, colIds, insertAfter, addGroup) {\n var measureColumns = this.columnModel.getValueColumns();\n var colDef;\n if (measureColumns.length === 0) {\n colDef = this.createColDef(null, '-', []);\n } else {\n var columnName = this.columnModel.getDisplayNameForColumn(valueColumn, 'header');\n colDef = this.createColDef(valueColumn, columnName, []);\n colDef.pivotTotalColumnIds = colIds;\n }\n colDef.colId = PivotColDefService_1.PIVOT_ROW_TOTAL_PREFIX + colDef.colId;\n pivotColumnDefs.push(colDef);\n var valueGroup = addGroup ? {\n children: [colDef],\n pivotKeys: [],\n groupId: PivotColDefService_1.PIVOT_ROW_TOTAL_PREFIX + \"_pivotGroup_\" + valueColumn.getColId()\n } : colDef;\n insertAfter ? parentChildren.push(valueGroup) : parentChildren.unshift(valueGroup);\n };\n PivotColDefService.prototype.createColDef = function (valueColumn, headerName, pivotKeys, totalColumn) {\n if (totalColumn === void 0) {\n totalColumn = false;\n }\n var colDef = {};\n // This is null when there are no measure columns and we're creating placeholder columns\n if (valueColumn) {\n var colDefToCopy = valueColumn.getColDef();\n Object.assign(colDef, colDefToCopy);\n // even if original column was hidden, we always show the pivot value column, otherwise it would be\n // very confusing for people thinking the pivot is broken\n colDef.hide = false;\n }\n colDef.headerName = headerName;\n colDef.colId = this.generateColumnId(pivotKeys || [], valueColumn && !totalColumn ? valueColumn.getColId() : '');\n // pivot columns repeat over field, so it makes sense to use the unique id instead. For example if you want to\n // assign values to pinned bottom rows using setPinnedBottomRowData the value service will use this colId.\n colDef.field = colDef.colId;\n // this is to support using pinned rows, normally the data will be extracted from the aggData object using the colId\n // however pinned rows still access the data object by field, this prevents values with dots from being treated as complex objects\n colDef.valueGetter = function (params) {\n var _a;\n return (_a = params.data) === null || _a === void 0 ? void 0 : _a[params.colDef.field];\n };\n colDef.pivotKeys = pivotKeys;\n colDef.pivotValueColumn = valueColumn;\n if (colDef.filter === true) {\n colDef.filter = 'agNumberColumnFilter';\n }\n return colDef;\n };\n PivotColDefService.prototype.sameAggFuncs = function (aggFuncs) {\n if (aggFuncs.length == 1) {\n return true;\n }\n //check if all aggFunc's match\n for (var i = 1; i < aggFuncs.length; i++) {\n if (aggFuncs[i] !== aggFuncs[0]) {\n return false;\n }\n }\n return true;\n };\n PivotColDefService.prototype.headerNameComparator = function (userComparator, a, b) {\n if (userComparator) {\n return userComparator(a.headerName, b.headerName);\n } else {\n if (a.headerName && !b.headerName) {\n return 1;\n } else if (!a.headerName && b.headerName) {\n return -1;\n }\n // slightly naff here - just to satify typescript\n // really should be &&, but if so ts complains\n // the above if/else checks would deal with either being falsy, so at this stage if either are falsy, both are\n // ..still naff though\n if (!a.headerName || !b.headerName) {\n return 0;\n }\n if (a.headerName < b.headerName) {\n return -1;\n }\n if (a.headerName > b.headerName) {\n return 1;\n }\n return 0;\n }\n };\n PivotColDefService.prototype.merge = function (m1, m2) {\n m2.forEach(function (value, key, map) {\n var existingList = m1.has(key) ? m1.get(key) : [];\n var updatedList = __spread$w(existingList, value);\n m1.set(key, updatedList);\n });\n };\n PivotColDefService.prototype.generateColumnGroupId = function (pivotKeys) {\n var pivotCols = this.columnModel.getPivotColumns().map(function (col) {\n return col.getColId();\n });\n return \"pivotGroup_\" + pivotCols.join('-') + \"_\" + pivotKeys.join('-');\n };\n PivotColDefService.prototype.generateColumnId = function (pivotKeys, measureColumnId) {\n var pivotCols = this.columnModel.getPivotColumns().map(function (col) {\n return col.getColId();\n });\n return \"pivot_\" + pivotCols.join('-') + \"_\" + pivotKeys.join('-') + \"_\" + measureColumnId;\n };\n var PivotColDefService_1;\n PivotColDefService.PIVOT_ROW_TOTAL_PREFIX = 'PivotRowTotal_';\n __decorate$28([Autowired('columnModel')], PivotColDefService.prototype, \"columnModel\", void 0);\n PivotColDefService = PivotColDefService_1 = __decorate$28([Bean('pivotColDefService')], PivotColDefService);\n return PivotColDefService;\n}(BeanStub);\nvar __extends$3f = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$27 = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar PivotStage = /** @class */function (_super) {\n __extends$3f(PivotStage, _super);\n function PivotStage() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.uniqueValues = {};\n return _this;\n }\n PivotStage.prototype.execute = function (params) {\n var rootNode = params.rowNode;\n var changedPath = params.changedPath;\n if (this.columnModel.isPivotActive()) {\n this.executePivotOn(rootNode, changedPath);\n } else {\n this.executePivotOff(changedPath);\n }\n };\n PivotStage.prototype.executePivotOff = function (changedPath) {\n this.aggregationColumnsHashLastTime = null;\n this.uniqueValues = {};\n if (this.columnModel.isSecondaryColumnsPresent()) {\n this.columnModel.setSecondaryColumns(null, \"rowModelUpdated\");\n if (changedPath) {\n changedPath.setInactive();\n }\n }\n };\n PivotStage.prototype.executePivotOn = function (rootNode, changedPath) {\n var uniqueValues = this.bucketUpRowNodes(rootNode);\n var uniqueValuesChanged = this.setUniqueValues(uniqueValues);\n var aggregationColumns = this.columnModel.getValueColumns();\n var aggregationColumnsHash = aggregationColumns.map(function (column) {\n return column.getId() + \"-\" + column.getColDef().headerName;\n }).join('#');\n var aggregationFuncsHash = aggregationColumns.map(function (column) {\n return column.getAggFunc().toString();\n }).join('#');\n var aggregationColumnsChanged = this.aggregationColumnsHashLastTime !== aggregationColumnsHash;\n var aggregationFuncsChanged = this.aggregationFuncsHashLastTime !== aggregationFuncsHash;\n this.aggregationColumnsHashLastTime = aggregationColumnsHash;\n this.aggregationFuncsHashLastTime = aggregationFuncsHash;\n var groupColumnsHash = this.columnModel.getRowGroupColumns().map(function (column) {\n return column.getId();\n }).join('#');\n var groupColumnsChanged = groupColumnsHash !== this.groupColumnsHashLastTime;\n this.groupColumnsHashLastTime = groupColumnsHash;\n if (uniqueValuesChanged || aggregationColumnsChanged || groupColumnsChanged || aggregationFuncsChanged) {\n var _a = this.pivotColDefService.createPivotColumnDefs(this.uniqueValues),\n pivotColumnGroupDefs = _a.pivotColumnGroupDefs,\n pivotColumnDefs = _a.pivotColumnDefs;\n this.pivotColumnDefs = pivotColumnDefs;\n this.columnModel.setSecondaryColumns(pivotColumnGroupDefs, \"rowModelUpdated\");\n // because the secondary columns have changed, then the aggregation needs to visit the whole\n // tree again, so we make the changedPath not active, to force aggregation to visit all paths.\n if (changedPath) {\n changedPath.setInactive();\n }\n }\n };\n PivotStage.prototype.setUniqueValues = function (newValues) {\n var json1 = JSON.stringify(newValues);\n var json2 = JSON.stringify(this.uniqueValues);\n var uniqueValuesChanged = json1 !== json2;\n // we only continue the below if the unique values are different, as otherwise\n // the result will be the same as the last time we did it\n if (uniqueValuesChanged) {\n this.uniqueValues = newValues;\n return true;\n } else {\n return false;\n }\n };\n // returns true if values were different\n PivotStage.prototype.bucketUpRowNodes = function (rootNode) {\n var _this = this;\n // accessed from inside inner function\n var uniqueValues = {};\n // finds all leaf groups and calls mapRowNode with it\n var recursivelySearchForLeafNodes = function (rowNode) {\n if (rowNode.leafGroup) {\n _this.bucketRowNode(rowNode, uniqueValues);\n } else {\n rowNode.childrenAfterFilter.forEach(function (child) {\n recursivelySearchForLeafNodes(child);\n });\n }\n };\n recursivelySearchForLeafNodes(rootNode);\n return uniqueValues;\n };\n PivotStage.prototype.bucketRowNode = function (rowNode, uniqueValues) {\n var pivotColumns = this.columnModel.getPivotColumns();\n if (pivotColumns.length === 0) {\n rowNode.childrenMapped = null;\n } else {\n rowNode.childrenMapped = this.bucketChildren(rowNode.childrenAfterFilter, pivotColumns, 0, uniqueValues);\n }\n if (rowNode.sibling) {\n rowNode.sibling.childrenMapped = rowNode.childrenMapped;\n }\n };\n PivotStage.prototype.bucketChildren = function (children, pivotColumns, pivotIndex, uniqueValues) {\n var _this = this;\n var mappedChildren = {};\n var pivotColumn = pivotColumns[pivotIndex];\n // map the children out based on the pivot column\n children.forEach(function (child) {\n var key = _this.valueService.getKeyForNode(pivotColumn, child);\n if (_.missing(key)) {\n key = '';\n }\n if (!uniqueValues[key]) {\n uniqueValues[key] = {};\n }\n if (!mappedChildren[key]) {\n mappedChildren[key] = [];\n }\n mappedChildren[key].push(child);\n });\n // if it's the last pivot column, return as is, otherwise go one level further in the map\n if (pivotIndex === pivotColumns.length - 1) {\n return mappedChildren;\n } else {\n var result_1 = {};\n _.iterateObject(mappedChildren, function (key, value) {\n result_1[key] = _this.bucketChildren(value, pivotColumns, pivotIndex + 1, uniqueValues[key]);\n });\n return result_1;\n }\n };\n PivotStage.prototype.getPivotColumnDefs = function () {\n return this.pivotColumnDefs;\n };\n __decorate$27([Autowired('valueService')], PivotStage.prototype, \"valueService\", void 0);\n __decorate$27([Autowired('columnModel')], PivotStage.prototype, \"columnModel\", void 0);\n __decorate$27([Autowired('pivotColDefService')], PivotStage.prototype, \"pivotColDefService\", void 0);\n PivotStage = __decorate$27([Bean('pivotStage')], PivotStage);\n return PivotStage;\n}(BeanStub);\nvar __extends$3e = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$26 = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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// @ts-ignore\nvar AGBigInt = typeof BigInt === 'undefined' ? null : BigInt;\nvar AggFuncService = /** @class */function (_super) {\n __extends$3e(AggFuncService, _super);\n function AggFuncService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.aggFuncsMap = {};\n _this.initialised = false;\n return _this;\n }\n AggFuncService_1 = AggFuncService;\n AggFuncService.prototype.init = function () {\n if (this.initialised) {\n return;\n }\n this.initialiseWithDefaultAggregations();\n this.addAggFuncs(this.gridOptionsWrapper.getAggFuncs());\n };\n AggFuncService.prototype.initialiseWithDefaultAggregations = function () {\n this.aggFuncsMap[AggFuncService_1.AGG_SUM] = aggSum;\n this.aggFuncsMap[AggFuncService_1.AGG_FIRST] = aggFirst;\n this.aggFuncsMap[AggFuncService_1.AGG_LAST] = aggLast;\n this.aggFuncsMap[AggFuncService_1.AGG_MIN] = aggMin;\n this.aggFuncsMap[AggFuncService_1.AGG_MAX] = aggMax;\n this.aggFuncsMap[AggFuncService_1.AGG_COUNT] = aggCount;\n this.aggFuncsMap[AggFuncService_1.AGG_AVG] = aggAvg;\n this.initialised = true;\n };\n AggFuncService.prototype.isAggFuncPossible = function (column, func) {\n var allKeys = this.getFuncNames(column);\n var allowed = _.includes(allKeys, func);\n var funcExists = _.exists(this.aggFuncsMap[func]);\n return allowed && funcExists;\n };\n AggFuncService.prototype.getDefaultAggFunc = function (column) {\n var defaultAgg = column.getColDef().defaultAggFunc;\n if (_.exists(defaultAgg) && this.isAggFuncPossible(column, defaultAgg)) {\n return defaultAgg;\n }\n if (this.isAggFuncPossible(column, AggFuncService_1.AGG_SUM)) {\n return AggFuncService_1.AGG_SUM;\n }\n var allKeys = this.getFuncNames(column);\n return _.existsAndNotEmpty(allKeys) ? allKeys[0] : null;\n };\n AggFuncService.prototype.addAggFuncs = function (aggFuncs) {\n _.iterateObject(aggFuncs, this.addAggFunc.bind(this));\n };\n AggFuncService.prototype.addAggFunc = function (key, aggFunc) {\n this.init();\n this.aggFuncsMap[key] = aggFunc;\n };\n AggFuncService.prototype.getAggFunc = function (name) {\n this.init();\n return this.aggFuncsMap[name];\n };\n AggFuncService.prototype.getFuncNames = function (column) {\n var userAllowedFuncs = column.getColDef().allowedAggFuncs;\n return userAllowedFuncs == null ? Object.keys(this.aggFuncsMap).sort() : userAllowedFuncs;\n };\n AggFuncService.prototype.clear = function () {\n this.aggFuncsMap = {};\n };\n var AggFuncService_1;\n AggFuncService.AGG_SUM = 'sum';\n AggFuncService.AGG_FIRST = 'first';\n AggFuncService.AGG_LAST = 'last';\n AggFuncService.AGG_MIN = 'min';\n AggFuncService.AGG_MAX = 'max';\n AggFuncService.AGG_COUNT = 'count';\n AggFuncService.AGG_AVG = 'avg';\n __decorate$26([PostConstruct], AggFuncService.prototype, \"init\", null);\n AggFuncService = AggFuncService_1 = __decorate$26([Bean('aggFuncService')], AggFuncService);\n return AggFuncService;\n}(BeanStub);\nfunction aggSum(params) {\n var values = params.values;\n var result = null; // the logic ensures that we never combine bigint arithmetic with numbers, but TS is hard to please\n // for optimum performance, we use a for loop here rather than calling any helper methods or using functional code\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n if (typeof value === 'number') {\n if (result === null) {\n result = value;\n } else {\n if (AGBigInt) {\n result += typeof result === 'number' ? value : AGBigInt(value);\n } else {\n result += value;\n }\n }\n } else if (typeof value === 'bigint') {\n if (result === null) {\n result = value;\n } else {\n result = (typeof result === 'bigint' ? result : AGBigInt(result)) + value;\n }\n }\n }\n return result;\n}\nfunction aggFirst(params) {\n return params.values.length > 0 ? params.values[0] : null;\n}\nfunction aggLast(params) {\n return params.values.length > 0 ? _.last(params.values) : null;\n}\nfunction aggMin(params) {\n var values = params.values;\n var result = null;\n // for optimum performance, we use a for loop here rather than calling any helper methods or using functional code\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n if ((typeof value === 'number' || typeof value === 'bigint') && (result === null || result > value)) {\n result = value;\n }\n }\n return result;\n}\nfunction aggMax(params) {\n var values = params.values;\n var result = null;\n // for optimum performance, we use a for loop here rather than calling any helper methods or using functional code\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n if ((typeof value === 'number' || typeof value === 'bigint') && (result === null || result < value)) {\n result = value;\n }\n }\n return result;\n}\nfunction aggCount(params) {\n var values = params.values;\n var result = 0;\n // for optimum performance, we use a for loop here rather than calling any helper methods or using functional code\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n // check if the value is from a group, in which case use the group's count\n result += value != null && typeof value.value === 'number' ? value.value : 1;\n }\n return result;\n}\n// the average function is tricky as the multiple levels require weighted averages\n// for the non-leaf node aggregations.\nfunction aggAvg(params) {\n var _a, _b, _c;\n var values = params.values;\n var sum = 0; // the logic ensures that we never combine bigint arithmetic with numbers, but TS is hard to please\n var count = 0;\n // for optimum performance, we use a for loop here rather than calling any helper methods or using functional code\n for (var i = 0; i < values.length; i++) {\n var currentValue = values[i];\n var valueToAdd = null;\n if (typeof currentValue === 'number' || typeof currentValue === 'bigint') {\n valueToAdd = currentValue;\n count++;\n } else if (currentValue != null && (typeof currentValue.value === 'number' || typeof currentValue.value === 'bigint') && typeof currentValue.count === 'number') {\n // we are aggregating groups, so we take the aggregated values to calculated a weighted average\n if (AGBigInt) {\n valueToAdd = currentValue.value * (typeof currentValue.value === 'number' ? currentValue.count : AGBigInt(currentValue.count));\n } else {\n valueToAdd = currentValue.value * currentValue.count;\n }\n count += currentValue.count;\n }\n if (typeof valueToAdd === 'number') {\n if (AGBigInt) {\n sum += typeof sum === 'number' ? valueToAdd : AGBigInt(valueToAdd);\n } else {\n sum += valueToAdd;\n }\n } else if (typeof valueToAdd === 'bigint') {\n sum = (typeof sum === 'bigint' ? sum : AGBigInt(sum)) + valueToAdd;\n }\n }\n var value = null;\n // avoid divide by zero error\n if (count > 0) {\n if (AGBigInt) {\n value = sum / (typeof sum === 'number' ? count : AGBigInt(count));\n } else {\n value = sum / count;\n }\n }\n // the previous aggregation data\n var existingAggData = (_b = (_a = params.rowNode) === null || _a === void 0 ? void 0 : _a.aggData) === null || _b === void 0 ? void 0 : _b[(_c = params.column) === null || _c === void 0 ? void 0 : _c.getColId()];\n if (existingAggData && existingAggData.count === count && existingAggData.value === value) {\n // the underlying values haven't changed, return the old object to avoid triggering change detection\n return existingAggData;\n }\n // the result will be an object. when this cell is rendered, only the avg is shown.\n // however when this cell is part of another aggregation, the count is also needed\n // to create a weighted average for the next level.\n return {\n count: count,\n value: value,\n // the grid by default uses toString to render values for an object, so this\n // is a trick to get the default cellRenderer to display the avg value\n toString: function () {\n return typeof this.value === 'number' || typeof this.value === 'bigint' ? this.value.toString() : '';\n },\n // used for sorting\n toNumber: function () {\n return this.value;\n }\n };\n}\nvar __extends$3d = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$25 = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar DropZoneColumnComp = /** @class */function (_super) {\n __extends$3d(DropZoneColumnComp, _super);\n function DropZoneColumnComp(column, dragSourceDropTarget, ghost, dropZonePurpose, horizontal) {\n var _this = _super.call(this) || this;\n _this.column = column;\n _this.dragSourceDropTarget = dragSourceDropTarget;\n _this.ghost = ghost;\n _this.dropZonePurpose = dropZonePurpose;\n _this.horizontal = horizontal;\n _this.popupShowing = false;\n return _this;\n }\n DropZoneColumnComp.prototype.init = function () {\n var _this = this;\n this.setTemplate(DropZoneColumnComp.TEMPLATE);\n var eGui = this.getGui();\n var isFunctionsReadOnly = this.gridOptionsWrapper.isFunctionsReadOnly();\n this.addElementClasses(eGui);\n this.addElementClasses(this.eDragHandle, 'drag-handle');\n this.addElementClasses(this.eText, 'text');\n this.addElementClasses(this.eButton, 'button');\n this.eDragHandle.appendChild(_.createIconNoSpan('columnDrag', this.gridOptionsWrapper));\n this.eButton.appendChild(_.createIconNoSpan('cancel', this.gridOptionsWrapper));\n this.setupSort();\n this.displayName = this.columnModel.getDisplayNameForColumn(this.column, 'columnDrop');\n this.setupComponents();\n if (!this.ghost && !isFunctionsReadOnly) {\n this.addDragSource();\n }\n this.setupAria();\n this.addManagedListener(this.column, Column.EVENT_SORT_CHANGED, function () {\n _this.setupAria();\n });\n this.setupTooltip();\n };\n DropZoneColumnComp.prototype.setupAria = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var _a = this.getColumnAndAggFuncName(),\n name = _a.name,\n aggFuncName = _a.aggFuncName;\n var aggSeparator = translate('ariaDropZoneColumnComponentAggFuncSeperator', ' of ');\n var sortDirection = {\n asc: translate('ariaDropZoneColumnComponentSortAscending', 'ascending'),\n desc: translate('ariaDropZoneColumnComponentSortDescending', 'descending')\n };\n var columnSort = this.column.getSort();\n var isSortSuppressed = this.gridOptionsWrapper.isRowGroupPanelSuppressSort();\n var ariaInstructions = [[aggFuncName && \"\" + aggFuncName + aggSeparator, name, this.isGroupingZone() && !isSortSuppressed && columnSort && \", \" + sortDirection[columnSort]].filter(function (part) {\n return !!part;\n }).join('')];\n var isFunctionsReadOnly = this.gridOptionsWrapper.isFunctionsReadOnly();\n if (this.isAggregationZone() && !isFunctionsReadOnly) {\n var aggregationMenuAria = translate('ariaDropZoneColumnValueItemDescription', 'Press ENTER to change the aggregation type');\n ariaInstructions.push(aggregationMenuAria);\n }\n if (this.isGroupingZone() && this.column.getColDef().sortable && !isSortSuppressed) {\n var sortProgressAria = translate('ariaDropZoneColumnGroupItemDescription', 'Press ENTER to sort');\n ariaInstructions.push(sortProgressAria);\n }\n var deleteAria = translate('ariaDropZoneColumnComponentDescription', 'Press DELETE to remove');\n ariaInstructions.push(deleteAria);\n _.setAriaLabel(this.getGui(), ariaInstructions.join('. '));\n };\n DropZoneColumnComp.prototype.setupTooltip = function () {\n var _this = this;\n var refresh = function () {\n var newTooltipText = _this.column.getColDef().headerTooltip;\n _this.setTooltip(newTooltipText);\n };\n refresh();\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, refresh);\n };\n DropZoneColumnComp.prototype.setupSort = function () {\n var _this = this;\n var canSort = this.column.getColDef().sortable;\n var isGroupingZone = this.isGroupingZone();\n if (!canSort || !isGroupingZone) {\n return;\n }\n if (!this.gridOptionsWrapper.isRowGroupPanelSuppressSort()) {\n this.eSortIndicator.setupSort(this.column, true);\n var performSort_1 = function (event) {\n event.preventDefault();\n var sortUsingCtrl = _this.gridOptionsWrapper.isMultiSortKeyCtrl();\n var multiSort = sortUsingCtrl ? event.ctrlKey || event.metaKey : event.shiftKey;\n _this.sortController.progressSort(_this.column, multiSort, 'uiColumnSorted');\n };\n this.addGuiEventListener('click', performSort_1);\n this.addGuiEventListener('keydown', function (e) {\n var isEnter = e.key === KeyCode.ENTER;\n if (isEnter && _this.isGroupingZone()) {\n performSort_1(e);\n }\n });\n }\n };\n DropZoneColumnComp.prototype.addDragSource = function () {\n var _this = this;\n var dragSource = {\n type: DragSourceType.ToolPanel,\n eElement: this.eDragHandle,\n defaultIconName: DragAndDropService.ICON_HIDE,\n getDragItem: function () {\n return _this.createDragItem();\n },\n dragItemName: this.displayName,\n dragSourceDropTarget: this.dragSourceDropTarget\n };\n this.dragAndDropService.addDragSource(dragSource, true);\n this.addDestroyFunc(function () {\n return _this.dragAndDropService.removeDragSource(dragSource);\n });\n };\n DropZoneColumnComp.prototype.createDragItem = function () {\n var visibleState = {};\n visibleState[this.column.getId()] = this.column.isVisible();\n return {\n columns: [this.column],\n visibleState: visibleState\n };\n };\n DropZoneColumnComp.prototype.setupComponents = function () {\n this.setTextValue();\n this.setupRemove();\n if (this.ghost) {\n this.addCssClass('ag-column-drop-cell-ghost');\n }\n if (this.isAggregationZone() && !this.gridOptionsWrapper.isFunctionsReadOnly()) {\n this.addGuiEventListener('click', this.onShowAggFuncSelection.bind(this));\n }\n };\n DropZoneColumnComp.prototype.setupRemove = function () {\n var _this = this;\n _.setDisplayed(this.eButton, !this.gridOptionsWrapper.isFunctionsReadOnly());\n var agEvent = {\n type: DropZoneColumnComp.EVENT_COLUMN_REMOVE\n };\n this.addGuiEventListener('keydown', function (e) {\n var isEnter = e.key === KeyCode.ENTER;\n var isDelete = e.key === KeyCode.DELETE;\n if (isDelete) {\n e.preventDefault();\n _this.dispatchEvent(agEvent);\n }\n if (isEnter && _this.isAggregationZone() && !_this.gridOptionsWrapper.isFunctionsReadOnly()) {\n e.preventDefault();\n _this.onShowAggFuncSelection();\n }\n });\n this.addManagedListener(this.eButton, 'click', function (mouseEvent) {\n _this.dispatchEvent(agEvent);\n mouseEvent.stopPropagation();\n });\n var touchListener = new TouchListener(this.eButton);\n this.addManagedListener(touchListener, TouchListener.EVENT_TAP, function () {\n _this.dispatchEvent(agEvent);\n });\n this.addDestroyFunc(touchListener.destroy.bind(touchListener));\n };\n DropZoneColumnComp.prototype.getColumnAndAggFuncName = function () {\n var name = this.displayName;\n var aggFuncName = '';\n if (this.isAggregationZone()) {\n var aggFunc = this.column.getAggFunc();\n // if aggFunc is a string, we can use it, but if it's a function, then we swap with 'func'\n var aggFuncString = typeof aggFunc === 'string' ? aggFunc : 'agg';\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n aggFuncName = localeTextFunc(aggFuncString, aggFuncString);\n }\n return {\n name: name,\n aggFuncName: aggFuncName\n };\n };\n DropZoneColumnComp.prototype.setTextValue = function () {\n var _a = this.getColumnAndAggFuncName(),\n name = _a.name,\n aggFuncName = _a.aggFuncName;\n var displayValue = this.isAggregationZone() ? aggFuncName + \"(\" + name + \")\" : name;\n var displayValueSanitised = _.escapeString(displayValue);\n this.eText.innerHTML = displayValueSanitised;\n };\n DropZoneColumnComp.prototype.onShowAggFuncSelection = function () {\n var _this = this;\n if (this.popupShowing) {\n return;\n }\n this.popupShowing = true;\n var virtualList = new VirtualList('select-agg-func');\n var rows = this.aggFuncService.getFuncNames(this.column);\n var eGui = this.getGui();\n var virtualListGui = virtualList.getGui();\n virtualList.setModel({\n getRow: function (index) {\n return rows[index];\n },\n getRowCount: function () {\n return rows.length;\n }\n });\n this.getContext().createBean(virtualList);\n var ePopup = _.loadTemplate(/* html*/\"
\");\n ePopup.style.top = '0px';\n ePopup.style.left = '0px';\n ePopup.appendChild(virtualListGui);\n // ePopup.style.height = this.gridOptionsWrapper.getAggFuncPopupHeight() + 'px';\n ePopup.style.width = eGui.clientWidth + \"px\";\n var popupHiddenFunc = function () {\n _this.destroyBean(virtualList);\n _this.popupShowing = false;\n eGui.focus();\n };\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var addPopupRes = this.popupService.addPopup({\n modal: true,\n eChild: ePopup,\n closeOnEsc: true,\n closedCallback: popupHiddenFunc,\n ariaLabel: translate('ariaLabelAggregationFunction', 'Aggregation Function')\n });\n if (addPopupRes) {\n virtualList.setComponentCreator(this.createAggSelect.bind(this, addPopupRes.hideFunc));\n }\n virtualList.addGuiEventListener('keydown', function (e) {\n if (e.key === KeyCode.ENTER || e.key === KeyCode.SPACE) {\n var row = virtualList.getLastFocusedRow();\n if (row == null) {\n return;\n }\n var comp = virtualList.getComponentAt(row);\n if (comp) {\n comp.selectItem();\n }\n }\n });\n this.popupService.positionPopupUnderComponent({\n type: 'aggFuncSelect',\n eventSource: eGui,\n ePopup: ePopup,\n keepWithinBounds: true,\n column: this.column\n });\n virtualList.refresh();\n var rowToFocus = rows.findIndex(function (r) {\n return r === _this.column.getAggFunc();\n });\n if (rowToFocus === -1) {\n rowToFocus = 0;\n }\n virtualList.focusRow(rowToFocus);\n };\n DropZoneColumnComp.prototype.createAggSelect = function (hidePopup, value) {\n var _this = this;\n var itemSelected = function () {\n hidePopup();\n if (_this.gridOptionsWrapper.isFunctionsPassive()) {\n var event_1 = {\n type: Events.EVENT_COLUMN_AGG_FUNC_CHANGE_REQUEST,\n columns: [_this.column],\n aggFunc: value\n };\n _this.eventService.dispatchEvent(event_1);\n } else {\n _this.columnModel.setColumnAggFunc(_this.column, value, \"toolPanelDragAndDrop\");\n }\n };\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var aggFuncString = value.toString();\n var aggFuncStringTranslated = localeTextFunc(aggFuncString, aggFuncString);\n var comp = new AggItemComp(itemSelected, aggFuncStringTranslated);\n return comp;\n };\n DropZoneColumnComp.prototype.addElementClasses = function (el, suffix) {\n suffix = suffix ? \"-\" + suffix : '';\n var direction = this.horizontal ? 'horizontal' : 'vertical';\n el.classList.add(\"ag-column-drop-cell\" + suffix, \"ag-column-drop-\" + direction + \"-cell\" + suffix);\n };\n DropZoneColumnComp.prototype.isAggregationZone = function () {\n return this.dropZonePurpose === 'aggregation';\n };\n DropZoneColumnComp.prototype.isGroupingZone = function () {\n return this.dropZonePurpose === 'rowGroup';\n };\n DropZoneColumnComp.EVENT_COLUMN_REMOVE = 'columnRemove';\n DropZoneColumnComp.TEMPLATE = \"\\n \\n \\n \\n \\n \";\n __decorate$25([Autowired('dragAndDropService')], DropZoneColumnComp.prototype, \"dragAndDropService\", void 0);\n __decorate$25([Autowired('columnModel')], DropZoneColumnComp.prototype, \"columnModel\", void 0);\n __decorate$25([Autowired('popupService')], DropZoneColumnComp.prototype, \"popupService\", void 0);\n __decorate$25([Optional('aggFuncService')], DropZoneColumnComp.prototype, \"aggFuncService\", void 0);\n __decorate$25([Autowired('sortController')], DropZoneColumnComp.prototype, \"sortController\", void 0);\n __decorate$25([RefSelector('eText')], DropZoneColumnComp.prototype, \"eText\", void 0);\n __decorate$25([RefSelector('eDragHandle')], DropZoneColumnComp.prototype, \"eDragHandle\", void 0);\n __decorate$25([RefSelector('eButton')], DropZoneColumnComp.prototype, \"eButton\", void 0);\n __decorate$25([RefSelector('eSortIndicator')], DropZoneColumnComp.prototype, \"eSortIndicator\", void 0);\n __decorate$25([PostConstruct], DropZoneColumnComp.prototype, \"init\", null);\n return DropZoneColumnComp;\n}(Component);\nvar AggItemComp = /** @class */function (_super) {\n __extends$3d(AggItemComp, _super);\n function AggItemComp(itemSelected, value) {\n var _this = _super.call(this, /* html */\"
\") || this;\n _this.selectItem = itemSelected;\n _this.getGui().innerText = value;\n _this.addGuiEventListener('click', _this.selectItem);\n return _this;\n }\n return AggItemComp;\n}(Component);\nvar __extends$3c = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$24 = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __read$U = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread$v = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$U(arguments[i]));\n return ar;\n};\nvar BaseDropZonePanel = /** @class */function (_super) {\n __extends$3c(BaseDropZonePanel, _super);\n function BaseDropZonePanel(horizontal, dropZonePurpose) {\n var _this = _super.call(this, /* html */\"
\") || this;\n _this.horizontal = horizontal;\n _this.dropZonePurpose = dropZonePurpose;\n _this.state = BaseDropZonePanel.STATE_NOT_DRAGGING;\n _this.guiDestroyFunctions = [];\n _this.childColumnComponents = [];\n _this.resizeEnabled = false;\n _this.addElementClasses(_this.getGui());\n _this.eColumnDropList = document.createElement('div');\n _this.addElementClasses(_this.eColumnDropList, 'list');\n _.setAriaRole(_this.eColumnDropList, 'listbox');\n return _this;\n }\n BaseDropZonePanel.prototype.isHorizontal = function () {\n return this.horizontal;\n };\n BaseDropZonePanel.prototype.toggleResizable = function (resizable) {\n this.positionableFeature.setResizable(resizable ? {\n bottom: true\n } : false);\n this.resizeEnabled = resizable;\n };\n BaseDropZonePanel.prototype.setBeans = function (beans) {\n this.beans = beans;\n };\n BaseDropZonePanel.prototype.destroy = function () {\n this.destroyGui();\n _super.prototype.destroy.call(this);\n };\n BaseDropZonePanel.prototype.destroyGui = function () {\n this.guiDestroyFunctions.forEach(function (func) {\n return func();\n });\n this.guiDestroyFunctions.length = 0;\n this.childColumnComponents.length = 0;\n _.clearElement(this.getGui());\n _.clearElement(this.eColumnDropList);\n };\n BaseDropZonePanel.prototype.init = function (params) {\n this.params = params;\n this.createManagedBean(new ManagedFocusFeature(this.getFocusableElement(), {\n handleKeyDown: this.handleKeyDown.bind(this)\n }));\n this.addManagedListener(this.beans.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.refreshGui.bind(this));\n this.addManagedListener(this.beans.gridOptionsWrapper, 'functionsReadOnly', this.refreshGui.bind(this));\n this.setupDropTarget();\n this.positionableFeature = new PositionableFeature(this.getGui(), {\n minHeight: 100\n });\n this.createManagedBean(this.positionableFeature);\n // we don't know if this bean will be initialised before columnModel.\n // if columnModel first, then below will work\n // if columnModel second, then below will put blank in, and then above event gets first when columnModel is set up\n this.refreshGui();\n _.setAriaLabel(this.eColumnDropList, this.getAriaLabel());\n };\n BaseDropZonePanel.prototype.handleKeyDown = function (e) {\n var isVertical = !this.horizontal;\n var isNext = e.key === KeyCode.DOWN;\n var isPrevious = e.key === KeyCode.UP;\n if (!isVertical) {\n var isRtl = this.gridOptionsWrapper.isEnableRtl();\n isNext = !isRtl && e.key === KeyCode.RIGHT || isRtl && e.key === KeyCode.LEFT;\n isPrevious = !isRtl && e.key === KeyCode.LEFT || isRtl && e.key === KeyCode.RIGHT;\n }\n if (!isNext && !isPrevious) {\n return;\n }\n var el = this.focusService.findNextFocusableElement(this.getFocusableElement(), false, isPrevious);\n if (el) {\n e.preventDefault();\n el.focus();\n }\n };\n BaseDropZonePanel.prototype.addElementClasses = function (el, suffix) {\n suffix = suffix ? \"-\" + suffix : '';\n var direction = this.horizontal ? 'horizontal' : 'vertical';\n el.classList.add(\"ag-column-drop\" + suffix, \"ag-column-drop-\" + direction + suffix);\n };\n BaseDropZonePanel.prototype.setupDropTarget = function () {\n this.dropTarget = {\n getContainer: this.getGui.bind(this),\n getIconName: this.getIconName.bind(this),\n onDragging: this.onDragging.bind(this),\n onDragEnter: this.onDragEnter.bind(this),\n onDragLeave: this.onDragLeave.bind(this),\n onDragStop: this.onDragStop.bind(this),\n isInterestedIn: this.isInterestedIn.bind(this)\n };\n this.beans.dragAndDropService.addDropTarget(this.dropTarget);\n };\n BaseDropZonePanel.prototype.isInterestedIn = function (type) {\n // not interested in row drags\n return type === DragSourceType.HeaderCell || type === DragSourceType.ToolPanel;\n };\n BaseDropZonePanel.prototype.checkInsertIndex = function (draggingEvent) {\n var newIndex = this.getNewInsertIndex(draggingEvent);\n // <0 happens when drag is no a direction we are interested in, eg drag is up/down but in horizontal panel\n if (newIndex < 0) {\n return false;\n }\n var changed = newIndex !== this.insertIndex;\n if (changed) {\n this.insertIndex = newIndex;\n }\n return changed;\n };\n BaseDropZonePanel.prototype.getNewInsertIndex = function (draggingEvent) {\n var _this = this;\n var mouseEvent = draggingEvent.event;\n var mouseLocation = this.horizontal ? mouseEvent.clientX : mouseEvent.clientY;\n var boundsList = this.childColumnComponents.map(function (col) {\n return col.getGui().getBoundingClientRect();\n });\n // find the non-ghost component we're hovering\n var hoveredIndex = boundsList.findIndex(function (rect) {\n return _this.horizontal ? rect.right > mouseLocation && rect.left < mouseLocation : rect.top < mouseLocation && rect.bottom > mouseLocation;\n });\n // not hovering a non-ghost component\n if (hoveredIndex === -1) {\n var enableRtl = this.beans.gridOptionsWrapper.isEnableRtl();\n // if mouse is below or right of all components then new index should be placed last\n var isLast = boundsList.every(function (rect) {\n return mouseLocation > (_this.horizontal ? rect.right : rect.bottom);\n });\n if (isLast) {\n return enableRtl && this.horizontal ? 0 : this.childColumnComponents.length;\n }\n // if mouse is above or left of all components, new index is first\n var isFirst = boundsList.every(function (rect) {\n return mouseLocation < (_this.horizontal ? rect.left : rect.top);\n });\n if (isFirst) {\n return enableRtl && this.horizontal ? this.childColumnComponents.length : 0;\n }\n // must be hovering a ghost, don't change the index\n return this.insertIndex;\n }\n // if the old index is equal to or less than the index of our new target\n // we need to shift right, to insert after rather than before\n if (this.insertIndex <= hoveredIndex) {\n return hoveredIndex + 1;\n }\n return hoveredIndex;\n };\n BaseDropZonePanel.prototype.checkDragStartedBySelf = function (draggingEvent) {\n if (this.state !== BaseDropZonePanel.STATE_NOT_DRAGGING) {\n return;\n }\n this.state = BaseDropZonePanel.STATE_REARRANGE_COLUMNS;\n this.potentialDndColumns = draggingEvent.dragSource.getDragItem().columns || [];\n this.refreshGui();\n this.checkInsertIndex(draggingEvent);\n this.refreshGui();\n };\n BaseDropZonePanel.prototype.onDragging = function (draggingEvent) {\n this.checkDragStartedBySelf(draggingEvent);\n if (this.checkInsertIndex(draggingEvent)) {\n this.refreshGui();\n }\n };\n BaseDropZonePanel.prototype.onDragEnter = function (draggingEvent) {\n // this will contain all columns that are potential drops\n var dragColumns = draggingEvent.dragSource.getDragItem().columns || [];\n this.state = BaseDropZonePanel.STATE_NEW_COLUMNS_IN;\n // take out columns that are not droppable\n var goodDragColumns = dragColumns.filter(this.isColumnDroppable.bind(this));\n if (goodDragColumns.length > 0) {\n var hideColumnOnExit = this.isRowGroupPanel() && !this.gridOptionsWrapper.isSuppressRowGroupHidesColumns() && !draggingEvent.fromNudge;\n if (hideColumnOnExit) {\n var dragItem = draggingEvent.dragSource.getDragItem();\n var columns = dragItem.columns;\n this.setColumnsVisible(columns, false, \"uiColumnDragged\");\n }\n this.potentialDndColumns = goodDragColumns;\n this.checkInsertIndex(draggingEvent);\n this.refreshGui();\n }\n };\n BaseDropZonePanel.prototype.setColumnsVisible = function (columns, visible, source) {\n if (source === void 0) {\n source = \"api\";\n }\n if (columns) {\n var allowedCols = columns.filter(function (c) {\n return !c.getColDef().lockVisible;\n });\n this.colModel.setColumnsVisible(allowedCols, visible, source);\n }\n };\n BaseDropZonePanel.prototype.isPotentialDndColumns = function () {\n return _.existsAndNotEmpty(this.potentialDndColumns);\n };\n BaseDropZonePanel.prototype.isRowGroupPanel = function () {\n return this.dropZonePurpose === 'rowGroup';\n };\n BaseDropZonePanel.prototype.onDragLeave = function (draggingEvent) {\n // if the dragging started from us, we remove the group, however if it started\n // some place else, then we don't, as it was only 'asking'\n if (this.state === BaseDropZonePanel.STATE_REARRANGE_COLUMNS) {\n var columns = draggingEvent.dragSource.getDragItem().columns || [];\n this.removeColumns(columns);\n }\n if (this.isPotentialDndColumns()) {\n var showColumnOnExit = this.isRowGroupPanel() && !this.gridOptionsWrapper.isSuppressMakeColumnVisibleAfterUnGroup() && !draggingEvent.fromNudge;\n if (showColumnOnExit) {\n var dragItem = draggingEvent.dragSource.getDragItem();\n this.setColumnsVisible(dragItem.columns, true, \"uiColumnDragged\");\n }\n this.potentialDndColumns = [];\n this.refreshGui();\n }\n this.state = BaseDropZonePanel.STATE_NOT_DRAGGING;\n };\n BaseDropZonePanel.prototype.onDragStop = function () {\n if (this.isPotentialDndColumns()) {\n var success = false;\n if (this.state === BaseDropZonePanel.STATE_NEW_COLUMNS_IN) {\n this.addColumns(this.potentialDndColumns);\n success = true;\n } else {\n success = this.rearrangeColumns(this.potentialDndColumns);\n }\n this.potentialDndColumns = [];\n // If the function is passive, then we don't refresh, as we assume the client application\n // is going to call setRowGroups / setPivots / setValues at a later point which will then\n // cause a refresh. This gives a nice GUI where the ghost stays until the app has caught\n // up with the changes. However, if there was no change in the order, then we do need to\n // refresh to reset the columns\n if (!this.beans.gridOptionsWrapper.isFunctionsPassive() || !success) {\n this.refreshGui();\n }\n }\n this.state = BaseDropZonePanel.STATE_NOT_DRAGGING;\n };\n BaseDropZonePanel.prototype.removeColumns = function (columnsToRemove) {\n var newColumnList = this.getExistingColumns().filter(function (col) {\n return !_.includes(columnsToRemove, col);\n });\n this.updateColumns(newColumnList);\n };\n BaseDropZonePanel.prototype.addColumns = function (columnsToAdd) {\n if (!columnsToAdd) {\n return;\n }\n var newColumnList = this.getExistingColumns().slice();\n var colsToAddNoDuplicates = columnsToAdd.filter(function (col) {\n return newColumnList.indexOf(col) < 0;\n });\n _.insertArrayIntoArray(newColumnList, colsToAddNoDuplicates, this.insertIndex);\n this.updateColumns(newColumnList);\n };\n BaseDropZonePanel.prototype.rearrangeColumns = function (columnsToAdd) {\n var newColumnList = this.getNonGhostColumns().slice();\n _.insertArrayIntoArray(newColumnList, columnsToAdd, this.insertIndex);\n if (_.areEqual(newColumnList, this.getExistingColumns())) {\n return false;\n }\n this.updateColumns(newColumnList);\n return true;\n };\n BaseDropZonePanel.prototype.refreshGui = function () {\n // we reset the scroll position after the refresh.\n // if we don't do this, then the list will always scroll to the top\n // each time we refresh it. this is because part of the refresh empties\n // out the list which sets scroll to zero. so the user could be just\n // reordering the list - we want to prevent the resetting of the scroll.\n // this is relevant for vertical display only (as horizontal has no scroll)\n var scrollTop = this.eColumnDropList.scrollTop;\n var resizeEnabled = this.resizeEnabled;\n var focusedIndex = this.getFocusedItem();\n var alternateElement = this.focusService.findNextFocusableElement();\n if (!alternateElement) {\n alternateElement = this.focusService.findNextFocusableElement(undefined, false, true);\n }\n this.toggleResizable(false);\n this.destroyGui();\n this.addIconAndTitleToGui();\n this.addEmptyMessageToGui();\n this.addColumnsToGui();\n if (!this.isHorizontal()) {\n this.eColumnDropList.scrollTop = scrollTop;\n }\n if (resizeEnabled) {\n this.toggleResizable(resizeEnabled);\n }\n this.restoreFocus(focusedIndex, alternateElement);\n };\n BaseDropZonePanel.prototype.getFocusedItem = function () {\n var eGui = this.getGui();\n var activeElement = this.gridOptionsWrapper.getDocument().activeElement;\n if (!eGui.contains(activeElement)) {\n return -1;\n }\n var items = Array.from(eGui.querySelectorAll('.ag-column-drop-cell'));\n return items.indexOf(activeElement);\n };\n BaseDropZonePanel.prototype.restoreFocus = function (index, alternateElement) {\n var eGui = this.getGui();\n var items = Array.from(eGui.querySelectorAll('.ag-column-drop-cell'));\n if (index === -1) {\n return;\n }\n if (items.length === 0) {\n alternateElement.focus();\n }\n var indexToFocus = Math.min(items.length - 1, index);\n var el = items[indexToFocus];\n if (el) {\n el.focus();\n }\n };\n BaseDropZonePanel.prototype.getNonGhostColumns = function () {\n var _this = this;\n var existingColumns = this.getExistingColumns();\n if (this.isPotentialDndColumns()) {\n return existingColumns.filter(function (column) {\n return !_.includes(_this.potentialDndColumns, column);\n });\n }\n return existingColumns;\n };\n BaseDropZonePanel.prototype.addColumnsToGui = function () {\n var _this = this;\n var nonGhostColumns = this.getNonGhostColumns();\n var itemsToAddToGui = nonGhostColumns.map(function (column) {\n return _this.createColumnComponent(column, false);\n });\n if (this.isPotentialDndColumns()) {\n var dndColumns = this.potentialDndColumns.map(function (column) {\n return _this.createColumnComponent(column, true);\n });\n if (this.insertIndex >= itemsToAddToGui.length) {\n itemsToAddToGui.push.apply(itemsToAddToGui, __spread$v(dndColumns));\n } else {\n itemsToAddToGui.splice.apply(itemsToAddToGui, __spread$v([this.insertIndex, 0], dndColumns));\n }\n }\n this.appendChild(this.eColumnDropList);\n itemsToAddToGui.forEach(function (columnComponent, index) {\n if (index > 0) {\n _this.addArrow(_this.eColumnDropList);\n }\n _this.eColumnDropList.appendChild(columnComponent.getGui());\n });\n this.addAriaLabelsToComponents();\n };\n BaseDropZonePanel.prototype.addAriaLabelsToComponents = function () {\n var _this = this;\n this.childColumnComponents.forEach(function (comp, idx) {\n var eGui = comp.getGui();\n _.setAriaPosInSet(eGui, idx + 1);\n _.setAriaSetSize(eGui, _this.childColumnComponents.length);\n });\n };\n BaseDropZonePanel.prototype.createColumnComponent = function (column, ghost) {\n var _this = this;\n var columnComponent = new DropZoneColumnComp(column, this.dropTarget, ghost, this.dropZonePurpose, this.horizontal);\n columnComponent.addEventListener(DropZoneColumnComp.EVENT_COLUMN_REMOVE, this.removeColumns.bind(this, [column]));\n this.beans.context.createBean(columnComponent);\n this.guiDestroyFunctions.push(function () {\n return _this.destroyBean(columnComponent);\n });\n if (!ghost) {\n this.childColumnComponents.push(columnComponent);\n }\n return columnComponent;\n };\n BaseDropZonePanel.prototype.addIconAndTitleToGui = function () {\n var eGroupIcon = this.params.icon;\n var eTitleBar = document.createElement('div');\n eTitleBar.setAttribute('aria-hidden', 'true');\n this.addElementClasses(eTitleBar, 'title-bar');\n this.addElementClasses(eGroupIcon, 'icon');\n this.addOrRemoveCssClass('ag-column-drop-empty', this.isExistingColumnsEmpty());\n eTitleBar.appendChild(eGroupIcon);\n if (!this.horizontal) {\n var eTitle = document.createElement('span');\n this.addElementClasses(eTitle, 'title');\n eTitle.innerHTML = this.params.title;\n eTitleBar.appendChild(eTitle);\n }\n this.appendChild(eTitleBar);\n };\n BaseDropZonePanel.prototype.isExistingColumnsEmpty = function () {\n return this.getExistingColumns().length === 0;\n };\n BaseDropZonePanel.prototype.addEmptyMessageToGui = function () {\n if (!this.isExistingColumnsEmpty() || this.isPotentialDndColumns()) {\n return;\n }\n var eMessage = document.createElement('span');\n eMessage.innerHTML = this.params.emptyMessage;\n this.addElementClasses(eMessage, 'empty-message');\n this.eColumnDropList.appendChild(eMessage);\n };\n BaseDropZonePanel.prototype.addArrow = function (eParent) {\n // only add the arrows if the layout is horizontal\n if (this.horizontal) {\n // for RTL it's a left arrow, otherwise it's a right arrow\n var enableRtl = this.beans.gridOptionsWrapper.isEnableRtl();\n var icon = _.createIconNoSpan(enableRtl ? 'smallLeft' : 'smallRight', this.beans.gridOptionsWrapper);\n this.addElementClasses(icon, 'cell-separator');\n eParent.appendChild(icon);\n }\n };\n BaseDropZonePanel.STATE_NOT_DRAGGING = 'notDragging';\n BaseDropZonePanel.STATE_NEW_COLUMNS_IN = 'newColumnsIn';\n BaseDropZonePanel.STATE_REARRANGE_COLUMNS = 'rearrangeColumns';\n __decorate$24([Autowired('columnModel')], BaseDropZonePanel.prototype, \"colModel\", void 0);\n __decorate$24([Autowired('focusService')], BaseDropZonePanel.prototype, \"focusService\", void 0);\n return BaseDropZonePanel;\n}(Component);\nvar __extends$3b = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$23 = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar RowGroupDropZonePanel = /** @class */function (_super) {\n __extends$3b(RowGroupDropZonePanel, _super);\n function RowGroupDropZonePanel(horizontal) {\n return _super.call(this, horizontal, 'rowGroup') || this;\n }\n RowGroupDropZonePanel.prototype.passBeansUp = function () {\n _super.prototype.setBeans.call(this, {\n gridOptionsWrapper: this.gridOptionsWrapper,\n eventService: this.eventService,\n context: this.getContext(),\n loggerFactory: this.loggerFactory,\n dragAndDropService: this.dragAndDropService\n });\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var emptyMessage = localeTextFunc('rowGroupColumnsEmptyMessage', 'Drag here to set row groups');\n var title = localeTextFunc('groups', 'Row Groups');\n _super.prototype.init.call(this, {\n dragAndDropIcon: DragAndDropService.ICON_GROUP,\n icon: _.createIconNoSpan('rowGroupPanel', this.gridOptionsWrapper, null),\n emptyMessage: emptyMessage,\n title: title\n });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.refreshGui.bind(this));\n };\n RowGroupDropZonePanel.prototype.getAriaLabel = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var label = translate('ariaRowGroupDropZonePanelLabel', 'Row Groups');\n return label;\n };\n RowGroupDropZonePanel.prototype.getTooltipParams = function () {\n var res = _super.prototype.getTooltipParams.call(this);\n res.location = 'rowGroupColumnsList';\n return res;\n };\n RowGroupDropZonePanel.prototype.isColumnDroppable = function (column) {\n // we never allow grouping of secondary columns\n if (this.gridOptionsWrapper.isFunctionsReadOnly() || !column.isPrimary()) {\n return false;\n }\n return column.isAllowRowGroup() && !column.isRowGroupActive();\n };\n RowGroupDropZonePanel.prototype.updateColumns = function (columns) {\n if (this.gridOptionsWrapper.isFunctionsPassive()) {\n var event_1 = {\n type: Events.EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST,\n columns: columns\n };\n this.eventService.dispatchEvent(event_1);\n } else {\n this.columnModel.setRowGroupColumns(columns, \"toolPanelUi\");\n }\n };\n RowGroupDropZonePanel.prototype.getIconName = function () {\n return this.isPotentialDndColumns() ? DragAndDropService.ICON_GROUP : DragAndDropService.ICON_NOT_ALLOWED;\n };\n RowGroupDropZonePanel.prototype.getExistingColumns = function () {\n return this.columnModel.getRowGroupColumns();\n };\n __decorate$23([Autowired('columnModel')], RowGroupDropZonePanel.prototype, \"columnModel\", void 0);\n __decorate$23([Autowired('loggerFactory')], RowGroupDropZonePanel.prototype, \"loggerFactory\", void 0);\n __decorate$23([Autowired('dragAndDropService')], RowGroupDropZonePanel.prototype, \"dragAndDropService\", void 0);\n __decorate$23([PostConstruct], RowGroupDropZonePanel.prototype, \"passBeansUp\", null);\n return RowGroupDropZonePanel;\n}(BaseDropZonePanel);\nvar __extends$3a = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$22 = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar PivotDropZonePanel = /** @class */function (_super) {\n __extends$3a(PivotDropZonePanel, _super);\n function PivotDropZonePanel(horizontal) {\n return _super.call(this, horizontal, 'pivot') || this;\n }\n PivotDropZonePanel.prototype.passBeansUp = function () {\n _super.prototype.setBeans.call(this, {\n gridOptionsWrapper: this.gridOptionsWrapper,\n eventService: this.eventService,\n context: this.getContext(),\n loggerFactory: this.loggerFactory,\n dragAndDropService: this.dragAndDropService\n });\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var emptyMessage = localeTextFunc('pivotColumnsEmptyMessage', 'Drag here to set column labels');\n var title = localeTextFunc('pivots', 'Column Labels');\n _super.prototype.init.call(this, {\n dragAndDropIcon: DragAndDropService.ICON_GROUP,\n icon: _.createIconNoSpan('pivotPanel', this.gridOptionsWrapper, null),\n emptyMessage: emptyMessage,\n title: title\n });\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.refresh.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_CHANGED, this.refresh.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.checkVisibility.bind(this));\n this.refresh();\n };\n PivotDropZonePanel.prototype.getAriaLabel = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var label = translate('ariaPivotDropZonePanelLabel', 'Column Labels');\n return label;\n };\n PivotDropZonePanel.prototype.getTooltipParams = function () {\n var res = _super.prototype.getTooltipParams.call(this);\n res.location = 'pivotColumnsList';\n return res;\n };\n PivotDropZonePanel.prototype.refresh = function () {\n this.checkVisibility();\n this.refreshGui();\n };\n PivotDropZonePanel.prototype.checkVisibility = function () {\n var pivotMode = this.columnModel.isPivotMode();\n if (this.isHorizontal()) {\n // what we do for horizontal (ie the pivot panel at the top) depends\n // on the user property as well as pivotMode.\n switch (this.gridOptionsWrapper.getPivotPanelShow()) {\n case 'always':\n this.setDisplayed(pivotMode);\n break;\n case 'onlyWhenPivoting':\n var pivotActive = this.columnModel.isPivotActive();\n this.setDisplayed(pivotMode && pivotActive);\n break;\n default:\n // never show it\n this.setDisplayed(false);\n break;\n }\n } else {\n // in toolPanel, the pivot panel is always shown when pivot mode is on\n this.setDisplayed(pivotMode);\n }\n };\n PivotDropZonePanel.prototype.isColumnDroppable = function (column) {\n // we never allow grouping of secondary columns\n if (this.gridOptionsWrapper.isFunctionsReadOnly() || !column.isPrimary()) {\n return false;\n }\n return column.isAllowPivot() && !column.isPivotActive();\n };\n PivotDropZonePanel.prototype.updateColumns = function (columns) {\n if (this.gridOptionsWrapper.isFunctionsPassive()) {\n var event_1 = {\n type: Events.EVENT_COLUMN_PIVOT_CHANGE_REQUEST,\n columns: columns\n };\n this.eventService.dispatchEvent(event_1);\n } else {\n this.columnModel.setPivotColumns(columns, \"toolPanelUi\");\n }\n };\n PivotDropZonePanel.prototype.getIconName = function () {\n return this.isPotentialDndColumns() ? DragAndDropService.ICON_PIVOT : DragAndDropService.ICON_NOT_ALLOWED;\n };\n PivotDropZonePanel.prototype.getExistingColumns = function () {\n return this.columnModel.getPivotColumns();\n };\n __decorate$22([Autowired('columnModel')], PivotDropZonePanel.prototype, \"columnModel\", void 0);\n __decorate$22([Autowired('loggerFactory')], PivotDropZonePanel.prototype, \"loggerFactory\", void 0);\n __decorate$22([Autowired('dragAndDropService')], PivotDropZonePanel.prototype, \"dragAndDropService\", void 0);\n __decorate$22([PostConstruct], PivotDropZonePanel.prototype, \"passBeansUp\", null);\n return PivotDropZonePanel;\n}(BaseDropZonePanel);\nvar __extends$39 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$21 = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar GridHeaderDropZones = /** @class */function (_super) {\n __extends$39(GridHeaderDropZones, _super);\n function GridHeaderDropZones() {\n return _super.call(this) || this;\n }\n GridHeaderDropZones.prototype.postConstruct = function () {\n this.setGui(this.createNorthPanel());\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.onRowGroupChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onRowGroupChanged.bind(this));\n this.addManagedListener(this.gridOptionsWrapper, 'rowGroupPanelShow', this.onRowGroupChanged.bind(this));\n this.onRowGroupChanged();\n };\n GridHeaderDropZones.prototype.createNorthPanel = function () {\n var topPanelGui = document.createElement('div');\n var dropPanelVisibleListener = this.onDropPanelVisible.bind(this);\n topPanelGui.classList.add('ag-column-drop-wrapper');\n _.setAriaRole(topPanelGui, 'presentation');\n this.rowGroupComp = new RowGroupDropZonePanel(true);\n this.createManagedBean(this.rowGroupComp);\n this.pivotComp = new PivotDropZonePanel(true);\n this.createManagedBean(this.pivotComp);\n topPanelGui.appendChild(this.rowGroupComp.getGui());\n topPanelGui.appendChild(this.pivotComp.getGui());\n this.addManagedListener(this.rowGroupComp, Component.EVENT_DISPLAYED_CHANGED, dropPanelVisibleListener);\n this.addManagedListener(this.pivotComp, Component.EVENT_DISPLAYED_CHANGED, dropPanelVisibleListener);\n this.onDropPanelVisible();\n return topPanelGui;\n };\n GridHeaderDropZones.prototype.onDropPanelVisible = function () {\n var bothDisplayed = this.rowGroupComp.isDisplayed() && this.pivotComp.isDisplayed();\n this.rowGroupComp.addOrRemoveCssClass('ag-column-drop-horizontal-half-width', bothDisplayed);\n this.pivotComp.addOrRemoveCssClass('ag-column-drop-horizontal-half-width', bothDisplayed);\n };\n GridHeaderDropZones.prototype.onRowGroupChanged = function () {\n if (!this.rowGroupComp) {\n return;\n }\n var rowGroupPanelShow = this.gridOptionsWrapper.getRowGroupPanelShow();\n if (rowGroupPanelShow === Constants.ALWAYS) {\n this.rowGroupComp.setDisplayed(true);\n } else if (rowGroupPanelShow === Constants.ONLY_WHEN_GROUPING) {\n var grouping = !this.columnModel.isRowGroupEmpty();\n this.rowGroupComp.setDisplayed(grouping);\n } else {\n this.rowGroupComp.setDisplayed(false);\n }\n };\n __decorate$21([Autowired('columnModel')], GridHeaderDropZones.prototype, \"columnModel\", void 0);\n __decorate$21([PostConstruct], GridHeaderDropZones.prototype, \"postConstruct\", null);\n return GridHeaderDropZones;\n}(Component);\nvar __extends$38 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$20 = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar FilterAggregatesStage = /** @class */function (_super) {\n __extends$38(FilterAggregatesStage, _super);\n function FilterAggregatesStage() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FilterAggregatesStage.prototype.execute = function (params) {\n var _this = this;\n var isPivotMode = this.columnModel.isPivotMode();\n var isAggFilterActive = this.filterManager.isAggregateFilterPresent();\n // This is the default filter for applying only to leaf nodes, realistically this should not apply as primary agg columns,\n // should not be applied by the filterManager if getGroupAggFiltering is missing. Predicate will apply filters to leaf level.\n var defaultPrimaryColumnPredicate = function (params) {\n return !params.node.group;\n };\n // Default secondary column predicate, selecting only leaf level groups.\n var defaultSecondaryColumnPredicate = function (params) {\n return params.node.leafGroup;\n };\n // The predicate to determine whether filters should apply to this row. Either defined by the user in groupAggFiltering or a default depending\n // on current pivot mode status.\n var applyFilterToNode = this.gridOptionsWrapper.getGroupAggFiltering() || (isPivotMode ? defaultSecondaryColumnPredicate : defaultPrimaryColumnPredicate);\n var changedPath = params.changedPath;\n var preserveChildren = function (node, recursive) {\n if (recursive === void 0) {\n recursive = false;\n }\n if (node.childrenAfterFilter) {\n node.childrenAfterAggFilter = node.childrenAfterFilter;\n if (recursive) {\n node.childrenAfterAggFilter.forEach(function (child) {\n return preserveChildren(child, recursive);\n });\n }\n _this.setAllChildrenCount(node);\n }\n if (node.sibling) {\n node.sibling.childrenAfterAggFilter = node.childrenAfterAggFilter;\n }\n };\n var filterChildren = function (node) {\n var _a;\n node.childrenAfterAggFilter = ((_a = node.childrenAfterFilter) === null || _a === void 0 ? void 0 : _a.filter(function (child) {\n var _a;\n var shouldFilterRow = applyFilterToNode({\n node: child\n });\n if (shouldFilterRow) {\n var doesNodePassFilter = _this.filterManager.doesRowPassAggregateFilters({\n rowNode: child\n });\n if (doesNodePassFilter) {\n // Node has passed, so preserve children\n preserveChildren(child, true);\n return true;\n }\n }\n var hasChildPassed = (_a = child.childrenAfterAggFilter) === null || _a === void 0 ? void 0 : _a.length;\n return hasChildPassed;\n })) || null;\n _this.setAllChildrenCount(node);\n if (node.sibling) {\n node.sibling.childrenAfterAggFilter = node.childrenAfterAggFilter;\n }\n };\n changedPath.forEachChangedNodeDepthFirst(isAggFilterActive ? filterChildren : preserveChildren, true);\n };\n FilterAggregatesStage.prototype.setAllChildrenCountTreeData = function (rowNode) {\n // for tree data, we include all children, groups and leafs\n var allChildrenCount = 0;\n rowNode.childrenAfterAggFilter.forEach(function (child) {\n // include child itself\n allChildrenCount++;\n // include children of children\n allChildrenCount += child.allChildrenCount;\n });\n rowNode.setAllChildrenCount(allChildrenCount);\n };\n FilterAggregatesStage.prototype.setAllChildrenCountGridGrouping = function (rowNode) {\n // for grid data, we only count the leafs\n var allChildrenCount = 0;\n rowNode.childrenAfterAggFilter.forEach(function (child) {\n if (child.group) {\n allChildrenCount += child.allChildrenCount;\n } else {\n allChildrenCount++;\n }\n });\n rowNode.setAllChildrenCount(allChildrenCount);\n };\n FilterAggregatesStage.prototype.setAllChildrenCount = function (rowNode) {\n if (!rowNode.hasChildren()) {\n rowNode.setAllChildrenCount(null);\n return;\n }\n if (this.gridOptionsWrapper.isTreeData()) {\n this.setAllChildrenCountTreeData(rowNode);\n } else {\n this.setAllChildrenCountGridGrouping(rowNode);\n }\n };\n __decorate$20([Autowired('filterManager')], FilterAggregatesStage.prototype, \"filterManager\", void 0);\n __decorate$20([Autowired('columnModel')], FilterAggregatesStage.prototype, \"columnModel\", void 0);\n FilterAggregatesStage = __decorate$20([Bean('filterAggregatesStage')], FilterAggregatesStage);\n return FilterAggregatesStage;\n}(BeanStub);\nvar RowGroupingModule = {\n moduleName: ModuleNames.RowGroupingModule,\n beans: [AggregationStage, FilterAggregatesStage, GroupStage, PivotColDefService, PivotStage, AggFuncService],\n agStackComponents: [{\n componentName: 'AgGridHeaderDropZones',\n componentClass: GridHeaderDropZones\n }],\n dependantModules: [EnterpriseCoreModule]\n};\nvar __extends$37 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1$ = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar ValuesDropZonePanel = /** @class */function (_super) {\n __extends$37(ValuesDropZonePanel, _super);\n function ValuesDropZonePanel(horizontal) {\n return _super.call(this, horizontal, 'aggregation') || this;\n }\n ValuesDropZonePanel.prototype.passBeansUp = function () {\n _super.prototype.setBeans.call(this, {\n gridOptionsWrapper: this.gridOptionsWrapper,\n eventService: this.eventService,\n context: this.getContext(),\n loggerFactory: this.loggerFactory,\n dragAndDropService: this.dragAndDropService\n });\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var emptyMessage = localeTextFunc('valueColumnsEmptyMessage', 'Drag here to aggregate');\n var title = localeTextFunc('values', 'Values');\n _super.prototype.init.call(this, {\n dragAndDropIcon: DragAndDropService.ICON_AGGREGATE,\n icon: _.createIconNoSpan('valuePanel', this.gridOptionsWrapper, null),\n emptyMessage: emptyMessage,\n title: title\n });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, this.refreshGui.bind(this));\n };\n ValuesDropZonePanel.prototype.getAriaLabel = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var label = translate('ariaValuesDropZonePanelLabel', 'Values');\n return label;\n };\n ValuesDropZonePanel.prototype.getTooltipParams = function () {\n var res = _super.prototype.getTooltipParams.call(this);\n res.location = 'valueColumnsList';\n return res;\n };\n ValuesDropZonePanel.prototype.getIconName = function () {\n return this.isPotentialDndColumns() ? DragAndDropService.ICON_AGGREGATE : DragAndDropService.ICON_NOT_ALLOWED;\n };\n ValuesDropZonePanel.prototype.isColumnDroppable = function (column) {\n // we never allow grouping of secondary columns\n if (this.gridOptionsWrapper.isFunctionsReadOnly() || !column.isPrimary()) {\n return false;\n }\n return column.isAllowValue() && !column.isValueActive();\n };\n ValuesDropZonePanel.prototype.updateColumns = function (columns) {\n if (this.gridOptionsWrapper.isFunctionsPassive()) {\n var event_1 = {\n type: Events.EVENT_COLUMN_VALUE_CHANGE_REQUEST,\n columns: columns\n };\n this.eventService.dispatchEvent(event_1);\n } else {\n this.columnModel.setValueColumns(columns, \"toolPanelUi\");\n }\n };\n ValuesDropZonePanel.prototype.getExistingColumns = function () {\n return this.columnModel.getValueColumns();\n };\n __decorate$1$([Autowired('columnModel')], ValuesDropZonePanel.prototype, \"columnModel\", void 0);\n __decorate$1$([Autowired('loggerFactory')], ValuesDropZonePanel.prototype, \"loggerFactory\", void 0);\n __decorate$1$([Autowired('dragAndDropService')], ValuesDropZonePanel.prototype, \"dragAndDropService\", void 0);\n __decorate$1$([PostConstruct], ValuesDropZonePanel.prototype, \"passBeansUp\", null);\n return ValuesDropZonePanel;\n}(BaseDropZonePanel);\nvar __extends$36 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1_ = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar PrimaryColsPanel = /** @class */function (_super) {\n __extends$36(PrimaryColsPanel, _super);\n function PrimaryColsPanel() {\n return _super.call(this, PrimaryColsPanel.TEMPLATE) || this;\n }\n PrimaryColsPanel.prototype.postConstruct = function () {\n this.initialiseTabGuard({});\n };\n // we allow dragging in the toolPanel, but not when this component appears in the column menu\n PrimaryColsPanel.prototype.init = function (allowDragging, params, eventType) {\n this.allowDragging = allowDragging;\n this.params = params;\n this.eventType = eventType;\n this.primaryColsHeaderPanel.init(this.params);\n var hideFilter = this.params.suppressColumnFilter;\n var hideSelect = this.params.suppressColumnSelectAll;\n var hideExpand = this.params.suppressColumnExpandAll;\n if (hideExpand && hideFilter && hideSelect) {\n this.primaryColsHeaderPanel.setDisplayed(false);\n }\n this.addManagedListener(this.primaryColsListPanel, 'groupExpanded', this.onGroupExpanded.bind(this));\n this.addManagedListener(this.primaryColsListPanel, 'selectionChanged', this.onSelectionChange.bind(this));\n this.primaryColsListPanel.init(this.params, this.allowDragging, this.eventType);\n this.addManagedListener(this.primaryColsHeaderPanel, 'expandAll', this.onExpandAll.bind(this));\n this.addManagedListener(this.primaryColsHeaderPanel, 'collapseAll', this.onCollapseAll.bind(this));\n this.addManagedListener(this.primaryColsHeaderPanel, 'selectAll', this.onSelectAll.bind(this));\n this.addManagedListener(this.primaryColsHeaderPanel, 'unselectAll', this.onUnselectAll.bind(this));\n this.addManagedListener(this.primaryColsHeaderPanel, 'filterChanged', this.onFilterChanged.bind(this));\n this.positionableFeature = new PositionableFeature(this.getGui(), {\n minHeight: 100\n });\n this.createManagedBean(this.positionableFeature);\n };\n PrimaryColsPanel.prototype.toggleResizable = function (resizable) {\n this.positionableFeature.setResizable(resizable ? {\n bottom: true\n } : false);\n };\n PrimaryColsPanel.prototype.onExpandAll = function () {\n this.primaryColsListPanel.doSetExpandedAll(true);\n };\n PrimaryColsPanel.prototype.onCollapseAll = function () {\n this.primaryColsListPanel.doSetExpandedAll(false);\n };\n PrimaryColsPanel.prototype.expandGroups = function (groupIds) {\n this.primaryColsListPanel.setGroupsExpanded(true, groupIds);\n };\n PrimaryColsPanel.prototype.collapseGroups = function (groupIds) {\n this.primaryColsListPanel.setGroupsExpanded(false, groupIds);\n };\n PrimaryColsPanel.prototype.setColumnLayout = function (colDefs) {\n this.primaryColsListPanel.setColumnLayout(colDefs);\n };\n PrimaryColsPanel.prototype.onFilterChanged = function (event) {\n this.primaryColsListPanel.setFilterText(event.filterText);\n };\n PrimaryColsPanel.prototype.syncLayoutWithGrid = function () {\n this.primaryColsListPanel.onColumnsChanged();\n };\n PrimaryColsPanel.prototype.onSelectAll = function () {\n this.primaryColsListPanel.doSetSelectedAll(true);\n };\n PrimaryColsPanel.prototype.onUnselectAll = function () {\n this.primaryColsListPanel.doSetSelectedAll(false);\n };\n PrimaryColsPanel.prototype.onGroupExpanded = function (event) {\n this.primaryColsHeaderPanel.setExpandState(event.state);\n };\n PrimaryColsPanel.prototype.onSelectionChange = function (event) {\n this.primaryColsHeaderPanel.setSelectionState(event.state);\n };\n PrimaryColsPanel.TEMPLATE = \"
\\n \\n \\n
\";\n __decorate$1_([RefSelector('primaryColsHeaderPanel')], PrimaryColsPanel.prototype, \"primaryColsHeaderPanel\", void 0);\n __decorate$1_([RefSelector('primaryColsListPanel')], PrimaryColsPanel.prototype, \"primaryColsListPanel\", void 0);\n __decorate$1_([PostConstruct], PrimaryColsPanel.prototype, \"postConstruct\", null);\n return PrimaryColsPanel;\n}(TabGuardComp);\nvar __extends$35 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign$G = undefined && undefined.__assign || function () {\n __assign$G = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$G.apply(this, arguments);\n};\nvar __decorate$1Z = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar ColumnToolPanel = /** @class */function (_super) {\n __extends$35(ColumnToolPanel, _super);\n function ColumnToolPanel() {\n var _this = _super.call(this, ColumnToolPanel.TEMPLATE) || this;\n _this.initialised = false;\n _this.childDestroyFuncs = [];\n return _this;\n }\n // lazy initialise the panel\n ColumnToolPanel.prototype.setVisible = function (visible) {\n _super.prototype.setDisplayed.call(this, visible);\n if (visible && !this.initialised) {\n this.init(this.params);\n }\n };\n ColumnToolPanel.prototype.init = function (params) {\n var _this = this;\n var defaultParams = {\n suppressColumnMove: false,\n suppressColumnSelectAll: false,\n suppressColumnFilter: false,\n suppressColumnExpandAll: false,\n contractColumnSelection: false,\n suppressPivotMode: false,\n suppressRowGroups: false,\n suppressValues: false,\n suppressPivots: false,\n suppressSyncLayoutWithGrid: false,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.params = __assign$G(__assign$G(__assign$G({}, defaultParams), params), {\n context: this.gridOptionsWrapper.getContext()\n });\n if (this.isRowGroupingModuleLoaded() && !this.params.suppressPivotMode) {\n // DO NOT CHANGE TO createManagedBean\n this.pivotModePanel = this.createBean(new PivotModePanel());\n this.childDestroyFuncs.push(function () {\n return _this.destroyBean(_this.pivotModePanel);\n });\n this.appendChild(this.pivotModePanel);\n }\n // DO NOT CHANGE TO createManagedBean\n this.primaryColsPanel = this.createBean(new PrimaryColsPanel());\n this.childDestroyFuncs.push(function () {\n return _this.destroyBean(_this.primaryColsPanel);\n });\n this.primaryColsPanel.init(true, this.params, \"toolPanelUi\");\n this.primaryColsPanel.addCssClass('ag-column-panel-column-select');\n this.appendChild(this.primaryColsPanel);\n if (this.isRowGroupingModuleLoaded()) {\n if (!this.params.suppressRowGroups) {\n // DO NOT CHANGE TO createManagedBean\n this.rowGroupDropZonePanel = this.createBean(new RowGroupDropZonePanel(false));\n this.childDestroyFuncs.push(function () {\n return _this.destroyBean(_this.rowGroupDropZonePanel);\n });\n this.appendChild(this.rowGroupDropZonePanel);\n }\n if (!this.params.suppressValues) {\n // DO NOT CHANGE TO createManagedBean\n this.valuesDropZonePanel = this.createBean(new ValuesDropZonePanel(false));\n this.childDestroyFuncs.push(function () {\n return _this.destroyBean(_this.valuesDropZonePanel);\n });\n this.appendChild(this.valuesDropZonePanel);\n }\n if (!this.params.suppressPivots) {\n // DO NOT CHANGE TO createManagedBean\n this.pivotDropZonePanel = this.createBean(new PivotDropZonePanel(false));\n this.childDestroyFuncs.push(function () {\n return _this.destroyBean(_this.pivotDropZonePanel);\n });\n this.appendChild(this.pivotDropZonePanel);\n }\n this.setLastVisible();\n var pivotModeListener_1 = this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, function () {\n _this.resetChildrenHeight();\n _this.setLastVisible();\n });\n this.childDestroyFuncs.push(function () {\n return pivotModeListener_1();\n });\n }\n this.initialised = true;\n };\n ColumnToolPanel.prototype.setPivotModeSectionVisible = function (visible) {\n var _this = this;\n if (!this.isRowGroupingModuleLoaded()) {\n return;\n }\n if (this.pivotModePanel) {\n this.pivotModePanel.setDisplayed(visible);\n } else if (visible) {\n this.pivotModePanel = this.createBean(new PivotModePanel());\n // ensure pivot mode panel is positioned at the top of the columns tool panel\n this.getGui().insertBefore(this.pivotModePanel.getGui(), this.getGui().firstChild);\n this.childDestroyFuncs.push(function () {\n return _this.destroyBean(_this.pivotModePanel);\n });\n }\n this.setLastVisible();\n };\n ColumnToolPanel.prototype.setRowGroupsSectionVisible = function (visible) {\n if (!this.isRowGroupingModuleLoaded()) {\n return;\n }\n if (this.rowGroupDropZonePanel) {\n this.rowGroupDropZonePanel.setDisplayed(visible);\n } else if (visible) {\n this.rowGroupDropZonePanel = this.createManagedBean(new RowGroupDropZonePanel(false));\n this.appendChild(this.rowGroupDropZonePanel);\n }\n this.setLastVisible();\n };\n ColumnToolPanel.prototype.setValuesSectionVisible = function (visible) {\n if (!this.isRowGroupingModuleLoaded()) {\n return;\n }\n if (this.valuesDropZonePanel) {\n this.valuesDropZonePanel.setDisplayed(visible);\n } else if (visible) {\n this.valuesDropZonePanel = this.createManagedBean(new ValuesDropZonePanel(false));\n this.appendChild(this.valuesDropZonePanel);\n }\n this.setLastVisible();\n };\n ColumnToolPanel.prototype.setPivotSectionVisible = function (visible) {\n if (!this.isRowGroupingModuleLoaded()) {\n return;\n }\n if (this.pivotDropZonePanel) {\n this.pivotDropZonePanel.setDisplayed(visible);\n } else if (visible) {\n this.pivotDropZonePanel = this.createManagedBean(new PivotDropZonePanel(false));\n this.appendChild(this.pivotDropZonePanel);\n this.pivotDropZonePanel.setDisplayed(visible);\n }\n this.setLastVisible();\n };\n ColumnToolPanel.prototype.setResizers = function () {\n [this.primaryColsPanel, this.rowGroupDropZonePanel, this.valuesDropZonePanel, this.pivotDropZonePanel].forEach(function (panel) {\n if (!panel) {\n return;\n }\n var eGui = panel.getGui();\n panel.toggleResizable(!eGui.classList.contains('ag-last-column-drop') && !eGui.classList.contains('ag-hidden'));\n });\n };\n ColumnToolPanel.prototype.setLastVisible = function () {\n var eGui = this.getGui();\n var columnDrops = Array.prototype.slice.call(eGui.querySelectorAll('.ag-column-drop'));\n columnDrops.forEach(function (columnDrop) {\n return columnDrop.classList.remove('ag-last-column-drop');\n });\n var columnDropEls = eGui.querySelectorAll('.ag-column-drop:not(.ag-hidden)');\n var lastVisible = _.last(columnDropEls);\n if (lastVisible) {\n lastVisible.classList.add('ag-last-column-drop');\n }\n this.setResizers();\n };\n ColumnToolPanel.prototype.resetChildrenHeight = function () {\n var eGui = this.getGui();\n var children = eGui.children;\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n child.style.removeProperty('height');\n child.style.removeProperty('flex');\n }\n };\n ColumnToolPanel.prototype.isRowGroupingModuleLoaded = function () {\n return ModuleRegistry.assertRegistered(ModuleNames.RowGroupingModule, 'Row Grouping');\n };\n ColumnToolPanel.prototype.expandColumnGroups = function (groupIds) {\n this.primaryColsPanel.expandGroups(groupIds);\n };\n ColumnToolPanel.prototype.collapseColumnGroups = function (groupIds) {\n this.primaryColsPanel.collapseGroups(groupIds);\n };\n ColumnToolPanel.prototype.setColumnLayout = function (colDefs) {\n this.primaryColsPanel.setColumnLayout(colDefs);\n };\n ColumnToolPanel.prototype.syncLayoutWithGrid = function () {\n this.primaryColsPanel.syncLayoutWithGrid();\n };\n ColumnToolPanel.prototype.destroyChildren = function () {\n this.childDestroyFuncs.forEach(function (func) {\n return func();\n });\n this.childDestroyFuncs.length = 0;\n _.clearElement(this.getGui());\n };\n ColumnToolPanel.prototype.refresh = function () {\n this.destroyChildren();\n this.init(this.params);\n };\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so this must be public.\n ColumnToolPanel.prototype.destroy = function () {\n this.destroyChildren();\n _super.prototype.destroy.call(this);\n };\n ColumnToolPanel.TEMPLATE = \"
\";\n __decorate$1Z([Autowired(\"gridApi\")], ColumnToolPanel.prototype, \"gridApi\", void 0);\n __decorate$1Z([Autowired(\"columnApi\")], ColumnToolPanel.prototype, \"columnApi\", void 0);\n return ColumnToolPanel;\n}(Component);\nvar __extends$34 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1Y = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar HorizontalResizeComp = /** @class */function (_super) {\n __extends$34(HorizontalResizeComp, _super);\n function HorizontalResizeComp() {\n var _this = _super.call(this, /* html */\"
\") || this;\n _this.minWidth = 100;\n _this.maxWidth = null;\n return _this;\n }\n HorizontalResizeComp.prototype.setElementToResize = function (elementToResize) {\n this.elementToResize = elementToResize;\n };\n HorizontalResizeComp.prototype.postConstruct = function () {\n var finishedWithResizeFunc = this.horizontalResizeService.addResizeBar({\n eResizeBar: this.getGui(),\n dragStartPixels: 1,\n onResizeStart: this.onResizeStart.bind(this),\n onResizing: this.onResizing.bind(this),\n onResizeEnd: this.onResizeEnd.bind(this)\n });\n this.addDestroyFunc(finishedWithResizeFunc);\n this.setInverted(this.gridOptionsWrapper.isEnableRtl());\n };\n HorizontalResizeComp.prototype.dispatchResizeEvent = function (start, end, width) {\n var event = {\n type: Events.EVENT_TOOL_PANEL_SIZE_CHANGED,\n width: width,\n started: start,\n ended: end\n };\n this.eventService.dispatchEvent(event);\n };\n HorizontalResizeComp.prototype.onResizeStart = function () {\n this.startingWidth = this.elementToResize.offsetWidth;\n this.dispatchResizeEvent(true, false, this.startingWidth);\n };\n HorizontalResizeComp.prototype.onResizeEnd = function (delta) {\n return this.onResizing(delta, true);\n };\n HorizontalResizeComp.prototype.onResizing = function (delta, isEnd) {\n if (isEnd === void 0) {\n isEnd = false;\n }\n var direction = this.inverted ? -1 : 1;\n var newWidth = Math.max(this.minWidth, Math.floor(this.startingWidth - delta * direction));\n if (this.maxWidth != null) {\n newWidth = Math.min(this.maxWidth, newWidth);\n }\n this.elementToResize.style.width = newWidth + \"px\";\n this.dispatchResizeEvent(false, isEnd, newWidth);\n };\n HorizontalResizeComp.prototype.setInverted = function (inverted) {\n this.inverted = inverted;\n };\n HorizontalResizeComp.prototype.setMaxWidth = function (value) {\n this.maxWidth = value;\n };\n HorizontalResizeComp.prototype.setMinWidth = function (value) {\n if (value != null) {\n this.minWidth = value;\n } else {\n this.minWidth = 100;\n }\n };\n __decorate$1Y([Autowired('horizontalResizeService')], HorizontalResizeComp.prototype, \"horizontalResizeService\", void 0);\n __decorate$1Y([PostConstruct], HorizontalResizeComp.prototype, \"postConstruct\", null);\n return HorizontalResizeComp;\n}(Component);\nvar __extends$33 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1X = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar SideBarButtonComp = /** @class */function (_super) {\n __extends$33(SideBarButtonComp, _super);\n function SideBarButtonComp(toolPanelDef) {\n var _this = _super.call(this) || this;\n _this.toolPanelDef = toolPanelDef;\n return _this;\n }\n SideBarButtonComp.prototype.getToolPanelId = function () {\n return this.toolPanelDef.id;\n };\n SideBarButtonComp.prototype.postConstruct = function () {\n var template = this.createTemplate();\n this.setTemplate(template);\n this.setLabel();\n this.setIcon();\n this.addManagedListener(this.eToggleButton, 'click', this.onButtonPressed.bind(this));\n };\n SideBarButtonComp.prototype.createTemplate = function () {\n var res = /* html */\"
\\n \\n
\";\n return res;\n };\n SideBarButtonComp.prototype.setLabel = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var def = this.toolPanelDef;\n var label = translate(def.labelKey, def.labelDefault);\n this.eLabel.innerText = label;\n };\n SideBarButtonComp.prototype.setIcon = function () {\n this.eIconWrapper.insertAdjacentElement('afterbegin', _.createIconNoSpan(this.toolPanelDef.iconKey, this.gridOptionsWrapper));\n };\n SideBarButtonComp.prototype.onButtonPressed = function () {\n this.dispatchEvent({\n type: SideBarButtonComp.EVENT_TOGGLE_BUTTON_CLICKED\n });\n };\n SideBarButtonComp.prototype.setSelected = function (selected) {\n this.addOrRemoveCssClass('ag-selected', selected);\n };\n SideBarButtonComp.EVENT_TOGGLE_BUTTON_CLICKED = 'toggleButtonClicked';\n __decorate$1X([RefSelector('eToggleButton')], SideBarButtonComp.prototype, \"eToggleButton\", void 0);\n __decorate$1X([RefSelector('eIconWrapper')], SideBarButtonComp.prototype, \"eIconWrapper\", void 0);\n __decorate$1X([RefSelector('eLabel')], SideBarButtonComp.prototype, \"eLabel\", void 0);\n __decorate$1X([PostConstruct], SideBarButtonComp.prototype, \"postConstruct\", null);\n return SideBarButtonComp;\n}(Component);\nvar __extends$32 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1W = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar SideBarButtonsComp = /** @class */function (_super) {\n __extends$32(SideBarButtonsComp, _super);\n function SideBarButtonsComp() {\n var _this = _super.call(this, SideBarButtonsComp.TEMPLATE) || this;\n _this.buttonComps = [];\n return _this;\n }\n SideBarButtonsComp.prototype.postConstruct = function () {\n this.addManagedListener(this.getFocusableElement(), 'keydown', this.handleKeyDown.bind(this));\n };\n SideBarButtonsComp.prototype.handleKeyDown = function (e) {\n if (e.key !== KeyCode.TAB || !e.shiftKey) {\n return;\n }\n var lastColumn = _.last(this.columnModel.getAllDisplayedColumns());\n if (this.focusService.focusGridView(lastColumn, true)) {\n e.preventDefault();\n }\n };\n SideBarButtonsComp.prototype.setToolPanelDefs = function (toolPanelDefs) {\n toolPanelDefs.forEach(this.addButtonComp.bind(this));\n };\n SideBarButtonsComp.prototype.setActiveButton = function (id) {\n this.buttonComps.forEach(function (comp) {\n comp.setSelected(id === comp.getToolPanelId());\n });\n };\n SideBarButtonsComp.prototype.addButtonComp = function (def) {\n var _this = this;\n var buttonComp = this.createBean(new SideBarButtonComp(def));\n this.buttonComps.push(buttonComp);\n this.appendChild(buttonComp);\n buttonComp.addEventListener(SideBarButtonComp.EVENT_TOGGLE_BUTTON_CLICKED, function () {\n _this.dispatchEvent({\n type: SideBarButtonsComp.EVENT_SIDE_BAR_BUTTON_CLICKED,\n toolPanelId: def.id\n });\n });\n };\n SideBarButtonsComp.prototype.clearButtons = function () {\n this.buttonComps = this.destroyBeans(this.buttonComps);\n _.clearElement(this.getGui());\n };\n SideBarButtonsComp.EVENT_SIDE_BAR_BUTTON_CLICKED = 'sideBarButtonClicked';\n SideBarButtonsComp.TEMPLATE = \"
\";\n __decorate$1W([Autowired('focusService')], SideBarButtonsComp.prototype, \"focusService\", void 0);\n __decorate$1W([Autowired('columnModel')], SideBarButtonsComp.prototype, \"columnModel\", void 0);\n __decorate$1W([PostConstruct], SideBarButtonsComp.prototype, \"postConstruct\", null);\n __decorate$1W([PreDestroy], SideBarButtonsComp.prototype, \"clearButtons\", null);\n return SideBarButtonsComp;\n}(Component);\nvar __extends$31 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1V = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar ToolPanelWrapper = /** @class */function (_super) {\n __extends$31(ToolPanelWrapper, _super);\n function ToolPanelWrapper() {\n return _super.call(this, ToolPanelWrapper.TEMPLATE) || this;\n }\n ToolPanelWrapper.prototype.setupResize = function () {\n var eGui = this.getGui();\n var resizeBar = this.resizeBar = this.createManagedBean(new HorizontalResizeComp());\n resizeBar.setElementToResize(eGui);\n this.appendChild(resizeBar);\n };\n ToolPanelWrapper.prototype.getToolPanelId = function () {\n return this.toolPanelId;\n };\n ToolPanelWrapper.prototype.setToolPanelDef = function (toolPanelDef) {\n var id = toolPanelDef.id,\n minWidth = toolPanelDef.minWidth,\n maxWidth = toolPanelDef.maxWidth,\n width = toolPanelDef.width;\n this.toolPanelId = id;\n this.width = width;\n var params = {};\n var compDetails = this.userComponentFactory.getToolPanelCompDetails(toolPanelDef, params);\n var componentPromise = compDetails.newAgStackInstance();\n if (componentPromise == null) {\n console.warn(\"AG Grid: error processing tool panel component \" + id + \". You need to specify either 'toolPanel' or 'toolPanelFramework'\");\n return;\n }\n componentPromise.then(this.setToolPanelComponent.bind(this));\n if (minWidth != null) {\n this.resizeBar.setMinWidth(minWidth);\n }\n if (maxWidth != null) {\n this.resizeBar.setMaxWidth(maxWidth);\n }\n };\n ToolPanelWrapper.prototype.setToolPanelComponent = function (compInstance) {\n var _this = this;\n this.toolPanelCompInstance = compInstance;\n this.appendChild(compInstance.getGui());\n this.addDestroyFunc(function () {\n _this.destroyBean(compInstance);\n });\n if (this.width) {\n this.getGui().style.width = this.width + \"px\";\n }\n };\n ToolPanelWrapper.prototype.getToolPanelInstance = function () {\n return this.toolPanelCompInstance;\n };\n ToolPanelWrapper.prototype.setResizerSizerSide = function (side) {\n var isRtl = this.gridOptionsWrapper.isEnableRtl();\n var isLeft = side === 'left';\n var inverted = isRtl ? isLeft : !isLeft;\n this.resizeBar.setInverted(inverted);\n };\n ToolPanelWrapper.prototype.refresh = function () {\n this.toolPanelCompInstance.refresh();\n };\n ToolPanelWrapper.TEMPLATE = \"
\";\n __decorate$1V([Autowired(\"userComponentFactory\")], ToolPanelWrapper.prototype, \"userComponentFactory\", void 0);\n __decorate$1V([PostConstruct], ToolPanelWrapper.prototype, \"setupResize\", null);\n return ToolPanelWrapper;\n}(Component);\nvar __extends$30 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1U = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar SideBarComp = /** @class */function (_super) {\n __extends$30(SideBarComp, _super);\n function SideBarComp() {\n var _this = _super.call(this, SideBarComp.TEMPLATE) || this;\n _this.toolPanelWrappers = [];\n return _this;\n }\n SideBarComp.prototype.postConstruct = function () {\n var _this = this;\n this.sideBarButtonsComp.addEventListener(SideBarButtonsComp.EVENT_SIDE_BAR_BUTTON_CLICKED, this.onToolPanelButtonClicked.bind(this));\n this.setSideBarDef();\n this.gridOptionsWrapper.addEventListener('sideBar', function () {\n _this.clearDownUi();\n _this.setSideBarDef();\n });\n this.gridApi.registerSideBarComp(this);\n this.createManagedBean(new ManagedFocusFeature(this.getFocusableElement(), {\n onTabKeyDown: this.onTabKeyDown.bind(this),\n handleKeyDown: this.handleKeyDown.bind(this)\n }));\n };\n SideBarComp.prototype.onTabKeyDown = function (e) {\n if (e.defaultPrevented) {\n return;\n }\n var _a = this,\n focusService = _a.focusService,\n sideBarButtonsComp = _a.sideBarButtonsComp;\n var eGui = this.getGui();\n var sideBarGui = sideBarButtonsComp.getGui();\n var eDocument = this.gridOptionsWrapper.getDocument();\n var activeElement = eDocument.activeElement;\n var openPanel = eGui.querySelector('.ag-tool-panel-wrapper:not(.ag-hidden)');\n if (!openPanel) {\n return;\n }\n if (sideBarGui.contains(activeElement)) {\n if (focusService.focusInto(openPanel, e.shiftKey)) {\n e.preventDefault();\n }\n } else {\n if (!focusService.isFocusUnderManagedComponent(openPanel) && e.shiftKey) {\n var firstFocusableEl = focusService.findFocusableElements(openPanel)[0];\n var eDocument_1 = this.gridOptionsWrapper.getDocument();\n if (eDocument_1.activeElement === firstFocusableEl) {\n var selectedButton = sideBarGui.querySelector('.ag-selected button');\n if (selectedButton) {\n e.preventDefault();\n selectedButton.focus();\n }\n }\n }\n }\n };\n SideBarComp.prototype.handleKeyDown = function (e) {\n var eDocument = this.gridOptionsWrapper.getDocument();\n if (!this.sideBarButtonsComp.getGui().contains(eDocument.activeElement)) {\n return;\n }\n var sideBarGui = this.sideBarButtonsComp.getGui();\n var buttons = Array.prototype.slice.call(sideBarGui.querySelectorAll('.ag-side-button'));\n var currentButton = eDocument.activeElement;\n var currentPos = buttons.findIndex(function (button) {\n return button.contains(currentButton);\n });\n var nextPos = null;\n switch (e.key) {\n case KeyCode.LEFT:\n case KeyCode.UP:\n nextPos = Math.max(0, currentPos - 1);\n break;\n case KeyCode.RIGHT:\n case KeyCode.DOWN:\n nextPos = Math.min(currentPos + 1, buttons.length - 1);\n break;\n }\n if (nextPos === null) {\n return;\n }\n var innerButton = buttons[nextPos].querySelector('button');\n if (innerButton) {\n innerButton.focus();\n e.preventDefault();\n }\n };\n SideBarComp.prototype.onToolPanelButtonClicked = function (event) {\n var id = event.toolPanelId;\n var openedItem = this.openedItem();\n // if item was already open, we close it\n if (openedItem === id) {\n this.openToolPanel(undefined); // passing undefined closes\n } else {\n this.openToolPanel(id);\n }\n };\n SideBarComp.prototype.clearDownUi = function () {\n this.sideBarButtonsComp.clearButtons();\n this.destroyToolPanelWrappers();\n };\n SideBarComp.prototype.setSideBarDef = function () {\n // initially hide side bar\n this.setDisplayed(false);\n var sideBar = this.gridOptionsWrapper.getSideBar();\n var sideBarExists = !!sideBar && !!sideBar.toolPanels;\n if (!sideBarExists) {\n return;\n }\n var shouldDisplaySideBar = sideBarExists && !sideBar.hiddenByDefault;\n this.setDisplayed(shouldDisplaySideBar);\n var toolPanelDefs = sideBar.toolPanels;\n this.sideBarButtonsComp.setToolPanelDefs(toolPanelDefs);\n this.setupToolPanels(toolPanelDefs);\n this.setSideBarPosition(sideBar.position);\n if (!sideBar.hiddenByDefault) {\n this.openToolPanel(sideBar.defaultToolPanel);\n }\n };\n SideBarComp.prototype.setSideBarPosition = function (position) {\n if (!position) {\n position = 'right';\n }\n var isLeft = position === 'left';\n var resizerSide = isLeft ? 'right' : 'left';\n this.addOrRemoveCssClass('ag-side-bar-left', isLeft);\n this.addOrRemoveCssClass('ag-side-bar-right', !isLeft);\n this.toolPanelWrappers.forEach(function (wrapper) {\n wrapper.setResizerSizerSide(resizerSide);\n });\n return this;\n };\n SideBarComp.prototype.setupToolPanels = function (defs) {\n var _this = this;\n defs.forEach(function (def) {\n if (def.id == null) {\n console.warn(\"AG Grid: please review all your toolPanel components, it seems like at least one of them doesn't have an id\");\n return;\n }\n // helpers, in case user doesn't have the right module loaded\n if (def.toolPanel === 'agColumnsToolPanel') {\n var moduleMissing = !ModuleRegistry.assertRegistered(ModuleNames.ColumnToolPanelModule, 'Column Tool Panel');\n if (moduleMissing) {\n return;\n }\n }\n if (def.toolPanel === 'agFiltersToolPanel') {\n var moduleMissing = !ModuleRegistry.assertRegistered(ModuleNames.FiltersToolPanelModule, 'Filters Tool Panel');\n if (moduleMissing) {\n return;\n }\n }\n var wrapper = new ToolPanelWrapper();\n _this.getContext().createBean(wrapper);\n wrapper.setToolPanelDef(def);\n wrapper.setDisplayed(false);\n _this.getGui().appendChild(wrapper.getGui());\n _this.toolPanelWrappers.push(wrapper);\n });\n };\n SideBarComp.prototype.refresh = function () {\n this.toolPanelWrappers.forEach(function (wrapper) {\n return wrapper.refresh();\n });\n };\n SideBarComp.prototype.openToolPanel = function (key) {\n var currentlyOpenedKey = this.openedItem();\n if (currentlyOpenedKey === key) {\n return;\n }\n this.toolPanelWrappers.forEach(function (wrapper) {\n var show = key === wrapper.getToolPanelId();\n wrapper.setDisplayed(show);\n });\n var newlyOpenedKey = this.openedItem();\n var openToolPanelChanged = currentlyOpenedKey !== newlyOpenedKey;\n if (openToolPanelChanged) {\n this.sideBarButtonsComp.setActiveButton(key);\n this.raiseToolPanelVisibleEvent(key);\n }\n };\n SideBarComp.prototype.getToolPanelInstance = function (key) {\n var toolPanelWrapper = this.toolPanelWrappers.filter(function (toolPanel) {\n return toolPanel.getToolPanelId() === key;\n })[0];\n if (!toolPanelWrapper) {\n console.warn(\"AG Grid: unable to lookup Tool Panel as invalid key supplied: \" + key);\n return;\n }\n return toolPanelWrapper.getToolPanelInstance();\n };\n SideBarComp.prototype.raiseToolPanelVisibleEvent = function (key) {\n var event = {\n type: Events.EVENT_TOOL_PANEL_VISIBLE_CHANGED,\n source: key\n };\n this.eventService.dispatchEvent(event);\n };\n SideBarComp.prototype.close = function () {\n this.openToolPanel(undefined);\n };\n SideBarComp.prototype.isToolPanelShowing = function () {\n return !!this.openedItem();\n };\n SideBarComp.prototype.openedItem = function () {\n var activeToolPanel = null;\n this.toolPanelWrappers.forEach(function (wrapper) {\n if (wrapper.isDisplayed()) {\n activeToolPanel = wrapper.getToolPanelId();\n }\n });\n return activeToolPanel;\n };\n SideBarComp.prototype.destroyToolPanelWrappers = function () {\n var _this = this;\n this.toolPanelWrappers.forEach(function (wrapper) {\n _.removeFromParent(wrapper.getGui());\n _this.destroyBean(wrapper);\n });\n this.toolPanelWrappers.length = 0;\n };\n SideBarComp.prototype.destroy = function () {\n this.destroyToolPanelWrappers();\n _super.prototype.destroy.call(this);\n };\n SideBarComp.TEMPLATE = \"
\\n \\n
\";\n __decorate$1U([Autowired('gridApi')], SideBarComp.prototype, \"gridApi\", void 0);\n __decorate$1U([Autowired('focusService')], SideBarComp.prototype, \"focusService\", void 0);\n __decorate$1U([RefSelector('sideBarButtons')], SideBarComp.prototype, \"sideBarButtonsComp\", void 0);\n __decorate$1U([PostConstruct], SideBarComp.prototype, \"postConstruct\", null);\n return SideBarComp;\n}(Component);\nvar __extends$2$ = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1T = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar ToolPanelColDefService = /** @class */function (_super) {\n __extends$2$(ToolPanelColDefService, _super);\n function ToolPanelColDefService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.isColGroupDef = function (colDef) {\n return colDef && typeof colDef.children !== 'undefined';\n };\n _this.getId = function (colDef) {\n return _this.isColGroupDef(colDef) ? colDef.groupId : colDef.colId;\n };\n return _this;\n }\n ToolPanelColDefService.prototype.createColumnTree = function (colDefs) {\n var _this = this;\n var invalidColIds = [];\n var createDummyColGroup = function (abstractColDef, depth) {\n if (_this.isColGroupDef(abstractColDef)) {\n // creating 'dummy' group which is not associated with grid column group\n var groupDef = abstractColDef;\n var groupId = typeof groupDef.groupId !== 'undefined' ? groupDef.groupId : groupDef.headerName;\n var group = new ProvidedColumnGroup(groupDef, groupId, false, depth);\n var children_1 = [];\n groupDef.children.forEach(function (def) {\n var child = createDummyColGroup(def, depth + 1);\n // check column exists in case invalid colDef is supplied for primary column\n if (child) {\n children_1.push(child);\n }\n });\n group.setChildren(children_1);\n return group;\n } else {\n var colDef = abstractColDef;\n var key = colDef.colId ? colDef.colId : colDef.field;\n var column = _this.columnModel.getPrimaryColumn(key);\n if (!column) {\n invalidColIds.push(colDef);\n }\n return column;\n }\n };\n var mappedResults = [];\n colDefs.forEach(function (colDef) {\n var result = createDummyColGroup(colDef, 0);\n if (result) {\n // only return correctly mapped colDef results\n mappedResults.push(result);\n }\n });\n if (invalidColIds.length > 0) {\n console.warn('AG Grid: unable to find grid columns for the supplied colDef(s):', invalidColIds);\n }\n return mappedResults;\n };\n ToolPanelColDefService.prototype.syncLayoutWithGrid = function (syncLayoutCallback) {\n // extract ordered list of leaf path trees (column group hierarchy for each individual leaf column)\n var leafPathTrees = this.getLeafPathTrees();\n // merge leaf path tree taking split column groups into account\n var mergedColumnTrees = this.mergeLeafPathTrees(leafPathTrees);\n // sync layout with merged column trees\n syncLayoutCallback(mergedColumnTrees);\n };\n ToolPanelColDefService.prototype.getLeafPathTrees = function () {\n // leaf tree paths are obtained by walking up the tree starting at a column until we reach the top level group.\n var getLeafPathTree = function (node, childDef) {\n var leafPathTree;\n // build up tree in reverse order\n if (node instanceof ProvidedColumnGroup) {\n if (node.isPadding()) {\n // skip over padding groups\n leafPathTree = childDef;\n } else {\n var groupDef = Object.assign({}, node.getColGroupDef());\n // ensure group contains groupId\n groupDef.groupId = node.getGroupId();\n groupDef.children = [childDef];\n leafPathTree = groupDef;\n }\n } else {\n var colDef = Object.assign({}, node.getColDef());\n // ensure col contains colId\n colDef.colId = node.getColId();\n leafPathTree = colDef;\n }\n // walk tree\n var parent = node.getOriginalParent();\n if (parent) {\n // keep walking up the tree until we reach the root\n return getLeafPathTree(parent, leafPathTree);\n } else {\n // we have reached the root - exit with resulting leaf path tree\n return leafPathTree;\n }\n };\n // obtain a sorted list of all grid columns\n var allGridColumns = this.columnModel.getAllGridColumns();\n // only primary columns and non row group columns should appear in the tool panel\n var allPrimaryGridColumns = allGridColumns.filter(function (column) {\n var colDef = column.getColDef();\n return column.isPrimary() && !colDef.showRowGroup;\n });\n // construct a leaf path tree for each column\n return allPrimaryGridColumns.map(function (col) {\n return getLeafPathTree(col, col.getColDef());\n });\n };\n ToolPanelColDefService.prototype.mergeLeafPathTrees = function (leafPathTrees) {\n var _this = this;\n var matchingRootGroupIds = function (pathA, pathB) {\n var bothPathsAreGroups = _this.isColGroupDef(pathA) && _this.isColGroupDef(pathB);\n return bothPathsAreGroups && _this.getId(pathA) === _this.getId(pathB);\n };\n var mergeTrees = function (treeA, treeB) {\n if (!_this.isColGroupDef(treeB)) {\n return treeA;\n }\n var mergeResult = treeA;\n var groupToMerge = treeB;\n if (groupToMerge.children && groupToMerge.groupId) {\n var added = _this.addChildrenToGroup(mergeResult, groupToMerge.groupId, groupToMerge.children[0]);\n if (added) {\n return mergeResult;\n }\n }\n groupToMerge.children.forEach(function (child) {\n return mergeTrees(mergeResult, child);\n });\n return mergeResult;\n };\n // we can't just merge the leaf path trees as groups can be split apart - instead only merge if leaf\n // path groups with the same root group id are contiguous.\n var mergeColDefs = [];\n for (var i = 1; i <= leafPathTrees.length; i++) {\n var first = leafPathTrees[i - 1];\n var second = leafPathTrees[i];\n if (matchingRootGroupIds(first, second)) {\n leafPathTrees[i] = mergeTrees(first, second);\n } else {\n mergeColDefs.push(first);\n }\n }\n return mergeColDefs;\n };\n ToolPanelColDefService.prototype.addChildrenToGroup = function (tree, groupId, colDef) {\n var _this = this;\n var subGroupIsSplit = function (currentSubGroup, currentSubGroupToAdd) {\n var existingChildIds = currentSubGroup.children.map(_this.getId);\n var childGroupAlreadyExists = _.includes(existingChildIds, _this.getId(currentSubGroupToAdd));\n var lastChild = _.last(currentSubGroup.children);\n var lastChildIsDifferent = lastChild && _this.getId(lastChild) !== _this.getId(currentSubGroupToAdd);\n return childGroupAlreadyExists && lastChildIsDifferent;\n };\n if (!this.isColGroupDef(tree)) {\n return true;\n }\n var currentGroup = tree;\n var groupToAdd = colDef;\n if (subGroupIsSplit(currentGroup, groupToAdd)) {\n currentGroup.children.push(groupToAdd);\n return true;\n }\n if (currentGroup.groupId === groupId) {\n // add children that don't already exist to group\n var existingChildIds = currentGroup.children.map(this.getId);\n var colDefAlreadyPresent = _.includes(existingChildIds, this.getId(groupToAdd));\n if (!colDefAlreadyPresent) {\n currentGroup.children.push(groupToAdd);\n return true;\n }\n }\n // recurse until correct group is found to add children\n currentGroup.children.forEach(function (subGroup) {\n return _this.addChildrenToGroup(subGroup, groupId, colDef);\n });\n return false;\n };\n __decorate$1T([Autowired('columnModel')], ToolPanelColDefService.prototype, \"columnModel\", void 0);\n ToolPanelColDefService = __decorate$1T([Bean('toolPanelColDefService')], ToolPanelColDefService);\n return ToolPanelColDefService;\n}(BeanStub);\nvar SideBarModule = {\n moduleName: ModuleNames.SideBarModule,\n beans: [ToolPanelColDefService],\n agStackComponents: [{\n componentName: 'AgHorizontalResize',\n componentClass: HorizontalResizeComp\n }, {\n componentName: 'AgSideBar',\n componentClass: SideBarComp\n }, {\n componentName: 'AgSideBarButtons',\n componentClass: SideBarButtonsComp\n }],\n dependantModules: [EnterpriseCoreModule]\n};\nvar __decorate$1S = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar ModelItemUtils = /** @class */function () {\n function ModelItemUtils() {}\n ModelItemUtils.prototype.selectAllChildren = function (colTree, selectAllChecked, eventType) {\n var cols = this.extractAllLeafColumns(colTree);\n this.setAllColumns(cols, selectAllChecked, eventType);\n };\n ModelItemUtils.prototype.setColumn = function (col, selectAllChecked, eventType) {\n this.setAllColumns([col], selectAllChecked, eventType);\n };\n ModelItemUtils.prototype.setAllColumns = function (cols, selectAllChecked, eventType) {\n if (this.columnModel.isPivotMode()) {\n this.setAllPivot(cols, selectAllChecked, eventType);\n } else {\n this.setAllVisible(cols, selectAllChecked, eventType);\n }\n };\n ModelItemUtils.prototype.extractAllLeafColumns = function (allItems) {\n var res = [];\n var recursiveFunc = function (items) {\n items.forEach(function (item) {\n if (!item.isPassesFilter()) {\n return;\n }\n if (item.isGroup()) {\n recursiveFunc(item.getChildren());\n } else {\n res.push(item.getColumn());\n }\n });\n };\n recursiveFunc(allItems);\n return res;\n };\n ModelItemUtils.prototype.setAllVisible = function (columns, visible, eventType) {\n var colStateItems = [];\n columns.forEach(function (col) {\n if (col.getColDef().lockVisible) {\n return;\n }\n if (col.isVisible() != visible) {\n colStateItems.push({\n colId: col.getId(),\n hide: !visible\n });\n }\n });\n if (colStateItems.length > 0) {\n this.columnModel.applyColumnState({\n state: colStateItems\n }, eventType);\n }\n };\n ModelItemUtils.prototype.setAllPivot = function (columns, value, eventType) {\n if (this.gridOptionsWrapper.isFunctionsPassive()) {\n this.setAllPivotPassive(columns, value);\n } else {\n this.setAllPivotActive(columns, value, eventType);\n }\n };\n ModelItemUtils.prototype.setAllPivotPassive = function (columns, value) {\n var copyOfPivotColumns = this.columnModel.getPivotColumns().slice();\n var copyOfValueColumns = this.columnModel.getValueColumns().slice();\n var copyOfRowGroupColumns = this.columnModel.getRowGroupColumns().slice();\n var pivotChanged = false;\n var valueChanged = false;\n var rowGroupChanged = false;\n var turnOnAction = function (col) {\n // don't change any column that's already got a function active\n if (col.isAnyFunctionActive()) {\n return;\n }\n if (col.isAllowValue()) {\n copyOfValueColumns.push(col);\n valueChanged = true;\n } else if (col.isAllowRowGroup()) {\n copyOfRowGroupColumns.push(col);\n pivotChanged = true;\n } else if (col.isAllowPivot()) {\n copyOfPivotColumns.push(col);\n rowGroupChanged = true;\n }\n };\n var turnOffAction = function (col) {\n if (!col.isAnyFunctionActive()) {\n return;\n }\n if (copyOfPivotColumns.indexOf(col) >= 0) {\n _.removeFromArray(copyOfPivotColumns, col);\n pivotChanged = true;\n }\n if (copyOfValueColumns.indexOf(col) >= 0) {\n _.removeFromArray(copyOfValueColumns, col);\n valueChanged = true;\n }\n if (copyOfRowGroupColumns.indexOf(col) >= 0) {\n _.removeFromArray(copyOfRowGroupColumns, col);\n rowGroupChanged = true;\n }\n };\n var action = value ? turnOnAction : turnOffAction;\n columns.forEach(action);\n if (pivotChanged) {\n var event_1 = {\n type: Events.EVENT_COLUMN_PIVOT_CHANGE_REQUEST,\n columns: copyOfPivotColumns\n };\n this.eventService.dispatchEvent(event_1);\n }\n if (rowGroupChanged) {\n var event_2 = {\n type: Events.EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST,\n columns: copyOfRowGroupColumns\n };\n this.eventService.dispatchEvent(event_2);\n }\n if (valueChanged) {\n var event_3 = {\n type: Events.EVENT_COLUMN_VALUE_CHANGE_REQUEST,\n columns: copyOfRowGroupColumns\n };\n this.eventService.dispatchEvent(event_3);\n }\n };\n ModelItemUtils.prototype.setAllPivotActive = function (columns, value, eventType) {\n var _this = this;\n var colStateItems = [];\n var turnOnAction = function (col) {\n // don't change any column that's already got a function active\n if (col.isAnyFunctionActive()) {\n return;\n }\n if (col.isAllowValue()) {\n var aggFunc = typeof col.getAggFunc() === 'string' ? col.getAggFunc() : _this.aggFuncService.getDefaultAggFunc(col);\n colStateItems.push({\n colId: col.getId(),\n aggFunc: aggFunc\n });\n } else if (col.isAllowRowGroup()) {\n colStateItems.push({\n colId: col.getId(),\n rowGroup: true\n });\n } else if (col.isAllowPivot()) {\n colStateItems.push({\n colId: col.getId(),\n pivot: true\n });\n }\n };\n var turnOffAction = function (col) {\n var isActive = col.isPivotActive() || col.isRowGroupActive() || col.isValueActive();\n if (isActive) {\n colStateItems.push({\n colId: col.getId(),\n pivot: false,\n rowGroup: false,\n aggFunc: null\n });\n }\n };\n var action = value ? turnOnAction : turnOffAction;\n columns.forEach(action);\n if (colStateItems.length > 0) {\n this.columnModel.applyColumnState({\n state: colStateItems\n }, eventType);\n }\n };\n __decorate$1S([Autowired('aggFuncService')], ModelItemUtils.prototype, \"aggFuncService\", void 0);\n __decorate$1S([Autowired('columnModel')], ModelItemUtils.prototype, \"columnModel\", void 0);\n __decorate$1S([Autowired('gridOptionsWrapper')], ModelItemUtils.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1S([Autowired('eventService')], ModelItemUtils.prototype, \"eventService\", void 0);\n ModelItemUtils = __decorate$1S([Bean('modelItemUtils')], ModelItemUtils);\n return ModelItemUtils;\n}();\nvar ColumnsToolPanelModule = {\n moduleName: ModuleNames.ColumnToolPanelModule,\n beans: [ModelItemUtils],\n agStackComponents: [{\n componentName: 'AgPrimaryColsHeader',\n componentClass: PrimaryColsHeaderPanel\n }, {\n componentName: 'AgPrimaryColsList',\n componentClass: PrimaryColsListPanel\n }, {\n componentName: 'AgPrimaryCols',\n componentClass: PrimaryColsPanel\n }],\n userComponents: [{\n componentName: 'agColumnsToolPanel',\n componentClass: ColumnToolPanel\n }],\n dependantModules: [EnterpriseCoreModule, RowGroupingModule, SideBarModule]\n};\nvar workbook = {\n getTemplate: function () {\n return {\n name: \"Workbook\",\n properties: {\n prefixedAttributes: [{\n prefix: \"xmlns:\",\n map: {\n o: \"urn:schemas-microsoft-com:office:office\",\n x: \"urn:schemas-microsoft-com:office:excel\",\n ss: \"urn:schemas-microsoft-com:office:spreadsheet\",\n html: \"http://www.w3.org/TR/REC-html40\"\n }\n }],\n rawMap: {\n xmlns: \"urn:schemas-microsoft-com:office:spreadsheet\"\n }\n }\n };\n }\n};\nvar excelWorkbook = {\n getTemplate: function () {\n return {\n name: \"ExcelWorkbook\",\n properties: {\n rawMap: {\n xmlns: \"urn:schemas-microsoft-com:office:excel\"\n }\n },\n children: [{\n name: \"WindowHeight\",\n textNode: \"8130\"\n }, {\n name: \"WindowWidth\",\n textNode: \"15135\"\n }, {\n name: \"WindowHeight\",\n textNode: \"8130\"\n }, {\n name: \"WindowTopX\",\n textNode: \"120\"\n }, {\n name: \"WindowTopY\",\n textNode: \"45\"\n }, {\n name: \"ProtectStructure\",\n textNode: \"False\"\n }, {\n name: \"ProtectWindow\",\n textNode: \"False\"\n }]\n };\n }\n};\nvar column = {\n getTemplate: function (c) {\n var width = c.width;\n return {\n name: \"Column\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Width: width\n }\n }]\n }\n };\n }\n};\nvar cell = {\n getTemplate: function (c) {\n var _a, _b;\n var mergeAcross = c.mergeAcross,\n styleId = c.styleId,\n data = c.data;\n var properties = {};\n if (mergeAcross) {\n properties.MergeAcross = mergeAcross;\n }\n if (styleId) {\n properties.StyleID = styleId;\n }\n return {\n name: \"Cell\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: properties\n }]\n },\n children: [{\n name: \"Data\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Type: (_a = data) === null || _a === void 0 ? void 0 : _a.type\n }\n }]\n },\n textNode: (_b = data) === null || _b === void 0 ? void 0 : _b.value\n }]\n };\n }\n};\nvar row = {\n getTemplate: function (r) {\n var cells = r.cells;\n return {\n name: \"Row\",\n children: cells.map(function (it) {\n return cell.getTemplate(it);\n })\n };\n }\n};\nvar worksheet = {\n getTemplate: function (ws) {\n var table = ws.table,\n name = ws.name;\n var columns = table.columns,\n rows = table.rows;\n var c = columns.map(function (it) {\n return column.getTemplate(it);\n });\n var r = rows.map(function (it) {\n return row.getTemplate(it);\n });\n return {\n name: \"Worksheet\",\n children: [{\n name: \"Table\",\n children: c.concat(r)\n }],\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Name: name\n }\n }]\n }\n };\n }\n};\nvar documentProperties = {\n getTemplate: function () {\n return {\n name: \"DocumentProperties\",\n properties: {\n rawMap: {\n xmlns: \"urn:schemas-microsoft-com:office:office\"\n }\n },\n children: [{\n name: \"Version\",\n textNode: \"12.00\"\n }]\n };\n }\n};\nvar alignment = {\n getTemplate: function (styleProperties) {\n var _a = styleProperties.alignment,\n vertical = _a.vertical,\n horizontal = _a.horizontal,\n indent = _a.indent,\n readingOrder = _a.readingOrder,\n rotate = _a.rotate,\n shrinkToFit = _a.shrinkToFit,\n verticalText = _a.verticalText,\n wrapText = _a.wrapText;\n return {\n name: 'Alignment',\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Vertical: vertical,\n Horizontal: horizontal,\n Indent: indent,\n ReadingOrder: readingOrder,\n Rotate: rotate,\n ShrinkToFit: shrinkToFit,\n VerticalText: verticalText,\n WrapText: wrapText\n }\n }]\n }\n };\n }\n};\nvar borders = {\n getTemplate: function (styleProperties) {\n var _a = styleProperties.borders,\n borderBottom = _a.borderBottom,\n borderLeft = _a.borderLeft,\n borderRight = _a.borderRight,\n borderTop = _a.borderTop;\n return {\n name: 'Borders',\n children: [borderBottom, borderLeft, borderRight, borderTop].map(function (it, index) {\n var current = index == 0 ? \"Bottom\" : index == 1 ? \"Left\" : index == 2 ? \"Right\" : \"Top\";\n return {\n name: 'Border',\n properties: {\n prefixedAttributes: [{\n prefix: 'ss:',\n map: {\n Position: current,\n LineStyle: it.lineStyle,\n Weight: it.weight,\n Color: it.color\n }\n }]\n }\n };\n })\n };\n }\n};\nvar font = {\n getTemplate: function (styleProperties) {\n var _a = styleProperties.font,\n bold = _a.bold,\n fontName = _a.fontName,\n italic = _a.italic,\n color = _a.color,\n outline = _a.outline,\n shadow = _a.shadow,\n size = _a.size,\n strikeThrough = _a.strikeThrough,\n underline = _a.underline,\n verticalAlign = _a.verticalAlign,\n charSet = _a.charSet,\n family = _a.family;\n return {\n name: \"Font\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Bold: bold,\n FontName: fontName,\n Italic: italic,\n Color: color,\n Outline: outline,\n Shadow: shadow,\n Size: size,\n StrikeThrough: strikeThrough,\n Underline: underline,\n VerticalAlign: verticalAlign\n }\n }, {\n prefix: \"x:\",\n map: {\n CharSet: charSet,\n Family: family\n }\n }]\n }\n };\n }\n};\nvar interior = {\n getTemplate: function (styleProperties) {\n var _a = styleProperties.interior,\n color = _a.color,\n pattern = _a.pattern,\n patternColor = _a.patternColor;\n return {\n name: \"Interior\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Color: color,\n Pattern: pattern,\n PatternColor: patternColor\n }\n }]\n }\n };\n }\n};\nvar protection = {\n getTemplate: function (styleProperties) {\n return {\n name: \"Protection\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Protected: styleProperties.protection.protected,\n HideFormula: styleProperties.protection.hideFormula\n }\n }]\n }\n };\n }\n};\nvar numberFormat = {\n getTemplate: function (styleProperties) {\n var format = styleProperties.numberFormat.format;\n return {\n name: \"NumberFormat\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Format: format\n }\n }]\n }\n };\n }\n};\nvar style = {\n getTemplate: function (styleProperties) {\n var id = styleProperties.id,\n name = styleProperties.name;\n return {\n name: 'Style',\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n ID: id,\n Name: name ? name : id\n }\n }]\n }\n };\n }\n};\n\n/**\n * See https://msdn.microsoft.com/en-us/library/aa140066(v=office.10).aspx\n */\nvar ExcelXmlFactory = /** @class */function () {\n function ExcelXmlFactory() {}\n ExcelXmlFactory.createExcel = function (styles, currentWorksheet) {\n var header = this.excelXmlHeader();\n var docProps = documentProperties.getTemplate();\n var eWorkbook = excelWorkbook.getTemplate();\n var wb = this.workbook(docProps, eWorkbook, styles, currentWorksheet);\n return \"\" + header + XmlFactory.createXml(wb, function (boolean) {\n return boolean ? '1' : '0';\n });\n };\n ExcelXmlFactory.workbook = function (docProperties, eWorkbook, styles, currentWorksheet) {\n var children = [docProperties, eWorkbook, this.stylesXmlElement(styles)].concat(worksheet.getTemplate(currentWorksheet));\n return Object.assign({}, workbook.getTemplate(), {\n children: children\n });\n };\n ExcelXmlFactory.excelXmlHeader = function () {\n return \"\\n \\n \";\n };\n ExcelXmlFactory.stylesXmlElement = function (styles) {\n var _this = this;\n return {\n name: 'Styles',\n children: styles ? styles.map(function (it) {\n return _this.styleXmlElement(it);\n }) : []\n };\n };\n ExcelXmlFactory.styleXmlElement = function (styleProperties) {\n var children = _.compose(this.addProperty('alignment', styleProperties), this.addProperty('borders', styleProperties), this.addProperty('font', styleProperties), this.addProperty('interior', styleProperties), this.addProperty('protection', styleProperties), this.addProperty('numberFormat', styleProperties))([]);\n return Object.assign({}, style.getTemplate(styleProperties), {\n children: children\n });\n };\n ExcelXmlFactory.addProperty = function (property, styleProperties) {\n return function (children) {\n if (!styleProperties[property]) {\n return children;\n }\n var options = {\n alignment: alignment,\n borders: borders,\n font: font,\n interior: interior,\n numberFormat: numberFormat,\n protection: protection\n };\n return children.concat(options[property].getTemplate(styleProperties));\n };\n };\n ExcelXmlFactory.factoryMode = ExcelFactoryMode.SINGLE_SHEET;\n return ExcelXmlFactory;\n}();\nvar INCH_TO_EMU = 9525;\nvar numberFormatMap = {\n '0': 1,\n '0.00': 2,\n '#,##0': 3,\n '#,##0.00': 4,\n '0%': 9,\n '0.00%': 10,\n '0.00E+00': 11,\n '# ?/?': 12,\n '# ??/??': 13,\n 'mm-dd-yy': 14,\n 'd-mmm-yy': 15,\n 'd-mmm': 16,\n 'mmm-yy': 17,\n 'h:mm AM/PM': 18,\n 'h:mm:ss AM/PM': 19,\n 'h:mm': 20,\n 'h:mm:ss': 21,\n 'm/d/yy h:mm': 22,\n '#,##0 ;(#,##0)': 37,\n '#,##0 ;[Red](#,##0)': 38,\n '#,##0.00;(#,##0.00)': 39,\n '#,##0.00;[Red](#,##0.00)': 40,\n 'mm:ss': 45,\n '[h]:mm:ss': 46,\n 'mmss.0': 47,\n '##0.0E+0': 48,\n '@': 49\n};\nvar pixelsToPoint = function (pixels) {\n return Math.round(pixels * 72 / 96);\n};\nvar pointsToPixel = function (points) {\n return Math.round(points * 96 / 72);\n};\nvar pixelsToEMU = function (value) {\n return Math.ceil(value * INCH_TO_EMU);\n};\nvar getFontFamilyId = function (name) {\n if (name === undefined) {\n return;\n }\n var families = ['Automatic', 'Roman', 'Swiss', 'Modern', 'Script', 'Decorative'];\n var pos = families.indexOf(name || 'Automatic');\n return Math.max(pos, 0);\n};\nvar getHeightFromProperty = function (rowIndex, height) {\n if (!height) {\n return;\n }\n var finalHeight;\n if (typeof height === 'number') {\n finalHeight = height;\n } else {\n var heightFunc = height;\n finalHeight = heightFunc({\n rowIndex: rowIndex\n });\n }\n return pixelsToPoint(finalHeight);\n};\nvar setExcelImageTotalWidth = function (image, columnsToExport) {\n var _a = image.position,\n colSpan = _a.colSpan,\n column = _a.column;\n if (image.width) {\n if (colSpan) {\n var columnsInSpan = columnsToExport.slice(column - 1, column + colSpan - 1);\n var totalWidth = 0;\n for (var i = 0; i < columnsInSpan.length; i++) {\n var colWidth = columnsInSpan[i].getActualWidth();\n if (image.width < totalWidth + colWidth) {\n image.position.colSpan = i + 1;\n image.totalWidth = image.width;\n image.width = image.totalWidth - totalWidth;\n break;\n }\n totalWidth += colWidth;\n }\n } else {\n image.totalWidth = image.width;\n }\n }\n};\nvar setExcelImageTotalHeight = function (image, rowHeight) {\n var _a = image.position,\n rowSpan = _a.rowSpan,\n row = _a.row;\n if (image.height) {\n if (rowSpan) {\n var totalHeight = 0;\n var counter = 0;\n for (var i = row; i < row + rowSpan; i++) {\n var nextRowHeight = pointsToPixel(getHeightFromProperty(i, rowHeight) || 20);\n if (image.height < totalHeight + nextRowHeight) {\n image.position.rowSpan = counter + 1;\n image.totalHeight = image.height;\n image.height = image.totalHeight - totalHeight;\n break;\n }\n totalHeight += nextRowHeight;\n counter++;\n }\n } else {\n image.totalHeight = image.height;\n }\n }\n};\nvar createXmlPart = function (body) {\n var header = XmlFactory.createHeader({\n encoding: 'UTF-8',\n standalone: 'yes'\n });\n var xmlBody = XmlFactory.createXml(body);\n return \"\" + header + xmlBody;\n};\nvar getExcelColumnName = function (colIdx) {\n var startCode = 65;\n var tableWidth = 26;\n var fromCharCode = String.fromCharCode;\n var pos = Math.floor(colIdx / tableWidth);\n var tableIdx = colIdx % tableWidth;\n if (!pos || colIdx === tableWidth) {\n return fromCharCode(startCode + colIdx - 1);\n }\n if (!tableIdx) {\n return getExcelColumnName(pos - 1) + 'Z';\n }\n if (pos < tableWidth) {\n return fromCharCode(startCode + pos - 1) + fromCharCode(startCode + tableIdx - 1);\n }\n return getExcelColumnName(pos) + fromCharCode(startCode + tableIdx - 1);\n};\nvar __extends$2_ = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign$F = undefined && undefined.__assign || function () {\n __assign$F = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$F.apply(this, arguments);\n};\nvar __read$T = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread$u = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$T(arguments[i]));\n return ar;\n};\nvar BaseExcelSerializingSession = /** @class */function (_super) {\n __extends$2_(BaseExcelSerializingSession, _super);\n function BaseExcelSerializingSession(config) {\n var _this = _super.call(this, config) || this;\n _this.mixedStyles = {};\n _this.mixedStyleCounter = 0;\n _this.rows = [];\n _this.config = Object.assign({}, config);\n _this.stylesByIds = {};\n _this.config.baseExcelStyles.forEach(function (style) {\n _this.stylesByIds[style.id] = style;\n });\n _this.excelStyles = __spread$u(_this.config.baseExcelStyles);\n return _this;\n }\n BaseExcelSerializingSession.prototype.addCustomContent = function (customContent) {\n var _this = this;\n customContent.forEach(function (row) {\n var rowLen = _this.rows.length + 1;\n var rowObj = {\n height: getHeightFromProperty(rowLen, row.height || _this.config.rowHeight),\n cells: (row.cells || []).map(function (cell, idx) {\n var _a;\n var image = _this.addImage(rowLen, _this.columnsToExport[idx], (_a = cell.data) === null || _a === void 0 ? void 0 : _a.value);\n var ret = __assign$F({}, cell);\n if (image) {\n ret.data = {};\n if (image.value != null) {\n ret.data.value = image.value;\n } else {\n ret.data.type = 'e';\n ret.data.value = null;\n }\n }\n return ret;\n }),\n outlineLevel: row.outlineLevel || undefined\n };\n if (row.collapsed != null) {\n rowObj.collapsed = row.collapsed;\n }\n if (row.hidden != null) {\n rowObj.hidden = row.hidden;\n }\n _this.rows.push(rowObj);\n });\n };\n BaseExcelSerializingSession.prototype.onNewHeaderGroupingRow = function () {\n var _this = this;\n var currentCells = [];\n this.rows.push({\n cells: currentCells,\n height: getHeightFromProperty(this.rows.length + 1, this.config.headerRowHeight)\n });\n return {\n onColumn: function (columnGroup, header, index, span, collapsibleRanges) {\n var styleIds = _this.config.styleLinker({\n rowType: RowType.HEADER_GROUPING,\n rowIndex: 1,\n value: \"grouping-\" + header,\n columnGroup: columnGroup\n });\n currentCells.push(__assign$F(__assign$F({}, _this.createMergedCell(_this.getStyleId(styleIds), _this.getDataTypeForValue('string'), header, span)), {\n collapsibleRanges: collapsibleRanges\n }));\n }\n };\n };\n BaseExcelSerializingSession.prototype.onNewHeaderRow = function () {\n return this.onNewRow(this.onNewHeaderColumn, this.config.headerRowHeight);\n };\n BaseExcelSerializingSession.prototype.onNewBodyRow = function () {\n return this.onNewRow(this.onNewBodyColumn, this.config.rowHeight);\n };\n BaseExcelSerializingSession.prototype.prepare = function (columnsToExport) {\n var _this = this;\n _super.prototype.prepare.call(this, columnsToExport);\n this.columnsToExport = __spread$u(columnsToExport);\n this.cols = columnsToExport.map(function (col, i) {\n return _this.convertColumnToExcel(col, i);\n });\n };\n BaseExcelSerializingSession.prototype.parse = function () {\n // adding custom content might have made some rows wider than the grid, so add new columns\n var longestRow = this.rows.reduce(function (a, b) {\n return Math.max(a, b.cells.length);\n }, 0);\n while (this.cols.length < longestRow) {\n this.cols.push(this.convertColumnToExcel(null, this.cols.length + 1));\n }\n var data = {\n name: this.config.sheetName,\n table: {\n columns: this.cols,\n rows: this.rows\n }\n };\n return this.createExcel(data);\n };\n BaseExcelSerializingSession.prototype.isFormula = function (value) {\n if (value == null) {\n return false;\n }\n return this.config.autoConvertFormulas && value.toString().startsWith('=');\n };\n BaseExcelSerializingSession.prototype.getStyleById = function (styleId) {\n if (styleId == null) {\n return null;\n }\n return this.stylesByIds[styleId] || null;\n };\n BaseExcelSerializingSession.prototype.convertColumnToExcel = function (column, index) {\n var columnWidth = this.config.columnWidth;\n if (columnWidth) {\n if (typeof columnWidth === 'number') {\n return {\n width: columnWidth\n };\n }\n return {\n width: columnWidth({\n column: column,\n index: index\n })\n };\n }\n if (column) {\n var smallestUsefulWidth = 75;\n return {\n width: Math.max(column.getActualWidth(), smallestUsefulWidth)\n };\n }\n return {};\n };\n BaseExcelSerializingSession.prototype.onNewHeaderColumn = function (rowIndex, currentCells) {\n var _this = this;\n return function (column, index) {\n var nameForCol = _this.extractHeaderValue(column);\n var styleIds = _this.config.styleLinker({\n rowType: RowType.HEADER,\n rowIndex: rowIndex,\n value: nameForCol,\n column: column\n });\n currentCells.push(_this.createCell(_this.getStyleId(styleIds), _this.getDataTypeForValue('string'), nameForCol));\n };\n };\n BaseExcelSerializingSession.prototype.onNewRow = function (onNewColumnAccumulator, height) {\n var currentCells = [];\n this.rows.push({\n cells: currentCells,\n height: getHeightFromProperty(this.rows.length + 1, height)\n });\n return {\n onColumn: onNewColumnAccumulator.bind(this, this.rows.length, currentCells)()\n };\n };\n BaseExcelSerializingSession.prototype.onNewBodyColumn = function (rowIndex, currentCells) {\n var _this = this;\n var skipCols = 0;\n return function (column, index, node) {\n if (skipCols > 0) {\n skipCols -= 1;\n return;\n }\n if (!_this.config.gridOptionsWrapper.isGroupHideOpenParents() && node.level) {\n _.last(_this.rows).outlineLevel = node.level;\n }\n var valueForCell = _this.extractRowCellValue(column, index, rowIndex, Constants.EXPORT_TYPE_EXCEL, node);\n var styleIds = _this.config.styleLinker({\n rowType: RowType.BODY,\n rowIndex: rowIndex,\n value: valueForCell,\n column: column,\n node: node\n });\n var excelStyleId = _this.getStyleId(styleIds);\n var colSpan = column.getColSpan(node);\n var addedImage = _this.addImage(rowIndex, column, valueForCell);\n if (addedImage) {\n currentCells.push(_this.createCell(excelStyleId, _this.getDataTypeForValue(addedImage.value), addedImage.value == null ? '' : addedImage.value));\n } else if (colSpan > 1) {\n skipCols = colSpan - 1;\n currentCells.push(_this.createMergedCell(excelStyleId, _this.getDataTypeForValue(valueForCell), valueForCell, colSpan - 1));\n } else {\n currentCells.push(_this.createCell(excelStyleId, _this.getDataTypeForValue(valueForCell), valueForCell));\n }\n };\n };\n BaseExcelSerializingSession.prototype.getStyleId = function (styleIds) {\n if (!styleIds || !styleIds.length) {\n return null;\n }\n if (styleIds.length === 1) {\n return styleIds[0];\n }\n var key = styleIds.join(\"-\");\n if (!this.mixedStyles[key]) {\n this.addNewMixedStyle(styleIds);\n }\n return this.mixedStyles[key].excelID;\n };\n BaseExcelSerializingSession.prototype.addNewMixedStyle = function (styleIds) {\n var _this = this;\n this.mixedStyleCounter += 1;\n var excelId = \"mixedStyle\" + this.mixedStyleCounter;\n var resultantStyle = {};\n styleIds.forEach(function (styleId) {\n _this.excelStyles.forEach(function (excelStyle) {\n if (excelStyle.id === styleId) {\n _.mergeDeep(resultantStyle, _.deepCloneObject(excelStyle));\n }\n });\n });\n resultantStyle.id = excelId;\n resultantStyle.name = excelId;\n var key = styleIds.join(\"-\");\n this.mixedStyles[key] = {\n excelID: excelId,\n key: key,\n result: resultantStyle\n };\n this.excelStyles.push(resultantStyle);\n this.stylesByIds[excelId] = resultantStyle;\n };\n return BaseExcelSerializingSession;\n}(BaseGridSerializingSession);\nvar __extends$2Z = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar ExcelXmlSerializingSession = /** @class */function (_super) {\n __extends$2Z(ExcelXmlSerializingSession, _super);\n function ExcelXmlSerializingSession() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ExcelXmlSerializingSession.prototype.createExcel = function (data) {\n return ExcelXmlFactory.createExcel(this.excelStyles, data);\n };\n ExcelXmlSerializingSession.prototype.getDataTypeForValue = function (valueForCell) {\n return _.isNumeric(valueForCell) ? 'Number' : 'String';\n };\n ExcelXmlSerializingSession.prototype.getType = function (type, style, value) {\n if (this.isFormula(value)) {\n return 'Formula';\n }\n if (style && style.dataType) {\n switch (style.dataType.toLocaleLowerCase()) {\n case 'string':\n return 'Formula';\n case 'number':\n return 'Number';\n case 'datetime':\n return 'DateTime';\n case 'error':\n return 'Error';\n case 'boolean':\n return 'Boolean';\n default:\n console.warn(\"AG Grid: Unrecognized data type for excel export [\" + style.id + \".dataType=\" + style.dataType + \"]\");\n }\n }\n return type;\n };\n ExcelXmlSerializingSession.prototype.addImage = function () {\n return;\n };\n ExcelXmlSerializingSession.prototype.createCell = function (styleId, type, value) {\n var actualStyle = this.getStyleById(styleId);\n var typeTransformed = this.getType(type, actualStyle, value) || type;\n return {\n styleId: !!actualStyle ? styleId : undefined,\n data: {\n type: typeTransformed,\n value: this.getValueTransformed(typeTransformed, value)\n }\n };\n };\n ExcelXmlSerializingSession.prototype.getValueTransformed = function (typeTransformed, value) {\n var _this = this;\n var wrapText = function (val) {\n if (_this.config.suppressTextAsCDATA) {\n return _.escapeString(val);\n }\n var cdataStart = '';\n var cdataEndRegex = new RegExp(cdataEnd, \"g\");\n return cdataStart\n // CDATA sections are closed by the character sequence ']]>' and there is no\n // way of escaping this, so if the text contains the offending sequence, emit\n // multiple CDATA sections and split the characters between them.\n + String(val).replace(cdataEndRegex, ']]' + cdataEnd + cdataStart + '>') + cdataEnd;\n };\n var convertBoolean = function (val) {\n if (!val || val === '0' || val === 'false') {\n return '0';\n }\n return '1';\n };\n switch (typeTransformed) {\n case 'String':\n return wrapText(value);\n case 'Number':\n return Number(value).valueOf() + '';\n case 'Boolean':\n return convertBoolean(value);\n default:\n return value;\n }\n };\n ExcelXmlSerializingSession.prototype.createMergedCell = function (styleId, type, value, numOfCells) {\n return {\n styleId: !!this.getStyleById(styleId) ? styleId : undefined,\n data: {\n type: type,\n value: value\n },\n mergeAcross: numOfCells\n };\n };\n return ExcelXmlSerializingSession;\n}(BaseExcelSerializingSession);\nvar coreFactory = {\n getTemplate: function (author) {\n var dt = new Date();\n var jsonDate = dt.toJSON();\n return {\n name: 'cp:coreProperties',\n properties: {\n prefixedAttributes: [{\n prefix: \"xmlns:\",\n map: {\n cp: \"http://schemas.openxmlformats.org/package/2006/metadata/core-properties\",\n dc: 'http://purl.org/dc/elements/1.1/',\n dcterms: 'http://purl.org/dc/terms/',\n dcmitype: 'http://purl.org/dc/dcmitype/',\n xsi: 'http://www.w3.org/2001/XMLSchema-instance'\n }\n }]\n },\n children: [{\n name: 'dc:creator',\n textNode: author\n }, {\n name: 'dc:title',\n textNode: 'Workbook'\n }, {\n name: 'dcterms:created',\n properties: {\n rawMap: {\n 'xsi:type': 'dcterms:W3CDTF'\n }\n },\n textNode: jsonDate\n }, {\n name: 'dcterms:modified',\n properties: {\n rawMap: {\n 'xsi:type': 'dcterms:W3CDTF'\n }\n },\n textNode: jsonDate\n }]\n };\n }\n};\nvar contentTypeFactory = {\n getTemplate: function (config) {\n var name = config.name,\n ContentType = config.ContentType,\n Extension = config.Extension,\n PartName = config.PartName;\n return {\n name: name,\n properties: {\n rawMap: {\n Extension: Extension,\n PartName: PartName,\n ContentType: ContentType\n }\n }\n };\n }\n};\nvar __read$S = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread$t = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$S(arguments[i]));\n return ar;\n};\nvar contentTypesFactory = {\n getTemplate: function (sheetLen) {\n var worksheets = new Array(sheetLen).fill(undefined).map(function (v, i) {\n return {\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml',\n PartName: \"/xl/worksheets/sheet\" + (i + 1) + \".xml\"\n };\n });\n var sheetsWithImages = ExcelXlsxFactory.worksheetImages.size;\n var imageTypesObject = {};\n ExcelXlsxFactory.workbookImageIds.forEach(function (v) {\n imageTypesObject[v.type] = true;\n });\n var imageDocs = new Array(sheetsWithImages).fill(undefined).map(function (v, i) {\n return {\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-officedocument.drawing+xml',\n PartName: \"/xl/drawings/drawing\" + (i + 1) + \".xml\"\n };\n });\n var imageTypes = Object.keys(imageTypesObject).map(function (ext) {\n return {\n name: 'Default',\n ContentType: \"image/\" + ext,\n Extension: ext\n };\n });\n var children = __spread$t(imageTypes, [{\n name: 'Default',\n Extension: 'rels',\n ContentType: 'application/vnd.openxmlformats-package.relationships+xml'\n }, {\n name: 'Default',\n ContentType: 'application/xml',\n Extension: 'xml'\n }, {\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml',\n PartName: \"/xl/workbook.xml\"\n }], worksheets, [{\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-officedocument.theme+xml',\n PartName: '/xl/theme/theme1.xml'\n }, {\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml',\n PartName: '/xl/styles.xml'\n }, {\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml',\n PartName: '/xl/sharedStrings.xml'\n }], imageDocs, [{\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-package.core-properties+xml',\n PartName: '/docProps/core.xml'\n }]).map(function (contentType) {\n return contentTypeFactory.getTemplate(contentType);\n });\n return {\n name: \"Types\",\n properties: {\n rawMap: {\n xmlns: \"http://schemas.openxmlformats.org/package/2006/content-types\"\n }\n },\n children: children\n };\n }\n};\nvar getAnchor = function (name, imageAnchor) {\n return {\n name: \"xdr:\" + name,\n children: [{\n name: 'xdr:col',\n textNode: imageAnchor.col.toString()\n }, {\n name: 'xdr:colOff',\n textNode: imageAnchor.offsetX.toString()\n }, {\n name: 'xdr:row',\n textNode: imageAnchor.row.toString()\n }, {\n name: 'xdr:rowOff',\n textNode: imageAnchor.offsetY.toString()\n }]\n };\n};\nvar getExt = function (image) {\n var children = [{\n name: 'a:ext',\n properties: {\n rawMap: {\n uri: '{FF2B5EF4-FFF2-40B4-BE49-F238E27FC236}'\n }\n },\n children: [{\n name: 'a16:creationId',\n properties: {\n rawMap: {\n 'id': '{822E6D20-D7BC-2841-A643-D49A6EF008A2}',\n 'xmlns:a16': 'http://schemas.microsoft.com/office/drawing/2014/main'\n }\n }\n }]\n }];\n var recolor = image.recolor && image.recolor.toLowerCase();\n switch (recolor) {\n case 'grayscale':\n case 'sepia':\n case 'washout':\n children.push({\n name: 'a:ext',\n properties: {\n rawMap: {\n uri: '{C183D7F6-B498-43B3-948B-1728B52AA6E4}'\n }\n },\n children: [{\n name: 'adec:decorative',\n properties: {\n rawMap: {\n 'val': '0',\n 'xmlns:adec': 'http://schemas.microsoft.com/office/drawing/2017/decorative'\n }\n }\n }]\n });\n }\n return {\n name: 'a:extLst',\n children: children\n };\n};\nvar getNvPicPr = function (image, index) {\n return {\n name: 'xdr:nvPicPr',\n children: [{\n name: 'xdr:cNvPr',\n properties: {\n rawMap: {\n id: index,\n name: image.id,\n descr: image.altText != null ? image.altText : undefined\n }\n },\n children: [getExt(image)]\n }, {\n name: 'xdr:cNvPicPr',\n properties: {\n rawMap: {\n preferRelativeResize: '0'\n }\n },\n children: [{\n name: 'a:picLocks'\n }]\n }]\n };\n};\nvar getColorDetails = function (color) {\n if (!color.saturation && !color.tint) {\n return;\n }\n var ret = [];\n if (color.saturation) {\n ret.push({\n name: 'a:satMod',\n properties: {\n rawMap: {\n val: color.saturation * 1000\n }\n }\n });\n }\n if (color.tint) {\n ret.push({\n name: 'a:tint',\n properties: {\n rawMap: {\n val: color.tint * 1000\n }\n }\n });\n }\n return ret;\n};\nvar getDuoTone = function (primaryColor, secondaryColor) {\n return {\n name: 'a:duotone',\n children: [{\n name: 'a:prstClr',\n properties: {\n rawMap: {\n val: primaryColor.color\n }\n },\n children: getColorDetails(primaryColor)\n }, {\n name: 'a:srgbClr',\n properties: {\n rawMap: {\n val: secondaryColor.color\n }\n },\n children: getColorDetails(secondaryColor)\n }]\n };\n};\nvar getBlipFill = function (image, index) {\n var blipChildren;\n if (image.transparency) {\n var transparency = Math.min(Math.max(image.transparency, 0), 100);\n blipChildren = [{\n name: 'a:alphaModFix',\n properties: {\n rawMap: {\n amt: 100000 - Math.round(transparency * 1000)\n }\n }\n }];\n }\n if (image.recolor) {\n if (!blipChildren) {\n blipChildren = [];\n }\n switch (image.recolor.toLocaleLowerCase()) {\n case 'grayscale':\n blipChildren.push({\n name: 'a:grayscl'\n });\n break;\n case 'sepia':\n blipChildren.push(getDuoTone({\n color: 'black'\n }, {\n color: 'D9C3A5',\n tint: 50,\n saturation: 180\n }));\n break;\n case 'washout':\n blipChildren.push({\n name: 'a:lum',\n properties: {\n rawMap: {\n bright: '70000',\n contrast: '-70000'\n }\n }\n });\n break;\n }\n }\n return {\n name: 'xdr:blipFill',\n children: [{\n name: 'a:blip',\n properties: {\n rawMap: {\n 'cstate': 'print',\n 'r:embed': \"rId\" + index,\n 'xmlns:r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'\n }\n },\n children: blipChildren\n }, {\n name: 'a:stretch',\n children: [{\n name: 'a:fillRect'\n }]\n }]\n };\n};\nvar getSpPr = function (image, imageBoxSize) {\n var xfrm = {\n name: 'a:xfrm',\n children: [{\n name: 'a:off',\n properties: {\n rawMap: {\n x: 0,\n y: 0\n }\n }\n }, {\n name: 'a:ext',\n properties: {\n rawMap: {\n cx: imageBoxSize.width,\n cy: imageBoxSize.height\n }\n }\n }]\n };\n if (image.rotation) {\n var rotation = image.rotation;\n xfrm.properties = {\n rawMap: {\n rot: Math.min(Math.max(rotation, 0), 360) * 60000\n }\n };\n }\n var prstGeom = {\n name: 'a:prstGeom',\n properties: {\n rawMap: {\n prst: 'rect'\n }\n },\n children: [{\n name: 'a:avLst'\n }]\n };\n var ret = {\n name: 'xdr:spPr',\n children: [xfrm, prstGeom]\n };\n return ret;\n};\nvar getImageBoxSize = function (image) {\n image.fitCell = !!image.fitCell || !image.width || !image.height;\n var _a = image.position,\n position = _a === void 0 ? {} : _a,\n fitCell = image.fitCell,\n _b = image.width,\n width = _b === void 0 ? 0 : _b,\n _c = image.height,\n height = _c === void 0 ? 0 : _c,\n totalHeight = image.totalHeight,\n totalWidth = image.totalWidth;\n var _d = position.offsetX,\n offsetX = _d === void 0 ? 0 : _d,\n _e = position.offsetY,\n offsetY = _e === void 0 ? 0 : _e,\n _f = position.row,\n row = _f === void 0 ? 1 : _f,\n _g = position.rowSpan,\n rowSpan = _g === void 0 ? 1 : _g,\n _h = position.column,\n column = _h === void 0 ? 1 : _h,\n _j = position.colSpan,\n colSpan = _j === void 0 ? 1 : _j;\n return {\n from: {\n row: row - 1,\n col: column - 1,\n offsetX: pixelsToEMU(offsetX),\n offsetY: pixelsToEMU(offsetY)\n },\n to: {\n row: row - 1 + (fitCell ? 1 : rowSpan - 1),\n col: column - 1 + (fitCell ? 1 : colSpan - 1),\n offsetX: pixelsToEMU(width + offsetX),\n offsetY: pixelsToEMU(height + offsetY)\n },\n height: pixelsToEMU(totalHeight || height),\n width: pixelsToEMU(totalWidth || width)\n };\n};\nvar getPicture = function (image, currentIndex, worksheetImageIndex, imageBoxSize) {\n return {\n name: 'xdr:pic',\n children: [getNvPicPr(image, currentIndex + 1), getBlipFill(image, worksheetImageIndex + 1), getSpPr(image, imageBoxSize)]\n };\n};\nvar drawingFactory = {\n getTemplate: function (config) {\n var sheetIndex = config.sheetIndex;\n var sheetImages = ExcelXlsxFactory.worksheetImages.get(sheetIndex);\n var sheetImageIds = ExcelXlsxFactory.worksheetImageIds.get(sheetIndex);\n var children = sheetImages.map(function (image, idx) {\n var boxSize = getImageBoxSize(image);\n return {\n name: 'xdr:twoCellAnchor',\n properties: {\n rawMap: {\n editAs: 'absolute'\n }\n },\n children: [getAnchor('from', boxSize.from), getAnchor('to', boxSize.to), getPicture(image, idx, sheetImageIds.get(image.id).index, boxSize), {\n name: 'xdr:clientData'\n }]\n };\n });\n return {\n name: 'xdr:wsDr',\n properties: {\n rawMap: {\n 'xmlns:a': 'http://schemas.openxmlformats.org/drawingml/2006/main',\n 'xmlns:xdr': 'http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing'\n }\n },\n children: children\n };\n }\n};\nvar __read$R = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar getColorChildren = function (props) {\n var _a = __read$R(props, 4),\n type = _a[0],\n innerType = _a[1],\n val = _a[2],\n lastClr = _a[3];\n return {\n name: \"a:\" + type,\n children: [{\n name: \"a:\" + innerType,\n properties: {\n rawMap: {\n val: val,\n lastClr: lastClr\n }\n }\n }]\n };\n};\nvar colorScheme = {\n getTemplate: function () {\n return {\n name: \"a:clrScheme\",\n properties: {\n rawMap: {\n name: \"Office\"\n }\n },\n children: [getColorChildren(['dk1', 'sysClr', 'windowText', '000000']), getColorChildren(['lt1', 'sysClr', 'window', 'FFFFFF']), getColorChildren(['dk2', 'srgbClr', '44546A']), getColorChildren(['lt2', 'srgbClr', 'E7E6E6']), getColorChildren(['accent1', 'srgbClr', '4472C4']), getColorChildren(['accent2', 'srgbClr', 'ED7D31']), getColorChildren(['accent3', 'srgbClr', 'A5A5A5']), getColorChildren(['accent4', 'srgbClr', 'FFC000']), getColorChildren(['accent5', 'srgbClr', '5B9BD5']), getColorChildren(['accent6', 'srgbClr', '70AD47']), getColorChildren(['hlink', 'srgbClr', '0563C1']), getColorChildren(['folHlink', 'srgbClr', '954F72'])]\n };\n }\n};\nvar __read$Q = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar getFont$3 = function (props) {\n var _a = __read$Q(props, 4),\n type = _a[0],\n typeface = _a[1],\n script = _a[2],\n panose = _a[3];\n return {\n name: \"a:\" + type,\n properties: {\n rawMap: {\n script: script,\n typeface: typeface,\n panose: panose\n }\n }\n };\n};\nvar fontScheme = {\n getTemplate: function () {\n var utf8_encode = _.utf8_encode;\n return {\n name: \"a:fontScheme\",\n properties: {\n rawMap: {\n name: \"Office\"\n }\n },\n children: [{\n name: 'a:majorFont',\n children: [getFont$3(['latin', 'Calibri Light', undefined, '020F0302020204030204']), getFont$3(['ea', '']), getFont$3(['cs', '']), getFont$3(['font', utf8_encode('游ゴシック Light'), 'Jpan']), getFont$3(['font', utf8_encode('맑은 고딕'), 'Hang']), getFont$3(['font', utf8_encode('等线 Light'), 'Hans']), getFont$3(['font', utf8_encode('新細明體'), 'Hant']), getFont$3(['font', 'Times New Roman', 'Arab']), getFont$3(['font', 'Times New Roman', 'Hebr']), getFont$3(['font', 'Tahoma', 'Thai']), getFont$3(['font', 'Nyala', 'Ethi']), getFont$3(['font', 'Vrinda', 'Beng']), getFont$3(['font', 'Shruti', 'Gujr']), getFont$3(['font', 'MoolBoran', 'Khmr']), getFont$3(['font', 'Tunga', 'Knda']), getFont$3(['font', 'Raavi', 'Guru']), getFont$3(['font', 'Euphemia', 'Cans']), getFont$3(['font', 'Plantagenet Cherokee', 'Cher']), getFont$3(['font', 'Microsoft Yi Baiti', 'Yiii']), getFont$3(['font', 'Microsoft Himalaya', 'Tibt']), getFont$3(['font', 'MV Boli', 'Thaa']), getFont$3(['font', 'Mangal', 'Deva']), getFont$3(['font', 'Gautami', 'Telu']), getFont$3(['font', 'Latha', 'Taml']), getFont$3(['font', 'Estrangelo Edessa', 'Syrc']), getFont$3(['font', 'Kalinga', 'Orya']), getFont$3(['font', 'Kartika', 'Mlym']), getFont$3(['font', 'DokChampa', 'Laoo']), getFont$3(['font', 'Iskoola Pota', 'Sinh']), getFont$3(['font', 'Mongolian Baiti', 'Mong']), getFont$3(['font', 'Times New Roman', 'Viet']), getFont$3(['font', 'Microsoft Uighur', 'Uigh']), getFont$3(['font', 'Sylfaen', 'Geor']), getFont$3(['font', 'Arial', 'Armn']), getFont$3(['font', 'Leelawadee UI', 'Bugi']), getFont$3(['font', 'Microsoft JhengHei', 'Bopo']), getFont$3(['font', 'Javanese Text', 'Java']), getFont$3(['font', 'Segoe UI', 'Lisu']), getFont$3(['font', 'Myanmar Text', 'Mymr']), getFont$3(['font', 'Ebrima', 'Nkoo']), getFont$3(['font', 'Nirmala UI', 'Olck']), getFont$3(['font', 'Ebrima', 'Osma']), getFont$3(['font', 'Phagspa', 'Phag']), getFont$3(['font', 'Estrangelo Edessa', 'Syrn']), getFont$3(['font', 'Estrangelo Edessa', 'Syrj']), getFont$3(['font', 'Estrangelo Edessa', 'Syre']), getFont$3(['font', 'Nirmala UI', 'Sora']), getFont$3(['font', 'Microsoft Tai Le', 'Tale']), getFont$3(['font', 'Microsoft New Tai Lue', 'Talu']), getFont$3(['font', 'Ebrima', 'Tfng'])]\n }, {\n name: 'a:minorFont',\n children: [getFont$3(['latin', 'Calibri', undefined, '020F0502020204030204']), getFont$3(['ea', '']), getFont$3(['cs', '']), getFont$3(['font', utf8_encode('游ゴシック'), 'Jpan']), getFont$3(['font', utf8_encode('맑은 고딕'), 'Hang']), getFont$3(['font', utf8_encode('等线'), 'Hans']), getFont$3(['font', utf8_encode('新細明體'), 'Hant']), getFont$3(['font', 'Arial', 'Arab']), getFont$3(['font', 'Arial', 'Hebr']), getFont$3(['font', 'Tahoma', 'Thai']), getFont$3(['font', 'Nyala', 'Ethi']), getFont$3(['font', 'Vrinda', 'Beng']), getFont$3(['font', 'Shruti', 'Gujr']), getFont$3(['font', 'DaunPenh', 'Khmr']), getFont$3(['font', 'Tunga', 'Knda']), getFont$3(['font', 'Raavi', 'Guru']), getFont$3(['font', 'Euphemia', 'Cans']), getFont$3(['font', 'Plantagenet Cherokee', 'Cher']), getFont$3(['font', 'Microsoft Yi Baiti', 'Yiii']), getFont$3(['font', 'Microsoft Himalaya', 'Tibt']), getFont$3(['font', 'MV Boli', 'Thaa']), getFont$3(['font', 'Mangal', 'Deva']), getFont$3(['font', 'Gautami', 'Telu']), getFont$3(['font', 'Latha', 'Taml']), getFont$3(['font', 'Estrangelo Edessa', 'Syrc']), getFont$3(['font', 'Kalinga', 'Orya']), getFont$3(['font', 'Kartika', 'Mlym']), getFont$3(['font', 'DokChampa', 'Laoo']), getFont$3(['font', 'Iskoola Pota', 'Sinh']), getFont$3(['font', 'Mongolian Baiti', 'Mong']), getFont$3(['font', 'Arial', 'Viet']), getFont$3(['font', 'Microsoft Uighur', 'Uigh']), getFont$3(['font', 'Sylfaen', 'Geor']), getFont$3(['font', 'Arial', 'Armn']), getFont$3(['font', 'Leelawadee UI', 'Bugi']), getFont$3(['font', 'Microsoft JhengHei', 'Bopo']), getFont$3(['font', 'Javanese Text', 'Java']), getFont$3(['font', 'Segoe UI', 'Lisu']), getFont$3(['font', 'Myanmar Text', 'Mymr']), getFont$3(['font', 'Ebrima', 'Nkoo']), getFont$3(['font', 'Nirmala UI', 'Olck']), getFont$3(['font', 'Ebrima', 'Osma']), getFont$3(['font', 'Phagspa', 'Phag']), getFont$3(['font', 'Estrangelo Edessa', 'Syrn']), getFont$3(['font', 'Estrangelo Edessa', 'Syrj']), getFont$3(['font', 'Estrangelo Edessa', 'Syre']), getFont$3(['font', 'Nirmala UI', 'Sora']), getFont$3(['font', 'Microsoft Tai Le', 'Tale']), getFont$3(['font', 'Microsoft New Tai Lue', 'Talu']), getFont$3(['font', 'Ebrima', 'Tfng'])]\n }]\n };\n }\n};\nvar __read$P = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar getPropertyVal = function (name, val, children) {\n return {\n name: \"a:\" + name,\n properties: {\n rawMap: {\n val: val\n }\n },\n children: children\n };\n};\nvar getGs = function (props) {\n var _a = __read$P(props, 6),\n pos = _a[0],\n schemeColor = _a[1],\n satMod = _a[2],\n lumMod = _a[3],\n tint = _a[4],\n shade = _a[5];\n var children = [];\n children.push(getPropertyVal('satMod', satMod));\n if (lumMod) {\n children.push(getPropertyVal('lumMod', lumMod));\n }\n if (tint) {\n children.push(getPropertyVal('tint', tint));\n }\n if (shade) {\n children.push(getPropertyVal('shade', shade));\n }\n return {\n name: 'a:gs',\n properties: {\n rawMap: {\n pos: pos\n }\n },\n children: [{\n name: 'a:schemeClr',\n properties: {\n rawMap: {\n val: schemeColor\n }\n },\n children: children\n }]\n };\n};\nvar getSolidFill = function (val, children) {\n return {\n name: 'a:solidFill',\n children: [getPropertyVal('schemeClr', val, children)]\n };\n};\nvar getGradFill = function (props) {\n var _a = __read$P(props, 5),\n rotWithShape = _a[0],\n gs1 = _a[1],\n gs2 = _a[2],\n gs3 = _a[3],\n lin = _a[4];\n var _b = __read$P(lin, 2),\n ang = _b[0],\n scaled = _b[1];\n return {\n name: 'a:gradFill',\n properties: {\n rawMap: {\n rotWithShape: rotWithShape\n }\n },\n children: [{\n name: 'a:gsLst',\n children: [getGs(gs1), getGs(gs2), getGs(gs3)]\n }, {\n name: 'a:lin',\n properties: {\n rawMap: {\n ang: ang,\n scaled: scaled\n }\n }\n }]\n };\n};\nvar getLine = function (props) {\n var _a = __read$P(props, 4),\n w = _a[0],\n cap = _a[1],\n cmpd = _a[2],\n algn = _a[3];\n return {\n name: 'a:ln',\n properties: {\n rawMap: {\n w: w,\n cap: cap,\n cmpd: cmpd,\n algn: algn\n }\n },\n children: [getSolidFill('phClr'), getPropertyVal('prstDash', 'solid'), {\n name: 'a:miter',\n properties: {\n rawMap: {\n lim: '800000'\n }\n }\n }]\n };\n};\nvar getEffectStyle = function (shadow) {\n var children = [];\n if (shadow) {\n var _a = __read$P(shadow, 5),\n blurRad = _a[0],\n dist = _a[1],\n dir = _a[2],\n algn = _a[3],\n rotWithShape = _a[4];\n children.push({\n name: 'a:outerShdw',\n properties: {\n rawMap: {\n blurRad: blurRad,\n dist: dist,\n dir: dir,\n algn: algn,\n rotWithShape: rotWithShape\n }\n },\n children: [getPropertyVal('srgbClr', '000000', [getPropertyVal('alpha', '63000')])]\n });\n }\n return {\n name: 'a:effectStyle',\n children: [Object.assign({}, {\n name: 'a:effectLst'\n }, children.length ? {\n children: children\n } : {})]\n };\n};\nvar getFillStyleList = function () {\n return {\n name: 'a:fillStyleLst',\n children: [getSolidFill('phClr'), getGradFill(['1', ['0', 'phClr', '105000', '110000', '67000'], ['50000', 'phClr', '103000', '105000', '73000'], ['100000', 'phClr', '109000', '105000', '81000'], ['5400000', '0']]), getGradFill(['1', ['0', 'phClr', '103000', '102000', '94000'], ['50000', 'phClr', '110000', '100000', undefined, '100000'], ['100000', 'phClr', '120000', '99000', undefined, '78000'], ['5400000', '0']])]\n };\n};\nvar getLineStyleList = function () {\n return {\n name: 'a:lnStyleLst',\n children: [getLine(['6350', 'flat', 'sng', 'ctr']), getLine(['12700', 'flat', 'sng', 'ctr']), getLine(['19050', 'flat', 'sng', 'ctr'])]\n };\n};\nvar getEffectStyleList = function () {\n return {\n name: 'a:effectStyleLst',\n children: [getEffectStyle(), getEffectStyle(), getEffectStyle(['57150', '19050', '5400000', 'ctr', '0'])]\n };\n};\nvar getBgFillStyleList = function () {\n return {\n name: 'a:bgFillStyleLst',\n children: [getSolidFill('phClr'), getSolidFill('phClr', [getPropertyVal('tint', '95000'), getPropertyVal('satMod', '170000')]), getGradFill(['1', ['0', 'phClr', '150000', '102000', '93000', '98000'], ['50000', 'phClr', '130000', '103000', '98000', '90000'], ['100000', 'phClr', '120000', undefined, undefined, '63000'], ['5400000', '0']])]\n };\n};\nvar formatScheme = {\n getTemplate: function () {\n return {\n name: \"a:fmtScheme\",\n properties: {\n rawMap: {\n name: \"Office\"\n }\n },\n children: [getFillStyleList(), getLineStyleList(), getEffectStyleList(), getBgFillStyleList()]\n };\n }\n};\nvar themeElements = {\n getTemplate: function () {\n return {\n name: \"a:themeElements\",\n children: [colorScheme.getTemplate(), fontScheme.getTemplate(), formatScheme.getTemplate()]\n };\n }\n};\nvar officeTheme = {\n getTemplate: function () {\n return {\n name: \"a:theme\",\n properties: {\n prefixedAttributes: [{\n prefix: \"xmlns:\",\n map: {\n a: \"http://schemas.openxmlformats.org/drawingml/2006/main\"\n }\n }],\n rawMap: {\n name: \"Office Theme\"\n }\n },\n children: [themeElements.getTemplate(), {\n name: 'a:objectDefaults'\n }, {\n name: 'a:extraClrSchemeLst'\n }]\n };\n }\n};\nvar buildSharedString = function (strMap) {\n var ret = [];\n strMap.forEach(function (val, key) {\n var textNode = key.toString();\n var child = {\n name: 't',\n textNode: _.utf8_encode(_.escapeString(textNode))\n };\n // if we have leading or trailing spaces, instruct Excel not to trim them\n var preserveSpaces = textNode.trim().length !== textNode.length;\n if (preserveSpaces) {\n child.properties = {\n rawMap: {\n \"xml:space\": \"preserve\"\n }\n };\n }\n ret.push({\n name: 'si',\n children: [child]\n });\n });\n return ret;\n};\nvar sharedStrings = {\n getTemplate: function (strings) {\n return {\n name: \"sst\",\n properties: {\n rawMap: {\n xmlns: 'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\n count: strings.size,\n uniqueCount: strings.size\n }\n },\n children: buildSharedString(strings)\n };\n }\n};\nvar numberFormatFactory = {\n getTemplate: function (numberFormat) {\n var formatCode = numberFormat.formatCode,\n numFmtId = numberFormat.numFmtId;\n return {\n name: \"numFmt\",\n properties: {\n rawMap: {\n formatCode: formatCode,\n numFmtId: numFmtId\n }\n }\n };\n }\n};\nvar numberFormatsFactory = {\n getTemplate: function (numberFormats) {\n return {\n name: \"numFmts\",\n properties: {\n rawMap: {\n count: numberFormats.length\n }\n },\n children: numberFormats.map(function (numberFormat) {\n return numberFormatFactory.getTemplate(numberFormat);\n })\n };\n }\n};\nvar fontFactory = {\n getTemplate: function (font) {\n var size = font.size,\n colorTheme = font.colorTheme,\n _a = font.color,\n color = _a === void 0 ? 'FF000000' : _a,\n _b = font.fontName,\n fontName = _b === void 0 ? 'Calibri' : _b,\n family = font.family,\n scheme = font.scheme,\n italic = font.italic,\n bold = font.bold,\n strikeThrough = font.strikeThrough,\n outline = font.outline,\n shadow = font.shadow,\n underline = font.underline,\n verticalAlign = font.verticalAlign;\n var children = [{\n name: 'sz',\n properties: {\n rawMap: {\n val: size\n }\n }\n }, {\n name: 'color',\n properties: {\n rawMap: {\n theme: colorTheme,\n rgb: color\n }\n }\n }, {\n name: 'name',\n properties: {\n rawMap: {\n val: fontName\n }\n }\n }];\n if (family) {\n children.push({\n name: 'family',\n properties: {\n rawMap: {\n val: family\n }\n }\n });\n }\n if (scheme) {\n children.push({\n name: 'scheme',\n properties: {\n rawMap: {\n val: scheme\n }\n }\n });\n }\n if (italic) {\n children.push({\n name: 'i'\n });\n }\n if (bold) {\n children.push({\n name: 'b'\n });\n }\n if (strikeThrough) {\n children.push({\n name: 'strike'\n });\n }\n if (outline) {\n children.push({\n name: 'outline'\n });\n }\n if (shadow) {\n children.push({\n name: 'shadow'\n });\n }\n if (underline) {\n children.push({\n name: 'u',\n properties: {\n rawMap: {\n val: underline\n }\n }\n });\n }\n if (verticalAlign) {\n children.push({\n name: 'vertAlign',\n properties: {\n rawMap: {\n val: verticalAlign\n }\n }\n });\n }\n return {\n name: \"font\",\n children: children\n };\n }\n};\nvar fontsFactory = {\n getTemplate: function (fonts) {\n return {\n name: \"fonts\",\n properties: {\n rawMap: {\n count: fonts.length\n }\n },\n children: fonts.map(function (font) {\n return fontFactory.getTemplate(font);\n })\n };\n }\n};\nvar fillFactory = {\n getTemplate: function (fill) {\n var patternType = fill.patternType,\n fgTheme = fill.fgTheme,\n fgTint = fill.fgTint,\n fgRgb = fill.fgRgb,\n bgRgb = fill.bgRgb,\n bgIndexed = fill.bgIndexed;\n var pf = {\n name: 'patternFill',\n properties: {\n rawMap: {\n patternType: patternType\n }\n }\n };\n if (fgTheme || fgTint || fgRgb) {\n pf.children = [{\n name: 'fgColor',\n properties: {\n rawMap: {\n theme: fgTheme,\n tint: fgTint,\n rgb: fgRgb\n }\n }\n }];\n }\n if (bgIndexed || bgRgb) {\n if (!pf.children) {\n pf.children = [];\n }\n pf.children.push({\n name: 'bgColor',\n properties: {\n rawMap: {\n indexed: bgIndexed,\n rgb: bgRgb\n }\n }\n });\n }\n return {\n name: \"fill\",\n children: [pf]\n };\n }\n};\nvar fillsFactory = {\n getTemplate: function (fills) {\n return {\n name: \"fills\",\n properties: {\n rawMap: {\n count: fills.length\n }\n },\n children: fills.map(function (fill) {\n return fillFactory.getTemplate(fill);\n })\n };\n }\n};\nvar getWeightName = function (value) {\n switch (value) {\n case 1:\n return 'thin';\n case 2:\n return 'medium';\n case 3:\n return 'thick';\n default:\n return 'hair';\n }\n};\nvar mappedBorderNames = {\n None: 'None',\n Dot: 'Dotted',\n Dash: 'Dashed',\n Double: 'Double',\n DashDot: 'DashDot',\n DashDotDot: 'DashDotDot',\n SlantDashDot: 'SlantDashDot'\n};\nvar mediumBorders = ['Dashed', 'DashDot', 'DashDotDot'];\nvar colorMap = {\n None: 'none',\n Solid: 'solid',\n Gray50: 'mediumGray',\n Gray75: 'darkGray',\n Gray25: 'lightGray',\n HorzStripe: 'darkHorizontal',\n VertStripe: 'darkVertical',\n ReverseDiagStripe: 'darkDown',\n DiagStripe: 'darkUp',\n DiagCross: 'darkGrid',\n ThickDiagCross: 'darkTrellis',\n ThinHorzStripe: 'lightHorizontal',\n ThinVertStripe: 'lightVertical',\n ThinReverseDiagStripe: 'lightDown',\n ThinDiagStripe: 'lightUp',\n ThinHorzCross: 'lightGrid',\n ThinDiagCross: 'lightTrellis',\n Gray125: 'gray125',\n Gray0625: 'gray0625'\n};\nvar horizontalAlignmentMap = {\n Automatic: 'general',\n Left: 'left',\n Center: 'center',\n Right: 'right',\n Fill: 'fill',\n Justify: 'justify',\n CenterAcrossSelection: 'centerContinuous',\n Distributed: 'distributed',\n JustifyDistributed: 'justify'\n};\nvar verticalAlignmentMap = {\n Automatic: undefined,\n Top: 'top',\n Bottom: 'bottom',\n Center: 'center',\n Justify: 'justify',\n Distributed: 'distributed',\n JustifyDistributed: 'justify'\n};\nvar convertLegacyPattern = function (name) {\n if (!name) {\n return 'none';\n }\n return colorMap[name] || name;\n};\nvar convertLegacyColor = function (color) {\n if (color == undefined) {\n return color;\n }\n if (color.charAt(0) === '#') {\n color = color.substr(1);\n }\n return color.length === 6 ? 'FF' + color : color;\n};\nvar convertLegacyBorder = function (type, weight) {\n if (!type) {\n return 'thin';\n }\n // Legacy Types are: None, Continuous, Dash, Dot, DashDot, DashDotDot, SlantDashDot, and Double\n // Weight represents: 0—Hairline, 1—Thin , 2—Medium, 3—Thick\n // New types: none, thin, medium, dashed, dotted, thick, double, hair, mediumDashed, dashDot, mediumDashDot,\n // dashDotDot, mediumDashDotDot, slantDashDot\n var namedWeight = getWeightName(weight);\n var mappedName = mappedBorderNames[type];\n if (type === 'Continuous') {\n return namedWeight;\n }\n if (namedWeight === 'medium' && mediumBorders.indexOf(mappedName) !== -1) {\n return \"medium\" + mappedName;\n }\n return mappedName.charAt(0).toLowerCase() + mappedName.substr(1);\n};\nvar convertLegacyHorizontalAlignment = function (alignment) {\n return horizontalAlignmentMap[alignment] || 'general';\n};\nvar convertLegacyVerticalAlignment = function (alignment) {\n return verticalAlignmentMap[alignment] || undefined;\n};\nvar getBorderColor = function (color) {\n return {\n name: 'color',\n properties: {\n rawMap: {\n rgb: convertLegacyColor(color || '#000000')\n }\n }\n };\n};\nvar borderFactory$1 = {\n getTemplate: function (border) {\n var left = border.left,\n right = border.right,\n top = border.top,\n bottom = border.bottom,\n diagonal = border.diagonal;\n var leftChildren = left ? [getBorderColor(left.color)] : undefined;\n var rightChildren = right ? [getBorderColor(right.color)] : undefined;\n var topChildren = top ? [getBorderColor(top.color)] : undefined;\n var bottomChildren = bottom ? [getBorderColor(bottom.color)] : undefined;\n var diagonalChildren = diagonal ? [getBorderColor(diagonal.color)] : undefined;\n return {\n name: 'border',\n children: [{\n name: 'left',\n properties: {\n rawMap: {\n style: left && left.style\n }\n },\n children: leftChildren\n }, {\n name: 'right',\n properties: {\n rawMap: {\n style: right && right.style\n }\n },\n children: rightChildren\n }, {\n name: 'top',\n properties: {\n rawMap: {\n style: top && top.style\n }\n },\n children: topChildren\n }, {\n name: 'bottom',\n properties: {\n rawMap: {\n style: bottom && bottom.style\n }\n },\n children: bottomChildren\n }, {\n name: 'diagonal',\n properties: {\n rawMap: {\n style: diagonal && diagonal.style\n }\n },\n children: diagonalChildren\n }]\n };\n }\n};\nvar bordersFactory = {\n getTemplate: function (borders) {\n return {\n name: \"borders\",\n properties: {\n rawMap: {\n count: borders.length\n }\n },\n children: borders.map(function (border) {\n return borderFactory$1.getTemplate(border);\n })\n };\n }\n};\nvar getReadingOrderId = function (readingOrder) {\n var order = ['Context', 'LeftToRight', 'RightToLeft'];\n var pos = order.indexOf(readingOrder);\n return Math.max(pos, 0);\n};\nvar alignmentFactory = {\n getTemplate: function (alignment) {\n var horizontal = alignment.horizontal,\n indent = alignment.indent,\n readingOrder = alignment.readingOrder,\n rotate = alignment.rotate,\n shrinkToFit = alignment.shrinkToFit,\n vertical = alignment.vertical,\n wrapText = alignment.wrapText;\n return {\n name: 'alignment',\n properties: {\n rawMap: {\n horizontal: horizontal && convertLegacyHorizontalAlignment(horizontal),\n indent: indent,\n readingOrder: readingOrder && getReadingOrderId(readingOrder),\n textRotation: rotate,\n shrinkToFit: shrinkToFit,\n vertical: vertical && convertLegacyVerticalAlignment(vertical),\n wrapText: wrapText\n }\n }\n };\n }\n};\nvar protectionFactory = {\n getTemplate: function (protection) {\n var locked = protection.protected === false ? 0 : 1;\n var hidden = protection.hideFormula === true ? 1 : 0;\n return {\n name: 'protection',\n properties: {\n rawMap: {\n hidden: hidden,\n locked: locked\n }\n }\n };\n }\n};\nvar xfFactory = {\n getTemplate: function (xf) {\n var alignment = xf.alignment,\n borderId = xf.borderId,\n fillId = xf.fillId,\n fontId = xf.fontId,\n numFmtId = xf.numFmtId,\n protection = xf.protection,\n xfId = xf.xfId;\n var children = [];\n if (alignment) {\n children.push(alignmentFactory.getTemplate(alignment));\n }\n if (protection) {\n children.push(protectionFactory.getTemplate(protection));\n }\n return {\n name: \"xf\",\n properties: {\n rawMap: {\n applyAlignment: alignment ? 1 : undefined,\n applyProtection: protection ? 1 : undefined,\n applyBorder: borderId ? 1 : undefined,\n applyFill: fillId ? 1 : undefined,\n borderId: borderId,\n fillId: fillId,\n applyFont: fontId ? 1 : undefined,\n fontId: fontId,\n applyNumberFormat: numFmtId ? 1 : undefined,\n numFmtId: numFmtId,\n xfId: xfId\n }\n },\n children: children.length ? children : undefined\n };\n }\n};\nvar cellStylesXfsFactory = {\n getTemplate: function (xfs) {\n return {\n name: \"cellStyleXfs\",\n properties: {\n rawMap: {\n count: xfs.length\n }\n },\n children: xfs.map(function (xf) {\n return xfFactory.getTemplate(xf);\n })\n };\n }\n};\nvar cellXfsFactory = {\n getTemplate: function (xfs) {\n return {\n name: \"cellXfs\",\n properties: {\n rawMap: {\n count: xfs.length\n }\n },\n children: xfs.map(function (xf) {\n return xfFactory.getTemplate(xf);\n })\n };\n }\n};\nvar borderFactory = {\n getTemplate: function (cellStyle) {\n var builtinId = cellStyle.builtinId,\n name = cellStyle.name,\n xfId = cellStyle.xfId;\n return {\n name: \"cellStyle\",\n properties: {\n rawMap: {\n builtinId: builtinId,\n name: name,\n xfId: xfId\n }\n }\n };\n }\n};\nvar cellStylesFactory = {\n getTemplate: function (cellStyles) {\n return {\n name: \"cellStyles\",\n properties: {\n rawMap: {\n count: cellStyles.length\n }\n },\n children: cellStyles.map(function (cellStyle) {\n return borderFactory.getTemplate(cellStyle);\n })\n };\n }\n};\nvar __assign$E = undefined && undefined.__assign || function () {\n __assign$E = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$E.apply(this, arguments);\n};\nvar stylesMap;\nvar registeredNumberFmts;\nvar registeredFonts;\nvar registeredFills;\nvar registeredBorders;\nvar registeredCellStyleXfs;\nvar registeredCellXfs;\nvar registeredCellStyles;\nvar currentSheet;\nvar getStyleName = function (name, currentSheet) {\n if (name.indexOf('mixedStyle') !== -1 && currentSheet > 1) {\n name += \"_\" + currentSheet;\n }\n return name;\n};\nvar resetStylesheetValues = function () {\n stylesMap = {\n base: 0\n };\n registeredNumberFmts = [];\n registeredFonts = [{\n fontName: 'Calibri',\n colorTheme: '1',\n family: '2',\n scheme: 'minor'\n }];\n registeredFills = [{\n patternType: 'none'\n }, {\n patternType: 'gray125'\n }];\n registeredBorders = [{\n left: undefined,\n right: undefined,\n top: undefined,\n bottom: undefined,\n diagonal: undefined\n }];\n registeredCellStyleXfs = [{\n borderId: 0,\n fillId: 0,\n fontId: 0,\n numFmtId: 0\n }];\n registeredCellXfs = [{\n borderId: 0,\n fillId: 0,\n fontId: 0,\n numFmtId: 0,\n xfId: 0\n }];\n registeredCellStyles = [{\n builtinId: 0,\n name: 'Normal',\n xfId: 0\n }];\n};\nvar registerFill = function (fill) {\n var convertedPattern = convertLegacyPattern(fill.pattern);\n var convertedFillColor = convertLegacyColor(fill.color);\n var convertedPatternColor = convertLegacyColor(fill.patternColor);\n var pos = registeredFills.findIndex(function (currentFill) {\n var patternType = currentFill.patternType,\n fgRgb = currentFill.fgRgb,\n bgRgb = currentFill.bgRgb;\n if (patternType != convertedPattern || fgRgb != convertedFillColor || bgRgb != convertedPatternColor) {\n return false;\n }\n return true;\n });\n if (pos === -1) {\n pos = registeredFills.length;\n registeredFills.push({\n patternType: convertedPattern,\n fgRgb: convertedFillColor,\n bgRgb: convertedPatternColor\n });\n }\n return pos;\n};\nvar registerNumberFmt = function (format) {\n format = _.utf8_encode(format);\n if (numberFormatMap[format]) {\n return numberFormatMap[format];\n }\n var pos = registeredNumberFmts.findIndex(function (currentFormat) {\n return currentFormat.formatCode === format;\n });\n if (pos === -1) {\n pos = registeredNumberFmts.length + 164;\n registeredNumberFmts.push({\n formatCode: format,\n numFmtId: pos\n });\n } else {\n pos = registeredNumberFmts[pos].numFmtId;\n }\n return pos;\n};\nvar registerBorders = function (borders) {\n var borderBottom = borders.borderBottom,\n borderTop = borders.borderTop,\n borderLeft = borders.borderLeft,\n borderRight = borders.borderRight;\n var bottomStyle;\n var topStyle;\n var leftStyle;\n var rightStyle;\n var bottomColor;\n var topColor;\n var leftColor;\n var rightColor;\n if (borderLeft) {\n leftStyle = convertLegacyBorder(borderLeft.lineStyle, borderLeft.weight);\n leftColor = convertLegacyColor(borderLeft.color);\n }\n if (borderRight) {\n rightStyle = convertLegacyBorder(borderRight.lineStyle, borderRight.weight);\n rightColor = convertLegacyColor(borderRight.color);\n }\n if (borderBottom) {\n bottomStyle = convertLegacyBorder(borderBottom.lineStyle, borderBottom.weight);\n bottomColor = convertLegacyColor(borderBottom.color);\n }\n if (borderTop) {\n topStyle = convertLegacyBorder(borderTop.lineStyle, borderTop.weight);\n topColor = convertLegacyColor(borderTop.color);\n }\n var pos = registeredBorders.findIndex(function (currentBorder) {\n var left = currentBorder.left,\n right = currentBorder.right,\n top = currentBorder.top,\n bottom = currentBorder.bottom;\n if (!left && (leftStyle || leftColor)) {\n return false;\n }\n if (!right && (rightStyle || rightColor)) {\n return false;\n }\n if (!top && (topStyle || topColor)) {\n return false;\n }\n if (!bottom && (bottomStyle || bottomColor)) {\n return false;\n }\n var _a = left || {},\n clS = _a.style,\n clC = _a.color;\n var _b = right || {},\n crS = _b.style,\n crC = _b.color;\n var _c = top || {},\n ctS = _c.style,\n ctC = _c.color;\n var _d = bottom || {},\n cbS = _d.style,\n cbC = _d.color;\n if (clS != leftStyle || clC != leftColor) {\n return false;\n }\n if (crS != rightStyle || crC != rightColor) {\n return false;\n }\n if (ctS != topStyle || ctC != topColor) {\n return false;\n }\n if (cbS != bottomStyle || cbC != bottomColor) {\n return false;\n }\n return true;\n });\n if (pos === -1) {\n pos = registeredBorders.length;\n registeredBorders.push({\n left: {\n style: leftStyle,\n color: leftColor\n },\n right: {\n style: rightStyle,\n color: rightColor\n },\n top: {\n style: topStyle,\n color: topColor\n },\n bottom: {\n style: bottomStyle,\n color: bottomColor\n },\n diagonal: {\n style: undefined,\n color: undefined\n }\n });\n }\n return pos;\n};\nvar registerFont = function (font) {\n var _a = font.fontName,\n name = _a === void 0 ? 'Calibri' : _a,\n color = font.color,\n size = font.size,\n bold = font.bold,\n italic = font.italic,\n outline = font.outline,\n shadow = font.shadow,\n strikeThrough = font.strikeThrough,\n underline = font.underline,\n family = font.family,\n verticalAlign = font.verticalAlign;\n var utf8Name = name ? _.utf8_encode(name) : name;\n var convertedColor = convertLegacyColor(color);\n var familyId = getFontFamilyId(family);\n var convertedUnderline = underline ? underline.toLocaleLowerCase() : undefined;\n var convertedVerticalAlign = verticalAlign ? verticalAlign.toLocaleLowerCase() : undefined;\n var pos = registeredFonts.findIndex(function (currentFont) {\n if (currentFont.fontName != utf8Name || currentFont.color != convertedColor || currentFont.size != size || currentFont.bold != bold || currentFont.italic != italic || currentFont.outline != outline || currentFont.shadow != shadow || currentFont.strikeThrough != strikeThrough || currentFont.underline != convertedUnderline || currentFont.verticalAlign != convertedVerticalAlign ||\n // @ts-ignore\n currentFont.family != familyId) {\n return false;\n }\n return true;\n });\n if (pos === -1) {\n pos = registeredFonts.length;\n registeredFonts.push({\n fontName: utf8Name,\n color: convertedColor,\n size: size,\n bold: bold,\n italic: italic,\n outline: outline,\n shadow: shadow,\n strikeThrough: strikeThrough,\n underline: convertedUnderline,\n verticalAlign: convertedVerticalAlign,\n family: familyId != null ? familyId.toString() : undefined\n });\n }\n return pos;\n};\nvar registerStyle = function (config) {\n var alignment = config.alignment,\n borders = config.borders,\n font = config.font,\n interior = config.interior,\n numberFormat = config.numberFormat,\n protection = config.protection;\n var id = config.id;\n var currentFill = 0;\n var currentBorder = 0;\n var currentFont = 0;\n var currentNumberFmt = 0;\n if (!id) {\n return;\n }\n id = getStyleName(id, currentSheet);\n if (stylesMap[id] != undefined) {\n return;\n }\n if (interior) {\n currentFill = registerFill(interior);\n }\n if (borders) {\n currentBorder = registerBorders(borders);\n }\n if (font) {\n currentFont = registerFont(font);\n }\n if (numberFormat) {\n currentNumberFmt = registerNumberFmt(numberFormat.format);\n }\n stylesMap[id] = registeredCellXfs.length;\n registeredCellXfs.push({\n alignment: alignment,\n borderId: currentBorder || 0,\n fillId: currentFill || 0,\n fontId: currentFont || 0,\n numFmtId: currentNumberFmt || 0,\n protection: protection,\n xfId: 0\n });\n};\nvar stylesheetFactory = {\n getTemplate: function (defaultFontSize) {\n var numberFormats = numberFormatsFactory.getTemplate(registeredNumberFmts);\n var fonts = fontsFactory.getTemplate(registeredFonts.map(function (font) {\n return __assign$E(__assign$E({}, font), {\n size: font.size != null ? font.size : defaultFontSize\n });\n }));\n var fills = fillsFactory.getTemplate(registeredFills);\n var borders = bordersFactory.getTemplate(registeredBorders);\n var cellStylesXfs = cellStylesXfsFactory.getTemplate(registeredCellStyleXfs);\n var cellXfs = cellXfsFactory.getTemplate(registeredCellXfs);\n var cellStyles = cellStylesFactory.getTemplate(registeredCellStyles);\n resetStylesheetValues();\n return {\n name: 'styleSheet',\n properties: {\n rawMap: {\n 'mc:Ignorable': 'x14ac x16r2 xr',\n 'xmlns': 'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\n 'xmlns:mc': 'http://schemas.openxmlformats.org/markup-compatibility/2006',\n 'xmlns:x14ac': 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac',\n 'xmlns:x16r2': 'http://schemas.microsoft.com/office/spreadsheetml/2015/02/main',\n 'xmlns:xr': 'http://schemas.microsoft.com/office/spreadsheetml/2014/revision'\n }\n },\n children: [numberFormats, fonts, fills, borders, cellStylesXfs, cellXfs, cellStyles, {\n name: 'tableStyles',\n properties: {\n rawMap: {\n count: 0,\n defaultPivotStyle: 'PivotStyleLight16',\n defaultTableStyle: 'TableStyleMedium2'\n }\n }\n }]\n };\n }\n};\nvar getStyleId = function (name, currentSheet) {\n return stylesMap[getStyleName(name, currentSheet)] || 0;\n};\nvar registerStyles = function (styles, _currentSheet) {\n currentSheet = _currentSheet;\n if (currentSheet === 1) {\n resetStylesheetValues();\n }\n styles.forEach(registerStyle);\n};\nvar sheetFactory = {\n getTemplate: function (name, idx) {\n var sheetId = (idx + 1).toString();\n return {\n name: \"sheet\",\n properties: {\n rawMap: {\n \"name\": name,\n \"sheetId\": sheetId,\n \"r:id\": \"rId\" + sheetId\n }\n }\n };\n }\n};\nvar sheetsFactory = {\n getTemplate: function (names) {\n return {\n name: \"sheets\",\n children: names.map(function (sheet, idx) {\n return sheetFactory.getTemplate(sheet, idx);\n })\n };\n }\n};\nvar workbookFactory = {\n getTemplate: function (names) {\n return {\n name: \"workbook\",\n properties: {\n prefixedAttributes: [{\n prefix: \"xmlns:\",\n map: {\n r: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships\"\n }\n }],\n rawMap: {\n xmlns: \"http://schemas.openxmlformats.org/spreadsheetml/2006/main\"\n }\n },\n children: [sheetsFactory.getTemplate(names)]\n };\n }\n};\n\n// https://docs.microsoft.com/en-us/office/troubleshoot/excel/determine-column-widths\nvar getExcelCellWidth = function (width) {\n return Math.ceil((width - 12) / 7 + 1);\n};\nvar columnFactory = {\n getTemplate: function (config) {\n var min = config.min,\n max = config.max,\n outlineLevel = config.outlineLevel,\n s = config.s,\n width = config.width,\n hidden = config.hidden,\n bestFit = config.bestFit;\n var excelWidth = 1;\n var customWidth = '0';\n if (width > 1) {\n excelWidth = getExcelCellWidth(width);\n customWidth = '1';\n }\n return {\n name: 'col',\n properties: {\n rawMap: {\n min: min,\n max: max,\n outlineLevel: outlineLevel != null ? outlineLevel : undefined,\n width: excelWidth,\n style: s,\n hidden: hidden ? '1' : '0',\n bestFit: bestFit ? '1' : '0',\n customWidth: customWidth\n }\n }\n };\n }\n};\nvar convertLegacyType = function (type) {\n var t = type.charAt(0).toLowerCase();\n return t === 's' ? 'inlineStr' : t;\n};\nvar cellFactory = {\n getTemplate: function (config, idx, currentSheet) {\n var ref = config.ref,\n data = config.data,\n styleId = config.styleId;\n var _a = data || {\n type: 'empty',\n value: null\n },\n type = _a.type,\n value = _a.value;\n var convertedType = type;\n if (type === 'f') {\n convertedType = 'str';\n } else if (type.charAt(0) === type.charAt(0).toUpperCase()) {\n convertedType = convertLegacyType(type);\n }\n var obj = {\n name: 'c',\n properties: {\n rawMap: {\n r: ref,\n t: convertedType === 'empty' ? undefined : convertedType,\n s: styleId ? getStyleId(styleId, currentSheet) : undefined\n }\n }\n };\n if (convertedType === 'empty') {\n return obj;\n }\n var children;\n if (convertedType === 'str' && type === 'f') {\n children = [{\n name: 'f',\n textNode: _.escapeString(_.utf8_encode(value))\n }];\n } else if (convertedType === 'inlineStr') {\n children = [{\n name: 'is',\n children: [{\n name: 't',\n textNode: _.escapeString(_.utf8_encode(value))\n }]\n }];\n } else {\n children = [{\n name: 'v',\n textNode: value\n }];\n }\n return Object.assign({}, obj, {\n children: children\n });\n }\n};\nvar __read$O = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread$s = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$O(arguments[i]));\n return ar;\n};\nvar addEmptyCells = function (cells, rowIdx) {\n var mergeMap = [];\n var posCounter = 0;\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n if (cell.mergeAcross) {\n mergeMap.push({\n pos: i,\n excelPos: posCounter\n });\n posCounter += cell.mergeAcross;\n }\n posCounter++;\n }\n if (mergeMap.length) {\n for (var i = mergeMap.length - 1; i >= 0; i--) {\n var mergedCells = [];\n var cell = cells[mergeMap[i].pos];\n for (var j = 1; j <= cell.mergeAcross; j++) {\n mergedCells.push({\n ref: \"\" + getExcelColumnName(mergeMap[i].excelPos + 1 + j) + (rowIdx + 1),\n styleId: cell.styleId,\n data: {\n type: 'empty',\n value: null\n }\n });\n }\n if (mergedCells.length) {\n cells.splice.apply(cells, __spread$s([mergeMap[i].pos + 1, 0], mergedCells));\n }\n }\n }\n};\nvar shouldDisplayCell = function (cell) {\n var _a;\n return ((_a = cell.data) === null || _a === void 0 ? void 0 : _a.value) !== '' || cell.styleId !== undefined;\n};\nvar rowFactory = {\n getTemplate: function (config, idx, currentSheet) {\n var collapsed = config.collapsed,\n hidden = config.hidden,\n height = config.height,\n outlineLevel = config.outlineLevel,\n _a = config.cells,\n cells = _a === void 0 ? [] : _a;\n addEmptyCells(cells, idx);\n var children = cells.filter(shouldDisplayCell).map(function (cell, idx) {\n return cellFactory.getTemplate(cell, idx, currentSheet);\n });\n return {\n name: \"row\",\n properties: {\n rawMap: {\n r: idx + 1,\n collapsed: collapsed,\n hidden: hidden ? '1' : '0',\n ht: height,\n customHeight: height != null ? '1' : '0',\n spans: '1:1',\n outlineLevel: outlineLevel || undefined\n }\n },\n children: children\n };\n }\n};\nvar mergeCellFactory = {\n getTemplate: function (ref) {\n return {\n name: 'mergeCell',\n properties: {\n rawMap: {\n ref: ref\n }\n }\n };\n }\n};\nvar getMergedCellsAndAddColumnGroups = function (rows, cols) {\n var mergedCells = [];\n var cellsWithCollapsibleGroups = [];\n rows.forEach(function (currentRow, rowIdx) {\n var cells = currentRow.cells;\n var merges = 0;\n var lastCol;\n cells.forEach(function (currentCell, cellIdx) {\n var min = cellIdx + merges + 1;\n var start = getExcelColumnName(min);\n var outputRow = rowIdx + 1;\n if (currentCell.mergeAcross) {\n merges += currentCell.mergeAcross;\n var end = getExcelColumnName(cellIdx + merges + 1);\n mergedCells.push(\"\" + start + outputRow + \":\" + end + outputRow);\n }\n if (!cols[min - 1]) {\n cols[min - 1] = {};\n }\n var collapsibleRanges = currentCell.collapsibleRanges;\n if (collapsibleRanges) {\n collapsibleRanges.forEach(function (range) {\n cellsWithCollapsibleGroups.push([min + range[0], min + range[1]]);\n });\n }\n lastCol = cols[min - 1];\n lastCol.min = min;\n lastCol.max = min;\n currentCell.ref = \"\" + start + outputRow;\n });\n });\n cellsWithCollapsibleGroups.sort(function (a, b) {\n if (a[0] !== b[0]) {\n return a[0] - b[0];\n }\n return b[1] - a[1];\n });\n var rangeMap = new Map();\n var outlineLevel = new Map();\n cellsWithCollapsibleGroups.filter(function (currentRange) {\n var rangeString = currentRange.toString();\n var inMap = rangeMap.get(rangeString);\n if (inMap) {\n return false;\n }\n rangeMap.set(rangeString, true);\n return true;\n }).forEach(function (range) {\n var refCol = cols.find(function (col) {\n return col.min == range[0] && col.max == range[1];\n });\n var currentOutlineLevel = outlineLevel.get(range[0]);\n cols.push({\n min: range[0],\n max: range[1],\n outlineLevel: currentOutlineLevel || 1,\n width: (refCol || {\n width: 100\n }).width\n });\n outlineLevel.set(range[0], (currentOutlineLevel || 0) + 1);\n });\n return mergedCells;\n};\nvar getPageOrientation = function (orientation) {\n if (!orientation || orientation !== 'Portrait' && orientation !== 'Landscape') {\n return 'portrait';\n }\n return orientation.toLocaleLowerCase();\n};\nvar getPageSize = function (pageSize) {\n if (pageSize == null) {\n return 1;\n }\n var positions = ['Letter', 'Letter Small', 'Tabloid', 'Ledger', 'Legal', 'Statement', 'Executive', 'A3', 'A4', 'A4 Small', 'A5', 'A6', 'B4', 'B5', 'Folio', 'Envelope', 'Envelope DL', 'Envelope C5', 'Envelope B5', 'Envelope C3', 'Envelope C4', 'Envelope C6', 'Envelope Monarch', 'Japanese Postcard', 'Japanese Double Postcard'];\n var pos = positions.indexOf(pageSize);\n return pos === -1 ? 1 : pos + 1;\n};\nvar addColumns = function (columns) {\n return function (children) {\n if (columns.length) {\n children.push({\n name: 'cols',\n children: columns.map(function (column) {\n return columnFactory.getTemplate(column);\n })\n });\n }\n return children;\n };\n};\nvar addSheetData = function (rows, sheetNumber) {\n return function (children) {\n if (rows.length) {\n children.push({\n name: 'sheetData',\n children: rows.map(function (row, idx) {\n return rowFactory.getTemplate(row, idx, sheetNumber);\n })\n });\n }\n return children;\n };\n};\nvar addMergeCells = function (mergeCells) {\n return function (children) {\n if (mergeCells.length) {\n children.push({\n name: 'mergeCells',\n properties: {\n rawMap: {\n count: mergeCells.length\n }\n },\n children: mergeCells.map(function (mergedCell) {\n return mergeCellFactory.getTemplate(mergedCell);\n })\n });\n }\n return children;\n };\n};\nvar addPageMargins = function (margins) {\n return function (children) {\n var _a = margins.top,\n top = _a === void 0 ? 0.75 : _a,\n _b = margins.right,\n right = _b === void 0 ? 0.7 : _b,\n _c = margins.bottom,\n bottom = _c === void 0 ? 0.75 : _c,\n _d = margins.left,\n left = _d === void 0 ? 0.7 : _d,\n _e = margins.header,\n header = _e === void 0 ? 0.3 : _e,\n _f = margins.footer,\n footer = _f === void 0 ? 0.3 : _f;\n children.push({\n name: 'pageMargins',\n properties: {\n rawMap: {\n bottom: bottom,\n footer: footer,\n header: header,\n left: left,\n right: right,\n top: top\n }\n }\n });\n return children;\n };\n};\nvar addPageSetup = function (pageSetup) {\n return function (children) {\n if (pageSetup) {\n children.push({\n name: 'pageSetup',\n properties: {\n rawMap: {\n horizontalDpi: 0,\n verticalDpi: 0,\n orientation: getPageOrientation(pageSetup.orientation),\n paperSize: getPageSize(pageSetup.pageSize)\n }\n }\n });\n }\n return children;\n };\n};\nvar replaceHeaderFooterTokens = function (value) {\n var map = {\n '&[Page]': '&P',\n '&[Pages]': '&N',\n '&[Date]': '&D',\n '&[Time]': '&T',\n '&[Tab]': '&A',\n '&[Path]': '&Z',\n '&[File]': '&F'\n };\n _.iterateObject(map, function (key, val) {\n value = value.replace(key, val);\n });\n return value;\n};\nvar getHeaderPosition = function (position) {\n if (position === 'Center') {\n return 'C';\n }\n if (position === 'Right') {\n return 'R';\n }\n return 'L';\n};\nvar applyHeaderFontStyle = function (headerString, font) {\n if (!font) {\n return headerString;\n }\n headerString += '&"';\n headerString += font.fontName || 'Calibri';\n if (font.bold !== font.italic) {\n headerString += font.bold ? ',Bold' : ',Italic';\n } else if (font.bold) {\n headerString += ',Bold Italic';\n } else {\n headerString += ',Regular';\n }\n headerString += '"';\n if (font.size) {\n headerString += \"&\" + font.size;\n }\n if (font.strikeThrough) {\n headerString += '&S';\n }\n if (font.underline) {\n headerString += \"&\" + (font.underline === 'Double' ? 'E' : 'U');\n }\n if (font.color) {\n headerString += \"&K\" + font.color.replace('#', '').toUpperCase();\n }\n return headerString;\n};\nvar processHeaderFooterContent = function (content) {\n return content.reduce(function (prev, curr) {\n var pos = getHeaderPosition(curr.position);\n var output = applyHeaderFontStyle(prev + \"&\" + pos, curr.font);\n return \"\" + output + _.escapeString(replaceHeaderFooterTokens(curr.value));\n }, '');\n};\nvar buildHeaderFooter = function (headerFooterConfig) {\n var rules = ['all', 'first', 'even'];\n var headersAndFooters = [];\n rules.forEach(function (rule) {\n var headerFooter = headerFooterConfig[rule];\n var namePrefix = rule === 'all' ? 'odd' : rule;\n if (!headerFooter || !headerFooter.header && !headerFooter.footer) {\n return;\n }\n _.iterateObject(headerFooter, function (key, value) {\n var nameSuffix = \"\" + key.charAt(0).toUpperCase() + key.slice(1);\n if (value) {\n headersAndFooters.push({\n name: \"\" + namePrefix + nameSuffix,\n properties: {\n rawMap: {\n 'xml:space': 'preserve'\n }\n },\n textNode: processHeaderFooterContent(value)\n });\n }\n });\n });\n return headersAndFooters;\n};\nvar addHeaderFooter = function (headerFooterConfig) {\n return function (children) {\n if (!headerFooterConfig) {\n return children;\n }\n var differentFirst = headerFooterConfig.first != null ? 1 : 0;\n var differentOddEven = headerFooterConfig.even != null ? 1 : 0;\n children.push({\n name: 'headerFooter',\n properties: {\n rawMap: {\n differentFirst: differentFirst,\n differentOddEven: differentOddEven\n }\n },\n children: buildHeaderFooter(headerFooterConfig)\n });\n return children;\n };\n};\nvar addDrawingRel = function (currentSheet) {\n return function (children) {\n if (ExcelXlsxFactory.worksheetImages.get(currentSheet)) {\n children.push({\n name: 'drawing',\n properties: {\n rawMap: {\n 'r:id': 'rId1'\n }\n }\n });\n }\n return children;\n };\n};\nvar addSheetPr = function () {\n return function (children) {\n children.push({\n name: 'sheetPr',\n children: [{\n name: 'outlinePr',\n properties: {\n rawMap: {\n summaryBelow: 0\n }\n }\n }]\n });\n return children;\n };\n};\nvar addSheetFormatPr = function (rows) {\n return function (children) {\n var maxOutline = rows.reduce(function (prev, row) {\n if (row.outlineLevel && row.outlineLevel > prev) {\n return row.outlineLevel;\n }\n return prev;\n }, 0);\n children.push({\n name: 'sheetFormatPr',\n properties: {\n rawMap: {\n baseColWidth: 10,\n defaultRowHeight: 16,\n outlineLevelRow: maxOutline ? maxOutline : undefined\n }\n }\n });\n return children;\n };\n};\nvar worksheetFactory = {\n getTemplate: function (params) {\n var worksheet = params.worksheet,\n currentSheet = params.currentSheet,\n _a = params.margins,\n margins = _a === void 0 ? {} : _a,\n pageSetup = params.pageSetup,\n headerFooterConfig = params.headerFooterConfig;\n var table = worksheet.table;\n var rows = table.rows,\n columns = table.columns;\n var mergedCells = columns && columns.length ? getMergedCellsAndAddColumnGroups(rows, columns) : [];\n var createWorksheetChildren = _.compose(addSheetPr(), addSheetFormatPr(rows), addColumns(columns), addSheetData(rows, currentSheet + 1), addMergeCells(mergedCells), addPageMargins(margins), addPageSetup(pageSetup), addHeaderFooter(headerFooterConfig), addDrawingRel(currentSheet));\n var children = createWorksheetChildren([]);\n return {\n name: \"worksheet\",\n properties: {\n prefixedAttributes: [{\n prefix: \"xmlns:\",\n map: {\n r: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships\"\n }\n }],\n rawMap: {\n xmlns: \"http://schemas.openxmlformats.org/spreadsheetml/2006/main\"\n }\n },\n children: children\n };\n }\n};\nvar relationshipFactory = {\n getTemplate: function (config) {\n var Id = config.Id,\n Type = config.Type,\n Target = config.Target;\n return {\n name: \"Relationship\",\n properties: {\n rawMap: {\n Id: Id,\n Type: Type,\n Target: Target\n }\n }\n };\n }\n};\nvar relationshipsFactory = {\n getTemplate: function (c) {\n var children = c.map(function (relationship) {\n return relationshipFactory.getTemplate(relationship);\n });\n return {\n name: \"Relationships\",\n properties: {\n rawMap: {\n xmlns: \"http://schemas.openxmlformats.org/package/2006/relationships\"\n }\n },\n children: children\n };\n }\n};\nvar __read$N = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread$r = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$N(arguments[i]));\n return ar;\n};\n/**\n * See https://www.ecma-international.org/news/TC45_current_work/OpenXML%20White%20Paper.pdf\n */\nvar ExcelXlsxFactory = /** @class */function () {\n function ExcelXlsxFactory() {}\n ExcelXlsxFactory.createExcel = function (styles, worksheet, margins, pageSetup, headerFooterConfig) {\n this.addSheetName(worksheet);\n registerStyles(styles, this.sheetNames.length);\n return this.createWorksheet(worksheet, margins, pageSetup, headerFooterConfig);\n };\n ExcelXlsxFactory.buildImageMap = function (image, rowIndex, col, columnsToExport, rowHeight) {\n var currentSheetIndex = this.sheetNames.length;\n var registeredImage = this.images.get(image.id);\n if (!image.position || !image.position.row || !image.position.column) {\n if (!image.position) {\n image.position = {};\n }\n image.position = Object.assign({}, image.position, {\n row: rowIndex,\n column: columnsToExport.indexOf(col) + 1\n });\n }\n var calculatedImage = image;\n setExcelImageTotalWidth(calculatedImage, columnsToExport);\n setExcelImageTotalHeight(calculatedImage, rowHeight);\n if (registeredImage) {\n var currentSheetImages = registeredImage.find(function (currentImage) {\n return currentImage.sheetId === currentSheetIndex;\n });\n if (currentSheetImages) {\n currentSheetImages.image.push(calculatedImage);\n } else {\n registeredImage.push({\n sheetId: currentSheetIndex,\n image: [calculatedImage]\n });\n }\n } else {\n this.images.set(calculatedImage.id, [{\n sheetId: currentSheetIndex,\n image: [calculatedImage]\n }]);\n this.workbookImageIds.set(calculatedImage.id, {\n type: calculatedImage.imageType,\n index: this.workbookImageIds.size\n });\n }\n this.buildSheetImageMap(currentSheetIndex, calculatedImage);\n };\n ExcelXlsxFactory.buildSheetImageMap = function (sheetIndex, image) {\n var worksheetImageIdMap = this.worksheetImageIds.get(sheetIndex);\n if (!worksheetImageIdMap) {\n worksheetImageIdMap = new Map();\n this.worksheetImageIds.set(sheetIndex, worksheetImageIdMap);\n }\n var sheetImages = this.worksheetImages.get(sheetIndex);\n if (!sheetImages) {\n this.worksheetImages.set(sheetIndex, [image]);\n worksheetImageIdMap.set(image.id, {\n index: 0,\n type: image.imageType\n });\n } else {\n sheetImages.push(image);\n if (!worksheetImageIdMap.get(image.id)) {\n worksheetImageIdMap.set(image.id, {\n index: worksheetImageIdMap.size,\n type: image.imageType\n });\n }\n }\n };\n ExcelXlsxFactory.addSheetName = function (worksheet) {\n var name = _.escapeString(worksheet.name) || '';\n var append = '';\n while (this.sheetNames.indexOf(\"\" + name + append) !== -1) {\n if (append === '') {\n append = '_1';\n } else {\n var curr = parseInt(append.slice(1), 10);\n append = \"_\" + (curr + 1);\n }\n }\n worksheet.name = \"\" + name + append;\n this.sheetNames.push(worksheet.name);\n };\n ExcelXlsxFactory.getStringPosition = function (str) {\n if (this.sharedStrings.has(str)) {\n return this.sharedStrings.get(str);\n }\n this.sharedStrings.set(str, this.sharedStrings.size);\n return this.sharedStrings.size - 1;\n };\n ExcelXlsxFactory.resetFactory = function () {\n this.sharedStrings = new Map();\n this.images = new Map();\n this.worksheetImages = new Map();\n this.workbookImageIds = new Map();\n this.worksheetImageIds = new Map();\n this.sheetNames = [];\n this.factoryMode = ExcelFactoryMode.SINGLE_SHEET;\n };\n ExcelXlsxFactory.createWorkbook = function () {\n return createXmlPart(workbookFactory.getTemplate(this.sheetNames));\n };\n ExcelXlsxFactory.createStylesheet = function (defaultFontSize) {\n return createXmlPart(stylesheetFactory.getTemplate(defaultFontSize));\n };\n ExcelXlsxFactory.createSharedStrings = function () {\n return createXmlPart(sharedStrings.getTemplate(this.sharedStrings));\n };\n ExcelXlsxFactory.createCore = function (author) {\n return createXmlPart(coreFactory.getTemplate(author));\n };\n ExcelXlsxFactory.createContentTypes = function (sheetLen) {\n return createXmlPart(contentTypesFactory.getTemplate(sheetLen));\n };\n ExcelXlsxFactory.createRels = function () {\n var rs = relationshipsFactory.getTemplate([{\n Id: 'rId1',\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument',\n Target: 'xl/workbook.xml'\n }, {\n Id: 'rId2',\n Type: 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties',\n Target: 'docProps/core.xml'\n }]);\n return createXmlPart(rs);\n };\n ExcelXlsxFactory.createTheme = function () {\n return createXmlPart(officeTheme.getTemplate());\n };\n ExcelXlsxFactory.createWorkbookRels = function (sheetLen) {\n var worksheets = new Array(sheetLen).fill(undefined).map(function (v, i) {\n return {\n Id: \"rId\" + (i + 1),\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet',\n Target: \"worksheets/sheet\" + (i + 1) + \".xml\"\n };\n });\n var rs = relationshipsFactory.getTemplate(__spread$r(worksheets, [{\n Id: \"rId\" + (sheetLen + 1),\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme',\n Target: 'theme/theme1.xml'\n }, {\n Id: \"rId\" + (sheetLen + 2),\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles',\n Target: 'styles.xml'\n }, {\n Id: \"rId\" + (sheetLen + 3),\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings',\n Target: 'sharedStrings.xml'\n }]));\n return createXmlPart(rs);\n };\n ExcelXlsxFactory.createDrawing = function (sheetIndex) {\n return createXmlPart(drawingFactory.getTemplate({\n sheetIndex: sheetIndex\n }));\n };\n ExcelXlsxFactory.createDrawingRel = function (sheetIndex) {\n var _this = this;\n var worksheetImageIds = this.worksheetImageIds.get(sheetIndex);\n var XMLArr = [];\n worksheetImageIds.forEach(function (value, key) {\n XMLArr.push({\n Id: \"rId\" + (value.index + 1),\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image',\n Target: \"../media/image\" + (_this.workbookImageIds.get(key).index + 1) + \".\" + value.type\n });\n });\n return createXmlPart(relationshipsFactory.getTemplate(XMLArr));\n };\n ExcelXlsxFactory.createWorksheetDrawingRel = function (currentRelationIndex) {\n var rs = relationshipsFactory.getTemplate([{\n Id: 'rId1',\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing',\n Target: \"../drawings/drawing\" + (currentRelationIndex + 1) + \".xml\"\n }]);\n return createXmlPart(rs);\n };\n ExcelXlsxFactory.createWorksheet = function (worksheet, margins, pageSetup, headerFooterConfig) {\n return createXmlPart(worksheetFactory.getTemplate({\n worksheet: worksheet,\n currentSheet: this.sheetNames.length - 1,\n margins: margins,\n pageSetup: pageSetup,\n headerFooterConfig: headerFooterConfig\n }));\n };\n ExcelXlsxFactory.sharedStrings = new Map();\n ExcelXlsxFactory.sheetNames = [];\n /** Maps images to sheet */\n ExcelXlsxFactory.images = new Map();\n /** Maps sheets to images */\n ExcelXlsxFactory.worksheetImages = new Map();\n /** Maps all workbook images to a global Id */\n ExcelXlsxFactory.workbookImageIds = new Map();\n /** Maps all sheet images to unique Ids */\n ExcelXlsxFactory.worksheetImageIds = new Map();\n ExcelXlsxFactory.factoryMode = ExcelFactoryMode.SINGLE_SHEET;\n return ExcelXlsxFactory;\n}();\nvar __extends$2Y = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar ExcelXlsxSerializingSession = /** @class */function (_super) {\n __extends$2Y(ExcelXlsxSerializingSession, _super);\n function ExcelXlsxSerializingSession() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ExcelXlsxSerializingSession.prototype.createExcel = function (data) {\n var _a = this,\n excelStyles = _a.excelStyles,\n config = _a.config;\n var margins = config.margins,\n pageSetup = config.pageSetup,\n headerFooterConfig = config.headerFooterConfig;\n return ExcelXlsxFactory.createExcel(excelStyles, data, margins, pageSetup, headerFooterConfig);\n };\n ExcelXlsxSerializingSession.prototype.getDataTypeForValue = function (valueForCell) {\n if (valueForCell === undefined) {\n return 'empty';\n }\n return _.isNumeric(valueForCell) ? 'n' : 's';\n };\n ExcelXlsxSerializingSession.prototype.getType = function (type, style, value) {\n if (this.isFormula(value)) {\n return 'f';\n }\n if (style && style.dataType) {\n switch (style.dataType.toLocaleLowerCase()) {\n case 'formula':\n return 'f';\n case 'string':\n return 's';\n case 'number':\n return 'n';\n case 'datetime':\n return 'd';\n case 'error':\n return 'e';\n case 'boolean':\n return 'b';\n default:\n console.warn(\"AG Grid: Unrecognized data type for excel export [\" + style.id + \".dataType=\" + style.dataType + \"]\");\n }\n }\n return type;\n };\n ExcelXlsxSerializingSession.prototype.addImage = function (rowIndex, column, value) {\n if (!this.config.addImageToCell) {\n return;\n }\n var addedImage = this.config.addImageToCell(rowIndex, column, value);\n if (!addedImage) {\n return;\n }\n ExcelXlsxFactory.buildImageMap(addedImage.image, rowIndex, column, this.columnsToExport, this.config.rowHeight);\n return addedImage;\n };\n ExcelXlsxSerializingSession.prototype.createCell = function (styleId, type, value) {\n var actualStyle = this.getStyleById(styleId);\n var typeTransformed = this.getType(type, actualStyle, value) || type;\n return {\n styleId: actualStyle ? styleId : undefined,\n data: {\n type: typeTransformed,\n value: this.getCellValue(typeTransformed, value)\n }\n };\n };\n ExcelXlsxSerializingSession.prototype.createMergedCell = function (styleId, type, value, numOfCells) {\n var valueToUse = value == null ? '' : value;\n return {\n styleId: !!this.getStyleById(styleId) ? styleId : undefined,\n data: {\n type: type,\n value: type === 's' ? ExcelXlsxFactory.getStringPosition(valueToUse).toString() : value\n },\n mergeAcross: numOfCells\n };\n };\n ExcelXlsxSerializingSession.prototype.getCellValue = function (type, value) {\n if (value == null) {\n return ExcelXlsxFactory.getStringPosition('').toString();\n }\n switch (type) {\n case 's':\n return value === '' ? '' : ExcelXlsxFactory.getStringPosition(value).toString();\n case 'f':\n return value.slice(1);\n case 'n':\n return Number(value).toString();\n default:\n return value;\n }\n };\n return ExcelXlsxSerializingSession;\n}(BaseExcelSerializingSession);\nvar __extends$2X = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign$D = undefined && undefined.__assign || function () {\n __assign$D = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$D.apply(this, arguments);\n};\nvar __decorate$1R = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar getMultipleSheetsAsExcel = function (params) {\n var data = params.data,\n _a = params.fontSize,\n fontSize = _a === void 0 ? 11 : _a,\n _b = params.author,\n author = _b === void 0 ? 'AG Grid' : _b;\n var hasImages = ExcelXlsxFactory.images.size > 0;\n ZipContainer.addFolders(['_rels/', 'docProps/', 'xl/', 'xl/theme/', 'xl/_rels/', 'xl/worksheets/']);\n if (hasImages) {\n ZipContainer.addFolders(['xl/worksheets/_rels', 'xl/drawings/', 'xl/drawings/_rels', 'xl/media/']);\n var imgCounter_1 = 0;\n ExcelXlsxFactory.images.forEach(function (value) {\n var firstImage = value[0].image[0];\n var ext = firstImage.imageType;\n ZipContainer.addFile(\"xl/media/image\" + ++imgCounter_1 + \".\" + ext, firstImage.base64, true);\n });\n }\n if (!data || data.length === 0) {\n console.warn(\"AG Grid: Invalid params supplied to getMultipleSheetsAsExcel() - `ExcelExportParams.data` is empty.\");\n ExcelXlsxFactory.resetFactory();\n return;\n }\n var sheetLen = data.length;\n var imageRelationCounter = 0;\n data.forEach(function (value, idx) {\n ZipContainer.addFile(\"xl/worksheets/sheet\" + (idx + 1) + \".xml\", value);\n if (hasImages && ExcelXlsxFactory.worksheetImages.get(idx)) {\n createImageRelationsForSheet(idx, imageRelationCounter++);\n }\n });\n ZipContainer.addFile('xl/workbook.xml', ExcelXlsxFactory.createWorkbook());\n ZipContainer.addFile('xl/styles.xml', ExcelXlsxFactory.createStylesheet(fontSize));\n ZipContainer.addFile('xl/sharedStrings.xml', ExcelXlsxFactory.createSharedStrings());\n ZipContainer.addFile('xl/theme/theme1.xml', ExcelXlsxFactory.createTheme());\n ZipContainer.addFile('xl/_rels/workbook.xml.rels', ExcelXlsxFactory.createWorkbookRels(sheetLen));\n ZipContainer.addFile('docProps/core.xml', ExcelXlsxFactory.createCore(author));\n ZipContainer.addFile('[Content_Types].xml', ExcelXlsxFactory.createContentTypes(sheetLen));\n ZipContainer.addFile('_rels/.rels', ExcelXlsxFactory.createRels());\n ExcelXlsxFactory.resetFactory();\n var mimeType = params.mimeType || 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n return ZipContainer.getContent(mimeType);\n};\nvar exportMultipleSheetsAsExcel = function (params) {\n var _a = params.fileName,\n fileName = _a === void 0 ? 'export.xlsx' : _a;\n var contents = getMultipleSheetsAsExcel(params);\n if (contents) {\n Downloader.download(fileName, contents);\n }\n};\nvar createImageRelationsForSheet = function (sheetIndex, currentRelationIndex) {\n var drawingFolder = 'xl/drawings';\n var drawingFileName = drawingFolder + \"/drawing\" + (currentRelationIndex + 1) + \".xml\";\n var relFileName = drawingFolder + \"/_rels/drawing\" + (currentRelationIndex + 1) + \".xml.rels\";\n var worksheetRelFile = \"xl/worksheets/_rels/sheet\" + (sheetIndex + 1) + \".xml.rels\";\n ZipContainer.addFile(relFileName, ExcelXlsxFactory.createDrawingRel(sheetIndex));\n ZipContainer.addFile(drawingFileName, ExcelXlsxFactory.createDrawing(sheetIndex));\n ZipContainer.addFile(worksheetRelFile, ExcelXlsxFactory.createWorksheetDrawingRel(currentRelationIndex));\n};\nvar ExcelCreator = /** @class */function (_super) {\n __extends$2X(ExcelCreator, _super);\n function ExcelCreator() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.exportMode = 'xlsx';\n return _this;\n }\n ExcelCreator.prototype.postConstruct = function () {\n this.setBeans({\n gridSerializer: this.gridSerializer,\n gridOptionsWrapper: this.gridOptionsWrapper\n });\n };\n ExcelCreator.prototype.getMergedParams = function (params) {\n var baseParams = this.gridOptionsWrapper.getDefaultExportParams('excel');\n return Object.assign({}, baseParams, params);\n };\n ExcelCreator.prototype.getData = function (params) {\n this.setExportMode(params.exportMode || 'xlsx');\n return _super.prototype.getData.call(this, params);\n };\n ExcelCreator.prototype.export = function (userParams) {\n if (this.isExportSuppressed()) {\n console.warn(\"AG Grid: Export cancelled. Export is not allowed as per your configuration.\");\n return '';\n }\n var mergedParams = this.getMergedParams(userParams);\n var data = this.getData(mergedParams);\n var exportParams = {\n data: [data],\n fontSize: mergedParams.fontSize,\n author: mergedParams.author,\n mimeType: mergedParams.mimeType\n };\n var packageFile = this.packageFile(exportParams);\n if (packageFile) {\n Downloader.download(this.getFileName(mergedParams.fileName), packageFile);\n }\n return data;\n };\n ExcelCreator.prototype.exportDataAsExcel = function (params) {\n return this.export(params);\n };\n ExcelCreator.prototype.getDataAsExcel = function (params) {\n var mergedParams = this.getMergedParams(params);\n var data = this.getData(mergedParams);\n if (params && params.exportMode === 'xml') {\n return data;\n }\n var exportParams = {\n data: [data],\n fontSize: mergedParams.fontSize,\n author: mergedParams.author,\n mimeType: mergedParams.mimeType\n };\n return this.packageFile(exportParams);\n };\n ExcelCreator.prototype.setFactoryMode = function (factoryMode, exportMode) {\n if (exportMode === void 0) {\n exportMode = 'xlsx';\n }\n var factory = exportMode === 'xlsx' ? ExcelXlsxFactory : ExcelXmlFactory;\n factory.factoryMode = factoryMode;\n };\n ExcelCreator.prototype.getFactoryMode = function (exportMode) {\n var factory = exportMode === 'xlsx' ? ExcelXlsxFactory : ExcelXmlFactory;\n return factory.factoryMode;\n };\n ExcelCreator.prototype.getSheetDataForExcel = function (params) {\n var mergedParams = this.getMergedParams(params);\n var data = this.getData(mergedParams);\n return data;\n };\n ExcelCreator.prototype.getMultipleSheetsAsExcel = function (params) {\n return getMultipleSheetsAsExcel(params);\n };\n ExcelCreator.prototype.exportMultipleSheetsAsExcel = function (params) {\n return exportMultipleSheetsAsExcel(params);\n };\n ExcelCreator.prototype.getDefaultFileName = function () {\n return \"export.\" + this.getExportMode();\n };\n ExcelCreator.prototype.getDefaultFileExtension = function () {\n return this.getExportMode();\n };\n ExcelCreator.prototype.createSerializingSession = function (params) {\n var _a = this,\n columnModel = _a.columnModel,\n valueService = _a.valueService,\n gridOptionsWrapper = _a.gridOptionsWrapper;\n var isXlsx = this.getExportMode() === 'xlsx';\n var sheetName = 'ag-grid';\n if (params.sheetName != null) {\n sheetName = _.utf8_encode(params.sheetName.toString().substr(0, 31));\n }\n var config = __assign$D(__assign$D({}, params), {\n sheetName: sheetName,\n columnModel: columnModel,\n valueService: valueService,\n gridOptionsWrapper: gridOptionsWrapper,\n headerRowHeight: params.headerRowHeight || params.rowHeight,\n baseExcelStyles: this.gridOptions.excelStyles || [],\n styleLinker: this.styleLinker.bind(this)\n });\n return new (isXlsx ? ExcelXlsxSerializingSession : ExcelXmlSerializingSession)(config);\n };\n ExcelCreator.prototype.styleLinker = function (params) {\n var rowType = params.rowType,\n rowIndex = params.rowIndex,\n value = params.value,\n column = params.column,\n columnGroup = params.columnGroup,\n node = params.node;\n var isHeader = rowType === RowType.HEADER;\n var isGroupHeader = rowType === RowType.HEADER_GROUPING;\n var col = isHeader ? column : columnGroup;\n var headerClasses = [];\n if (isHeader || isGroupHeader) {\n headerClasses.push('header');\n if (isGroupHeader) {\n headerClasses.push('headerGroup');\n }\n if (col) {\n headerClasses = headerClasses.concat(CssClassApplier.getHeaderClassesFromColDef(col.getDefinition(), this.gridOptionsWrapper, column || null, columnGroup || null));\n }\n return headerClasses;\n }\n var styles = this.gridOptions.excelStyles;\n var applicableStyles = [\"cell\"];\n if (!styles || !styles.length) {\n return applicableStyles;\n }\n var styleIds = styles.map(function (it) {\n return it.id;\n });\n this.stylingService.processAllCellClasses(column.getDefinition(), {\n value: value,\n data: node.data,\n node: node,\n colDef: column.getDefinition(),\n column: column,\n rowIndex: rowIndex,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n }, function (className) {\n if (styleIds.indexOf(className) > -1) {\n applicableStyles.push(className);\n }\n });\n return applicableStyles.sort(function (left, right) {\n return styleIds.indexOf(left) < styleIds.indexOf(right) ? -1 : 1;\n });\n };\n ExcelCreator.prototype.isExportSuppressed = function () {\n return this.gridOptionsWrapper.isSuppressExcelExport();\n };\n ExcelCreator.prototype.setExportMode = function (exportMode) {\n this.exportMode = exportMode;\n };\n ExcelCreator.prototype.getExportMode = function () {\n return this.exportMode;\n };\n ExcelCreator.prototype.packageFile = function (params) {\n if (this.getExportMode() === 'xml') {\n var mimeType = params.mimeType || 'application/vnd.ms-excel';\n return new Blob([\"\\ufeff\", params.data[0]], {\n type: mimeType\n });\n }\n return getMultipleSheetsAsExcel(params);\n };\n __decorate$1R([Autowired('columnModel')], ExcelCreator.prototype, \"columnModel\", void 0);\n __decorate$1R([Autowired('valueService')], ExcelCreator.prototype, \"valueService\", void 0);\n __decorate$1R([Autowired('gridOptions')], ExcelCreator.prototype, \"gridOptions\", void 0);\n __decorate$1R([Autowired('stylingService')], ExcelCreator.prototype, \"stylingService\", void 0);\n __decorate$1R([Autowired('gridSerializer')], ExcelCreator.prototype, \"gridSerializer\", void 0);\n __decorate$1R([Autowired('gridOptionsWrapper')], ExcelCreator.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1R([PostConstruct], ExcelCreator.prototype, \"postConstruct\", null);\n ExcelCreator = __decorate$1R([Bean('excelCreator')], ExcelCreator);\n return ExcelCreator;\n}(BaseCreator);\nvar ExcelExportModule = {\n moduleName: ModuleNames.ExcelExportModule,\n beans: [\n // beans in this module\n ExcelCreator,\n // these beans are part of CSV Export module\n GridSerializer, CsvCreator],\n dependantModules: [CsvExportModule, EnterpriseCoreModule]\n};\nvar __extends$2W = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1Q = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar EXPAND_STATE = /*#__PURE__*/function (EXPAND_STATE) {\n EXPAND_STATE[EXPAND_STATE[\"EXPANDED\"] = 0] = \"EXPANDED\";\n EXPAND_STATE[EXPAND_STATE[\"COLLAPSED\"] = 1] = \"COLLAPSED\";\n EXPAND_STATE[EXPAND_STATE[\"INDETERMINATE\"] = 2] = \"INDETERMINATE\";\n return EXPAND_STATE;\n}(EXPAND_STATE || {});\nvar FiltersToolPanelHeaderPanel = /** @class */function (_super) {\n __extends$2W(FiltersToolPanelHeaderPanel, _super);\n function FiltersToolPanelHeaderPanel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FiltersToolPanelHeaderPanel.prototype.preConstruct = function () {\n this.setTemplate(/* html */\"
\\n
\\n \\n
\");\n };\n FiltersToolPanelHeaderPanel.prototype.postConstruct = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n this.eFilterTextField.onValueChange(this.onSearchTextChanged.bind(this));\n this.eFilterTextField.setInputAriaLabel(translate('ariaFilterColumnsInput', 'Filter Columns Input'));\n this.createExpandIcons();\n this.setExpandState(EXPAND_STATE.EXPANDED);\n this.addManagedListener(this.eExpand, 'click', this.onExpandClicked.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.showOrHideOptions.bind(this));\n };\n FiltersToolPanelHeaderPanel.prototype.init = function (params) {\n this.params = params;\n if (this.columnModel.isReady()) {\n this.showOrHideOptions();\n }\n };\n FiltersToolPanelHeaderPanel.prototype.createExpandIcons = function () {\n this.eExpand.appendChild(this.eExpandChecked = _.createIconNoSpan('columnSelectOpen', this.gridOptionsWrapper));\n this.eExpand.appendChild(this.eExpandUnchecked = _.createIconNoSpan('columnSelectClosed', this.gridOptionsWrapper));\n this.eExpand.appendChild(this.eExpandIndeterminate = _.createIconNoSpan('columnSelectIndeterminate', this.gridOptionsWrapper));\n };\n // we only show expand / collapse if we are showing filters\n FiltersToolPanelHeaderPanel.prototype.showOrHideOptions = function () {\n var showFilterSearch = !this.params.suppressFilterSearch;\n var showExpand = !this.params.suppressExpandAll;\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n this.eFilterTextField.setInputPlaceholder(translate('searchOoo', 'Search...'));\n var isFilterGroupPresent = function (col) {\n return col.getOriginalParent() && col.isFilterAllowed();\n };\n var filterGroupsPresent = this.columnModel.getAllGridColumns().some(isFilterGroupPresent);\n _.setDisplayed(this.eFilterTextField.getGui(), showFilterSearch);\n _.setDisplayed(this.eExpand, showExpand && filterGroupsPresent);\n };\n FiltersToolPanelHeaderPanel.prototype.onSearchTextChanged = function () {\n var _this = this;\n if (!this.onSearchTextChangedDebounced) {\n this.onSearchTextChangedDebounced = _.debounce(function () {\n _this.dispatchEvent({\n type: 'searchChanged',\n searchText: _this.eFilterTextField.getValue()\n });\n }, 300);\n }\n this.onSearchTextChangedDebounced();\n };\n FiltersToolPanelHeaderPanel.prototype.onExpandClicked = function () {\n var event = this.currentExpandState === EXPAND_STATE.EXPANDED ? {\n type: 'collapseAll'\n } : {\n type: 'expandAll'\n };\n this.dispatchEvent(event);\n };\n FiltersToolPanelHeaderPanel.prototype.setExpandState = function (state) {\n this.currentExpandState = state;\n _.setDisplayed(this.eExpandChecked, this.currentExpandState === EXPAND_STATE.EXPANDED);\n _.setDisplayed(this.eExpandUnchecked, this.currentExpandState === EXPAND_STATE.COLLAPSED);\n _.setDisplayed(this.eExpandIndeterminate, this.currentExpandState === EXPAND_STATE.INDETERMINATE);\n };\n __decorate$1Q([Autowired('columnModel')], FiltersToolPanelHeaderPanel.prototype, \"columnModel\", void 0);\n __decorate$1Q([RefSelector('eExpand')], FiltersToolPanelHeaderPanel.prototype, \"eExpand\", void 0);\n __decorate$1Q([RefSelector('eFilterTextField')], FiltersToolPanelHeaderPanel.prototype, \"eFilterTextField\", void 0);\n __decorate$1Q([PreConstruct], FiltersToolPanelHeaderPanel.prototype, \"preConstruct\", null);\n __decorate$1Q([PostConstruct], FiltersToolPanelHeaderPanel.prototype, \"postConstruct\", null);\n return FiltersToolPanelHeaderPanel;\n}(Component);\nvar __extends$2V = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1P = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar ToolPanelFilterComp = /** @class */function (_super) {\n __extends$2V(ToolPanelFilterComp, _super);\n function ToolPanelFilterComp(hideHeader) {\n if (hideHeader === void 0) {\n hideHeader = false;\n }\n var _this = _super.call(this, ToolPanelFilterComp.TEMPLATE) || this;\n _this.expanded = false;\n _this.hideHeader = hideHeader;\n return _this;\n }\n ToolPanelFilterComp.prototype.postConstruct = function () {\n this.eExpandChecked = _.createIconNoSpan('columnSelectOpen', this.gridOptionsWrapper);\n this.eExpandUnchecked = _.createIconNoSpan('columnSelectClosed', this.gridOptionsWrapper);\n this.eExpand.appendChild(this.eExpandChecked);\n this.eExpand.appendChild(this.eExpandUnchecked);\n };\n ToolPanelFilterComp.prototype.setColumn = function (column) {\n var _this = this;\n this.column = column;\n this.eFilterName.innerText = this.columnModel.getDisplayNameForColumn(this.column, 'filterToolPanel', false) || '';\n this.addManagedListener(this.eFilterToolPanelHeader, 'click', this.toggleExpanded.bind(this));\n this.addManagedListener(this.eFilterToolPanelHeader, 'keydown', function (e) {\n if (e.key === KeyCode.ENTER) {\n _this.toggleExpanded();\n }\n });\n this.addManagedListener(this.eventService, Events.EVENT_FILTER_OPENED, this.onFilterOpened.bind(this));\n this.addInIcon('filter', this.eFilterIcon, this.column);\n this.eFilterIcon.classList.toggle('ag-hidden', !this.isFilterActive());\n this.eExpandChecked.classList.add('ag-hidden');\n if (this.hideHeader) {\n this.eFilterToolPanelHeader.classList.toggle('ag-hidden', true);\n this.eFilterToolPanelHeader.removeAttribute('tabindex');\n } else {\n this.eFilterToolPanelHeader.setAttribute('tabindex', '0');\n }\n this.addManagedListener(this.column, Column.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n };\n ToolPanelFilterComp.prototype.getColumn = function () {\n return this.column;\n };\n ToolPanelFilterComp.prototype.getColumnFilterName = function () {\n return this.columnModel.getDisplayNameForColumn(this.column, 'filterToolPanel', false);\n };\n ToolPanelFilterComp.prototype.addCssClassToTitleBar = function (cssClass) {\n this.eFilterToolPanelHeader.classList.add(cssClass);\n };\n ToolPanelFilterComp.prototype.addInIcon = function (iconName, eParent, column) {\n if (eParent == null) {\n return;\n }\n var eIcon = _.createIconNoSpan(iconName, this.gridOptionsWrapper, column);\n eParent.appendChild(eIcon);\n };\n ToolPanelFilterComp.prototype.isFilterActive = function () {\n return this.filterManager.isFilterActive(this.column);\n };\n ToolPanelFilterComp.prototype.onFilterChanged = function () {\n this.eFilterIcon.classList.toggle('ag-hidden', !this.isFilterActive());\n this.dispatchEvent({\n type: Column.EVENT_FILTER_CHANGED\n });\n };\n ToolPanelFilterComp.prototype.toggleExpanded = function () {\n this.expanded ? this.collapse() : this.expand();\n };\n ToolPanelFilterComp.prototype.expand = function () {\n var _this = this;\n var _a;\n if (this.expanded) {\n return;\n }\n this.expanded = true;\n _.setAriaExpanded(this.eFilterToolPanelHeader, true);\n var container = _.loadTemplate(/* html */\"
\");\n var filterPromise = (_a = this.filterManager.getOrCreateFilterWrapper(this.column, 'TOOLBAR')) === null || _a === void 0 ? void 0 : _a.filterPromise;\n if (filterPromise) {\n filterPromise.then(function (filter) {\n _this.underlyingFilter = filter;\n if (!filter) {\n return;\n }\n container.appendChild(filter.getGui());\n _this.agFilterToolPanelBody.appendChild(container);\n if (filter.afterGuiAttached) {\n filter.afterGuiAttached({\n container: 'toolPanel'\n });\n }\n });\n }\n _.setDisplayed(this.eExpandChecked, true);\n _.setDisplayed(this.eExpandUnchecked, false);\n };\n ToolPanelFilterComp.prototype.collapse = function () {\n if (!this.expanded) {\n return;\n }\n this.expanded = false;\n _.setAriaExpanded(this.eFilterToolPanelHeader, false);\n this.agFilterToolPanelBody.removeChild(this.agFilterToolPanelBody.children[0]);\n _.setDisplayed(this.eExpandChecked, false);\n _.setDisplayed(this.eExpandUnchecked, true);\n };\n ToolPanelFilterComp.prototype.refreshFilter = function () {\n if (!this.expanded) {\n return;\n }\n var filter = this.underlyingFilter;\n if (!filter) {\n return;\n }\n // set filters should be updated when the filter has been changed elsewhere, i.e. via api. Note that we can't\n // use 'afterGuiAttached' to refresh the virtual list as it also focuses on the mini filter which changes the\n // scroll position in the filter list panel\n if (typeof filter.refreshVirtualList === 'function') {\n filter.refreshVirtualList();\n }\n };\n ToolPanelFilterComp.prototype.onFilterOpened = function (event) {\n if (event.source !== 'COLUMN_MENU') {\n return;\n }\n if (event.column !== this.column) {\n return;\n }\n if (!this.expanded) {\n return;\n }\n this.collapse();\n };\n ToolPanelFilterComp.TEMPLATE = \"\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\";\n __decorate$1P([RefSelector('eFilterToolPanelHeader')], ToolPanelFilterComp.prototype, \"eFilterToolPanelHeader\", void 0);\n __decorate$1P([RefSelector('eFilterName')], ToolPanelFilterComp.prototype, \"eFilterName\", void 0);\n __decorate$1P([RefSelector('agFilterToolPanelBody')], ToolPanelFilterComp.prototype, \"agFilterToolPanelBody\", void 0);\n __decorate$1P([RefSelector('eFilterIcon')], ToolPanelFilterComp.prototype, \"eFilterIcon\", void 0);\n __decorate$1P([RefSelector('eExpand')], ToolPanelFilterComp.prototype, \"eExpand\", void 0);\n __decorate$1P([Autowired('filterManager')], ToolPanelFilterComp.prototype, \"filterManager\", void 0);\n __decorate$1P([Autowired('columnModel')], ToolPanelFilterComp.prototype, \"columnModel\", void 0);\n __decorate$1P([PostConstruct], ToolPanelFilterComp.prototype, \"postConstruct\", null);\n return ToolPanelFilterComp;\n}(Component);\nvar __extends$2U = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1O = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar ToolPanelFilterGroupComp = /** @class */function (_super) {\n __extends$2U(ToolPanelFilterGroupComp, _super);\n function ToolPanelFilterGroupComp(columnGroup, childFilterComps, expandedCallback, depth, showingColumn) {\n var _this = _super.call(this) || this;\n _this.columnGroup = columnGroup;\n _this.childFilterComps = childFilterComps;\n _this.depth = depth;\n _this.expandedCallback = expandedCallback;\n _this.showingColumn = showingColumn;\n return _this;\n }\n ToolPanelFilterGroupComp.prototype.preConstruct = function () {\n var groupParams = {\n cssIdentifier: 'filter-toolpanel',\n direction: 'vertical'\n };\n this.setTemplate(ToolPanelFilterGroupComp.TEMPLATE, {\n filterGroupComp: groupParams\n });\n };\n ToolPanelFilterGroupComp.prototype.init = function () {\n var _this = this;\n this.setGroupTitle();\n this.filterGroupComp.setAlignItems('stretch');\n this.filterGroupComp.addCssClass(\"ag-filter-toolpanel-group-level-\" + this.depth);\n this.filterGroupComp.addCssClassToTitleBar(\"ag-filter-toolpanel-group-level-\" + this.depth + \"-header\");\n this.childFilterComps.forEach(function (filterComp) {\n _this.filterGroupComp.addItem(filterComp);\n filterComp.addCssClassToTitleBar(\"ag-filter-toolpanel-group-level-\" + (_this.depth + 1) + \"-header\");\n });\n this.refreshFilterClass();\n this.addExpandCollapseListeners();\n this.addFilterChangedListeners();\n this.setupTooltip();\n };\n ToolPanelFilterGroupComp.prototype.setupTooltip = function () {\n var _this = this;\n // we don't show tooltips for groups, as when the group expands, it's div contains the columns which also\n // have tooltips, so the tooltips would clash. Eg mouse over group, tooltip shows, mouse over column, another\n // tooltip shows but cos we didn't leave the group the group tooltip remains. this should be fixed in the future,\n // maybe the group shouldn't contain the children form a DOM perspective.\n if (!this.showingColumn) {\n return;\n }\n var refresh = function () {\n var newTooltipText = _this.columnGroup.getColDef().headerTooltip;\n _this.setTooltip(newTooltipText);\n };\n refresh();\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, refresh);\n };\n ToolPanelFilterGroupComp.prototype.getTooltipParams = function () {\n var res = _super.prototype.getTooltipParams.call(this);\n res.location = 'filterToolPanelColumnGroup';\n return res;\n };\n ToolPanelFilterGroupComp.prototype.addCssClassToTitleBar = function (cssClass) {\n this.filterGroupComp.addCssClassToTitleBar(cssClass);\n };\n ToolPanelFilterGroupComp.prototype.refreshFilters = function () {\n this.childFilterComps.forEach(function (filterComp) {\n if (filterComp instanceof ToolPanelFilterGroupComp) {\n filterComp.refreshFilters();\n } else {\n filterComp.refreshFilter();\n }\n });\n };\n ToolPanelFilterGroupComp.prototype.isColumnGroup = function () {\n return this.columnGroup instanceof ProvidedColumnGroup;\n };\n ToolPanelFilterGroupComp.prototype.isExpanded = function () {\n return this.filterGroupComp.isExpanded();\n };\n ToolPanelFilterGroupComp.prototype.getChildren = function () {\n return this.childFilterComps;\n };\n ToolPanelFilterGroupComp.prototype.getFilterGroupName = function () {\n return this.filterGroupName ? this.filterGroupName : '';\n };\n ToolPanelFilterGroupComp.prototype.getFilterGroupId = function () {\n return this.columnGroup.getId();\n };\n ToolPanelFilterGroupComp.prototype.hideGroupItem = function (hide, index) {\n this.filterGroupComp.hideItem(hide, index);\n };\n ToolPanelFilterGroupComp.prototype.hideGroup = function (hide) {\n this.addOrRemoveCssClass('ag-hidden', hide);\n };\n ToolPanelFilterGroupComp.prototype.forEachToolPanelFilterChild = function (action) {\n this.childFilterComps.forEach(function (filterComp) {\n if (filterComp instanceof ToolPanelFilterComp) {\n action(filterComp);\n }\n });\n };\n ToolPanelFilterGroupComp.prototype.addExpandCollapseListeners = function () {\n var _this = this;\n var expandListener = this.isColumnGroup() ? function () {\n return _this.expandedCallback();\n } : function () {\n return _this.forEachToolPanelFilterChild(function (filterComp) {\n return filterComp.expand();\n });\n };\n var collapseListener = this.isColumnGroup() ? function () {\n return _this.expandedCallback();\n } : function () {\n return _this.forEachToolPanelFilterChild(function (filterComp) {\n return filterComp.collapse();\n });\n };\n this.addManagedListener(this.filterGroupComp, AgGroupComponent.EVENT_EXPANDED, expandListener);\n this.addManagedListener(this.filterGroupComp, AgGroupComponent.EVENT_COLLAPSED, collapseListener);\n };\n ToolPanelFilterGroupComp.prototype.getColumns = function () {\n if (this.columnGroup instanceof ProvidedColumnGroup) {\n return this.columnGroup.getLeafColumns();\n }\n return [this.columnGroup];\n };\n ToolPanelFilterGroupComp.prototype.addFilterChangedListeners = function () {\n var _this = this;\n this.getColumns().forEach(function (column) {\n _this.addManagedListener(column, Column.EVENT_FILTER_CHANGED, function () {\n return _this.refreshFilterClass();\n });\n });\n if (!(this.columnGroup instanceof ProvidedColumnGroup)) {\n this.addManagedListener(this.eventService, Events.EVENT_FILTER_OPENED, this.onFilterOpened.bind(this));\n }\n };\n ToolPanelFilterGroupComp.prototype.refreshFilterClass = function () {\n var columns = this.getColumns();\n var anyChildFiltersActive = function () {\n return columns.some(function (col) {\n return col.isFilterActive();\n });\n };\n this.filterGroupComp.addOrRemoveCssClass('ag-has-filter', anyChildFiltersActive());\n };\n ToolPanelFilterGroupComp.prototype.onFilterOpened = function (event) {\n // when a filter is opened elsewhere, i.e. column menu we close the filter comp so we also need to collapse\n // the column group. This approach means we don't need to try and sync filter models on the same column.\n if (event.source !== 'COLUMN_MENU') {\n return;\n }\n if (event.column !== this.columnGroup) {\n return;\n }\n if (!this.isExpanded()) {\n return;\n }\n this.collapse();\n };\n ToolPanelFilterGroupComp.prototype.expand = function () {\n this.filterGroupComp.toggleGroupExpand(true);\n };\n ToolPanelFilterGroupComp.prototype.collapse = function () {\n this.filterGroupComp.toggleGroupExpand(false);\n };\n ToolPanelFilterGroupComp.prototype.setGroupTitle = function () {\n this.filterGroupName = this.columnGroup instanceof ProvidedColumnGroup ? this.getColumnGroupName(this.columnGroup) : this.getColumnName(this.columnGroup);\n this.filterGroupComp.setTitle(this.filterGroupName || '');\n };\n ToolPanelFilterGroupComp.prototype.getColumnGroupName = function (columnGroup) {\n return this.columnModel.getDisplayNameForProvidedColumnGroup(null, columnGroup, 'filterToolPanel');\n };\n ToolPanelFilterGroupComp.prototype.getColumnName = function (column) {\n return this.columnModel.getDisplayNameForColumn(column, 'filterToolPanel', false);\n };\n ToolPanelFilterGroupComp.prototype.destroyFilters = function () {\n this.childFilterComps = this.destroyBeans(this.childFilterComps);\n _.clearElement(this.getGui());\n };\n ToolPanelFilterGroupComp.prototype.destroy = function () {\n this.destroyFilters();\n _super.prototype.destroy.call(this);\n };\n ToolPanelFilterGroupComp.TEMPLATE = \"
\\n \\n
\";\n __decorate$1O([RefSelector('filterGroupComp')], ToolPanelFilterGroupComp.prototype, \"filterGroupComp\", void 0);\n __decorate$1O([Autowired('columnModel')], ToolPanelFilterGroupComp.prototype, \"columnModel\", void 0);\n __decorate$1O([PreConstruct], ToolPanelFilterGroupComp.prototype, \"preConstruct\", null);\n __decorate$1O([PostConstruct], ToolPanelFilterGroupComp.prototype, \"init\", null);\n return ToolPanelFilterGroupComp;\n}(Component);\nvar __extends$2T = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1N = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar FiltersToolPanelListPanel = /** @class */function (_super) {\n __extends$2T(FiltersToolPanelListPanel, _super);\n function FiltersToolPanelListPanel() {\n var _this = _super.call(this, FiltersToolPanelListPanel.TEMPLATE) || this;\n _this.initialised = false;\n _this.filterGroupComps = [];\n return _this;\n }\n FiltersToolPanelListPanel.prototype.init = function (params) {\n var _this = this;\n this.initialised = true;\n var defaultParams = {\n suppressExpandAll: false,\n suppressFilterSearch: false,\n suppressSyncLayoutWithGrid: false,\n api: this.gridApi,\n columnApi: this.columnApi,\n context: this.gridOptionsWrapper.getContext()\n };\n _.mergeDeep(defaultParams, params);\n this.params = defaultParams;\n if (!this.params.suppressSyncLayoutWithGrid) {\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_MOVED, function () {\n return _this.onColumnsChanged();\n });\n }\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, function () {\n return _this.onColumnsChanged();\n });\n this.addManagedListener(this.eventService, Events.EVENT_TOOL_PANEL_VISIBLE_CHANGED, function (event) {\n // when re-entering the filters tool panel we need to refresh the virtual lists in the set filters in case\n // filters have been changed elsewhere, i.e. via an api call.\n if (event.source === 'filters') {\n _this.refreshFilters();\n }\n });\n if (this.columnModel.isReady()) {\n this.onColumnsChanged();\n }\n };\n FiltersToolPanelListPanel.prototype.onColumnsChanged = function () {\n var pivotModeActive = this.columnModel.isPivotMode();\n var shouldSyncColumnLayoutWithGrid = !this.params.suppressSyncLayoutWithGrid && !pivotModeActive;\n shouldSyncColumnLayoutWithGrid ? this.syncFilterLayout() : this.buildTreeFromProvidedColumnDefs();\n };\n FiltersToolPanelListPanel.prototype.syncFilterLayout = function () {\n this.toolPanelColDefService.syncLayoutWithGrid(this.setFiltersLayout.bind(this));\n };\n FiltersToolPanelListPanel.prototype.buildTreeFromProvidedColumnDefs = function () {\n var _this = this;\n this.destroyFilters();\n var columnTree = this.columnModel.getPrimaryColumnTree();\n this.filterGroupComps = this.recursivelyAddComps(columnTree, 0);\n var len = this.filterGroupComps.length;\n if (len) {\n // skip the destroy function because this will be managed\n // by the `destroyFilters` function\n this.filterGroupComps.forEach(function (comp) {\n return _this.appendChild(comp);\n });\n this.setFirstAndLastVisible(0, len - 1);\n }\n // perform search if searchFilterText exists\n if (_.exists(this.searchFilterText)) {\n this.searchFilters(this.searchFilterText);\n }\n // notify header of expand\n this.fireExpandedEvent();\n };\n FiltersToolPanelListPanel.prototype.setFiltersLayout = function (colDefs) {\n var _this = this;\n this.destroyFilters();\n var columnTree = this.toolPanelColDefService.createColumnTree(colDefs);\n this.filterGroupComps = this.recursivelyAddComps(columnTree, 0);\n var len = this.filterGroupComps.length;\n if (len) {\n // skip the destroy function because this will be managed\n // by the `destroyFilters` function\n this.filterGroupComps.forEach(function (comp) {\n return _this.appendChild(comp);\n });\n this.setFirstAndLastVisible(0, len - 1);\n }\n // perform search if searchFilterText exists\n if (_.exists(this.searchFilterText)) {\n this.searchFilters(this.searchFilterText);\n }\n // notify header of expand\n this.fireExpandedEvent();\n };\n FiltersToolPanelListPanel.prototype.recursivelyAddComps = function (tree, depth) {\n var _this = this;\n return _.flatten(tree.map(function (child) {\n if (child instanceof ProvidedColumnGroup) {\n return _.flatten(_this.recursivelyAddFilterGroupComps(child, depth));\n }\n var column = child;\n if (!_this.shouldDisplayFilter(column)) {\n return [];\n }\n var hideFilterCompHeader = depth === 0;\n var filterComp = new ToolPanelFilterComp(hideFilterCompHeader);\n _this.createBean(filterComp);\n filterComp.setColumn(column);\n if (depth > 0) {\n return filterComp;\n }\n var filterGroupComp = _this.createBean(new ToolPanelFilterGroupComp(column, [filterComp], _this.onGroupExpanded.bind(_this), depth, true));\n filterGroupComp.addCssClassToTitleBar('ag-filter-toolpanel-header');\n filterGroupComp.collapse();\n return filterGroupComp;\n }));\n };\n FiltersToolPanelListPanel.prototype.recursivelyAddFilterGroupComps = function (columnGroup, depth) {\n if (!this.filtersExistInChildren(columnGroup.getChildren())) {\n return;\n }\n var colGroupDef = columnGroup.getColGroupDef();\n if (colGroupDef && colGroupDef.suppressFiltersToolPanel) {\n return [];\n }\n var newDepth = columnGroup.isPadding() ? depth : depth + 1;\n var childFilterComps = _.flatten(this.recursivelyAddComps(columnGroup.getChildren(), newDepth));\n if (columnGroup.isPadding()) {\n return childFilterComps;\n }\n var filterGroupComp = new ToolPanelFilterGroupComp(columnGroup, childFilterComps, this.onGroupExpanded.bind(this), depth, false);\n this.createBean(filterGroupComp);\n filterGroupComp.addCssClassToTitleBar('ag-filter-toolpanel-header');\n return [filterGroupComp];\n };\n FiltersToolPanelListPanel.prototype.filtersExistInChildren = function (tree) {\n var _this = this;\n return tree.some(function (child) {\n if (child instanceof ProvidedColumnGroup) {\n return _this.filtersExistInChildren(child.getChildren());\n }\n return _this.shouldDisplayFilter(child);\n });\n };\n FiltersToolPanelListPanel.prototype.shouldDisplayFilter = function (column) {\n var suppressFiltersToolPanel = column.getColDef() && column.getColDef().suppressFiltersToolPanel;\n return column.isFilterAllowed() && !suppressFiltersToolPanel;\n };\n // we don't support refreshing, but must implement because it's on the tool panel interface\n FiltersToolPanelListPanel.prototype.refresh = function () {};\n // lazy initialise the panel\n FiltersToolPanelListPanel.prototype.setVisible = function (visible) {\n _super.prototype.setDisplayed.call(this, visible);\n if (visible && !this.initialised) {\n this.init(this.params);\n }\n };\n FiltersToolPanelListPanel.prototype.expandFilterGroups = function (expand, groupIds) {\n var updatedGroupIds = [];\n var updateGroupExpandState = function (filterGroup) {\n var groupId = filterGroup.getFilterGroupId();\n var shouldExpandOrCollapse = !groupIds || _.includes(groupIds, groupId);\n if (shouldExpandOrCollapse) {\n // don't expand 'column groups', i.e. top level columns wrapped in a group\n if (expand && filterGroup.isColumnGroup()) {\n filterGroup.expand();\n } else {\n filterGroup.collapse();\n }\n updatedGroupIds.push(groupId);\n }\n // recursively look for more groups to expand / collapse\n filterGroup.getChildren().forEach(function (child) {\n if (child instanceof ToolPanelFilterGroupComp) {\n updateGroupExpandState(child);\n }\n });\n };\n this.filterGroupComps.forEach(updateGroupExpandState);\n // update header expand / collapse icon\n this.onGroupExpanded();\n if (groupIds) {\n var unrecognisedGroupIds = groupIds.filter(function (groupId) {\n return updatedGroupIds.indexOf(groupId) < 0;\n });\n if (unrecognisedGroupIds.length > 0) {\n console.warn('AG Grid: unable to find groups for these supplied groupIds:', unrecognisedGroupIds);\n }\n }\n };\n FiltersToolPanelListPanel.prototype.expandFilters = function (expand, colIds) {\n var updatedColIds = [];\n var updateGroupExpandState = function (filterComp) {\n if (filterComp instanceof ToolPanelFilterGroupComp) {\n var anyChildrenChanged_1 = false;\n filterComp.getChildren().forEach(function (child) {\n var childUpdated = updateGroupExpandState(child);\n if (childUpdated) {\n if (expand) {\n filterComp.expand();\n anyChildrenChanged_1 = true;\n } else if (!filterComp.isColumnGroup()) {\n // we only collapse columns wrapped in groups\n filterComp.collapse();\n }\n }\n });\n return anyChildrenChanged_1;\n }\n var colId = filterComp.getColumn().getColId();\n var updateFilterExpandState = !colIds || _.includes(colIds, colId);\n if (updateFilterExpandState) {\n expand ? filterComp.expand() : filterComp.collapse();\n updatedColIds.push(colId);\n }\n return updateFilterExpandState;\n };\n this.filterGroupComps.forEach(updateGroupExpandState);\n // update header expand / collapse icon\n this.onGroupExpanded();\n if (colIds) {\n var unrecognisedColIds = colIds.filter(function (colId) {\n return updatedColIds.indexOf(colId) < 0;\n });\n if (unrecognisedColIds.length > 0) {\n console.warn('AG Grid: unable to find columns for these supplied colIds:', unrecognisedColIds);\n }\n }\n };\n FiltersToolPanelListPanel.prototype.onGroupExpanded = function () {\n this.fireExpandedEvent();\n };\n FiltersToolPanelListPanel.prototype.fireExpandedEvent = function () {\n var expandedCount = 0;\n var notExpandedCount = 0;\n var updateExpandCounts = function (filterGroup) {\n if (!filterGroup.isColumnGroup()) {\n return;\n }\n filterGroup.isExpanded() ? expandedCount++ : notExpandedCount++;\n filterGroup.getChildren().forEach(function (child) {\n if (child instanceof ToolPanelFilterGroupComp) {\n updateExpandCounts(child);\n }\n });\n };\n this.filterGroupComps.forEach(updateExpandCounts);\n var state;\n if (expandedCount > 0 && notExpandedCount > 0) {\n state = EXPAND_STATE.INDETERMINATE;\n } else if (notExpandedCount > 0) {\n state = EXPAND_STATE.COLLAPSED;\n } else {\n state = EXPAND_STATE.EXPANDED;\n }\n this.dispatchEvent({\n type: 'groupExpanded',\n state: state\n });\n };\n FiltersToolPanelListPanel.prototype.performFilterSearch = function (searchText) {\n this.searchFilterText = _.exists(searchText) ? searchText.toLowerCase() : null;\n this.searchFilters(this.searchFilterText);\n };\n FiltersToolPanelListPanel.prototype.searchFilters = function (searchFilter) {\n var passesFilter = function (groupName) {\n return !_.exists(searchFilter) || groupName.toLowerCase().indexOf(searchFilter) !== -1;\n };\n var recursivelySearch = function (filterItem, parentPasses) {\n if (!(filterItem instanceof ToolPanelFilterGroupComp)) {\n return passesFilter(filterItem.getColumnFilterName() || '');\n }\n var children = filterItem.getChildren();\n var groupNamePasses = passesFilter(filterItem.getFilterGroupName());\n // if group or parent already passed - ensure this group and all children are visible\n var alreadyPassed = parentPasses || groupNamePasses;\n if (alreadyPassed) {\n // ensure group visible\n filterItem.hideGroup(false);\n // ensure all children are visible\n for (var i = 0; i < children.length; i++) {\n recursivelySearch(children[i], alreadyPassed);\n filterItem.hideGroupItem(false, i);\n }\n return true;\n }\n // hide group item filters\n var anyChildPasses = false;\n children.forEach(function (child, index) {\n var childPasses = recursivelySearch(child, parentPasses);\n filterItem.hideGroupItem(!childPasses, index);\n if (childPasses) {\n anyChildPasses = true;\n }\n });\n // hide group if no children pass\n filterItem.hideGroup(!anyChildPasses);\n return anyChildPasses;\n };\n var firstVisible;\n var lastVisible;\n this.filterGroupComps.forEach(function (filterGroup, idx) {\n recursivelySearch(filterGroup, false);\n if (firstVisible === undefined) {\n if (!filterGroup.containsCssClass('ag-hidden')) {\n firstVisible = idx;\n lastVisible = idx;\n }\n } else if (!filterGroup.containsCssClass('ag-hidden') && lastVisible !== idx) {\n lastVisible = idx;\n }\n });\n this.setFirstAndLastVisible(firstVisible, lastVisible);\n };\n FiltersToolPanelListPanel.prototype.setFirstAndLastVisible = function (firstIdx, lastIdx) {\n this.filterGroupComps.forEach(function (filterGroup, idx) {\n filterGroup.removeCssClass('ag-first-group-visible');\n filterGroup.removeCssClass('ag-last-group-visible');\n if (idx === firstIdx) {\n filterGroup.addCssClass('ag-first-group-visible');\n }\n if (idx === lastIdx) {\n filterGroup.addCssClass('ag-last-group-visible');\n }\n });\n };\n FiltersToolPanelListPanel.prototype.refreshFilters = function () {\n this.filterGroupComps.forEach(function (filterGroupComp) {\n return filterGroupComp.refreshFilters();\n });\n };\n FiltersToolPanelListPanel.prototype.destroyFilters = function () {\n this.filterGroupComps = this.destroyBeans(this.filterGroupComps);\n _.clearElement(this.getGui());\n };\n FiltersToolPanelListPanel.prototype.destroy = function () {\n this.destroyFilters();\n _super.prototype.destroy.call(this);\n };\n FiltersToolPanelListPanel.TEMPLATE = \"
\";\n __decorate$1N([Autowired(\"gridApi\")], FiltersToolPanelListPanel.prototype, \"gridApi\", void 0);\n __decorate$1N([Autowired(\"columnApi\")], FiltersToolPanelListPanel.prototype, \"columnApi\", void 0);\n __decorate$1N([Autowired('toolPanelColDefService')], FiltersToolPanelListPanel.prototype, \"toolPanelColDefService\", void 0);\n __decorate$1N([Autowired('columnModel')], FiltersToolPanelListPanel.prototype, \"columnModel\", void 0);\n return FiltersToolPanelListPanel;\n}(Component);\nvar __extends$2S = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign$C = undefined && undefined.__assign || function () {\n __assign$C = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$C.apply(this, arguments);\n};\nvar __decorate$1M = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar FiltersToolPanel = /** @class */function (_super) {\n __extends$2S(FiltersToolPanel, _super);\n function FiltersToolPanel() {\n var _this = _super.call(this, FiltersToolPanel.TEMPLATE) || this;\n _this.initialised = false;\n _this.listenerDestroyFuncs = [];\n return _this;\n }\n FiltersToolPanel.prototype.init = function (params) {\n // if initialised is true, means this is a refresh\n if (this.initialised) {\n this.listenerDestroyFuncs.forEach(function (func) {\n return func();\n });\n this.listenerDestroyFuncs = [];\n }\n this.initialised = true;\n var defaultParams = {\n suppressExpandAll: false,\n suppressFilterSearch: false,\n suppressSyncLayoutWithGrid: false,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.params = __assign$C(__assign$C(__assign$C({}, defaultParams), this.params), {\n context: this.gridOptionsWrapper.getContext()\n });\n this.filtersToolPanelHeaderPanel.init(this.params);\n this.filtersToolPanelListPanel.init(this.params);\n var hideExpand = this.params.suppressExpandAll;\n var hideSearch = this.params.suppressFilterSearch;\n if (hideExpand && hideSearch) {\n this.filtersToolPanelHeaderPanel.setDisplayed(false);\n }\n // this is necessary to prevent a memory leak while refreshing the tool panel\n this.listenerDestroyFuncs.push(this.addManagedListener(this.filtersToolPanelHeaderPanel, 'expandAll', this.onExpandAll.bind(this)), this.addManagedListener(this.filtersToolPanelHeaderPanel, 'collapseAll', this.onCollapseAll.bind(this)), this.addManagedListener(this.filtersToolPanelHeaderPanel, 'searchChanged', this.onSearchChanged.bind(this)), this.addManagedListener(this.filtersToolPanelListPanel, 'groupExpanded', this.onGroupExpanded.bind(this)));\n };\n // lazy initialise the panel\n FiltersToolPanel.prototype.setVisible = function (visible) {\n _super.prototype.setDisplayed.call(this, visible);\n if (visible && !this.initialised) {\n this.init(this.params);\n }\n };\n FiltersToolPanel.prototype.onExpandAll = function () {\n this.filtersToolPanelListPanel.expandFilterGroups(true);\n };\n FiltersToolPanel.prototype.onCollapseAll = function () {\n this.filtersToolPanelListPanel.expandFilterGroups(false);\n };\n FiltersToolPanel.prototype.onSearchChanged = function (event) {\n this.filtersToolPanelListPanel.performFilterSearch(event.searchText);\n };\n FiltersToolPanel.prototype.setFilterLayout = function (colDefs) {\n this.filtersToolPanelListPanel.setFiltersLayout(colDefs);\n };\n FiltersToolPanel.prototype.onGroupExpanded = function (event) {\n this.filtersToolPanelHeaderPanel.setExpandState(event.state);\n };\n FiltersToolPanel.prototype.expandFilterGroups = function (groupIds) {\n this.filtersToolPanelListPanel.expandFilterGroups(true, groupIds);\n };\n FiltersToolPanel.prototype.collapseFilterGroups = function (groupIds) {\n this.filtersToolPanelListPanel.expandFilterGroups(false, groupIds);\n };\n FiltersToolPanel.prototype.expandFilters = function (colIds) {\n this.filtersToolPanelListPanel.expandFilters(true, colIds);\n };\n FiltersToolPanel.prototype.collapseFilters = function (colIds) {\n this.filtersToolPanelListPanel.expandFilters(false, colIds);\n };\n FiltersToolPanel.prototype.syncLayoutWithGrid = function () {\n this.filtersToolPanelListPanel.syncFilterLayout();\n };\n FiltersToolPanel.prototype.refresh = function () {\n this.init(this.params);\n };\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n FiltersToolPanel.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n FiltersToolPanel.TEMPLATE = \"
\\n \\n \\n
\";\n __decorate$1M([RefSelector('filtersToolPanelHeaderPanel')], FiltersToolPanel.prototype, \"filtersToolPanelHeaderPanel\", void 0);\n __decorate$1M([RefSelector('filtersToolPanelListPanel')], FiltersToolPanel.prototype, \"filtersToolPanelListPanel\", void 0);\n __decorate$1M([Autowired('gridApi')], FiltersToolPanel.prototype, \"gridApi\", void 0);\n __decorate$1M([Autowired('columnApi')], FiltersToolPanel.prototype, \"columnApi\", void 0);\n return FiltersToolPanel;\n}(Component);\nvar FiltersToolPanelModule = {\n moduleName: ModuleNames.FiltersToolPanelModule,\n beans: [],\n agStackComponents: [{\n componentName: 'AgFiltersToolPanelHeader',\n componentClass: FiltersToolPanelHeaderPanel\n }, {\n componentName: 'AgFiltersToolPanelList',\n componentClass: FiltersToolPanelListPanel\n }],\n userComponents: [{\n componentName: 'agFiltersToolPanel',\n componentClass: FiltersToolPanel\n }],\n dependantModules: [SideBarModule, EnterpriseCoreModule]\n};\nvar __extends$2R = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1L = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar ChartDatasource = /** @class */function (_super) {\n __extends$2R(ChartDatasource, _super);\n function ChartDatasource() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ChartDatasource.prototype.getData = function (params) {\n if (params.crossFiltering) {\n if (params.grouping) {\n console.warn(\"AG Grid: crossing filtering with row grouping is not supported.\");\n return {\n chartData: [],\n columnNames: {}\n };\n }\n if (!this.gridOptionsWrapper.isRowModelDefault()) {\n console.warn(\"AG Grid: crossing filtering is only supported in the client side row model.\");\n return {\n chartData: [],\n columnNames: {}\n };\n }\n }\n var isServerSide = this.gridOptionsWrapper.isRowModelServerSide();\n if (isServerSide && params.pivoting) {\n this.updatePivotKeysForSSRM();\n }\n var result = this.extractRowsFromGridRowModel(params);\n result.chartData = this.aggregateRowsByDimension(params, result.chartData);\n return result;\n };\n ChartDatasource.prototype.extractRowsFromGridRowModel = function (params) {\n var _this = this;\n var extractedRowData = [];\n var columnNames = {};\n // maps used to keep track of expanded groups that need to be removed\n var groupNodeIndexes = {};\n var groupsToRemove = {};\n // only used when cross filtering\n var filteredNodes = {};\n var allRowNodes = [];\n var numRows;\n if (params.crossFiltering) {\n filteredNodes = this.getFilteredRowNodes();\n allRowNodes = this.getAllRowNodes();\n numRows = allRowNodes.length;\n } else {\n // make sure enough rows in range to chart. if user filters and less rows, then end row will be\n // the last displayed row, not where the range ends.\n var modelLastRow = this.gridRowModel.getRowCount() - 1;\n var rangeLastRow = params.endRow >= 0 ? Math.min(params.endRow, modelLastRow) : modelLastRow;\n numRows = rangeLastRow - params.startRow + 1;\n }\n var _loop_1 = function (i) {\n var data = {};\n var rowNode = params.crossFiltering ? allRowNodes[i] : this_1.gridRowModel.getRow(i + params.startRow);\n // first get data for dimensions columns\n params.dimensionCols.forEach(function (col) {\n var colId = col.colId;\n var column = _this.columnModel.getGridColumn(colId);\n if (column) {\n var valueObject = _this.valueService.getValue(column, rowNode);\n // when grouping we also need to build up multi category labels for charts\n if (params.grouping) {\n var valueString = valueObject && valueObject.toString ? String(valueObject.toString()) : '';\n // traverse parents to extract group label path\n var labels = ChartDatasource.getGroupLabels(rowNode, valueString);\n data[colId] = {\n labels: labels,\n toString: function () {\n return this.labels.filter(function (l) {\n return !!l;\n }).reverse().join(' - ');\n }\n };\n // keep track of group node indexes, so they can be padded when other groups are expanded\n if (rowNode.group) {\n groupNodeIndexes[labels.toString()] = i;\n }\n // if node (group or leaf) has parents then it is expanded and should be removed\n var groupKey = labels.slice(1, labels.length).toString();\n if (groupKey) {\n groupsToRemove[groupKey] = groupNodeIndexes[groupKey];\n }\n } else {\n // leaf nodes can be directly added to dimension columns\n data[colId] = valueObject;\n }\n } else {\n // introduce a default category when no dimensions exist with a value based off row index (+1)\n data[ChartDataModel.DEFAULT_CATEGORY] = i + 1;\n }\n });\n // then get data for value columns\n params.valueCols.forEach(function (col) {\n var columnNamesArr = [];\n // pivot keys should be added first\n var pivotKeys = col.getColDef().pivotKeys;\n if (pivotKeys) {\n columnNamesArr = pivotKeys.slice();\n }\n // then add column header name to results\n var headerName = col.getColDef().headerName;\n if (headerName) {\n columnNamesArr.push(headerName);\n }\n // add array of column names to results\n if (columnNamesArr.length > 0) {\n columnNames[col.getId()] = columnNamesArr;\n }\n var colId = col.getColId();\n if (params.crossFiltering) {\n var filteredOutColId = colId + '-filtered-out';\n // add data value to value column\n var value = _this.valueService.getValue(col, rowNode);\n var actualValue = value != null && typeof value.toNumber === 'function' ? value.toNumber() : value;\n if (filteredNodes[rowNode.id]) {\n data[colId] = actualValue;\n data[filteredOutColId] = params.aggFunc || params.isScatter ? undefined : 0;\n } else {\n data[colId] = params.aggFunc || params.isScatter ? undefined : 0;\n data[filteredOutColId] = actualValue;\n }\n } else {\n // add data value to value column\n var value = _this.valueService.getValue(col, rowNode);\n // aggregated value\n if (value && value.hasOwnProperty('toString')) {\n value = parseFloat(value.toString());\n }\n data[colId] = value != null && typeof value.toNumber === 'function' ? value.toNumber() : value;\n }\n });\n // row data from footer nodes should not be included in charts\n if (rowNode.footer) {\n // 'stamping' data as footer to avoid impacting previously calculated `groupIndexesToRemove` and will\n // be removed from the results along with any expanded group nodes\n data.footer = true;\n }\n // add data to results\n extractedRowData.push(data);\n };\n var this_1 = this;\n for (var i = 0; i < numRows; i++) {\n _loop_1(i);\n }\n if (params.grouping) {\n var groupIndexesToRemove_1 = _.values(groupsToRemove);\n var filterFunc = function (data, index) {\n return !data.footer && !_.includes(groupIndexesToRemove_1, index);\n };\n extractedRowData = extractedRowData.filter(filterFunc);\n }\n return {\n chartData: extractedRowData,\n columnNames: columnNames\n };\n };\n ChartDatasource.prototype.aggregateRowsByDimension = function (params, dataFromGrid) {\n var _this = this;\n var dimensionCols = params.dimensionCols;\n if (!params.aggFunc || dimensionCols.length === 0) {\n return dataFromGrid;\n }\n var lastCol = _.last(dimensionCols);\n var lastColId = lastCol && lastCol.colId;\n var map = {};\n var dataAggregated = [];\n dataFromGrid.forEach(function (data) {\n var currentMap = map;\n dimensionCols.forEach(function (col) {\n var colId = col.colId;\n var key = data[colId];\n if (colId === lastColId) {\n var groupItem_1 = currentMap[key];\n if (!groupItem_1) {\n groupItem_1 = {\n __children: []\n };\n dimensionCols.forEach(function (dimCol) {\n var dimColId = dimCol.colId;\n groupItem_1[dimColId] = data[dimColId];\n });\n currentMap[key] = groupItem_1;\n dataAggregated.push(groupItem_1);\n }\n groupItem_1.__children.push(data);\n } else {\n // map of maps\n if (!currentMap[key]) {\n currentMap[key] = {};\n }\n currentMap = currentMap[key];\n }\n });\n });\n if (ModuleRegistry.assertRegistered(ModuleNames.RowGroupingModule, 'Charting Aggregation')) {\n dataAggregated.forEach(function (groupItem) {\n return params.valueCols.forEach(function (col) {\n if (params.crossFiltering) {\n params.valueCols.forEach(function (valueCol) {\n var colId = valueCol.getColId();\n // filtered data\n var dataToAgg = groupItem.__children.filter(function (child) {\n return typeof child[colId] !== 'undefined';\n }).map(function (child) {\n return child[colId];\n });\n var aggResult = _this.aggregationStage.aggregateValues(dataToAgg, params.aggFunc);\n groupItem[valueCol.getId()] = aggResult && typeof aggResult.value !== 'undefined' ? aggResult.value : aggResult;\n // filtered out data\n var filteredOutColId = colId + \"-filtered-out\";\n var dataToAggFiltered = groupItem.__children.filter(function (child) {\n return typeof child[filteredOutColId] !== 'undefined';\n }).map(function (child) {\n return child[filteredOutColId];\n });\n var aggResultFiltered = _this.aggregationStage.aggregateValues(dataToAggFiltered, params.aggFunc);\n groupItem[filteredOutColId] = aggResultFiltered && typeof aggResultFiltered.value !== 'undefined' ? aggResultFiltered.value : aggResultFiltered;\n });\n } else {\n var dataToAgg = groupItem.__children.map(function (child) {\n return child[col.getId()];\n });\n var aggResult = 0;\n if (ModuleRegistry.assertRegistered(ModuleNames.RowGroupingModule, 'Charting Aggregation')) {\n aggResult = _this.aggregationStage.aggregateValues(dataToAgg, params.aggFunc);\n }\n groupItem[col.getId()] = aggResult && typeof aggResult.value !== 'undefined' ? aggResult.value : aggResult;\n }\n });\n });\n }\n return dataAggregated;\n };\n ChartDatasource.prototype.updatePivotKeysForSSRM = function () {\n var secondaryColumns = this.columnModel.getSecondaryColumns();\n if (!secondaryColumns) {\n return;\n }\n // we don't know what the application will use for the pivot key separator (i.e. '_' or '|' ) as the\n // secondary columns are provided to grid by the application via columnApi.setSecondaryColumns()\n var pivotKeySeparator = this.extractPivotKeySeparator(secondaryColumns);\n // `pivotKeys` is not used by the SSRM for pivoting, so it is safe to reuse this colDef property. This way\n // the same logic can be used for CSRM and SSRM to extract legend names in extractRowsFromGridRowModel()\n secondaryColumns.forEach(function (col) {\n if (pivotKeySeparator === '') {\n col.getColDef().pivotKeys = [];\n } else {\n var keys = col.getColId().split(pivotKeySeparator);\n col.getColDef().pivotKeys = keys.slice(0, keys.length - 1);\n }\n });\n };\n ChartDatasource.prototype.extractPivotKeySeparator = function (secondaryColumns) {\n if (secondaryColumns.length === 0) {\n return '';\n }\n var extractSeparator = function (columnGroup, childId) {\n var groupId = columnGroup.getGroupId();\n if (!columnGroup.getParent()) {\n // removing groupId ('2000') from childId ('2000|Swimming') yields '|Swimming' so first char is separator\n return childId.split(groupId)[1][0];\n }\n return extractSeparator(columnGroup.getParent(), groupId);\n };\n var firstSecondaryCol = secondaryColumns[0];\n if (firstSecondaryCol.getParent() == null) {\n return '';\n }\n return extractSeparator(firstSecondaryCol.getParent(), firstSecondaryCol.getColId());\n };\n ChartDatasource.getGroupLabels = function (rowNode, initialLabel) {\n var labels = [initialLabel];\n while (rowNode && rowNode.level !== 0) {\n rowNode = rowNode.parent;\n if (rowNode) {\n labels.push(rowNode.key);\n }\n }\n return labels;\n };\n ChartDatasource.prototype.getFilteredRowNodes = function () {\n var filteredNodes = {};\n this.gridRowModel.forEachNodeAfterFilterAndSort(function (rowNode) {\n filteredNodes[rowNode.id] = rowNode;\n });\n return filteredNodes;\n };\n ChartDatasource.prototype.getAllRowNodes = function () {\n var allRowNodes = [];\n this.gridRowModel.forEachNode(function (rowNode) {\n allRowNodes.push(rowNode);\n });\n return this.sortRowNodes(allRowNodes);\n };\n ChartDatasource.prototype.sortRowNodes = function (rowNodes) {\n var sortOptions = this.sortController.getSortOptions();\n var noSort = !sortOptions || sortOptions.length == 0;\n if (noSort) return rowNodes;\n return this.rowNodeSorter.doFullSort(rowNodes, sortOptions);\n };\n __decorate$1L([Autowired('rowModel')], ChartDatasource.prototype, \"gridRowModel\", void 0);\n __decorate$1L([Autowired('valueService')], ChartDatasource.prototype, \"valueService\", void 0);\n __decorate$1L([Autowired('columnModel')], ChartDatasource.prototype, \"columnModel\", void 0);\n __decorate$1L([Autowired('rowNodeSorter')], ChartDatasource.prototype, \"rowNodeSorter\", void 0);\n __decorate$1L([Autowired('sortController')], ChartDatasource.prototype, \"sortController\", void 0);\n __decorate$1L([Optional('aggregationStage')], ChartDatasource.prototype, \"aggregationStage\", void 0);\n return ChartDatasource;\n}(BeanStub);\nvar __extends$2Q = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1K = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __read$M = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread$q = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$M(arguments[i]));\n return ar;\n};\nvar ChartDataModel = /** @class */function (_super) {\n __extends$2Q(ChartDataModel, _super);\n function ChartDataModel(params) {\n var _this = _super.call(this) || this;\n _this.unlinked = false;\n _this.chartData = [];\n _this.valueColState = [];\n _this.dimensionColState = [];\n _this.columnNames = {};\n _this.grouping = false;\n _this.crossFiltering = false;\n // this control flag is used to only log warning for the initial user config\n _this.suppressComboChartWarnings = false;\n _this.chartId = params.chartId;\n _this.chartType = params.chartType;\n _this.pivotChart = params.pivotChart;\n _this.chartThemeName = params.chartThemeName;\n _this.aggFunc = params.aggFunc;\n _this.referenceCellRange = params.cellRange;\n _this.suppliedCellRange = params.cellRange;\n _this.suppressChartRanges = params.suppressChartRanges;\n _this.unlinked = !!params.unlinkChart;\n _this.crossFiltering = !!params.crossFiltering;\n _this.seriesChartTypes = params.seriesChartTypes || [];\n _this.initComboCharts(params);\n return _this;\n }\n ChartDataModel.prototype.initComboCharts = function (params) {\n var seriesChartTypesExist = this.seriesChartTypes && this.seriesChartTypes.length > 0;\n var customCombo = params.chartType === 'customCombo' || seriesChartTypesExist;\n if (customCombo) {\n // it is not necessary to supply a chart type for combo charts when `seriesChartTypes` is supplied\n this.chartType = 'customCombo';\n // cache supplied `seriesChartTypes` to allow switching between different chart types in the settings panel\n this.savedCustomSeriesChartTypes = this.seriesChartTypes || [];\n }\n };\n ChartDataModel.prototype.init = function () {\n this.datasource = this.createManagedBean(new ChartDatasource());\n this.updateCellRanges();\n };\n ChartDataModel.prototype.updateCellRanges = function (updatedColState) {\n if (this.valueCellRange) {\n this.referenceCellRange = this.valueCellRange;\n }\n var _a = this.getAllChartColumns(),\n dimensionCols = _a.dimensionCols,\n valueCols = _a.valueCols;\n var allColsFromRanges = this.getAllColumnsFromRanges();\n if (updatedColState) {\n this.updateColumnState(updatedColState);\n }\n this.setDimensionCellRange(dimensionCols, allColsFromRanges, updatedColState);\n this.setValueCellRange(valueCols, allColsFromRanges, updatedColState);\n if (!updatedColState) {\n this.resetColumnState();\n // dimension / category cell range could be out of sync after resetting column state when row grouping\n this.syncDimensionCellRange();\n }\n this.updateSeriesChartTypes();\n this.updateData();\n };\n ChartDataModel.prototype.updateSeriesChartTypes = function () {\n if (!this.isComboChart()) {\n return;\n }\n // ensure primary only chart types are not placed on secondary axis\n this.seriesChartTypes = this.seriesChartTypes.map(function (seriesChartType) {\n var primaryOnly = ['groupedColumn', 'stackedColumn', 'stackedArea'].includes(seriesChartType.chartType);\n seriesChartType.secondaryAxis = primaryOnly ? false : seriesChartType.secondaryAxis;\n return seriesChartType;\n });\n // note that when seriesChartTypes are supplied the chart type is also changed to 'customCombo'\n if (this.chartType === 'customCombo') {\n this.updateSeriesChartTypesForCustomCombo();\n return;\n }\n this.updateChartSeriesTypesForBuiltInCombos();\n };\n ChartDataModel.prototype.updateSeriesChartTypesForCustomCombo = function () {\n var _this = this;\n var seriesChartTypesSupplied = this.seriesChartTypes && this.seriesChartTypes.length > 0;\n if (!seriesChartTypesSupplied && !this.suppressComboChartWarnings) {\n console.warn(\"AG Grid: 'seriesChartTypes' are required when the 'customCombo' chart type is specified.\");\n }\n // ensure correct chartTypes are supplied\n this.seriesChartTypes = this.seriesChartTypes.map(function (s) {\n if (!ChartDataModel.SUPPORTED_COMBO_CHART_TYPES.includes(s.chartType)) {\n console.warn(\"AG Grid: invalid chartType '\" + s.chartType + \"' supplied in 'seriesChartTypes', converting to 'line' instead.\");\n s.chartType = 'line';\n }\n return s;\n });\n var getSeriesChartType = function (valueCol) {\n if (!_this.savedCustomSeriesChartTypes || _this.savedCustomSeriesChartTypes.length === 0) {\n _this.savedCustomSeriesChartTypes = _this.seriesChartTypes;\n }\n var providedSeriesChartType = _this.savedCustomSeriesChartTypes.find(function (s) {\n return s.colId === valueCol.colId;\n });\n if (!providedSeriesChartType) {\n if (valueCol.selected && !_this.suppressComboChartWarnings) {\n console.warn(\"AG Grid: no 'seriesChartType' found for colId = '\" + valueCol.colId + \"', defaulting to 'line'.\");\n }\n return {\n colId: valueCol.colId,\n chartType: 'line',\n secondaryAxis: false\n };\n }\n return providedSeriesChartType;\n };\n var updatedSeriesChartTypes = this.valueColState.map(getSeriesChartType);\n this.seriesChartTypes = updatedSeriesChartTypes;\n // also cache custom `seriesChartTypes` to allow for switching between different chart types\n this.savedCustomSeriesChartTypes = updatedSeriesChartTypes;\n // turn off warnings as first combo chart attempt has completed\n this.suppressComboChartWarnings = true;\n };\n ChartDataModel.prototype.updateChartSeriesTypesForBuiltInCombos = function () {\n var primaryChartType = this.chartType === 'columnLineCombo' ? 'groupedColumn' : 'stackedArea';\n var secondaryChartType = this.chartType === 'columnLineCombo' ? 'line' : 'groupedColumn';\n var selectedCols = this.valueColState.filter(function (cs) {\n return cs.selected;\n });\n var lineIndex = Math.ceil(selectedCols.length / 2);\n this.seriesChartTypes = selectedCols.map(function (valueCol, i) {\n var seriesType = i >= lineIndex ? secondaryChartType : primaryChartType;\n return {\n colId: valueCol.colId,\n chartType: seriesType,\n secondaryAxis: false\n };\n });\n };\n ChartDataModel.prototype.updateData = function () {\n var _a = this.getRowIndexes(),\n startRow = _a.startRow,\n endRow = _a.endRow;\n if (this.pivotChart) {\n this.resetColumnState();\n }\n this.grouping = this.isGrouping();\n var params = {\n aggFunc: this.aggFunc,\n dimensionCols: [this.getSelectedDimension()],\n grouping: this.grouping,\n pivoting: this.isPivotActive(),\n crossFiltering: this.crossFiltering,\n valueCols: this.getSelectedValueCols(),\n startRow: startRow,\n endRow: endRow,\n isScatter: _.includes(['scatter', 'bubble'], this.chartType)\n };\n var _b = this.datasource.getData(params),\n chartData = _b.chartData,\n columnNames = _b.columnNames;\n this.chartData = chartData;\n this.columnNames = columnNames;\n };\n ChartDataModel.prototype.isGrouping = function () {\n var usingTreeData = this.gridOptionsWrapper.isTreeData();\n var groupedCols = usingTreeData ? null : this.columnModel.getRowGroupColumns();\n var isGroupActive = usingTreeData || groupedCols && groupedCols.length > 0;\n // charts only group when the selected category is a group column\n var colId = this.getSelectedDimension().colId;\n var displayedGroupCols = this.columnModel.getGroupDisplayColumns();\n var groupDimensionSelected = displayedGroupCols.map(function (col) {\n return col.getColId();\n }).some(function (id) {\n return id === colId;\n });\n return !!isGroupActive && groupDimensionSelected;\n };\n ChartDataModel.prototype.getSelectedValueCols = function () {\n return this.valueColState.filter(function (cs) {\n return cs.selected;\n }).map(function (cs) {\n return cs.column;\n });\n };\n ChartDataModel.prototype.getSelectedDimension = function () {\n return this.dimensionColState.filter(function (cs) {\n return cs.selected;\n })[0];\n };\n ChartDataModel.prototype.getColDisplayName = function (col) {\n return this.columnModel.getDisplayNameForColumn(col, 'chart');\n };\n ChartDataModel.prototype.isPivotMode = function () {\n return this.columnModel.isPivotMode();\n };\n ChartDataModel.prototype.getChartDataType = function (colId) {\n var column = this.columnModel.getPrimaryColumn(colId);\n return column ? column.getColDef().chartDataType : undefined;\n };\n ChartDataModel.prototype.isPivotActive = function () {\n return this.columnModel.isPivotActive();\n };\n ChartDataModel.prototype.createCellRange = function (type) {\n var columns = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n columns[_i - 1] = arguments[_i];\n }\n return {\n id: this.chartId,\n startRow: this.referenceCellRange.startRow,\n endRow: this.referenceCellRange.endRow,\n columns: columns,\n startColumn: type === CellRangeType.DIMENSION ? columns[0] : this.referenceCellRange.startColumn,\n type: type\n };\n };\n ChartDataModel.prototype.getAllColumnsFromRanges = function () {\n if (this.pivotChart) {\n return _.convertToSet(this.columnModel.getAllDisplayedColumns());\n }\n var columns = this.dimensionCellRange || this.valueCellRange ? [] : this.referenceCellRange.columns;\n if (this.dimensionCellRange) {\n columns.push.apply(columns, __spread$q(this.dimensionCellRange.columns));\n }\n if (this.valueCellRange) {\n columns.push.apply(columns, __spread$q(this.valueCellRange.columns));\n }\n return _.convertToSet(columns);\n };\n ChartDataModel.prototype.getRowIndexes = function () {\n var startRow = 0,\n endRow = 0;\n var rangeService = this.rangeService;\n var range = this.valueCellRange;\n if (rangeService && range) {\n startRow = rangeService.getRangeStartRow(range).rowIndex;\n // when the last row the cell range is a pinned 'bottom' row, the `endRow` index is set to -1 which results\n // in the ChartDatasource processing all non pinned rows from the `startRow` index.\n var endRowPosition = rangeService.getRangeEndRow(range);\n endRow = endRowPosition.rowPinned === Constants.PINNED_BOTTOM ? -1 : endRowPosition.rowIndex;\n }\n return {\n startRow: startRow,\n endRow: endRow\n };\n };\n ChartDataModel.prototype.getAllChartColumns = function () {\n var _this = this;\n var displayedCols = this.columnModel.getAllDisplayedColumns();\n var dimensionCols = new Set();\n var valueCols = new Set();\n displayedCols.forEach(function (col) {\n var colDef = col.getColDef();\n var chartDataType = colDef.chartDataType;\n if (chartDataType) {\n // chart data type was specified explicitly\n switch (chartDataType) {\n case 'category':\n case 'time':\n dimensionCols.add(col);\n return;\n case 'series':\n valueCols.add(col);\n return;\n case 'excluded':\n return;\n default:\n console.warn(\"AG Grid: unexpected chartDataType value '\" + chartDataType + \"' supplied, instead use 'category', 'series' or 'excluded'\");\n break;\n }\n }\n if (colDef.colId === 'ag-Grid-AutoColumn') {\n dimensionCols.add(col);\n return;\n }\n if (!col.isPrimary()) {\n valueCols.add(col);\n return;\n }\n // if 'chartDataType' is not provided then infer type based data contained in first row\n (_this.isNumberCol(col) ? valueCols : dimensionCols).add(col);\n });\n return {\n dimensionCols: dimensionCols,\n valueCols: valueCols\n };\n };\n ChartDataModel.prototype.isNumberCol = function (col) {\n if (col.getColId() === 'ag-Grid-AutoColumn') {\n return false;\n }\n var row = this.rowRenderer.getRowNode({\n rowIndex: 0,\n rowPinned: null\n });\n if (!row) {\n return false;\n }\n var cellValue = this.valueService.getValue(col, row);\n if (cellValue == null) {\n cellValue = this.extractLeafData(row, col);\n }\n if (cellValue != null && typeof cellValue.toNumber === 'function') {\n cellValue = cellValue.toNumber();\n }\n return typeof cellValue === 'number';\n };\n ChartDataModel.prototype.extractLeafData = function (row, col) {\n if (!row.allLeafChildren) {\n return null;\n }\n for (var i = 0; i < row.allLeafChildren.length; i++) {\n var childRow = row.allLeafChildren[i];\n var value = this.valueService.getValue(col, childRow);\n if (value != null) {\n return value;\n }\n }\n return null;\n };\n ChartDataModel.prototype.resetColumnState = function () {\n var _this = this;\n var _a = this.getAllChartColumns(),\n dimensionCols = _a.dimensionCols,\n valueCols = _a.valueCols;\n var allCols = this.getAllColumnsFromRanges();\n var isInitialising = this.valueColState.length < 1;\n this.dimensionColState = [];\n this.valueColState = [];\n var hasSelectedDimension = false;\n var order = 1;\n var aggFuncDimension = this.suppliedCellRange.columns[0]; //TODO\n dimensionCols.forEach(function (column) {\n var isAutoGroupCol = column.getColId() === 'ag-Grid-AutoColumn';\n var selected = false;\n if (_this.crossFiltering && _this.aggFunc) {\n if (aggFuncDimension.getColId() === column.getColId()) {\n selected = true;\n }\n } else {\n selected = isAutoGroupCol ? true : !hasSelectedDimension && allCols.has(column);\n }\n _this.dimensionColState.push({\n column: column,\n colId: column.getColId(),\n displayName: _this.getColDisplayName(column),\n selected: selected,\n order: order++\n });\n if (selected) {\n hasSelectedDimension = true;\n }\n });\n var defaultCategory = {\n colId: ChartDataModel.DEFAULT_CATEGORY,\n displayName: this.chartTranslationService.translate('defaultCategory'),\n selected: !hasSelectedDimension,\n order: 0\n };\n this.dimensionColState.unshift(defaultCategory);\n var valueColumnsFromReferenceRange = this.referenceCellRange.columns.filter(function (c) {\n return valueCols.has(c);\n });\n valueCols.forEach(function (column) {\n // first time the value cell range is set, preserve the column order from the supplied range\n if (isInitialising && _.includes(_this.referenceCellRange.columns, column)) {\n column = valueColumnsFromReferenceRange.shift();\n }\n _this.valueColState.push({\n column: column,\n colId: column.getColId(),\n displayName: _this.getColDisplayName(column),\n selected: allCols.has(column),\n order: order++\n });\n });\n };\n ChartDataModel.prototype.updateColumnState = function (updatedCol) {\n var idsMatch = function (cs) {\n return cs.colId === updatedCol.colId;\n };\n var _a = this,\n dimensionColState = _a.dimensionColState,\n valueColState = _a.valueColState;\n if (dimensionColState.filter(idsMatch).length > 0) {\n // only one dimension should be selected\n dimensionColState.forEach(function (cs) {\n return cs.selected = idsMatch(cs);\n });\n } else {\n // just update the selected value on the supplied value column\n valueColState.filter(idsMatch).forEach(function (cs) {\n return cs.selected = updatedCol.selected;\n });\n }\n var allColumns = __spread$q(dimensionColState, valueColState);\n var orderedColIds = [];\n // calculate new order\n allColumns.forEach(function (col, i) {\n if (i === updatedCol.order) {\n orderedColIds.push(updatedCol.colId);\n }\n if (col.colId !== updatedCol.colId) {\n orderedColIds.push(col.colId);\n }\n });\n // update col state with new order\n allColumns.forEach(function (col) {\n var order = orderedColIds.indexOf(col.colId);\n col.order = order >= 0 ? orderedColIds.indexOf(col.colId) : allColumns.length - 1;\n });\n this.reorderColState();\n };\n ChartDataModel.prototype.reorderColState = function () {\n var ascColStateOrder = function (a, b) {\n return a.order - b.order;\n };\n this.dimensionColState.sort(ascColStateOrder);\n this.valueColState.sort(ascColStateOrder);\n };\n ChartDataModel.prototype.setDimensionCellRange = function (dimensionCols, colsInRange, updatedColState) {\n var _this = this;\n this.dimensionCellRange = undefined;\n if (!updatedColState && !this.dimensionColState.length) {\n // use first dimension column in range by default\n dimensionCols.forEach(function (col) {\n if (_this.dimensionCellRange || !colsInRange.has(col)) {\n return;\n }\n _this.dimensionCellRange = _this.createCellRange(CellRangeType.DIMENSION, col);\n });\n return;\n }\n var selectedDimensionColState = updatedColState;\n if (this.crossFiltering && this.aggFunc) {\n var aggFuncDimension_1 = this.suppliedCellRange.columns[0]; //TODO\n selectedDimensionColState = this.dimensionColState.filter(function (cs) {\n return cs.colId === aggFuncDimension_1.getColId();\n })[0];\n } else if (!selectedDimensionColState || !dimensionCols.has(selectedDimensionColState.column)) {\n selectedDimensionColState = this.dimensionColState.filter(function (cs) {\n return cs.selected;\n })[0];\n }\n if (selectedDimensionColState && selectedDimensionColState.colId !== ChartDataModel.DEFAULT_CATEGORY) {\n this.dimensionCellRange = this.createCellRange(CellRangeType.DIMENSION, selectedDimensionColState.column);\n }\n };\n ChartDataModel.prototype.setValueCellRange = function (valueCols, colsInRange, updatedColState) {\n this.valueCellRange = undefined;\n var selectedValueCols = [];\n valueCols.forEach(function (col) {\n if (updatedColState && updatedColState.colId === col.getColId()) {\n if (updatedColState.selected) {\n selectedValueCols.push(updatedColState.column);\n }\n } else if (colsInRange.has(col)) {\n selectedValueCols.push(col);\n }\n });\n if (selectedValueCols.length > 0) {\n var orderedColIds_1 = [];\n if (this.valueColState.length > 0) {\n orderedColIds_1 = this.valueColState.map(function (c) {\n return c.colId;\n });\n } else {\n colsInRange.forEach(function (c) {\n return orderedColIds_1.push(c.getColId());\n });\n }\n selectedValueCols.sort(function (a, b) {\n return orderedColIds_1.indexOf(a.getColId()) - orderedColIds_1.indexOf(b.getColId());\n });\n this.valueCellRange = this.createCellRange.apply(this, __spread$q([CellRangeType.VALUE], selectedValueCols));\n }\n };\n ChartDataModel.prototype.syncDimensionCellRange = function () {\n var selectedDimension = this.getSelectedDimension();\n if (selectedDimension && selectedDimension.column) {\n this.dimensionCellRange = this.createCellRange(CellRangeType.DIMENSION, selectedDimension.column);\n }\n };\n ChartDataModel.prototype.isComboChart = function () {\n return ['columnLineCombo', 'areaColumnCombo', 'customCombo'].includes(this.chartType);\n };\n ChartDataModel.DEFAULT_CATEGORY = 'AG-GRID-DEFAULT-CATEGORY';\n ChartDataModel.SUPPORTED_COMBO_CHART_TYPES = ['line', 'groupedColumn', 'stackedColumn', 'area', 'stackedArea'];\n __decorate$1K([Autowired('columnModel')], ChartDataModel.prototype, \"columnModel\", void 0);\n __decorate$1K([Autowired('valueService')], ChartDataModel.prototype, \"valueService\", void 0);\n __decorate$1K([Autowired('rangeService')], ChartDataModel.prototype, \"rangeService\", void 0);\n __decorate$1K([Autowired('rowRenderer')], ChartDataModel.prototype, \"rowRenderer\", void 0);\n __decorate$1K([Autowired('chartTranslationService')], ChartDataModel.prototype, \"chartTranslationService\", void 0);\n __decorate$1K([PostConstruct], ChartDataModel.prototype, \"init\", null);\n return ChartDataModel;\n}(BeanStub);\n\n// For small data structs like a bounding box, objects are superior to arrays\n// in terms of performance (by 3-4% in Chrome 71, Safari 12 and by 20% in Firefox 64).\n// They are also self descriptive and harder to abuse.\n// For example, one has to do:\n// `ctx.strokeRect(bbox.x, bbox.y, bbox.width, bbox.height);`\n// rather than become enticed by the much slower:\n// `ctx.strokeRect(...bbox);`\n// https://jsperf.com/array-vs-object-create-access\nvar BBox$1 = /** @class */function () {\n function BBox(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n BBox.prototype.clone = function () {\n var _a = this,\n x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height;\n return new BBox(x, y, width, height);\n };\n BBox.prototype.equals = function (other) {\n return this.x === other.x && this.y === other.y && this.width === other.width && this.height === other.height;\n };\n BBox.prototype.isValid = function () {\n return isFinite(this.x) && isFinite(this.y) && isFinite(this.width) && isFinite(this.height);\n };\n BBox.prototype.dilate = function (value) {\n this.x -= value;\n this.y -= value;\n this.width += value * 2;\n this.height += value * 2;\n };\n BBox.prototype.containsPoint = function (x, y) {\n return x >= this.x && x <= this.x + this.width && y >= this.y && y <= this.y + this.height;\n };\n BBox.prototype.render = function (ctx, params) {\n if (params === void 0) {\n params = BBox.noParams;\n }\n ctx.save();\n if (params.resetTransform) {\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n }\n ctx.strokeStyle = params.strokeStyle || 'cyan';\n ctx.lineWidth = params.lineWidth || 1;\n ctx.strokeRect(this.x, this.y, this.width, this.height);\n if (params.label) {\n ctx.fillStyle = params.fillStyle || 'black';\n ctx.textBaseline = 'bottom';\n ctx.fillText(params.label, this.x, this.y);\n }\n ctx.restore();\n };\n BBox.noParams = {};\n return BBox;\n}();\nvar __read$L = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\n/**\n * As of Jan 8, 2019, Firefox still doesn't implement\n * `getTransform(): DOMMatrix;`\n * `setTransform(transform?: DOMMatrix2DInit)`\n * in the `CanvasRenderingContext2D`.\n * Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=928150\n * IE11 and Edge 44 also don't have the support.\n * Thus this class, to keep track of the current transform and\n * combine transformations.\n * Standards:\n * https://html.spec.whatwg.org/dev/canvas.html\n * https://www.w3.org/TR/geometry-1/\n */\nvar Matrix$1 = /** @class */function () {\n function Matrix(elements) {\n if (elements === void 0) {\n elements = [1, 0, 0, 1, 0, 0];\n }\n this.elements = elements;\n }\n Matrix.prototype.setElements = function (elements) {\n var e = this.elements;\n // `this.elements = elements.slice()` is 4-5 times slower\n // (in Chrome 71 and FF 64) than manually copying elements,\n // since slicing allocates new memory.\n // The performance of passing parameters individually\n // vs as an array is about the same in both browsers, so we\n // go with a single (array of elements) parameter, because\n // `setElements(elements)` and `setElements([a, b, c, d, e, f])`\n // calls give us roughly the same performance, versus\n // `setElements(...elements)` and `setElements(a, b, c, d, e, f)`,\n // where the spread operator causes a 20-30x performance drop\n // (30x when compiled to ES5's `.apply(this, elements)`\n // 20x when used natively).\n e[0] = elements[0];\n e[1] = elements[1];\n e[2] = elements[2];\n e[3] = elements[3];\n e[4] = elements[4];\n e[5] = elements[5];\n return this;\n };\n Matrix.prototype.setIdentityElements = function () {\n var e = this.elements;\n e[0] = 1;\n e[1] = 0;\n e[2] = 0;\n e[3] = 1;\n e[4] = 0;\n e[5] = 0;\n return this;\n };\n Object.defineProperty(Matrix.prototype, \"identity\", {\n get: function () {\n var e = this.elements;\n return e[0] === 1 && e[1] === 0 && e[2] === 0 && e[3] === 1 && e[4] === 0 && e[5] === 0;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"a\", {\n get: function () {\n return this.elements[0];\n },\n set: function (value) {\n this.elements[0] = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"b\", {\n get: function () {\n return this.elements[1];\n },\n set: function (value) {\n this.elements[1] = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"c\", {\n get: function () {\n return this.elements[2];\n },\n set: function (value) {\n this.elements[2] = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"d\", {\n get: function () {\n return this.elements[3];\n },\n set: function (value) {\n this.elements[3] = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"e\", {\n get: function () {\n return this.elements[4];\n },\n set: function (value) {\n this.elements[4] = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"f\", {\n get: function () {\n return this.elements[5];\n },\n set: function (value) {\n this.elements[5] = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Performs the AxB matrix multiplication and saves the result\n * to `C`, if given, or to `A` otherwise.\n */\n Matrix.prototype.AxB = function (A, B, C) {\n var a = A[0] * B[0] + A[2] * B[1],\n b = A[1] * B[0] + A[3] * B[1],\n c = A[0] * B[2] + A[2] * B[3],\n d = A[1] * B[2] + A[3] * B[3],\n e = A[0] * B[4] + A[2] * B[5] + A[4],\n f = A[1] * B[4] + A[3] * B[5] + A[5];\n C = C || A;\n C[0] = a;\n C[1] = b;\n C[2] = c;\n C[3] = d;\n C[4] = e;\n C[5] = f;\n };\n /**\n * The `other` matrix gets post-multiplied to the current matrix.\n * Returns the current matrix.\n * @param other\n */\n Matrix.prototype.multiplySelf = function (other) {\n this.AxB(this.elements, other.elements);\n return this;\n };\n /**\n * The `other` matrix gets post-multiplied to the current matrix.\n * Returns a new matrix.\n * @param other\n */\n Matrix.prototype.multiply = function (other) {\n var elements = new Array(6);\n this.AxB(this.elements, other.elements, elements);\n return new Matrix(elements);\n };\n Matrix.prototype.preMultiplySelf = function (other) {\n this.AxB(other.elements, this.elements, this.elements);\n return this;\n };\n /**\n * Returns the inverse of this matrix as a new matrix.\n */\n Matrix.prototype.inverse = function () {\n var _a = __read$L(this.elements, 6),\n a = _a[0],\n b = _a[1],\n c = _a[2],\n d = _a[3],\n e = _a[4],\n f = _a[5];\n var rD = 1 / (a * d - b * c); // reciprocal of determinant\n a *= rD;\n b *= rD;\n c *= rD;\n d *= rD;\n return new Matrix([d, -b, -c, a, c * f - d * e, b * e - a * f]);\n };\n /**\n * Save the inverse of this matrix to the given matrix.\n */\n Matrix.prototype.inverseTo = function (other) {\n var _a = __read$L(this.elements, 6),\n a = _a[0],\n b = _a[1],\n c = _a[2],\n d = _a[3],\n e = _a[4],\n f = _a[5];\n var rD = 1 / (a * d - b * c); // reciprocal of determinant\n a *= rD;\n b *= rD;\n c *= rD;\n d *= rD;\n other.setElements([d, -b, -c, a, c * f - d * e, b * e - a * f]);\n return this;\n };\n Matrix.prototype.invertSelf = function () {\n var el = this.elements;\n var a = el[0],\n b = el[1],\n c = el[2],\n d = el[3],\n e = el[4],\n f = el[5];\n var rD = 1 / (a * d - b * c); // reciprocal of determinant\n a *= rD;\n b *= rD;\n c *= rD;\n d *= rD;\n el[0] = d;\n el[1] = -b;\n el[2] = -c;\n el[3] = a;\n el[4] = c * f - d * e;\n el[5] = b * e - a * f;\n return this;\n };\n Matrix.prototype.clone = function () {\n return new Matrix(this.elements.slice());\n };\n Matrix.prototype.transformPoint = function (x, y) {\n var e = this.elements;\n return {\n x: x * e[0] + y * e[2] + e[4],\n y: x * e[1] + y * e[3] + e[5]\n };\n };\n Matrix.prototype.transformBBox = function (bbox, radius, target) {\n if (radius === void 0) {\n radius = 0;\n }\n var elements = this.elements;\n var xx = elements[0];\n var xy = elements[1];\n var yx = elements[2];\n var yy = elements[3];\n var h_w = bbox.width * 0.5;\n var h_h = bbox.height * 0.5;\n var cx = bbox.x + h_w;\n var cy = bbox.y + h_h;\n var w, h;\n if (radius) {\n h_w -= radius;\n h_h -= radius;\n var sx = Math.sqrt(xx * xx + yx * yx);\n var sy = Math.sqrt(xy * xy + yy * yy);\n w = Math.abs(h_w * xx) + Math.abs(h_h * yx) + Math.abs(sx * radius);\n h = Math.abs(h_w * xy) + Math.abs(h_h * yy) + Math.abs(sy * radius);\n } else {\n w = Math.abs(h_w * xx) + Math.abs(h_h * yx);\n h = Math.abs(h_w * xy) + Math.abs(h_h * yy);\n }\n if (!target) {\n target = new BBox$1(0, 0, 0, 0);\n }\n target.x = cx * xx + cy * yx + elements[4] - w;\n target.y = cx * xy + cy * yy + elements[5] - h;\n target.width = w + w;\n target.height = h + h;\n return target;\n };\n Matrix.prototype.toContext = function (ctx) {\n // It's fair to say that matrix multiplications are not cheap.\n // However, updating path definitions on every frame isn't either, so\n // it may be cheaper to just translate paths. It's also fair to\n // say, that most paths will have to be re-rendered anyway, say\n // rectangle paths in a bar chart, where an animation would happen when\n // the data set changes and existing bars are morphed into new ones.\n // Or a pie chart, where old sectors are also morphed into new ones.\n // Same for the line chart. The only plausible case where translating\n // existing paths would be enough, is the scatter chart, where marker\n // icons, typically circles, stay the same size. But if circle radii\n // are bound to some data points, even circle paths would have to be\n // updated. And thus it makes sense to optimize for fewer matrix\n // transforms, where transform matrices of paths are mostly identity\n // matrices and `x`/`y`, `centerX`/`centerY` and similar properties\n // are used to define a path at specific coordinates. And only groups\n // are used to collectively apply a transform to a set of nodes.\n // If the matrix is mostly identity (95% of the time),\n // the `if (this.isIdentity)` check can make this call 3-4 times\n // faster on average: https://jsperf.com/matrix-check-first-vs-always-set\n if (this.identity) {\n return;\n }\n var e = this.elements;\n ctx.transform(e[0], e[1], e[2], e[3], e[4], e[5]);\n };\n Matrix.flyweight = function (elements) {\n if (elements) {\n if (elements instanceof Matrix) {\n Matrix.matrix.setElements(elements.elements);\n } else {\n Matrix.matrix.setElements(elements);\n }\n } else {\n Matrix.matrix.setIdentityElements();\n }\n return Matrix.matrix;\n };\n Matrix.updateTransformMatrix = function (matrix, scalingX, scalingY, rotation, translationX, translationY, opts) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n // Assume that centers of scaling and rotation are at the origin.\n var _j = __read$L([0, 0], 2),\n bbcx = _j[0],\n bbcy = _j[1];\n var sx = scalingX;\n var sy = scalingY;\n var scx;\n var scy;\n if (sx === 1 && sy === 1) {\n scx = 0;\n scy = 0;\n } else {\n scx = ((_a = opts) === null || _a === void 0 ? void 0 : _a.scalingCenterX) == null ? bbcx : (_b = opts) === null || _b === void 0 ? void 0 : _b.scalingCenterX;\n scy = ((_c = opts) === null || _c === void 0 ? void 0 : _c.scalingCenterY) == null ? bbcy : (_d = opts) === null || _d === void 0 ? void 0 : _d.scalingCenterY;\n }\n var r = rotation;\n var cos = Math.cos(r);\n var sin = Math.sin(r);\n var rcx;\n var rcy;\n if (r === 0) {\n rcx = 0;\n rcy = 0;\n } else {\n rcx = ((_e = opts) === null || _e === void 0 ? void 0 : _e.rotationCenterX) == null ? bbcx : (_f = opts) === null || _f === void 0 ? void 0 : _f.rotationCenterX;\n rcy = ((_g = opts) === null || _g === void 0 ? void 0 : _g.rotationCenterY) == null ? bbcy : (_h = opts) === null || _h === void 0 ? void 0 : _h.rotationCenterY;\n }\n var tx = translationX;\n var ty = translationY;\n // The transform matrix `M` is a result of the following transformations:\n // 1) translate the center of scaling to the origin\n // 2) scale\n // 3) translate back\n // 4) translate the center of rotation to the origin\n // 5) rotate\n // 6) translate back\n // 7) translate\n // (7) (6) (5) (4) (3) (2) (1)\n // | 1 0 tx | | 1 0 rcx | | cos -sin 0 | | 1 0 -rcx | | 1 0 scx | | sx 0 0 | | 1 0 -scx |\n // M = | 0 1 ty | * | 0 1 rcy | * | sin cos 0 | * | 0 1 -rcy | * | 0 1 scy | * | 0 sy 0 | * | 0 1 -scy |\n // | 0 0 1 | | 0 0 1 | | 0 0 1 | | 0 0 1 | | 0 0 1 | | 0 0 0 | | 0 0 1 |\n // Translation after steps 1-4 above:\n var tx4 = scx * (1 - sx) - rcx;\n var ty4 = scy * (1 - sy) - rcy;\n matrix.setElements([cos * sx, sin * sx, -sin * sy, cos * sy, cos * tx4 - sin * ty4 + rcx + tx, sin * tx4 + cos * ty4 + rcy + ty]);\n return matrix;\n };\n Matrix.matrix = new Matrix();\n return Matrix;\n}();\nvar ID_MAP = {};\nfunction createId$1(instance) {\n var _a;\n var constructor = instance.constructor;\n var className = constructor.hasOwnProperty('className') ? constructor.className : constructor.name;\n if (!className) {\n throw new Error(\"The \" + constructor + \" is missing the 'className' property.\");\n }\n var nextId = (_a = ID_MAP[className], _a !== null && _a !== void 0 ? _a : 0) + 1;\n ID_MAP[className] = nextId;\n return className + '-' + nextId;\n}\nfunction windowValue(name) {\n var _a;\n /**\n * Redeclaration of window that is safe for use with Gatsby server-side (webpack) compilation.\n */\n var WINDOW = typeof window !== 'undefined' ? window :\n // typeof global !== 'undefined' ? (global as any) :\n undefined;\n return (_a = WINDOW) === null || _a === void 0 ? void 0 : _a[name];\n}\nvar RedrawType = /*#__PURE__*/function (RedrawType) {\n RedrawType[RedrawType[\"NONE\"] = 0] = \"NONE\";\n // Canvas doesn't need clearing, an incremental re-rerender is sufficient.\n RedrawType[RedrawType[\"TRIVIAL\"] = 1] = \"TRIVIAL\";\n // Group needs clearing, a semi-incremental re-render is sufficient.\n RedrawType[RedrawType[\"MINOR\"] = 2] = \"MINOR\";\n // Canvas needs to be cleared for these redraw types.\n RedrawType[RedrawType[\"MAJOR\"] = 3] = \"MAJOR\";\n return RedrawType;\n}(RedrawType || {});\n/** @returns true if eval() is disabled in the current execution context. */\nfunction evalAvailable() {\n try {\n eval('');\n return true;\n } catch (e) {\n return false;\n }\n}\nvar EVAL_USEABLE = evalAvailable();\nfunction SceneChangeDetection(opts) {\n var _a = opts || {},\n _b = _a.redraw,\n redraw = _b === void 0 ? RedrawType.TRIVIAL : _b,\n _c = _a.type,\n type = _c === void 0 ? 'normal' : _c,\n changeCb = _a.changeCb,\n convertor = _a.convertor,\n _d = _a.checkDirtyOnAssignment,\n checkDirtyOnAssignment = _d === void 0 ? false : _d;\n var debug = windowValue('agChartsSceneChangeDetectionDebug') != null;\n return function (target, key) {\n // `target` is either a constructor (static member) or prototype (instance member)\n var privateKey = \"__\" + key;\n if (target[key]) {\n return;\n }\n if (EVAL_USEABLE) {\n // Optimised code-path.\n // Remove all conditional logic from runtime - generate a setter with the exact necessary\n // steps, as these setters are called a LOT during update cycles.\n var setterJs = \"\\n \" + (debug ? 'var setCount = 0;' : '') + \"\\n function set_\" + key + \"(value) {\\n const oldValue = this.\" + privateKey + \";\\n \" + (convertor ? 'value = convertor(value);' : '') + \"\\n if (value !== oldValue) {\\n this.\" + privateKey + \" = value;\\n \" + (debug ? \"console.log({ t: this, property: '\" + key + \"', oldValue, value, stack: new Error().stack });\" : '') + \"\\n \" + (type === 'normal' ? \"this.markDirty(this, \" + redraw + \");\" : '') + \"\\n \" + (type === 'transform' ? \"this.markDirtyTransform(\" + redraw + \");\" : '') + \"\\n \" + (type === 'path' ? \"if (!this._dirtyPath) { this._dirtyPath = true; this.markDirty(this, \" + redraw + \"); }\" : '') + \"\\n \" + (type === 'font' ? \"if (!this._dirtyFont) { this._dirtyFont = true; this.markDirty(this, \" + redraw + \"); }\" : '') + \"\\n \" + (changeCb ? 'changeCb(this);' : '') + \"\\n }\\n \" + (checkDirtyOnAssignment ? \"if (value != null && value._dirty > \" + RedrawType.NONE + \") { this.markDirty(value, value._dirty); }\" : '') + \"\\n };\\n set_\" + key + \";\\n \";\n var getterJs = \"\\n function get_\" + key + \"() {\\n return this.\" + privateKey + \";\\n };\\n get_\" + key + \";\\n \";\n Object.defineProperty(target, key, {\n set: eval(setterJs),\n get: eval(getterJs),\n enumerable: true,\n configurable: true\n });\n } else {\n // Unoptimised but 'safe' code-path, for environments with CSP headers and no 'unsafe-eval'.\n // We deliberately do not support debug branches found in the optimised path above, since\n // for large data-set series performance deteriorates with every extra branch here.\n var setter = function (value) {\n var oldValue = this[privateKey];\n value = convertor ? convertor(value) : value;\n if (value !== oldValue) {\n this[privateKey] = value;\n if (type === 'normal') this.markDirty(this, redraw);\n if (type === 'transform') this.markDirtyTransform(redraw);\n if (type === 'path' && !this._dirtyPath) {\n this._dirtyPath = true;\n this.markDirty(this, redraw);\n }\n if (type === 'font' && !this._dirtyFont) {\n this._dirtyFont = true;\n this.markDirty(this, redraw);\n }\n if (changeCb) changeCb(this);\n }\n if (checkDirtyOnAssignment && value != null && value._dirty > RedrawType.NONE) this.markDirty(value, value._dirty);\n };\n var getter = function () {\n return this[privateKey];\n };\n Object.defineProperty(target, key, {\n set: setter,\n get: getter,\n enumerable: true,\n configurable: true\n });\n }\n };\n}\nvar ChangeDetectable = /** @class */function () {\n function ChangeDetectable() {\n this._dirty = RedrawType.MAJOR;\n }\n ChangeDetectable.prototype.markDirty = function (_source, type) {\n if (type === void 0) {\n type = RedrawType.TRIVIAL;\n }\n if (this._dirty > type) {\n return;\n }\n this._dirty = type;\n };\n ChangeDetectable.prototype.markClean = function (_opts) {\n this._dirty = RedrawType.NONE;\n };\n ChangeDetectable.prototype.isDirty = function () {\n return this._dirty > RedrawType.NONE;\n };\n return ChangeDetectable;\n}();\nvar __extends$2P = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1J = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __values$w = undefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar PointerEvents$1 = /*#__PURE__*/function (PointerEvents) {\n PointerEvents[PointerEvents[\"All\"] = 0] = \"All\";\n PointerEvents[PointerEvents[\"None\"] = 1] = \"None\";\n return PointerEvents;\n}(PointerEvents$1 || {});\nvar zIndexChangedCallback = function (o) {\n if (o.parent) {\n o.parent.dirtyZIndex = true;\n }\n o.zIndexChanged();\n};\n/**\n * Abstract scene graph node.\n * Each node can have zero or one parent and belong to zero or one scene.\n */\nvar Node$1 = /** @class */function (_super) {\n __extends$2P(Node, _super);\n function Node() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** Unique number to allow creation order to be easily determined. */\n _this.serialNumber = Node._nextSerialNumber++;\n /**\n * Unique node ID in the form `ClassName-NaturalNumber`.\n */\n _this.id = createId$1(_this);\n /**\n * Some number to identify this node, typically within a `Group` node.\n * Usually this will be some enum value used as a selector.\n */\n _this.tag = NaN;\n /**\n * To simplify the type system (especially in Selections) we don't have the `Parent` node\n * (one that has children). Instead, we mimic HTML DOM, where any node can have children.\n * But we still need to distinguish regular leaf nodes from container leafs somehow.\n */\n _this.isContainerNode = false;\n _this._children = [];\n // Used to check for duplicate nodes.\n _this.childSet = {}; // new Set()\n // These matrices may need to have package level visibility\n // for performance optimization purposes.\n _this.matrix = new Matrix$1();\n _this.inverseMatrix = new Matrix$1();\n _this._dirtyTransform = false;\n _this.scalingX = 1;\n _this.scalingY = 1;\n /**\n * The center of scaling.\n * The default value of `null` means the scaling center will be\n * determined automatically, as the center of the bounding box\n * of a node.\n */\n _this.scalingCenterX = null;\n _this.scalingCenterY = null;\n _this.rotationCenterX = null;\n _this.rotationCenterY = null;\n /**\n * Rotation angle in radians.\n * The value is set as is. No normalization to the [-180, 180) or [0, 360)\n * interval is performed.\n */\n _this.rotation = 0;\n _this.translationX = 0;\n _this.translationY = 0;\n _this.visible = true;\n _this.dirtyZIndex = false;\n _this.zIndex = 0;\n /** Discriminators for render order within a zIndex. */\n _this.zIndexSubOrder = undefined;\n _this.pointerEvents = PointerEvents$1.All;\n return _this;\n }\n /**\n * This is meaningfully faster than `instanceof` and should be the preferred way\n * of checking inside loops.\n * @param node\n */\n Node.isNode = function (node) {\n return node ? node.matrix !== undefined : false;\n };\n Node.prototype._setScene = function (value) {\n var e_1, _a;\n var _b;\n this._scene = value;\n this._debug = (_b = value) === null || _b === void 0 ? void 0 : _b.debug;\n try {\n for (var _c = __values$w(this.children), _d = _c.next(); !_d.done; _d = _c.next()) {\n var child = _d.value;\n child._setScene(value);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n };\n Object.defineProperty(Node.prototype, \"scene\", {\n get: function () {\n return this._scene;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"parent\", {\n get: function () {\n return this._parent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"children\", {\n get: function () {\n return this._children;\n },\n enumerable: true,\n configurable: true\n });\n Node.prototype.countChildren = function (depth) {\n if (depth === void 0) {\n depth = Node.MAX_SAFE_INTEGER;\n }\n if (depth <= 0) {\n return 0;\n }\n var children = this.children;\n var n = children.length;\n var size = n;\n for (var i = 0; i < n; i++) {\n size += children[i].countChildren(depth - 1);\n }\n return size;\n };\n /**\n * Appends one or more new node instances to this parent.\n * If one needs to:\n * - move a child to the end of the list of children\n * - move a child from one parent to another (including parents in other scenes)\n * one should use the {@link insertBefore} method instead.\n * @param nodes A node or nodes to append.\n */\n Node.prototype.append = function (nodes) {\n var e_2, _a;\n // Passing a single parameter to an open-ended version of `append`\n // would be 30-35% slower than this.\n if (Node.isNode(nodes)) {\n nodes = [nodes];\n }\n try {\n for (var nodes_1 = __values$w(nodes), nodes_1_1 = nodes_1.next(); !nodes_1_1.done; nodes_1_1 = nodes_1.next()) {\n var node = nodes_1_1.value;\n if (node.parent) {\n throw new Error(node + \" already belongs to another parent: \" + node.parent + \".\");\n }\n if (node.scene) {\n throw new Error(node + \" already belongs to a scene: \" + node.scene + \".\");\n }\n if (this.childSet[node.id]) {\n // Cast to `any` to avoid `Property 'name' does not exist on type 'Function'`.\n throw new Error(\"Duplicate \" + node.constructor.name + \" node: \" + node);\n }\n this._children.push(node);\n this.childSet[node.id] = true;\n node._parent = this;\n node._setScene(this.scene);\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (nodes_1_1 && !nodes_1_1.done && (_a = nodes_1.return)) _a.call(nodes_1);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n this.dirtyZIndex = true;\n this.markDirty(this, RedrawType.MAJOR);\n };\n Node.prototype.appendChild = function (node) {\n this.append(node);\n return node;\n };\n Node.prototype.removeChild = function (node) {\n if (node.parent === this) {\n var i = this.children.indexOf(node);\n if (i >= 0) {\n this._children.splice(i, 1);\n delete this.childSet[node.id];\n node._parent = undefined;\n node._setScene();\n this.dirtyZIndex = true;\n this.markDirty(node, RedrawType.MAJOR);\n return node;\n }\n }\n throw new Error(\"The node to be removed is not a child of this node.\");\n };\n /**\n * Inserts the node `node` before the existing child node `nextNode`.\n * If `nextNode` is null, insert `node` at the end of the list of children.\n * If the `node` belongs to another parent, it is first removed.\n * Returns the `node`.\n * @param node\n * @param nextNode\n */\n Node.prototype.insertBefore = function (node, nextNode) {\n var parent = node.parent;\n if (node.parent) {\n node.parent.removeChild(node);\n }\n if (nextNode && nextNode.parent === this) {\n var i = this.children.indexOf(nextNode);\n if (i >= 0) {\n this._children.splice(i, 0, node);\n this.childSet[node.id] = true;\n node._parent = this;\n node._setScene(this.scene);\n } else {\n throw new Error(nextNode + \" has \" + parent + \" as the parent, \" + \"but is not in its list of children.\");\n }\n this.dirtyZIndex = true;\n this.markDirty(node, RedrawType.MAJOR);\n } else {\n this.append(node);\n }\n return node;\n };\n Object.defineProperty(Node.prototype, \"nextSibling\", {\n get: function () {\n var parent = this.parent;\n if (parent) {\n var children = parent.children;\n var index = children.indexOf(this);\n if (index >= 0 && index <= children.length - 1) {\n return children[index + 1];\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Node.prototype.transformPoint = function (x, y) {\n var matrix = Matrix$1.flyweight(this.matrix);\n var parent = this.parent;\n while (parent) {\n matrix.preMultiplySelf(parent.matrix);\n parent = parent.parent;\n }\n return matrix.invertSelf().transformPoint(x, y);\n };\n Node.prototype.inverseTransformPoint = function (x, y) {\n var matrix = Matrix$1.flyweight(this.matrix);\n var parent = this.parent;\n while (parent) {\n matrix.preMultiplySelf(parent.matrix);\n parent = parent.parent;\n }\n return matrix.transformPoint(x, y);\n };\n Node.prototype.markDirtyTransform = function () {\n this._dirtyTransform = true;\n this.markDirty(this, RedrawType.MAJOR);\n };\n Object.defineProperty(Node.prototype, \"rotationDeg\", {\n get: function () {\n return this.rotation / Math.PI * 180;\n },\n /**\n * For performance reasons the rotation angle's internal representation\n * is in radians. Therefore, don't expect to get the same number you set.\n * Even with integer angles about a quarter of them from 0 to 359 cannot\n * be converted to radians and back without precision loss.\n * For example:\n *\n * node.rotationDeg = 11;\n * console.log(node.rotationDeg); // 10.999999999999998\n *\n * @param value Rotation angle in degrees.\n */\n set: function (value) {\n this.rotation = value / 180 * Math.PI;\n },\n enumerable: true,\n configurable: true\n });\n Node.prototype.containsPoint = function (_x, _y) {\n return false;\n };\n /**\n * Hit testing method.\n * Recursively checks if the given point is inside this node or any of its children.\n * Returns the first matching node or `undefined`.\n * Nodes that render later (show on top) are hit tested first.\n */\n Node.prototype.pickNode = function (x, y) {\n var _a;\n if (!this.visible || this.pointerEvents === PointerEvents$1.None || !this.containsPoint(x, y)) {\n return;\n }\n var children = this.children;\n if (children.length > 1000) {\n // Try to optimise which children to interrogate; BBox calculation is an approximation\n // for more complex shapes, so discarding items based on this will save a lot of\n // processing when the point is nowhere near the child.\n for (var i = children.length - 1; i >= 0; i--) {\n var hit = ((_a = children[i].computeBBox()) === null || _a === void 0 ? void 0 : _a.containsPoint(x, y)) ? children[i].pickNode(x, y) : undefined;\n if (hit) {\n return hit;\n }\n }\n } else if (children.length) {\n // Nodes added later should be hit-tested first,\n // as they are rendered on top of the previously added nodes.\n for (var i = children.length - 1; i >= 0; i--) {\n var hit = children[i].pickNode(x, y);\n if (hit) {\n return hit;\n }\n }\n } else if (!this.isContainerNode) {\n // a leaf node, but not a container leaf\n return this;\n }\n };\n Node.prototype.computeBBox = function () {\n return;\n };\n Node.prototype.computeTransformedBBox = function () {\n var bbox = this.computeBBox();\n if (!bbox) {\n return undefined;\n }\n this.computeTransformMatrix();\n var matrix = Matrix$1.flyweight(this.matrix);\n var parent = this.parent;\n while (parent) {\n parent.computeTransformMatrix();\n matrix.preMultiplySelf(parent.matrix);\n parent = parent.parent;\n }\n matrix.transformBBox(bbox, 0, bbox);\n return bbox;\n };\n Node.prototype.computeBBoxCenter = function () {\n var bbox = this.computeBBox && this.computeBBox();\n if (bbox) {\n return [bbox.x + bbox.width * 0.5, bbox.y + bbox.height * 0.5];\n }\n return [0, 0];\n };\n Node.prototype.computeTransformMatrix = function () {\n if (!this._dirtyTransform) {\n return;\n }\n var _a = this,\n matrix = _a.matrix,\n scalingX = _a.scalingX,\n scalingY = _a.scalingY,\n rotation = _a.rotation,\n translationX = _a.translationX,\n translationY = _a.translationY,\n scalingCenterX = _a.scalingCenterX,\n scalingCenterY = _a.scalingCenterY,\n rotationCenterX = _a.rotationCenterX,\n rotationCenterY = _a.rotationCenterY;\n Matrix$1.updateTransformMatrix(matrix, scalingX, scalingY, rotation, translationX, translationY, {\n scalingCenterX: scalingCenterX,\n scalingCenterY: scalingCenterY,\n rotationCenterX: rotationCenterX,\n rotationCenterY: rotationCenterY\n });\n matrix.inverseTo(this.inverseMatrix);\n this._dirtyTransform = false;\n };\n Node.prototype.render = function (renderCtx) {\n var stats = renderCtx.stats;\n this._dirty = RedrawType.NONE;\n if (stats) stats.nodesRendered++;\n };\n Node.prototype.clearBBox = function (ctx) {\n var bbox = this.computeBBox();\n if (bbox == null) {\n return;\n }\n var x = bbox.x,\n y = bbox.y,\n width = bbox.width,\n height = bbox.height;\n var topLeft = this.transformPoint(x, y);\n var bottomRight = this.transformPoint(x + width, y + height);\n ctx.clearRect(topLeft.x, topLeft.y, bottomRight.x - topLeft.x, bottomRight.y - topLeft.y);\n };\n Node.prototype.markDirty = function (_source, type, parentType) {\n if (type === void 0) {\n type = RedrawType.TRIVIAL;\n }\n if (parentType === void 0) {\n parentType = type;\n }\n if (this._dirty > type) {\n return;\n }\n if (this._dirty === type && type === parentType) {\n return;\n }\n this._dirty = type;\n if (this.parent) {\n this.parent.markDirty(this, parentType);\n } else if (this.scene) {\n this.scene.markDirty();\n }\n };\n Object.defineProperty(Node.prototype, \"dirty\", {\n get: function () {\n return this._dirty;\n },\n enumerable: true,\n configurable: true\n });\n Node.prototype.markClean = function (opts) {\n var e_3, _a;\n var _b = opts || {},\n _c = _b.force,\n force = _c === void 0 ? false : _c,\n _d = _b.recursive,\n recursive = _d === void 0 ? true : _d;\n if (this._dirty === RedrawType.NONE && !force) {\n return;\n }\n this._dirty = RedrawType.NONE;\n if (recursive) {\n try {\n for (var _e = __values$w(this.children), _f = _e.next(); !_f.done; _f = _e.next()) {\n var child = _f.value;\n child.markClean();\n }\n } catch (e_3_1) {\n e_3 = {\n error: e_3_1\n };\n } finally {\n try {\n if (_f && !_f.done && (_a = _e.return)) _a.call(_e);\n } finally {\n if (e_3) throw e_3.error;\n }\n }\n }\n };\n Node.prototype.visibilityChanged = function () {\n // Override point for sub-classes to react to visibility changes.\n };\n Object.defineProperty(Node.prototype, \"nodeCount\", {\n get: function () {\n var e_4, _a;\n var count = 1;\n var dirtyCount = this._dirty >= RedrawType.NONE || this._dirtyTransform ? 1 : 0;\n var visibleCount = this.visible ? 1 : 0;\n try {\n for (var _b = __values$w(this._children), _c = _b.next(); !_c.done; _c = _b.next()) {\n var child = _c.value;\n var _d = child.nodeCount,\n childCount = _d.count,\n childVisibleCount = _d.visibleCount,\n childDirtyCount = _d.dirtyCount;\n count += childCount;\n visibleCount += childVisibleCount;\n dirtyCount += childDirtyCount;\n }\n } catch (e_4_1) {\n e_4 = {\n error: e_4_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_4) throw e_4.error;\n }\n }\n return {\n count: count,\n visibleCount: visibleCount,\n dirtyCount: dirtyCount\n };\n },\n enumerable: true,\n configurable: true\n });\n Node.prototype.zIndexChanged = function () {\n // Override point for sub-classes.\n };\n Node._nextSerialNumber = 0;\n Node.MAX_SAFE_INTEGER = Math.pow(2, 53) - 1; // Number.MAX_SAFE_INTEGER\n __decorate$1J([SceneChangeDetection({\n type: 'transform'\n })], Node.prototype, \"scalingX\", void 0);\n __decorate$1J([SceneChangeDetection({\n type: 'transform'\n })], Node.prototype, \"scalingY\", void 0);\n __decorate$1J([SceneChangeDetection({\n type: 'transform'\n })], Node.prototype, \"scalingCenterX\", void 0);\n __decorate$1J([SceneChangeDetection({\n type: 'transform'\n })], Node.prototype, \"scalingCenterY\", void 0);\n __decorate$1J([SceneChangeDetection({\n type: 'transform'\n })], Node.prototype, \"rotationCenterX\", void 0);\n __decorate$1J([SceneChangeDetection({\n type: 'transform'\n })], Node.prototype, \"rotationCenterY\", void 0);\n __decorate$1J([SceneChangeDetection({\n type: 'transform'\n })], Node.prototype, \"rotation\", void 0);\n __decorate$1J([SceneChangeDetection({\n type: 'transform'\n })], Node.prototype, \"translationX\", void 0);\n __decorate$1J([SceneChangeDetection({\n type: 'transform'\n })], Node.prototype, \"translationY\", void 0);\n __decorate$1J([SceneChangeDetection({\n redraw: RedrawType.MAJOR,\n changeCb: function (o) {\n return o.visibilityChanged();\n }\n })], Node.prototype, \"visible\", void 0);\n __decorate$1J([SceneChangeDetection({\n redraw: RedrawType.TRIVIAL,\n changeCb: zIndexChangedCallback\n })], Node.prototype, \"zIndex\", void 0);\n __decorate$1J([SceneChangeDetection({\n redraw: RedrawType.TRIVIAL,\n changeCb: zIndexChangedCallback\n })], Node.prototype, \"zIndexSubOrder\", void 0);\n return Node;\n}(ChangeDetectable);\n\n/**\n * Creates a new object with a `parent` as its prototype\n * and copies properties from the `child` into it.\n * @param parent\n * @param child\n */\nfunction chainObjects$1(parent, child) {\n var obj = Object.create(parent);\n for (var prop in child) {\n if (child.hasOwnProperty(prop)) {\n obj[prop] = child[prop];\n }\n }\n return obj;\n}\nfunction getValue(object, path, defaultValue) {\n var parts = Array.isArray(path) ? path : path.split('.');\n var value = object;\n try {\n parts.forEach(function (part) {\n value = value[part];\n });\n } catch (e) {\n if (arguments.length === 3) {\n value = defaultValue;\n } else {\n throw e;\n }\n }\n return value;\n}\nfunction emptyTarget$1(value) {\n return Array.isArray(value) ? [] : {};\n}\nfunction cloneUnlessOtherwiseSpecified$1(value, options) {\n return options.clone !== false && options.isMergeableObject(value) ? deepMerge$1(emptyTarget$1(value), value, options) : value;\n}\nfunction defaultArrayMerge$1(target, source, options) {\n return target.concat(source).map(function (element) {\n return cloneUnlessOtherwiseSpecified$1(element, options);\n });\n}\nfunction getMergeFunction$1(key, options) {\n if (!options.customMerge) {\n return deepMerge$1;\n }\n var customMerge = options.customMerge(key);\n return typeof customMerge === 'function' ? customMerge : deepMerge$1;\n}\nfunction getEnumerableOwnPropertySymbols$1(target) {\n return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(target).filter(function (symbol) {\n return target.propertyIsEnumerable(symbol);\n }) : [];\n}\nfunction getKeys$1(target) {\n return Object.keys(target).concat(getEnumerableOwnPropertySymbols$1(target));\n}\nfunction propertyIsOnObject$1(object, property) {\n try {\n return property in object;\n } catch (_) {\n return false;\n }\n}\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe$1(target, key) {\n return propertyIsOnObject$1(target, key) &&\n // Properties are safe to merge if they don't exist in the target yet,\n !(Object.hasOwnProperty.call(target, key) &&\n // unsafe if they exist up the prototype chain,\n Object.propertyIsEnumerable.call(target, key)); // and also unsafe if they're nonenumerable.\n}\nfunction mergeObject$1(target, source, options) {\n var destination = {};\n if (options.isMergeableObject(target)) {\n getKeys$1(target).forEach(function (key) {\n destination[key] = cloneUnlessOtherwiseSpecified$1(target[key], options);\n });\n }\n getKeys$1(source).forEach(function (key) {\n if (propertyIsUnsafe$1(target, key)) {\n return;\n }\n if (propertyIsOnObject$1(target, key) && options.isMergeableObject(source[key])) {\n destination[key] = getMergeFunction$1(key, options)(target[key], source[key], options);\n } else {\n destination[key] = cloneUnlessOtherwiseSpecified$1(source[key], options);\n }\n });\n return destination;\n}\nfunction defaultIsMergeableObject$1(value) {\n return isNonNullObject$1(value) && !isSpecial$1(value);\n}\nfunction isNonNullObject$1(value) {\n return !!value && typeof value === 'object';\n}\nfunction isSpecial$1(value) {\n var stringValue = Object.prototype.toString.call(value);\n return stringValue === '[object RegExp]' || stringValue === '[object Date]';\n}\nfunction deepMerge$1(target, source, options) {\n options = options || {};\n options.arrayMerge = options.arrayMerge || defaultArrayMerge$1;\n options.isMergeableObject = options.isMergeableObject || defaultIsMergeableObject$1;\n // cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n // implementations can use it. The caller may not replace it.\n options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified$1;\n var sourceIsArray = Array.isArray(source);\n var targetIsArray = Array.isArray(target);\n var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n if (!sourceAndTargetTypesMatch) {\n return cloneUnlessOtherwiseSpecified$1(source, options);\n } else if (sourceIsArray) {\n return options.arrayMerge(target, source, options);\n } else {\n return mergeObject$1(target, source, options);\n }\n}\n// Be careful, typeof null === 'object'!\nfunction isObject(value) {\n return value && typeof value === 'object';\n}\nvar __extends$2O = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1I = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar Shape$1 = /** @class */function (_super) {\n __extends$2O(Shape, _super);\n function Shape() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.lastInstanceId = 0;\n _this.fillOpacity = 1;\n _this.strokeOpacity = 1;\n _this.fill = Shape.defaultStyles.fill;\n /**\n * Note that `strokeStyle = null` means invisible stroke,\n * while `lineWidth = 0` means no stroke, and sometimes this can mean different things.\n * For example, a rect shape with an invisible stroke may not align to the pixel grid\n * properly because the stroke affects the rules of alignment, and arc shapes forming\n * a pie chart will have a gap between them if they have an invisible stroke, whereas\n * there would be not gap if there was no stroke at all.\n * The preferred way of making the stroke invisible is setting the `lineWidth` to zero,\n * unless specific looks that is achieved by having an invisible stroke is desired.\n */\n _this.stroke = Shape.defaultStyles.stroke;\n _this.strokeWidth = Shape.defaultStyles.strokeWidth;\n _this.lineDash = Shape.defaultStyles.lineDash;\n _this.lineDashOffset = Shape.defaultStyles.lineDashOffset;\n _this.lineCap = Shape.defaultStyles.lineCap;\n _this.lineJoin = Shape.defaultStyles.lineJoin;\n _this.opacity = Shape.defaultStyles.opacity;\n _this.fillShadow = Shape.defaultStyles.fillShadow;\n return _this;\n }\n /**\n * Creates a light-weight instance of the given shape (that serves as a template).\n * The created instance only stores the properites set on the instance itself\n * and the rest of the properties come via the prototype chain from the template.\n * This can greatly reduce memory usage in cases where one has many simular shapes,\n * for example, circles of different size, position and color. The exact memory usage\n * reduction will depend on the size of the template and the number of own properties\n * set on its lightweight instances, but will typically be around an order of magnitude\n * or more.\n *\n * Note: template shapes are not supposed to be part of the scene graph (they should not\n * have a parent).\n *\n * @param template\n */\n Shape.createInstance = function (template) {\n var shape = Object.create(template);\n shape._setParent(undefined);\n shape.id = template.id + '-Instance-' + String(++template.lastInstanceId);\n return shape;\n };\n /**\n * Restores the default styles introduced by this subclass.\n */\n Shape.prototype.restoreOwnStyles = function () {\n var styles = this.constructor.defaultStyles;\n var keys = Object.getOwnPropertyNames(styles);\n // getOwnPropertyNames is about 2.5 times faster than\n // for..in with the hasOwnProperty check and in this\n // case, where most properties are inherited, can be\n // more then an order of magnitude faster.\n for (var i = 0, n = keys.length; i < n; i++) {\n var key = keys[i];\n this[key] = styles[key];\n }\n };\n Shape.prototype.restoreAllStyles = function () {\n var styles = this.constructor.defaultStyles;\n for (var property in styles) {\n this[property] = styles[property];\n }\n };\n /**\n * Restores the base class default styles that have been overridden by this subclass.\n */\n Shape.prototype.restoreOverriddenStyles = function () {\n var styles = this.constructor.defaultStyles;\n var protoStyles = Object.getPrototypeOf(styles);\n for (var property in styles) {\n if (styles.hasOwnProperty(property) && protoStyles.hasOwnProperty(property)) {\n this[property] = styles[property];\n }\n }\n };\n /**\n * Returns a device-pixel aligned coordinate (or length if length is supplied).\n *\n * NOTE: Not suitable for strokes, since the stroke needs to be offset to the middle\n * of a device pixel.\n */\n Shape.prototype.align = function (start, length) {\n var _a, _b, _c;\n var pixelRatio = (_c = (_b = (_a = this.scene) === null || _a === void 0 ? void 0 : _a.canvas) === null || _b === void 0 ? void 0 : _b.pixelRatio, _c !== null && _c !== void 0 ? _c : 1);\n var alignedStart = Math.round(start * pixelRatio) / pixelRatio;\n if (length == undefined) {\n return alignedStart;\n }\n if (length === 0) {\n return 0;\n }\n if (length < 1) {\n // Avoid hiding crisp shapes\n return Math.ceil(length * pixelRatio) / pixelRatio;\n }\n // Account for the rounding of alignedStart by increasing length to compensate before\n // alignment.\n return Math.round((length + start) * pixelRatio) / pixelRatio - alignedStart;\n };\n Shape.prototype.fillStroke = function (ctx) {\n if (!this.scene) {\n return;\n }\n var pixelRatio = this.scene.canvas.pixelRatio || 1;\n var globalAlpha = ctx.globalAlpha;\n if (this.fill) {\n ctx.fillStyle = this.fill;\n ctx.globalAlpha = globalAlpha * this.opacity * this.fillOpacity;\n // The canvas context scaling (depends on the device's pixel ratio)\n // has no effect on shadows, so we have to account for the pixel ratio\n // manually here.\n var fillShadow = this.fillShadow;\n if (fillShadow && fillShadow.enabled) {\n ctx.shadowColor = fillShadow.color;\n ctx.shadowOffsetX = fillShadow.xOffset * pixelRatio;\n ctx.shadowOffsetY = fillShadow.yOffset * pixelRatio;\n ctx.shadowBlur = fillShadow.blur * pixelRatio;\n }\n ctx.fill();\n }\n ctx.shadowColor = 'rgba(0, 0, 0, 0)';\n if (this.stroke && this.strokeWidth) {\n ctx.strokeStyle = this.stroke;\n ctx.globalAlpha = globalAlpha * this.opacity * this.strokeOpacity;\n ctx.lineWidth = this.strokeWidth;\n if (this.lineDash) {\n ctx.setLineDash(this.lineDash);\n }\n if (this.lineDashOffset) {\n ctx.lineDashOffset = this.lineDashOffset;\n }\n if (this.lineCap) {\n ctx.lineCap = this.lineCap;\n }\n if (this.lineJoin) {\n ctx.lineJoin = this.lineJoin;\n }\n ctx.stroke();\n }\n };\n Shape.prototype.containsPoint = function (x, y) {\n return this.isPointInPath(x, y);\n };\n /**\n * Defaults for style properties. Note that properties that affect the position\n * and shape of the node are not considered style properties, for example:\n * `x`, `y`, `width`, `height`, `radius`, `rotation`, etc.\n * Can be used to reset to the original styling after some custom styling\n * has been applied (using the `restoreOwnStyles` and `restoreAllStyles` methods).\n * These static defaults are meant to be inherited by subclasses.\n */\n Shape.defaultStyles = chainObjects$1({}, {\n fill: 'black',\n stroke: undefined,\n strokeWidth: 0,\n lineDash: undefined,\n lineDashOffset: 0,\n lineCap: undefined,\n lineJoin: undefined,\n opacity: 1,\n fillShadow: undefined\n });\n __decorate$1I([SceneChangeDetection({\n redraw: RedrawType.MINOR\n })], Shape.prototype, \"fillOpacity\", void 0);\n __decorate$1I([SceneChangeDetection({\n redraw: RedrawType.MINOR\n })], Shape.prototype, \"strokeOpacity\", void 0);\n __decorate$1I([SceneChangeDetection({\n redraw: RedrawType.MINOR\n })], Shape.prototype, \"fill\", void 0);\n __decorate$1I([SceneChangeDetection({\n redraw: RedrawType.MINOR\n })], Shape.prototype, \"stroke\", void 0);\n __decorate$1I([SceneChangeDetection({\n redraw: RedrawType.MINOR\n })], Shape.prototype, \"strokeWidth\", void 0);\n __decorate$1I([SceneChangeDetection({\n redraw: RedrawType.MINOR\n })], Shape.prototype, \"lineDash\", void 0);\n __decorate$1I([SceneChangeDetection({\n redraw: RedrawType.MINOR\n })], Shape.prototype, \"lineDashOffset\", void 0);\n __decorate$1I([SceneChangeDetection({\n redraw: RedrawType.MINOR\n })], Shape.prototype, \"lineCap\", void 0);\n __decorate$1I([SceneChangeDetection({\n redraw: RedrawType.MINOR\n })], Shape.prototype, \"lineJoin\", void 0);\n __decorate$1I([SceneChangeDetection({\n redraw: RedrawType.MINOR,\n convertor: function (v) {\n return Math.min(1, Math.max(0, v));\n }\n })], Shape.prototype, \"opacity\", void 0);\n __decorate$1I([SceneChangeDetection({\n redraw: RedrawType.MINOR,\n checkDirtyOnAssignment: true\n })], Shape.prototype, \"fillShadow\", void 0);\n return Shape;\n}(Node$1);\n\n/**\n * Wraps the native Canvas element and overrides its CanvasRenderingContext2D to\n * provide resolution independent rendering based on `window.devicePixelRatio`.\n */\nvar HdpiCanvas$1 = /** @class */function () {\n // The width/height attributes of the Canvas element default to\n // 300/150 according to w3.org.\n function HdpiCanvas(_a) {\n var _b = _a.document,\n document = _b === void 0 ? window.document : _b,\n _c = _a.width,\n width = _c === void 0 ? 600 : _c,\n _d = _a.height,\n height = _d === void 0 ? 300 : _d,\n _e = _a.domLayer,\n domLayer = _e === void 0 ? false : _e,\n _f = _a.zIndex,\n zIndex = _f === void 0 ? 0 : _f,\n _g = _a.name,\n name = _g === void 0 ? undefined : _g,\n _h = _a.overrideDevicePixelRatio,\n overrideDevicePixelRatio = _h === void 0 ? undefined : _h;\n this._container = undefined;\n this._enabled = true;\n this._opacity = 1;\n // `NaN` is deliberate here, so that overrides are always applied\n // and the `resetTransform` inside the `resize` method works in IE11.\n this._pixelRatio = NaN;\n this._width = 0;\n this._height = 0;\n this.document = document;\n this.element = document.createElement('canvas');\n this.context = this.element.getContext('2d');\n this.imageSource = this.context.canvas;\n var style = this.element.style;\n style.userSelect = 'none';\n style.display = 'block';\n if (domLayer) {\n style.position = 'absolute';\n style.zIndex = String(zIndex);\n style.top = '0';\n style.left = '0';\n style.pointerEvents = 'none';\n style.opacity = \"1\";\n if (name) {\n this.element.id = name;\n }\n }\n this.setPixelRatio(overrideDevicePixelRatio);\n this.resize(width, height);\n }\n Object.defineProperty(HdpiCanvas.prototype, \"container\", {\n get: function () {\n return this._container;\n },\n set: function (value) {\n if (this._container !== value) {\n this.remove();\n if (value) {\n value.appendChild(this.element);\n }\n this._container = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HdpiCanvas.prototype, \"enabled\", {\n get: function () {\n return this._enabled;\n },\n set: function (value) {\n this.element.style.display = value ? 'block' : 'none';\n this._enabled = !!value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HdpiCanvas.prototype, \"opacity\", {\n get: function () {\n return this._opacity;\n },\n set: function (value) {\n this.element.style.opacity = \"\" + value;\n this._opacity = value;\n },\n enumerable: true,\n configurable: true\n });\n HdpiCanvas.prototype.remove = function () {\n var parentNode = this.element.parentNode;\n if (parentNode != null) {\n parentNode.removeChild(this.element);\n }\n };\n HdpiCanvas.prototype.destroy = function () {\n this.element.remove();\n this._canvas = undefined;\n Object.freeze(this);\n };\n HdpiCanvas.prototype.snapshot = function () {\n // No-op for compatibility with HdpiOffscreenCanvas.\n };\n HdpiCanvas.prototype.clear = function () {\n this.context.save();\n this.context.resetTransform();\n this.context.clearRect(0, 0, this.width, this.height);\n this.context.restore();\n };\n HdpiCanvas.prototype.toImage = function () {\n var img = this.document.createElement('img');\n img.src = this.getDataURL();\n return img;\n };\n HdpiCanvas.prototype.getDataURL = function (type) {\n return this.element.toDataURL(type);\n };\n /**\n * @param fileName The name of the downloaded file.\n * @param fileFormat The file format, the default is `image/png`\n */\n HdpiCanvas.prototype.download = function (fileName, fileFormat) {\n if (fileFormat === void 0) {\n fileFormat = 'image/png';\n }\n fileName = (fileName || '').trim() || 'image';\n var dataUrl = this.getDataURL(fileFormat);\n var document = this.document;\n var a = document.createElement('a');\n a.href = dataUrl;\n a.download = fileName;\n a.style.display = 'none';\n document.body.appendChild(a); // required for the `click` to work in Firefox\n a.click();\n document.body.removeChild(a);\n };\n Object.defineProperty(HdpiCanvas.prototype, \"pixelRatio\", {\n get: function () {\n return this._pixelRatio;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Changes the pixel ratio of the Canvas element to the given value,\n * or uses the window.devicePixelRatio (default), then resizes the Canvas\n * element accordingly (default).\n */\n HdpiCanvas.prototype.setPixelRatio = function (ratio) {\n var pixelRatio = ratio || window.devicePixelRatio;\n if (pixelRatio === this.pixelRatio) {\n return;\n }\n HdpiCanvas.overrideScale(this.context, pixelRatio);\n this._pixelRatio = pixelRatio;\n this.resize(this.width, this.height);\n };\n Object.defineProperty(HdpiCanvas.prototype, \"pixelated\", {\n get: function () {\n return this.element.style.imageRendering === 'pixelated';\n },\n set: function (value) {\n this.element.style.imageRendering = value ? 'pixelated' : 'auto';\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HdpiCanvas.prototype, \"width\", {\n get: function () {\n return this._width;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HdpiCanvas.prototype, \"height\", {\n get: function () {\n return this._height;\n },\n enumerable: true,\n configurable: true\n });\n HdpiCanvas.prototype.resize = function (width, height) {\n if (!(width > 0 && height > 0)) {\n return;\n }\n var _a = this,\n element = _a.element,\n context = _a.context,\n pixelRatio = _a.pixelRatio;\n element.width = Math.round(width * pixelRatio);\n element.height = Math.round(height * pixelRatio);\n element.style.width = width + 'px';\n element.style.height = height + 'px';\n context.resetTransform();\n this._width = width;\n this._height = height;\n };\n Object.defineProperty(HdpiCanvas, \"textMeasuringContext\", {\n get: function () {\n if (this._textMeasuringContext) {\n return this._textMeasuringContext;\n }\n var canvas = document.createElement('canvas');\n this._textMeasuringContext = canvas.getContext('2d');\n return this._textMeasuringContext;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HdpiCanvas, \"svgText\", {\n get: function () {\n if (this._svgText) {\n return this._svgText;\n }\n var xmlns = 'http://www.w3.org/2000/svg';\n var svg = document.createElementNS(xmlns, 'svg');\n svg.setAttribute('width', '100');\n svg.setAttribute('height', '100');\n // Add a descriptive class name in case someone sees this SVG element\n // in devtools and wonders about its purpose:\n if (svg.classList) {\n svg.classList.add('text-measuring-svg');\n } else {\n svg.setAttribute('class', 'text-measuring-svg');\n }\n svg.style.position = 'absolute';\n svg.style.top = '-1000px';\n svg.style.visibility = 'hidden';\n var svgText = document.createElementNS(xmlns, 'text');\n svgText.setAttribute('x', '0');\n svgText.setAttribute('y', '30');\n svgText.setAttribute('text', 'black');\n svg.appendChild(svgText);\n document.body.appendChild(svg);\n this._svgText = svgText;\n return svgText;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HdpiCanvas, \"has\", {\n get: function () {\n if (this._has) {\n return this._has;\n }\n var isChrome = navigator.userAgent.indexOf('Chrome') > -1;\n var isFirefox = navigator.userAgent.indexOf('Firefox') > -1;\n var isSafari = !isChrome && navigator.userAgent.indexOf('Safari') > -1;\n this._has = Object.freeze({\n textMetrics: this.textMeasuringContext.measureText('test').actualBoundingBoxDescent !== undefined &&\n // Firefox implemented advanced TextMetrics object in v74:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1102584\n // but it's buggy, so we'll keed using the SVG for text measurement in Firefox for now.\n !isFirefox && !isSafari,\n getTransform: this.textMeasuringContext.getTransform !== undefined\n });\n return this._has;\n },\n enumerable: true,\n configurable: true\n });\n HdpiCanvas.measureText = function (text, font, textBaseline, textAlign) {\n var ctx = this.textMeasuringContext;\n ctx.font = font;\n ctx.textBaseline = textBaseline;\n ctx.textAlign = textAlign;\n return ctx.measureText(text);\n };\n /**\n * Returns the width and height of the measured text.\n * @param text The single-line text to measure.\n * @param font The font shorthand string.\n */\n HdpiCanvas.getTextSize = function (text, font) {\n if (this.has.textMetrics) {\n var ctx = this.textMeasuringContext;\n ctx.font = font;\n var metrics = ctx.measureText(text);\n return {\n width: metrics.width,\n height: metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent\n };\n } else {\n return this.measureSvgText(text, font);\n }\n };\n HdpiCanvas.measureSvgText = function (text, font) {\n var cache = this.textSizeCache;\n var fontCache = cache[font];\n // Note: consider not caching the size of numeric strings.\n // For example: if (isNaN(+text)) { // skip\n if (fontCache) {\n var size_1 = fontCache[text];\n if (size_1) {\n return size_1;\n }\n } else {\n cache[font] = {};\n }\n var svgText = this.svgText;\n svgText.style.font = font;\n svgText.textContent = text;\n // `getBBox` returns an instance of `SVGRect` with the same `width` and `height`\n // measurements as `DOMRect` instance returned by the `getBoundingClientRect`.\n // But the `SVGRect` instance has half the properties of the `DOMRect`,\n // so we use the `getBBox` method.\n var bbox = svgText.getBBox();\n var size = {\n width: bbox.width,\n height: bbox.height\n };\n cache[font][text] = size;\n return size;\n };\n HdpiCanvas.overrideScale = function (ctx, scale) {\n var depth = 0;\n var overrides = {\n save: function () {\n this.$save();\n depth++;\n },\n restore: function () {\n if (depth > 0) {\n this.$restore();\n depth--;\n } else {\n throw new Error('Unable to restore() past depth 0');\n }\n },\n setTransform: function (a, b, c, d, e, f) {\n if (typeof a === 'object') {\n this.$setTransform(a);\n } else {\n this.$setTransform(a * scale, b * scale, c * scale, d * scale, e * scale, f * scale);\n }\n },\n resetTransform: function () {\n // As of Jan 8, 2019, `resetTransform` is still an \"experimental technology\",\n // and doesn't work in IE11 and Edge 44.\n this.$setTransform(scale, 0, 0, scale, 0, 0);\n }\n };\n for (var name_1 in overrides) {\n if (overrides.hasOwnProperty(name_1)) {\n // Save native methods under prefixed names,\n // if this hasn't been done by the previous overrides already.\n if (!ctx['$' + name_1]) {\n ctx['$' + name_1] = ctx[name_1];\n }\n // Replace native methods with overrides,\n // or previous overrides with the new ones.\n ctx[name_1] = overrides[name_1];\n }\n }\n };\n HdpiCanvas.textSizeCache = {};\n return HdpiCanvas;\n}();\nvar __extends$2N = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1H = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nfunction SceneFontChangeDetection(opts) {\n var _a = opts || {},\n _b = _a.redraw,\n redraw = _b === void 0 ? RedrawType.MAJOR : _b,\n changeCb = _a.changeCb;\n return SceneChangeDetection({\n redraw: redraw,\n type: 'font',\n changeCb: changeCb\n });\n}\nvar Text$1 = /** @class */function (_super) {\n __extends$2N(Text, _super);\n function Text() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.x = 0;\n _this.y = 0;\n _this.lines = [];\n _this.text = '';\n _this._dirtyFont = true;\n _this.fontSize = 10;\n _this.fontFamily = 'sans-serif';\n _this.textAlign = Text.defaultStyles.textAlign;\n _this.textBaseline = Text.defaultStyles.textBaseline;\n // Multi-line text is complicated because:\n // - Canvas does not support it natively, so we have to implement it manually\n // - need to know the height of each line -> need to parse the font shorthand ->\n // generally impossible to do because font size may not be in pixels\n // - so, need to measure the text instead, each line individually -> expensive\n // - or make the user provide the line height manually for multi-line text\n // - computeBBox should use the lineHeight for multi-line text but ignore it otherwise\n // - textBaseline kind of loses its meaning for multi-line text\n _this.lineHeight = 14;\n return _this;\n }\n Text.prototype._splitText = function () {\n this.lines = typeof this.text === 'string' ? this.text.split(/\\r?\\n/g) : [];\n };\n Object.defineProperty(Text.prototype, \"font\", {\n get: function () {\n if (this._dirtyFont) {\n this._dirtyFont = false;\n this._font = getFont$2(this.fontSize, this.fontFamily, this.fontStyle, this.fontWeight);\n }\n return this._font;\n },\n enumerable: true,\n configurable: true\n });\n Text.prototype.computeBBox = function () {\n return HdpiCanvas$1.has.textMetrics ? this.getPreciseBBox() : this.getApproximateBBox();\n };\n Text.prototype.getPreciseBBox = function () {\n var metrics = HdpiCanvas$1.measureText(this.text, this.font, this.textBaseline, this.textAlign);\n return new BBox$1(this.x - metrics.actualBoundingBoxLeft, this.y - metrics.actualBoundingBoxAscent, metrics.width, metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent);\n };\n Text.prototype.getApproximateBBox = function () {\n var size = HdpiCanvas$1.getTextSize(this.text, this.font);\n var _a = this,\n x = _a.x,\n y = _a.y;\n switch (this.textAlign) {\n case 'end':\n case 'right':\n x -= size.width;\n break;\n case 'center':\n x -= size.width / 2;\n }\n switch (this.textBaseline) {\n case 'alphabetic':\n y -= size.height * 0.7;\n break;\n case 'middle':\n y -= size.height * 0.45;\n break;\n case 'ideographic':\n y -= size.height;\n break;\n case 'hanging':\n y -= size.height * 0.2;\n break;\n case 'bottom':\n y -= size.height;\n break;\n }\n return new BBox$1(x, y, size.width, size.height);\n };\n Text.prototype.isPointInPath = function (x, y) {\n var point = this.transformPoint(x, y);\n var bbox = this.computeBBox();\n return bbox ? bbox.containsPoint(point.x, point.y) : false;\n };\n Text.prototype.render = function (renderCtx) {\n var ctx = renderCtx.ctx,\n forceRender = renderCtx.forceRender,\n stats = renderCtx.stats;\n if (this.dirty === RedrawType.NONE && !forceRender) {\n if (stats) stats.nodesSkipped += this.nodeCount.count;\n return;\n }\n if (!this.lines.length || !this.scene) {\n if (stats) stats.nodesSkipped += this.nodeCount.count;\n return;\n }\n this.computeTransformMatrix();\n this.matrix.toContext(ctx);\n var _a = this,\n fill = _a.fill,\n stroke = _a.stroke,\n strokeWidth = _a.strokeWidth;\n ctx.font = this.font;\n ctx.textAlign = this.textAlign;\n ctx.textBaseline = this.textBaseline;\n var pixelRatio = this.scene.canvas.pixelRatio || 1;\n var globalAlpha = ctx.globalAlpha;\n if (fill) {\n ctx.fillStyle = fill;\n ctx.globalAlpha = globalAlpha * this.opacity * this.fillOpacity;\n var _b = this,\n fillShadow = _b.fillShadow,\n text = _b.text,\n x = _b.x,\n y = _b.y;\n if (fillShadow && fillShadow.enabled) {\n ctx.shadowColor = fillShadow.color;\n ctx.shadowOffsetX = fillShadow.xOffset * pixelRatio;\n ctx.shadowOffsetY = fillShadow.yOffset * pixelRatio;\n ctx.shadowBlur = fillShadow.blur * pixelRatio;\n }\n ctx.fillText(text, x, y);\n }\n if (stroke && strokeWidth) {\n ctx.strokeStyle = stroke;\n ctx.lineWidth = strokeWidth;\n ctx.globalAlpha = globalAlpha * this.opacity * this.strokeOpacity;\n var _c = this,\n lineDash = _c.lineDash,\n lineDashOffset = _c.lineDashOffset,\n lineCap = _c.lineCap,\n lineJoin = _c.lineJoin,\n text = _c.text,\n x = _c.x,\n y = _c.y;\n if (lineDash) {\n ctx.setLineDash(lineDash);\n }\n if (lineDashOffset) {\n ctx.lineDashOffset = lineDashOffset;\n }\n if (lineCap) {\n ctx.lineCap = lineCap;\n }\n if (lineJoin) {\n ctx.lineJoin = lineJoin;\n }\n ctx.strokeText(text, x, y);\n }\n _super.prototype.render.call(this, renderCtx);\n };\n Text.className = 'Text';\n Text.defaultStyles = chainObjects$1(Shape$1.defaultStyles, {\n textAlign: 'start',\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 10,\n fontFamily: 'sans-serif',\n textBaseline: 'alphabetic'\n });\n __decorate$1H([SceneChangeDetection({\n redraw: RedrawType.MAJOR\n })], Text.prototype, \"x\", void 0);\n __decorate$1H([SceneChangeDetection({\n redraw: RedrawType.MAJOR\n })], Text.prototype, \"y\", void 0);\n __decorate$1H([SceneChangeDetection({\n redraw: RedrawType.MAJOR,\n changeCb: function (o) {\n return o._splitText();\n }\n })], Text.prototype, \"text\", void 0);\n __decorate$1H([SceneFontChangeDetection()], Text.prototype, \"fontStyle\", void 0);\n __decorate$1H([SceneFontChangeDetection()], Text.prototype, \"fontWeight\", void 0);\n __decorate$1H([SceneFontChangeDetection()], Text.prototype, \"fontSize\", void 0);\n __decorate$1H([SceneFontChangeDetection()], Text.prototype, \"fontFamily\", void 0);\n __decorate$1H([SceneChangeDetection({\n redraw: RedrawType.MAJOR\n })], Text.prototype, \"textAlign\", void 0);\n __decorate$1H([SceneChangeDetection({\n redraw: RedrawType.MAJOR\n })], Text.prototype, \"textBaseline\", void 0);\n __decorate$1H([SceneChangeDetection({\n redraw: RedrawType.MAJOR\n })], Text.prototype, \"lineHeight\", void 0);\n return Text;\n}(Shape$1);\nfunction getFont$2(fontSize, fontFamily, fontStyle, fontWeight) {\n return [fontStyle || '', fontWeight || '', fontSize + 'px', fontFamily].join(' ').trim();\n}\nvar Observable$1 = /** @class */function () {\n function Observable() {\n // Note that these maps can't be specified generically, so they are kept untyped.\n // Some methods in this class only need generics in their signatures, the generics inside the methods\n // are just for clarity. The generics in signatures allow for static type checking of user provided\n // listeners and for type inference, so that the users wouldn't have to specify the type of parameters\n // of their inline lambdas.\n this.allPropertyListeners = new Map(); // property name => property change listener => scopes\n this.allEventListeners = new Map(); // event type => event listener => scopes\n }\n Observable.prototype.addPropertyListener = function (name, listener, scope) {\n if (scope === void 0) {\n scope = this;\n }\n var allPropertyListeners = this.allPropertyListeners;\n var propertyListeners = allPropertyListeners.get(name);\n if (!propertyListeners) {\n propertyListeners = new Map();\n allPropertyListeners.set(name, propertyListeners);\n }\n if (!propertyListeners.has(listener)) {\n var scopes_1 = new Set();\n propertyListeners.set(listener, scopes_1);\n }\n var scopes = propertyListeners.get(listener);\n if (scopes) {\n scopes.add(scope);\n }\n };\n Observable.prototype.removePropertyListener = function (name, listener, scope) {\n if (scope === void 0) {\n scope = this;\n }\n var allPropertyListeners = this.allPropertyListeners;\n var propertyListeners = allPropertyListeners.get(name);\n if (propertyListeners) {\n if (listener) {\n var scopes = propertyListeners.get(listener);\n if (scopes) {\n scopes.delete(scope);\n if (!scopes.size) {\n propertyListeners.delete(listener);\n }\n }\n } else {\n propertyListeners.clear();\n }\n }\n };\n Observable.prototype.notifyPropertyListeners = function (name, oldValue, value) {\n var _this = this;\n var allPropertyListeners = this.allPropertyListeners;\n var propertyListeners = allPropertyListeners.get(name);\n if (propertyListeners) {\n propertyListeners.forEach(function (scopes, listener) {\n scopes.forEach(function (scope) {\n return listener.call(scope, {\n type: name,\n source: _this,\n value: value,\n oldValue: oldValue\n });\n });\n });\n }\n };\n Observable.prototype.addEventListener = function (type, listener, scope) {\n if (scope === void 0) {\n scope = this;\n }\n var allEventListeners = this.allEventListeners;\n var eventListeners = allEventListeners.get(type);\n if (!eventListeners) {\n eventListeners = new Map();\n allEventListeners.set(type, eventListeners);\n }\n if (!eventListeners.has(listener)) {\n var scopes_2 = new Set();\n eventListeners.set(listener, scopes_2);\n }\n var scopes = eventListeners.get(listener);\n if (scopes) {\n scopes.add(scope);\n }\n };\n Observable.prototype.removeEventListener = function (type, listener, scope) {\n if (scope === void 0) {\n scope = this;\n }\n var allEventListeners = this.allEventListeners;\n var eventListeners = allEventListeners.get(type);\n if (eventListeners) {\n if (listener) {\n var scopes = eventListeners.get(listener);\n if (scopes) {\n scopes.delete(scope);\n if (!scopes.size) {\n eventListeners.delete(listener);\n }\n }\n } else {\n eventListeners.clear();\n }\n }\n };\n Observable.prototype.clearEventListeners = function () {\n this.allEventListeners = new Map();\n };\n Observable.prototype.notifyEventListeners = function (types) {\n var _this = this;\n var allEventListeners = this.allEventListeners;\n types.forEach(function (type) {\n var listeners = allEventListeners.get(type);\n if (listeners) {\n listeners.forEach(function (scopes, listener) {\n scopes.forEach(function (scope) {\n return listener.call(scope, {\n type: type,\n source: _this\n });\n });\n });\n }\n });\n };\n // 'source' is added automatically and is always the object this method belongs to.\n Observable.prototype.fireEvent = function (event) {\n var listeners = this.allEventListeners.get(event.type);\n if (listeners) {\n var eventWithSource_1 = Object.assign(event, {\n source: this\n });\n listeners.forEach(function (scopes, listener) {\n scopes.forEach(function (scope) {\n return listener.call(scope, eventWithSource_1);\n });\n });\n }\n };\n Observable.privateKeyPrefix = '_';\n return Observable;\n}();\nvar __read$K = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar Color$1 = /** @class */function () {\n /**\n * Every color component should be in the [0, 1] range.\n * Some easing functions (such as elastic easing) can overshoot the target value by some amount.\n * So, when animating colors, if the source or target color components are already near\n * or at the edge of the allowed [0, 1] range, it is possible for the intermediate color\n * component value to end up outside of that range mid-animation. For this reason the constructor\n * performs range checking/constraining.\n * @param r Red component.\n * @param g Green component.\n * @param b Blue component.\n * @param a Alpha (opacity) component.\n */\n function Color(r, g, b, a) {\n if (a === void 0) {\n a = 1;\n }\n // NaN is treated as 0.\n this.r = Math.min(1, Math.max(0, r || 0));\n this.g = Math.min(1, Math.max(0, g || 0));\n this.b = Math.min(1, Math.max(0, b || 0));\n this.a = Math.min(1, Math.max(0, a || 0));\n }\n /**\n * A color string can be in one of the following formats to be valid:\n * - #rgb\n * - #rrggbb\n * - rgb(r, g, b)\n * - rgba(r, g, b, a)\n * - CSS color name such as 'white', 'orange', 'cyan', etc.\n */\n Color.validColorString = function (str) {\n if (str.indexOf('#') >= 0) {\n return !!Color.parseHex(str);\n }\n if (str.indexOf('rgb') >= 0) {\n return !!Color.stringToRgba(str);\n }\n return !!Color.nameToHex[str.toLowerCase()];\n };\n /**\n * The given string can be in one of the following formats:\n * - #rgb\n * - #rrggbb\n * - rgb(r, g, b)\n * - rgba(r, g, b, a)\n * - CSS color name such as 'white', 'orange', 'cyan', etc.\n * @param str\n */\n Color.fromString = function (str) {\n // hexadecimal notation\n if (str.indexOf('#') >= 0) {\n // there can be some leading whitespace\n return Color.fromHexString(str);\n }\n // color name\n var hex = Color.nameToHex[str.toLowerCase()];\n if (hex) {\n return Color.fromHexString(hex);\n }\n // rgb(a) notation\n if (str.indexOf('rgb') >= 0) {\n return Color.fromRgbaString(str);\n }\n throw new Error(\"Invalid color string: '\" + str + \"'\");\n };\n // See https://drafts.csswg.org/css-color/#hex-notation\n Color.parseHex = function (input) {\n var _a;\n input = input.replace(/ /g, '').slice(1);\n var parts;\n switch (input.length) {\n case 6:\n case 8:\n parts = [];\n for (var i = 0; i < input.length; i += 2) {\n parts.push(parseInt(\"\" + input[i] + input[i + 1], 16));\n }\n break;\n case 3:\n case 4:\n parts = input.split('').map(function (p) {\n return parseInt(p, 16);\n }).map(function (p) {\n return p + p * 16;\n });\n break;\n }\n if (((_a = parts) === null || _a === void 0 ? void 0 : _a.length) >= 3) {\n if (parts.every(function (p) {\n return p >= 0;\n })) {\n if (parts.length === 3) {\n parts.push(255);\n }\n return parts;\n }\n }\n };\n Color.fromHexString = function (str) {\n var values = Color.parseHex(str);\n if (values) {\n var _a = __read$K(values, 4),\n r = _a[0],\n g = _a[1],\n b = _a[2],\n a = _a[3];\n return new Color(r / 255, g / 255, b / 255, a / 255);\n }\n throw new Error(\"Malformed hexadecimal color string: '\" + str + \"'\");\n };\n Color.stringToRgba = function (str) {\n // Find positions of opening and closing parentheses.\n var _a = __read$K([NaN, NaN], 2),\n po = _a[0],\n pc = _a[1];\n for (var i = 0; i < str.length; i++) {\n var c = str[i];\n if (!po && c === '(') {\n po = i;\n } else if (c === ')') {\n pc = i;\n break;\n }\n }\n var contents = po && pc && str.substring(po + 1, pc);\n if (!contents) {\n return;\n }\n var parts = contents.split(',');\n var rgba = [];\n for (var i = 0; i < parts.length; i++) {\n var part = parts[i];\n var value = parseFloat(part);\n if (isNaN(value)) {\n return;\n }\n if (part.indexOf('%') >= 0) {\n // percentage r, g, or b value\n value = Math.max(0, Math.min(100, value));\n value /= 100;\n } else {\n if (i === 3) {\n // alpha component\n value = Math.max(0, Math.min(1, value));\n } else {\n // absolute r, g, or b value\n value = Math.max(0, Math.min(255, value));\n value /= 255;\n }\n }\n rgba.push(value);\n }\n return rgba;\n };\n Color.fromRgbaString = function (str) {\n var rgba = Color.stringToRgba(str);\n if (rgba) {\n if (rgba.length === 3) {\n return new Color(rgba[0], rgba[1], rgba[2]);\n } else if (rgba.length === 4) {\n return new Color(rgba[0], rgba[1], rgba[2], rgba[3]);\n }\n }\n throw new Error(\"Malformed rgb/rgba color string: '\" + str + \"'\");\n };\n Color.fromArray = function (arr) {\n if (arr.length === 4) {\n return new Color(arr[0], arr[1], arr[2], arr[3]);\n }\n if (arr.length === 3) {\n return new Color(arr[0], arr[1], arr[2]);\n }\n throw new Error('The given array should contain 3 or 4 color components (numbers).');\n };\n Color.fromHSB = function (h, s, b, alpha) {\n if (alpha === void 0) {\n alpha = 1;\n }\n var rgb = Color.HSBtoRGB(h, s, b);\n return new Color(rgb[0], rgb[1], rgb[2], alpha);\n };\n Color.padHex = function (str) {\n // Can't use `padStart(2, '0')` here because of IE.\n return str.length === 1 ? '0' + str : str;\n };\n Color.prototype.toHexString = function () {\n var hex = '#' + Color.padHex(Math.round(this.r * 255).toString(16)) + Color.padHex(Math.round(this.g * 255).toString(16)) + Color.padHex(Math.round(this.b * 255).toString(16));\n if (this.a < 1) {\n hex += Color.padHex(Math.round(this.a * 255).toString(16));\n }\n return hex;\n };\n Color.prototype.toRgbaString = function (fractionDigits) {\n if (fractionDigits === void 0) {\n fractionDigits = 3;\n }\n var components = [Math.round(this.r * 255), Math.round(this.g * 255), Math.round(this.b * 255)];\n var k = Math.pow(10, fractionDigits);\n if (this.a !== 1) {\n components.push(Math.round(this.a * k) / k);\n return \"rgba(\" + components.join(', ') + \")\";\n }\n return \"rgb(\" + components.join(', ') + \")\";\n };\n Color.prototype.toString = function () {\n if (this.a === 1) {\n return this.toHexString();\n }\n return this.toRgbaString();\n };\n Color.prototype.toHSB = function () {\n return Color.RGBtoHSB(this.r, this.g, this.b);\n };\n /**\n * Converts the given RGB triple to an array of HSB (HSV) components.\n * The hue component will be `NaN` for achromatic colors.\n */\n Color.RGBtoHSB = function (r, g, b) {\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var S = max !== 0 ? (max - min) / max : 0;\n var H = NaN;\n // min == max, means all components are the same\n // and the color is a shade of gray with no hue (H is NaN)\n if (min !== max) {\n var delta = max - min;\n var rc = (max - r) / delta;\n var gc = (max - g) / delta;\n var bc = (max - b) / delta;\n if (r === max) {\n H = bc - gc;\n } else if (g === max) {\n H = 2.0 + rc - bc;\n } else {\n H = 4.0 + gc - rc;\n }\n H /= 6.0;\n if (H < 0) {\n H = H + 1.0;\n }\n }\n return [H * 360, S, max];\n };\n /**\n * Converts the given HSB (HSV) triple to an array of RGB components.\n */\n Color.HSBtoRGB = function (H, S, B) {\n if (isNaN(H)) {\n H = 0;\n }\n H = (H % 360 + 360) % 360 / 360; // normalize hue to [0, 360] interval, then scale to [0, 1]\n var r = 0;\n var g = 0;\n var b = 0;\n if (S === 0) {\n r = g = b = B;\n } else {\n var h = (H - Math.floor(H)) * 6;\n var f = h - Math.floor(h);\n var p = B * (1 - S);\n var q = B * (1 - S * f);\n var t = B * (1 - S * (1 - f));\n switch (h >> 0 // discard the floating point part of the number\n ) {\n case 0:\n r = B;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = B;\n b = p;\n break;\n case 2:\n r = p;\n g = B;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = B;\n break;\n case 4:\n r = t;\n g = p;\n b = B;\n break;\n case 5:\n r = B;\n g = p;\n b = q;\n break;\n }\n }\n return [r, g, b];\n };\n Color.prototype.derive = function (hueShift, saturationFactor, brightnessFactor, opacityFactor) {\n var hsb = Color.RGBtoHSB(this.r, this.g, this.b);\n var b = hsb[2];\n if (b == 0 && brightnessFactor > 1.0) {\n b = 0.05;\n }\n var h = ((hsb[0] + hueShift) % 360 + 360) % 360;\n var s = Math.max(Math.min(hsb[1] * saturationFactor, 1.0), 0.0);\n b = Math.max(Math.min(b * brightnessFactor, 1.0), 0.0);\n var a = Math.max(Math.min(this.a * opacityFactor, 1.0), 0.0);\n var rgba = Color.HSBtoRGB(h, s, b);\n rgba.push(a);\n return Color.fromArray(rgba);\n };\n Color.prototype.brighter = function () {\n return this.derive(0, 1.0, 1.0 / 0.7, 1.0);\n };\n Color.prototype.darker = function () {\n return this.derive(0, 1.0, 0.7, 1.0);\n };\n /**\n * CSS Color Module Level 4:\n * https://drafts.csswg.org/css-color/#named-colors\n */\n Color.nameToHex = Object.freeze({\n aliceblue: '#F0F8FF',\n antiquewhite: '#FAEBD7',\n aqua: '#00FFFF',\n aquamarine: '#7FFFD4',\n azure: '#F0FFFF',\n beige: '#F5F5DC',\n bisque: '#FFE4C4',\n black: '#000000',\n blanchedalmond: '#FFEBCD',\n blue: '#0000FF',\n blueviolet: '#8A2BE2',\n brown: '#A52A2A',\n burlywood: '#DEB887',\n cadetblue: '#5F9EA0',\n chartreuse: '#7FFF00',\n chocolate: '#D2691E',\n coral: '#FF7F50',\n cornflowerblue: '#6495ED',\n cornsilk: '#FFF8DC',\n crimson: '#DC143C',\n cyan: '#00FFFF',\n darkblue: '#00008B',\n darkcyan: '#008B8B',\n darkgoldenrod: '#B8860B',\n darkgray: '#A9A9A9',\n darkgreen: '#006400',\n darkgrey: '#A9A9A9',\n darkkhaki: '#BDB76B',\n darkmagenta: '#8B008B',\n darkolivegreen: '#556B2F',\n darkorange: '#FF8C00',\n darkorchid: '#9932CC',\n darkred: '#8B0000',\n darksalmon: '#E9967A',\n darkseagreen: '#8FBC8F',\n darkslateblue: '#483D8B',\n darkslategray: '#2F4F4F',\n darkslategrey: '#2F4F4F',\n darkturquoise: '#00CED1',\n darkviolet: '#9400D3',\n deeppink: '#FF1493',\n deepskyblue: '#00BFFF',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1E90FF',\n firebrick: '#B22222',\n floralwhite: '#FFFAF0',\n forestgreen: '#228B22',\n fuchsia: '#FF00FF',\n gainsboro: '#DCDCDC',\n ghostwhite: '#F8F8FF',\n gold: '#FFD700',\n goldenrod: '#DAA520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#ADFF2F',\n grey: '#808080',\n honeydew: '#F0FFF0',\n hotpink: '#FF69B4',\n indianred: '#CD5C5C',\n indigo: '#4B0082',\n ivory: '#FFFFF0',\n khaki: '#F0E68C',\n lavender: '#E6E6FA',\n lavenderblush: '#FFF0F5',\n lawngreen: '#7CFC00',\n lemonchiffon: '#FFFACD',\n lightblue: '#ADD8E6',\n lightcoral: '#F08080',\n lightcyan: '#E0FFFF',\n lightgoldenrodyellow: '#FAFAD2',\n lightgray: '#D3D3D3',\n lightgreen: '#90EE90',\n lightgrey: '#D3D3D3',\n lightpink: '#FFB6C1',\n lightsalmon: '#FFA07A',\n lightseagreen: '#20B2AA',\n lightskyblue: '#87CEFA',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#B0C4DE',\n lightyellow: '#FFFFE0',\n lime: '#00FF00',\n limegreen: '#32CD32',\n linen: '#FAF0E6',\n magenta: '#FF00FF',\n maroon: '#800000',\n mediumaquamarine: '#66CDAA',\n mediumblue: '#0000CD',\n mediumorchid: '#BA55D3',\n mediumpurple: '#9370DB',\n mediumseagreen: '#3CB371',\n mediumslateblue: '#7B68EE',\n mediumspringgreen: '#00FA9A',\n mediumturquoise: '#48D1CC',\n mediumvioletred: '#C71585',\n midnightblue: '#191970',\n mintcream: '#F5FFFA',\n mistyrose: '#FFE4E1',\n moccasin: '#FFE4B5',\n navajowhite: '#FFDEAD',\n navy: '#000080',\n oldlace: '#FDF5E6',\n olive: '#808000',\n olivedrab: '#6B8E23',\n orange: '#FFA500',\n orangered: '#FF4500',\n orchid: '#DA70D6',\n palegoldenrod: '#EEE8AA',\n palegreen: '#98FB98',\n paleturquoise: '#AFEEEE',\n palevioletred: '#DB7093',\n papayawhip: '#FFEFD5',\n peachpuff: '#FFDAB9',\n peru: '#CD853F',\n pink: '#FFC0CB',\n plum: '#DDA0DD',\n powderblue: '#B0E0E6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#FF0000',\n rosybrown: '#BC8F8F',\n royalblue: '#4169E1',\n saddlebrown: '#8B4513',\n salmon: '#FA8072',\n sandybrown: '#F4A460',\n seagreen: '#2E8B57',\n seashell: '#FFF5EE',\n sienna: '#A0522D',\n silver: '#C0C0C0',\n skyblue: '#87CEEB',\n slateblue: '#6A5ACD',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#FFFAFA',\n springgreen: '#00FF7F',\n steelblue: '#4682B4',\n tan: '#D2B48C',\n teal: '#008080',\n thistle: '#D8BFD8',\n tomato: '#FF6347',\n transparent: '#00000000',\n turquoise: '#40E0D0',\n violet: '#EE82EE',\n wheat: '#F5DEB3',\n white: '#FFFFFF',\n whitesmoke: '#F5F5F5',\n yellow: '#FFFF00',\n yellowgreen: '#9ACD32'\n });\n return Color;\n}();\nfunction Validate(predicate) {\n return function (target, key) {\n var _a;\n // `target` is either a constructor (static member) or prototype (instance member)\n var privateKey = \"__\" + key;\n var prevSet;\n var descriptor = Object.getOwnPropertyDescriptor(target, key);\n prevSet = (_a = descriptor) === null || _a === void 0 ? void 0 : _a.set;\n var setter = function (v) {\n var _a, _b, _c, _d;\n if (predicate(v, {\n target: this\n })) {\n if (prevSet) {\n prevSet.call(this, v);\n } else {\n this[privateKey] = v;\n }\n return;\n }\n var cleanKey = key.replace(/^_*/, '');\n var targetClass = (_b = (_a = target.constructor) === null || _a === void 0 ? void 0 : _a.className, _b !== null && _b !== void 0 ? _b : (_c = target.constructor) === null || _c === void 0 ? void 0 : _c.name);\n if (((_d = targetClass) === null || _d === void 0 ? void 0 : _d.length) < 3) {\n targetClass = null;\n }\n if (predicate.message) {\n console.warn(\"AG Charts - Property [\" + cleanKey + \"] \" + (targetClass ? \"of [\" + targetClass + \"] \" : '') + \"cannot be set to [\" + JSON.stringify(v) + \"]; \" + predicate.message + \", ignoring.\");\n } else {\n console.warn(\"AG Charts - Property [\" + cleanKey + \"] \" + (targetClass ? \"of [\" + targetClass + \"] \" : '') + \"cannot be set to [\" + JSON.stringify(v) + \"], ignoring.\");\n }\n };\n var getter = function () {\n return this[privateKey];\n };\n Object.defineProperty(target, key, {\n set: setter,\n get: getter,\n enumerable: true,\n configurable: false\n });\n };\n}\nfunction predicateWithMessage(predicate, message) {\n predicate.message = message;\n return predicate;\n}\nvar OPTIONAL = function (v, ctx, predicate) {\n return v === undefined || predicate(v, ctx);\n};\nvar ARRAY = function (length, predicate) {\n return predicateWithMessage(function (v, ctx) {\n return Array.isArray(v) && (length ? v.length === length : true) && (predicate ? v.every(function (e) {\n return predicate(e, ctx);\n }) : true);\n }, \"expecting an Array\");\n};\nvar OPT_ARRAY = function (length) {\n return predicateWithMessage(function (v, ctx) {\n return OPTIONAL(v, ctx, ARRAY(length));\n }, 'expecting an optional Array');\n};\nvar AND = function () {\n var predicates = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n predicates[_i] = arguments[_i];\n }\n return predicateWithMessage(function (v, ctx) {\n return predicates.every(function (p) {\n return p(v, ctx);\n });\n }, predicates.map(function (p) {\n return p.message;\n }).filter(function (m) {\n return m != null;\n }).join(' AND '));\n};\nvar OR = function () {\n var predicates = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n predicates[_i] = arguments[_i];\n }\n return predicateWithMessage(function (v, ctx) {\n return predicates.some(function (p) {\n return p(v, ctx);\n });\n }, predicates.map(function (p) {\n return p.message;\n }).filter(function (m) {\n return m != null;\n }).join(' OR '));\n};\nvar isComparable = function (v) {\n return v != null && !isNaN(v);\n};\nvar LESS_THAN = function (otherField) {\n return predicateWithMessage(function (v, ctx) {\n return !isComparable(v) || !isComparable(ctx.target[otherField]) || v < ctx.target[otherField];\n }, \"expected to be less than \" + otherField);\n};\nvar GREATER_THAN = function (otherField) {\n return predicateWithMessage(function (v, ctx) {\n return !isComparable(v) || !isComparable(ctx.target[otherField]) || v > ctx.target[otherField];\n }, \"expected to be greater than \" + otherField);\n};\nvar FUNCTION = predicateWithMessage(function (v) {\n return typeof v === 'function';\n}, 'expecting a Function');\nvar OPT_FUNCTION = predicateWithMessage(function (v, ctx) {\n return OPTIONAL(v, ctx, FUNCTION);\n}, \"expecting an optional Function\");\nvar BOOLEAN = predicateWithMessage(function (v) {\n return v === true || v === false;\n}, 'expecting a Boolean');\nvar OPT_BOOLEAN = predicateWithMessage(function (v, ctx) {\n return OPTIONAL(v, ctx, BOOLEAN);\n}, 'expecting an optional Boolean');\nvar STRING = predicateWithMessage(function (v) {\n return typeof v === 'string';\n}, 'expecting a String');\nvar OPT_STRING = predicateWithMessage(function (v, ctx) {\n return OPTIONAL(v, ctx, STRING);\n}, 'expecting an optional String');\nvar DATE = predicateWithMessage(function (v) {\n return v instanceof Date && !isNaN(+v);\n}, 'expecting a Date object');\nvar OPT_DATE = predicateWithMessage(function (v, ctx) {\n return OPTIONAL(v, ctx, DATE);\n}, 'expecting an optional Date');\npredicateWithMessage(ARRAY(undefined, DATE), 'expecting an Array of Date objects');\nvar DATETIME_MS = NUMBER(0);\nvar OPT_DATETIME_MS = predicateWithMessage(function (v, ctx) {\n return OPTIONAL(v, ctx, DATETIME_MS);\n}, 'expecting an optional number');\nvar OPT_DATE_OR_DATETIME_MS = OR(OPT_DATE, OPT_DATETIME_MS);\nvar colorMessage = \"A color string can be in one of the following formats to be valid: #rgb, #rrggbb, rgb(r, g, b), rgba(r, g, b, a) or a CSS color name such as 'white', 'orange', 'cyan', etc\";\nvar COLOR_STRING = predicateWithMessage(function (v) {\n if (typeof v !== 'string') {\n return false;\n }\n return Color$1.validColorString(v);\n}, \"expecting a color String. \" + colorMessage);\nvar OPT_COLOR_STRING = predicateWithMessage(function (v, ctx) {\n return OPTIONAL(v, ctx, COLOR_STRING);\n}, \"expecting an optional color String. \" + colorMessage);\nvar COLOR_STRING_ARRAY = predicateWithMessage(ARRAY(undefined, COLOR_STRING), \"expecting an Array of color strings. \" + colorMessage);\npredicateWithMessage(function (v, ctx) {\n return OPTIONAL(v, ctx, COLOR_STRING_ARRAY);\n}, \"expecting an optional Array of color strings. \" + colorMessage);\nfunction NUMBER(min, max) {\n var message = \"expecting a finite Number\" + ((min !== undefined ? ', more than or equal to ' + min : '') + (max !== undefined ? ', less than or equal to ' + max : ''));\n return predicateWithMessage(function (v) {\n return typeof v === 'number' && Number.isFinite(v) && (min !== undefined ? v >= min : true) && (max !== undefined ? v <= max : true);\n }, message);\n}\nfunction OPT_NUMBER(min, max) {\n var message = \"expecting an optional finite Number\" + ((min !== undefined ? ', more than or equal to ' + min : '') + (max !== undefined ? ', less than or equal to ' + max : ''));\n return predicateWithMessage(function (v, ctx) {\n return OPTIONAL(v, ctx, NUMBER(min, max));\n }, message);\n}\nvar NUMBER_ARRAY = predicateWithMessage(ARRAY(undefined, NUMBER()), 'expecting an Array of numbers');\nvar OPT_NUMBER_ARRAY = predicateWithMessage(function (v, ctx) {\n return OPTIONAL(v, ctx, NUMBER_ARRAY);\n}, 'expecting an optional Array of numbers');\nvar STRING_ARRAY = predicateWithMessage(ARRAY(undefined, STRING), 'expecting an Array of strings');\npredicateWithMessage(function (v, ctx) {\n return OPTIONAL(v, ctx, STRING_ARRAY);\n}, 'expecting an optional Array of strings');\nvar BOOLEAN_ARRAY = predicateWithMessage(ARRAY(undefined, BOOLEAN), 'expecting an Array of boolean values');\npredicateWithMessage(function (v, ctx) {\n return OPTIONAL(v, ctx, BOOLEAN_ARRAY);\n}, 'expecting an optional Array of boolean values');\nvar FONT_WEIGHTS = ['normal', 'bold', 'bolder', 'lighter', '100', '200', '300', '400', '500', '600', '700', '800', '900'];\nvar FONT_STYLE = predicateWithMessage(function (v) {\n return v === 'normal' || v === 'italic' || v === 'oblique';\n}, \"expecting a font style keyword such as 'normal', 'italic' or 'oblique'\");\nvar OPT_FONT_STYLE = predicateWithMessage(function (v, ctx) {\n return OPTIONAL(v, ctx, FONT_STYLE);\n}, \"expecting an optional font style keyword such as 'normal', 'italic' or 'oblique'\");\nvar FONT_WEIGHT = predicateWithMessage(function (v) {\n return FONT_WEIGHTS.includes(v);\n}, \"expecting a font weight keyword such as 'normal', 'bold' or 'bolder' or a numeric value such as 100, 300 or 600\");\nvar OPT_FONT_WEIGHT = predicateWithMessage(function (v, ctx) {\n return OPTIONAL(v, ctx, FONT_WEIGHT);\n}, \"expecting an optional font weight keyword such as 'normal', 'bold' or 'bolder' or a numeric value such as 100, 300 or 600\");\nvar LINE_DASH = predicateWithMessage(ARRAY(undefined, NUMBER(0)), 'expecting an Array of numbers specifying the length in pixels of alternating dashes and gaps, for example, [6, 3] means dashes with a length of 6 pixels with gaps between of 3 pixels.');\nvar OPT_LINE_DASH = predicateWithMessage(function (v, ctx) {\n return OPTIONAL(v, ctx, LINE_DASH);\n}, 'expecting an optional Array of numbers specifying the length in pixels of alternating dashes and gaps, for example, [6, 3] means dashes with a length of 6 pixels with gaps between of 3 pixels.');\nvar LINE_CAPS = ['butt', 'round', 'square'];\nvar LINE_CAP = predicateWithMessage(function (v) {\n return LINE_CAPS.includes(v);\n}, \"expecting a line cap keyword such as 'butt', 'round' or 'square'\");\npredicateWithMessage(function (v, ctx) {\n return OPTIONAL(v, ctx, LINE_CAP);\n}, \"expecting an optional line cap keyword such as 'butt', 'round' or 'square'\");\nvar LINE_JOINS = ['round', 'bevel', 'miter'];\nvar LINE_JOIN = predicateWithMessage(function (v) {\n return LINE_JOINS.includes(v);\n}, \"expecting a line join keyword such as 'round', 'bevel' or 'miter'\");\npredicateWithMessage(function (v, ctx) {\n return OPTIONAL(v, ctx, LINE_JOIN);\n}, \"expecting an optional line join keyword such as 'round', 'bevel' or 'miter'\");\nvar POSITIONS = ['top', 'right', 'bottom', 'left'];\nvar POSITION = predicateWithMessage(function (v) {\n return POSITIONS.includes(v);\n}, \"expecting a position keyword such as 'top', 'right', 'bottom' or 'left\");\nvar ValidateAndChangeDetection = function (opts) {\n var sceneChangeDetectionOpts = opts.sceneChangeDetectionOpts,\n validatePredicate = opts.validatePredicate;\n var sceneChangeDetectionFn = SceneChangeDetection(sceneChangeDetectionOpts);\n var validateFn = Validate(validatePredicate);\n return function (target, key) {\n sceneChangeDetectionFn(target, key);\n validateFn(target, key);\n };\n};\nvar __extends$2M = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1G = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar Caption = /** @class */function (_super) {\n __extends$2M(Caption, _super);\n function Caption() {\n var _this = _super.call(this) || this;\n _this.node = new Text$1();\n _this.enabled = false;\n _this._text = '';\n _this._fontSize = 10;\n _this._fontFamily = 'sans-serif';\n var node = _this.node;\n node.textAlign = 'center';\n node.textBaseline = 'top';\n node.pointerEvents = PointerEvents$1.None;\n return _this;\n }\n Object.defineProperty(Caption.prototype, \"text\", {\n get: function () {\n return this._text;\n },\n set: function (value) {\n this._text = value;\n this.node.text = this._text;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Caption.prototype, \"fontStyle\", {\n get: function () {\n return this._fontStyle;\n },\n set: function (value) {\n this._fontStyle = value;\n this.node.fontStyle = this._fontStyle;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Caption.prototype, \"fontWeight\", {\n get: function () {\n return this._fontWeight;\n },\n set: function (value) {\n this._fontWeight = value;\n this.node.fontWeight = this._fontWeight;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Caption.prototype, \"fontSize\", {\n get: function () {\n return this._fontSize;\n },\n set: function (value) {\n this._fontSize = value;\n this.node.fontSize = this._fontSize;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Caption.prototype, \"fontFamily\", {\n get: function () {\n return this._fontFamily;\n },\n set: function (value) {\n this._fontFamily = value;\n this.node.fontFamily = this._fontFamily;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Caption.prototype, \"color\", {\n get: function () {\n return this._color;\n },\n set: function (value) {\n this._color = value;\n this.node.fill = this._color;\n },\n enumerable: true,\n configurable: true\n });\n Caption.PADDING = 10;\n __decorate$1G([Validate(BOOLEAN)], Caption.prototype, \"enabled\", void 0);\n __decorate$1G([Validate(STRING)], Caption.prototype, \"_text\", void 0);\n __decorate$1G([Validate(OPT_FONT_STYLE)], Caption.prototype, \"_fontStyle\", void 0);\n __decorate$1G([Validate(OPT_FONT_WEIGHT)], Caption.prototype, \"_fontWeight\", void 0);\n __decorate$1G([Validate(NUMBER(0))], Caption.prototype, \"_fontSize\", void 0);\n __decorate$1G([Validate(STRING)], Caption.prototype, \"_fontFamily\", void 0);\n __decorate$1G([Validate(OPT_COLOR_STRING)], Caption.prototype, \"_color\", void 0);\n return Caption;\n}(Observable$1);\nvar constant$3 = function (x) {\n return function () {\n return x;\n };\n};\nfunction interpolateNumber$1(a, b) {\n a = +a;\n b = +b;\n return function (t) {\n return a * (1 - t) + b * t;\n };\n}\nfunction date$1(a, b) {\n var date = new Date();\n var msA = +a;\n var msB = +b;\n return function (t) {\n date.setTime(msA * (1 - t) + msB * t);\n return date;\n };\n}\nfunction array$1(a, b) {\n var nb = b ? b.length : 0;\n var na = a ? Math.min(nb, a.length) : 0;\n var x = new Array(na);\n var c = new Array(nb);\n var i;\n for (i = 0; i < na; ++i) {\n x[i] = interpolateValue$1(a[i], b[i]);\n }\n for (; i < nb; ++i) {\n c[i] = b[i];\n }\n return function (t) {\n for (i = 0; i < na; ++i) {\n c[i] = x[i](t);\n }\n return c;\n };\n}\nfunction object$1(a, b) {\n var i = {};\n var c = {};\n var k;\n if (a === null || typeof a !== 'object') {\n a = {};\n }\n if (b === null || typeof b !== 'object') {\n b = {};\n }\n for (k in b) {\n if (k in a) {\n i[k] = interpolateValue$1(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n return function (t) {\n for (k in i) {\n c[k] = i[k](t);\n }\n return c;\n };\n}\nfunction color$1(a, b) {\n if (typeof a === 'string') {\n try {\n a = Color$1.fromString(a);\n } catch (e) {\n a = Color$1.fromArray([0, 0, 0]);\n }\n }\n if (typeof b === 'string') {\n try {\n b = Color$1.fromString(b);\n } catch (e) {\n b = Color$1.fromArray([0, 0, 0]);\n }\n }\n var red = interpolateNumber$1(a.r, b.r);\n var green = interpolateNumber$1(a.g, b.g);\n var blue = interpolateNumber$1(a.b, b.b);\n var alpha = interpolateNumber$1(a.a, b.a);\n return function (t) {\n return Color$1.fromArray([red(t), green(t), blue(t), alpha(t)]).toRgbaString();\n };\n}\nfunction interpolateValue$1(a, b) {\n var t = typeof b;\n var c;\n if (b == null || t === 'boolean') {\n return constant$3(b);\n }\n if (t === 'number') {\n return interpolateNumber$1(a, b);\n }\n if (t === 'string') {\n try {\n c = Color$1.fromString(b);\n b = c;\n return color$1(a, b);\n } catch (e) {}\n }\n if (b instanceof Color$1) {\n return color$1(a, b);\n }\n if (b instanceof Date) {\n return date$1(a, b);\n }\n if (Array.isArray(b)) {\n return array$1(a, b);\n }\n if (typeof b.valueOf !== 'function' && typeof b.toString !== 'function' || isNaN(b)) {\n return object$1(a, b);\n }\n return interpolateNumber$1(a, b);\n}\nfunction ascending$1(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\nfunction ascendingStringNumberUndefined(a, b) {\n var diff = 0;\n if (typeof a === 'number' && typeof b === 'number') {\n diff = a - b;\n } else if (typeof a === 'string' && typeof b === 'string') {\n diff = a.localeCompare(b);\n } else if (a == null && b == null) ;else if (a == null) {\n diff = -1;\n } else if (b == null) {\n diff = 1;\n } else {\n diff = String(a).localeCompare(String(b));\n }\n return diff;\n}\nfunction compoundAscending(a, b, comparator) {\n for (var idx in a) {\n var diff = comparator(a[idx], b[idx]);\n if (diff !== 0) {\n return diff;\n }\n }\n return 0;\n}\n\n/**\n * Returns the insertion point for `x` in array to maintain sorted order.\n * The arguments `lo` and `hi` may be used to specify a subset of the array which should be considered;\n * by default the entire array is used. If `x` is already present in array, the insertion point will be before\n * (to the left of) any existing entries. The return value is suitable for use as the first argument to `splice`\n * assuming that array is already sorted. The returned insertion point `i` partitions the array into two halves\n * so that all `v < x` for `v` in `array.slice(lo, i)` for the left side and all `v >= x` for `v` in `array.slice(i, hi)`\n * for the right side.\n * @param list\n * @param x\n * @param comparator\n * @param lo\n * @param hi\n */\nfunction bisectRight(list, x, comparator, lo, hi) {\n if (lo === void 0) {\n lo = 0;\n }\n if (hi === void 0) {\n hi = list.length;\n }\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (comparator(list[mid], x) > 0) {\n // list[mid] > x\n hi = mid;\n } else {\n lo = mid + 1;\n }\n }\n return lo;\n}\n/**\n * A specialized version of `bisectRight` that works with the arrays whose elements cannot be compared directly.\n * The map function is used instead to produce a comparable value for a given array element, then the values\n * returned by the map are compared using the `ascendingComparator`.\n * @param list\n * @param x\n * @param map\n * @param lo\n * @param hi\n */\nfunction complexBisectRight$1(list, x, map, lo, hi) {\n if (lo === void 0) {\n lo = 0;\n }\n if (hi === void 0) {\n hi = list.length;\n }\n var comparator = ascendingComparator$1(map);\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (comparator(list[mid], x) < 0) {\n lo = mid + 1;\n } else {\n hi = mid;\n }\n }\n return lo;\n}\nfunction ascendingComparator$1(map) {\n return function (item, x) {\n return ascending$1(map(item), x);\n };\n}\nvar __read$J = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar constant$2 = function (x) {\n return function () {\n return x;\n };\n};\nvar identity$6 = function (x) {\n return x;\n};\nfunction clamper$1(domain) {\n var _a;\n var a = domain[0];\n var b = domain[domain.length - 1];\n if (a > b) {\n _a = __read$J([b, a], 2), a = _a[0], b = _a[1];\n }\n return function (x) {\n return Math.max(a, Math.min(b, x));\n };\n}\n// Instead of clamping the values outside of domain to the range,\n// return NaNs to indicate invalid input.\nfunction filter(domain) {\n var _a;\n var a = domain[0];\n var b = domain[domain.length - 1];\n if (a > b) {\n _a = __read$J([b, a], 2), a = _a[0], b = _a[1];\n }\n return function (x) {\n return x >= a && x <= b ? x : NaN;\n };\n}\nvar ContinuousScale$1 = /** @class */function () {\n function ContinuousScale() {\n /**\n * The output value of the scale for `undefined` or `NaN` input values.\n */\n this.unknown = undefined;\n this.clamper = clamper$1;\n this._clamp = identity$6;\n this._domain = [0, 1];\n this._range = [0, 1];\n this.transform = identity$6; // transforms domain value\n this.untransform = identity$6; // untransforms domain value\n this._interpolate = interpolateValue$1;\n this.rescale();\n }\n Object.defineProperty(ContinuousScale.prototype, \"clamp\", {\n get: function () {\n return this._clamp !== identity$6;\n },\n set: function (value) {\n this._clamp = value ? this.clamper(this.domain) : identity$6;\n },\n enumerable: true,\n configurable: true\n });\n ContinuousScale.prototype.setDomain = function (values) {\n this._domain = values.map(function (v) {\n return +v;\n });\n if (this._clamp !== identity$6) {\n this._clamp = this.clamper(this.domain);\n }\n this.rescale();\n };\n ContinuousScale.prototype.getDomain = function () {\n return this._domain.slice();\n };\n Object.defineProperty(ContinuousScale.prototype, \"domain\", {\n get: function () {\n return this.getDomain();\n },\n set: function (values) {\n this.setDomain(values);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ContinuousScale.prototype, \"range\", {\n get: function () {\n return this._range.slice();\n },\n set: function (values) {\n this._range = values.slice();\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ContinuousScale.prototype, \"interpolate\", {\n get: function () {\n return this._interpolate;\n },\n set: function (value) {\n this._interpolate = value;\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n ContinuousScale.prototype.rescale = function () {\n if (Math.min(this.domain.length, this.range.length) > 2) {\n this.piecewise = this.polymap;\n } else {\n this.piecewise = this.bimap;\n }\n this.output = undefined;\n this.input = undefined;\n };\n /**\n * Returns a function that converts `x` in `[a, b]` to `t` in `[0, 1]`. Non-clamping.\n * @param a\n * @param b\n */\n ContinuousScale.prototype.normalize = function (a, b) {\n a = +a;\n b -= a;\n return b ? function (x) {\n return (x - a) / b;\n } : constant$2(isNaN(b) ? NaN : 0.5);\n };\n ContinuousScale.prototype.bimap = function (domain, range, interpolate) {\n var x0 = domain[0];\n var x1 = domain[1];\n var y0 = range[0];\n var y1 = range[1];\n var xt;\n var ty;\n if (x1 < x0) {\n xt = this.normalize(x1, x0);\n ty = interpolate(y1, y0);\n } else {\n xt = this.normalize(x0, x1);\n ty = interpolate(y0, y1);\n }\n return function (x) {\n return ty(xt(x));\n }; // domain value x --> t in [0, 1] --> range value y\n };\n ContinuousScale.prototype.polymap = function (domain, range, interpolate) {\n var _this = this;\n // number of segments in the polylinear scale\n var n = Math.min(domain.length, range.length) - 1;\n if (domain[n] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n // deinterpolators from domain segment value to t\n var dt = Array.from({\n length: n\n }, function (_, i) {\n return _this.normalize(domain[i], domain[i + 1]);\n });\n // reinterpolators from t to range segment value\n var tr = Array.from({\n length: n\n }, function (_, i) {\n return interpolate(range[i], range[i + 1]);\n });\n return function (x) {\n var i = bisectRight(domain, x, ascending$1, 1, n) - 1; // Find the domain segment that `x` belongs to.\n // This also tells us which deinterpolator/reinterpolator pair to use.\n return tr[i](dt[i](x));\n };\n };\n ContinuousScale.prototype.convert = function (x, clamper) {\n x = +x;\n if (isNaN(x)) {\n return this.unknown;\n }\n if (!this.output) {\n this.output = this.piecewise(this.domain.map(this.transform), this.range, this.interpolate);\n }\n var clamp = clamper ? clamper(this.domain) : this._clamp;\n return this.output(this.transform(clamp(x)));\n };\n ContinuousScale.prototype.invert = function (y) {\n if (!this.input) {\n this.input = this.piecewise(this.range, this.domain.map(this.transform), interpolateNumber$1);\n }\n return this._clamp(this.untransform(this.input(y)));\n };\n return ContinuousScale;\n}();\nvar __extends$2L = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nfunction ticks$1(a, b, count) {\n var step = tickStep$1(a, b, count);\n a = Math.ceil(a / step) * step;\n b = Math.floor(b / step) * step + step / 2;\n // Add half a step here so that the array returned by `range` includes the last tick.\n return range$1(a, b, step);\n}\nvar e10$1 = Math.sqrt(50);\nvar e5$1 = Math.sqrt(10);\nvar e2$1 = Math.sqrt(2);\nfunction tickStep$1(a, b, count) {\n var rawStep = Math.abs(b - a) / Math.max(0, count);\n var step = Math.pow(10, Math.floor(Math.log(rawStep) / Math.LN10)); // = Math.log10(rawStep)\n var error = rawStep / step;\n if (error >= e10$1) {\n step *= 10;\n } else if (error >= e5$1) {\n step *= 5;\n } else if (error >= e2$1) {\n step *= 2;\n }\n return b < a ? -step : step;\n}\nfunction tickIncrement$1(a, b, count) {\n var rawStep = (b - a) / Math.max(0, count);\n var power = Math.floor(Math.log(rawStep) / Math.LN10);\n var error = rawStep / Math.pow(10, power);\n return power >= 0 ? (error >= e10$1 ? 10 : error >= e5$1 ? 5 : error >= e2$1 ? 2 : 1) * Math.pow(10, power) : -Math.pow(10, -power) / (error >= e10$1 ? 10 : error >= e5$1 ? 5 : error >= e2$1 ? 2 : 1);\n}\nvar NumericTicks$1 = /** @class */function (_super) {\n __extends$2L(NumericTicks, _super);\n function NumericTicks(fractionDigits, elements) {\n var _this = _super.call(this) || this;\n if (elements) {\n for (var i = 0, n = elements.length; i < n; i++) {\n _this[i] = elements[i];\n }\n }\n _this.fractionDigits = fractionDigits;\n return _this;\n }\n return NumericTicks;\n}(Array);\nfunction range$1(a, b, step) {\n if (step === void 0) {\n step = 1;\n }\n var absStep = Math.abs(step);\n var fractionDigits = absStep > 0 && absStep < 1 ? Math.abs(Math.floor(Math.log(absStep) / Math.LN10)) : 0;\n var f = Math.pow(10, fractionDigits);\n var n = Math.max(0, Math.ceil((b - a) / step)) || 0;\n var values = new NumericTicks$1(fractionDigits);\n for (var i = 0; i < n; i++) {\n var value = a + step * i;\n values[i] = Math.round(value * f) / f;\n }\n return values;\n}\nfunction formatDefault$1(x, p) {\n var xs = x.toPrecision(p);\n var i0 = -1;\n var i1 = 0;\n var exit = false;\n for (var n = xs.length, i = 1; !exit && i < n; ++i) {\n switch (xs[i]) {\n case '.':\n i0 = i1 = i;\n break;\n case '0':\n if (i0 === 0) i0 = i;\n i1 = i;\n break;\n case 'e':\n exit = true;\n break;\n default:\n if (i0 > 0) i0 = 0;\n break;\n }\n }\n return i0 > 0 ? xs.slice(0, i0) + xs.slice(i1 + 1) : xs;\n}\nvar formatTypes$1 = {\n '': formatDefault$1,\n // Multiply by 100, and then decimal notation with a percent sign.\n '%': function (x, p) {\n return (x * 100).toFixed(p);\n },\n // Binary notation, rounded to integer.\n b: function (x) {\n return Math.round(x).toString(2);\n },\n // Converts the integer to the corresponding unicode character before printing.\n c: function (x) {\n return String(x);\n },\n // Decimal notation, rounded to integer.\n d: formatDecimal$1,\n // Exponent notation.\n e: function (x, p) {\n return x.toExponential(p);\n },\n // Fixed point notation.\n f: function (x, p) {\n return x.toFixed(p);\n },\n // Either decimal or exponent notation, rounded to significant digits.\n g: function (x, p) {\n return x.toPrecision(p);\n },\n // Octal notation, rounded to integer.\n o: function (x) {\n return Math.round(x).toString(8);\n },\n // Multiply by 100, round to significant digits, and then decimal notation with a percent sign.\n p: function (x, p) {\n return formatRounded$1(x * 100, p);\n },\n // Decimal notation, rounded to significant digits.\n r: formatRounded$1,\n // Decimal notation with a SI prefix, rounded to significant digits.\n s: formatPrefixAuto$1,\n // Hexadecimal notation, using upper-case letters, rounded to integer.\n X: function (x) {\n return Math.round(x).toString(16).toUpperCase();\n },\n // Hexadecimal notation, using lower-case letters, rounded to integer.\n x: function (x) {\n return Math.round(x).toString(16);\n }\n};\nvar prefixes$1 = ['y', 'z', 'a', 'f', 'p', 'n', '\\xB5', 'm', '', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y'];\n/**\n * [[fill]align][sign][#][0][width][grouping_option][.precision][type]\n */\nvar FormatSpecifier$1 = /** @class */function () {\n function FormatSpecifier(specifier) {\n if (specifier instanceof FormatSpecifier) {\n this.fill = specifier.fill;\n this.align = specifier.align;\n this.sign = specifier.sign;\n this.symbol = specifier.symbol;\n this.zero = specifier.zero;\n this.width = specifier.width;\n this.comma = specifier.comma;\n this.precision = specifier.precision;\n this.trim = specifier.trim;\n this.type = specifier.type;\n this.string = specifier.string;\n } else {\n this.fill = specifier.fill === undefined ? ' ' : String(specifier.fill);\n this.align = specifier.align === undefined ? '>' : String(specifier.align);\n this.sign = specifier.sign === undefined ? '-' : String(specifier.sign);\n this.symbol = specifier.symbol === undefined ? '' : String(specifier.symbol);\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? '' : String(specifier.type);\n this.string = specifier.string;\n }\n }\n return FormatSpecifier;\n}();\n// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar formatRegEx$1 = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\nvar interpolateRegEx$1 = /(#\\{(.*?)\\})/g;\nfunction makeFormatSpecifier$1(specifier) {\n if (specifier instanceof FormatSpecifier$1) {\n return new FormatSpecifier$1(specifier);\n }\n var found = false;\n var string = specifier.replace(interpolateRegEx$1, function () {\n if (!found) {\n specifier = arguments[2];\n found = true;\n }\n return '#{}';\n });\n var match = formatRegEx$1.exec(specifier);\n if (!match) {\n throw new Error(\"Invalid format: \" + specifier);\n }\n return new FormatSpecifier$1({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10],\n string: found ? string : undefined\n });\n}\nfunction tickFormat$1(start, stop, count, specifier) {\n var step = tickStep$1(start, stop, count);\n var formatSpecifier = makeFormatSpecifier$1(specifier == undefined ? ',f' : specifier);\n var precision;\n switch (formatSpecifier.type) {\n case 's':\n {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (formatSpecifier.precision == null) {\n precision = precisionPrefix$1(step, value);\n if (!isNaN(precision)) {\n formatSpecifier.precision = precision;\n }\n }\n return formatPrefix$1(formatSpecifier, value);\n }\n case '':\n case 'e':\n case 'g':\n case 'p':\n case 'r':\n {\n if (formatSpecifier.precision == null) {\n precision = precisionRound$1(step, Math.max(Math.abs(start), Math.abs(stop)));\n if (!isNaN(precision)) {\n formatSpecifier.precision = precision - +(formatSpecifier.type === 'e');\n }\n }\n break;\n }\n case 'f':\n case '%':\n {\n if (formatSpecifier.precision == null) {\n precision = precisionFixed$1(step);\n if (!isNaN(precision)) {\n formatSpecifier.precision = precision - +(formatSpecifier.type === '%') * 2;\n }\n }\n break;\n }\n }\n return format$1(formatSpecifier);\n}\nvar prefixExponent$1;\nfunction formatPrefixAuto$1(x, p) {\n if (p === void 0) {\n p = 0;\n }\n var d = formatDecimalParts$1(x, p);\n if (!d) {\n return String(x);\n }\n var coefficient = d[0];\n var exponent = d[1];\n prefixExponent$1 = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3;\n var i = exponent - prefixExponent$1 + 1;\n var n = coefficient.length;\n if (i === n) {\n return coefficient;\n } else if (i > n) {\n return coefficient + new Array(i - n + 1).join('0');\n } else if (i > 0) {\n return coefficient.slice(0, i) + '.' + coefficient.slice(i);\n } else {\n var parts = formatDecimalParts$1(x, Math.max(0, p + i - 1));\n return '0.' + new Array(1 - i).join('0') + parts[0]; // less than 1y!\n }\n}\nfunction formatDecimal$1(x) {\n x = Math.round(x);\n return Math.abs(x) >= 1e21 ? x.toLocaleString('en').replace(/,/g, '') : x.toString(10);\n}\nfunction formatGroup$1(grouping, thousands) {\n return function (value, width) {\n var t = [];\n var i = value.length;\n var j = 0;\n var g = grouping[0];\n var length = 0;\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) {\n g = Math.max(1, width - length);\n }\n i -= g;\n t.push(value.substring(i, i + g));\n if ((length += g + 1) > width) {\n break;\n }\n j = (j + 1) % grouping.length;\n g = grouping[j];\n }\n t.reverse();\n return t.join(thousands);\n };\n}\nfunction formatNumerals$1(numerals) {\n return function (value) {\n return value.replace(/\\d/g, function (i) {\n return numerals[+i];\n });\n };\n}\n// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nfunction formatTrim$1(s) {\n var i0 = -1,\n i1 = 0;\n var exit = false;\n for (var n = s.length, i = 1; !exit && i < n; ++i) {\n switch (s[i]) {\n case '.':\n i0 = i1 = i;\n break;\n case '0':\n if (i0 === 0) i0 = i;\n i1 = i;\n break;\n default:\n if (!+s[i]) {\n exit = true;\n break;\n }\n if (i0 > 0) i0 = 0;\n break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\nfunction formatRounded$1(x, p) {\n var d = formatDecimalParts$1(x, p);\n if (!d) {\n return String(x);\n }\n var coefficient = d[0];\n var exponent = d[1];\n if (exponent < 0) {\n return '0.' + new Array(-exponent).join('0') + coefficient;\n } else {\n if (coefficient.length > exponent + 1) {\n return coefficient.slice(0, exponent + 1) + '.' + coefficient.slice(exponent + 1);\n } else {\n return coefficient + new Array(exponent - coefficient.length + 2).join('0');\n }\n }\n}\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns ['123', 0].\nfunction formatDecimalParts$1(x, p) {\n var sx = p ? x.toExponential(p - 1) : x.toExponential();\n var i = sx.indexOf('e');\n if (i < 0) {\n // NaN, ±Infinity\n return undefined;\n }\n var coefficient = sx.slice(0, i);\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient, +sx.slice(i + 1)];\n}\nfunction identity$5(x) {\n return x;\n}\nvar formatDefaultLocale$1;\nvar format$1;\nvar formatPrefix$1;\ndefaultLocale$1({\n thousands: ',',\n grouping: [3],\n currency: ['$', '']\n});\nfunction defaultLocale$1(definition) {\n formatDefaultLocale$1 = formatLocale$3(definition);\n format$1 = formatDefaultLocale$1.format;\n formatPrefix$1 = formatDefaultLocale$1.formatPrefix;\n}\nfunction exponent$1(x) {\n var parts = formatDecimalParts$1(Math.abs(x));\n if (parts) {\n return parts[1];\n }\n return NaN;\n}\nfunction precisionFixed$1(step) {\n return Math.max(0, -exponent$1(Math.abs(step)));\n}\nfunction precisionPrefix$1(step, value) {\n var x = Math.floor(exponent$1(value) / 3);\n x = Math.min(8, x);\n x = Math.max(-8, x);\n return Math.max(0, x * 3 - exponent$1(Math.abs(step)));\n}\nfunction precisionRound$1(step, max) {\n step = Math.abs(step);\n max = Math.abs(max) - step;\n return Math.max(0, exponent$1(max) - exponent$1(step)) + 1;\n}\nfunction formatLocale$3(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity$5 : formatGroup$1(locale.grouping.map(Number), String(locale.thousands));\n var currencyPrefix = locale.currency === undefined ? '' : String(locale.currency[0]);\n var currencySuffix = locale.currency === undefined ? '' : String(locale.currency[1]);\n var decimal = locale.decimal === undefined ? '.' : String(locale.decimal);\n var numerals = locale.numerals === undefined ? identity$5 : formatNumerals$1(locale.numerals.map(String));\n var percent = locale.percent === undefined ? '%' : String(locale.percent);\n var minus = locale.minus === undefined ? '\\u2212' : String(locale.minus);\n var nan = locale.nan === undefined ? 'NaN' : String(locale.nan);\n function newFormat(specifier) {\n var formatSpecifier = makeFormatSpecifier$1(specifier);\n var fill = formatSpecifier.fill;\n var align = formatSpecifier.align;\n var sign = formatSpecifier.sign;\n var symbol = formatSpecifier.symbol;\n var zero = formatSpecifier.zero;\n var width = formatSpecifier.width;\n var comma = formatSpecifier.comma;\n var precision = formatSpecifier.precision;\n var trim = formatSpecifier.trim;\n var type = formatSpecifier.type;\n // The 'n' type is an alias for ',g'.\n if (type === 'n') {\n comma = true;\n type = 'g';\n } else if (!formatTypes$1[type]) {\n // The '' type, and any invalid type, is an alias for '.12~g'.\n if (precision === undefined) {\n precision = 12;\n }\n trim = true;\n type = 'g';\n }\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || fill === '0' && align === '=') {\n zero = true;\n fill = '0';\n align = '=';\n }\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === '$' ? currencyPrefix : symbol === '#' && /[boxX]/.test(type) ? '0' + type.toLowerCase() : '';\n var suffix = symbol === '$' ? currencySuffix : /[%p]/.test(type) ? percent : '';\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes$1[type];\n var maybeSuffix = /[defgprs%]/.test(type);\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n if (precision === undefined) {\n precision = 6;\n } else if (/[gprs]/.test(type)) {\n precision = Math.max(1, Math.min(21, precision));\n } else {\n precision = Math.max(0, Math.min(20, precision));\n }\n function format(x) {\n var valuePrefix = prefix;\n var valueSuffix = suffix;\n var value;\n if (type === 'c') {\n valueSuffix = formatType(+x) + valueSuffix;\n value = '';\n } else {\n var nx = +x;\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = x < 0 || 1 / nx < 0;\n // Perform the initial formatting.\n value = isNaN(nx) ? nan : formatType(Math.abs(nx), precision);\n // Trim insignificant zeros.\n if (trim) {\n value = formatTrim$1(value);\n }\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== '+') {\n valueNegative = false;\n }\n // Compute the prefix and suffix.\n var signPrefix = valueNegative ? sign === '(' ? sign : minus : sign === '-' || sign === '(' ? '' : sign;\n var signSuffix = valueNegative && sign === '(' ? ')' : '';\n valuePrefix = signPrefix + valuePrefix;\n valueSuffix = (type === 's' ? prefixes$1[8 + prefixExponent$1 / 3] : '') + valueSuffix + signSuffix;\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n for (var i = 0, n = value.length; i < n; i++) {\n var c = value.charCodeAt(i);\n if (48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n // If the fill character is not '0', grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length;\n var padding = length < width ? new Array(width - length + 1).join(fill) : '';\n // If the fill character is '0', grouping is applied after padding.\n if (comma && zero) {\n value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity);\n padding = '';\n }\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case '<':\n value = valuePrefix + value + valueSuffix + padding;\n break;\n case '=':\n value = valuePrefix + padding + value + valueSuffix;\n break;\n case '^':\n value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length);\n break;\n default:\n value = padding + valuePrefix + value + valueSuffix;\n break;\n }\n var string = formatSpecifier.string;\n if (string) {\n return string.replace(interpolateRegEx$1, function () {\n return numerals(value);\n });\n }\n return numerals(value);\n }\n return format;\n }\n function formatPrefix(specifier, value) {\n var formatSpecifier = makeFormatSpecifier$1(specifier);\n formatSpecifier.type = 'f';\n var f = newFormat(formatSpecifier);\n var e = Math.max(-8, Math.min(8, Math.floor(exponent$1(value) / 3))) * 3;\n var k = Math.pow(10, -e);\n var prefix = prefixes$1[8 + e / 3];\n return function (value) {\n return f(k * +value) + prefix;\n };\n }\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\nvar __extends$2K = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n/**\n * Maps continuous domain to a continuous range.\n */\nvar LinearScale$1 = /** @class */function (_super) {\n __extends$2K(LinearScale, _super);\n function LinearScale() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'linear';\n return _this;\n }\n LinearScale.prototype.ticks = function (count, offset) {\n if (count === void 0) {\n count = 10;\n }\n var d = this._domain;\n count = Math.max(0, count - (offset !== null && offset !== void 0 ? offset : 0));\n return ticks$1(d[0], d[d.length - 1], count);\n };\n /**\n * Extends the domain so that it starts and ends on nice round values.\n * @param count Tick count.\n */\n LinearScale.prototype.nice = function (count) {\n if (count === void 0) {\n count = 10;\n }\n var d = this.domain;\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var step;\n if (stop < start) {\n step = start;\n start = stop;\n stop = step;\n step = i0;\n i0 = i1;\n i1 = step;\n }\n step = tickIncrement$1(start, stop, count);\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement$1(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement$1(start, stop, count);\n }\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n this.domain = d;\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n this.domain = d;\n }\n };\n LinearScale.prototype.tickFormat = function (_a) {\n var count = _a.count,\n specifier = _a.specifier;\n var d = this.domain;\n return tickFormat$1(d[0], d[d.length - 1], count == undefined ? 10 : count, specifier);\n };\n return LinearScale;\n}(ContinuousScale$1);\nvar __values$v = undefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\n// Custom `Array.find` implementation for legacy browsers.\nfunction find(arr, predicate) {\n for (var i = 0; i < arr.length; i++) {\n var value = arr[i];\n if (predicate(value, i, arr)) {\n return value;\n }\n }\n}\nfunction identity$4(value) {\n return value;\n}\nfunction extent$1(values, predicate, map) {\n var transform = map || identity$4;\n var n = values.length;\n var i = -1;\n var value;\n var min;\n var max;\n while (++i < n) {\n // Find the first value.\n value = values[i];\n if (predicate(value)) {\n min = max = value;\n while (++i < n) {\n // Compare the remaining values.\n value = values[i];\n if (predicate(value)) {\n if (min > value) {\n min = value;\n }\n if (max < value) {\n max = value;\n }\n }\n }\n }\n }\n return min === undefined || max === undefined ? undefined : [transform(min), transform(max)];\n}\n/**\n * finds the min and max using a process appropriate for stacked values. Ie,\n * summing up the positive and negative numbers, and returning the totals of each\n */\nfunction findMinMax(values) {\n var e_1, _a;\n var min = undefined;\n var max = undefined;\n try {\n for (var values_1 = __values$v(values), values_1_1 = values_1.next(); !values_1_1.done; values_1_1 = values_1.next()) {\n var value = values_1_1.value;\n if (value < 0) {\n min = (min !== null && min !== void 0 ? min : 0) + value;\n } else if (value >= 0) {\n max = (max !== null && max !== void 0 ? max : 0) + value;\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (values_1_1 && !values_1_1.done && (_a = values_1.return)) _a.call(values_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n return {\n min: min,\n max: max\n };\n}\n\n// Simplified version of https://github.com/plotly/fast-isnumeric\n// that doesn't treat number strings with leading/trailing whitespace as numbers.\nfunction isNumber$1(value) {\n if (typeof value !== 'number') {\n return false;\n }\n return Number.isFinite(value);\n}\nfunction isNumberObject$1(value) {\n return !!value && value.hasOwnProperty('valueOf') && isNumber$1(value.valueOf());\n}\nfunction isNumeric$1(value) {\n return isNumber$1(value) || isNumberObject$1(value);\n}\nfunction isDate$1(value) {\n return value instanceof Date && !isNaN(+value);\n}\nfunction isString$1(value) {\n return typeof value === 'string';\n}\nfunction isStringObject$1(value) {\n return !!value && value.hasOwnProperty('toString') && isString$1(value.toString());\n}\nfunction isDiscrete(value) {\n return isString$1(value) || isStringObject$1(value);\n}\nfunction isContinuous$1(value) {\n return isNumeric$1(value) || isDate$1(value);\n}\nfunction checkDatum(value, isContinuousScale) {\n if (isContinuousScale && isContinuous$1(value)) {\n return value;\n } else if (!isContinuousScale) {\n if (!isDiscrete(value)) {\n return String(value);\n }\n return value;\n }\n return undefined;\n}\n\n// @ts-ignore Suppress tsc error: Property 'sign' does not exist on type 'Math'\nvar sign$1 = Math.sign ? Math.sign : function (x) {\n x = +x;\n if (x === 0 || isNaN(x)) {\n return x;\n }\n return x > 0 ? 1 : -1;\n};\n/**\n * Finds the roots of a parametric linear equation in `t`,\n * where `t` lies in the interval of `[0,1]`.\n */\nfunction linearRoot$1(a, b) {\n var t = -b / a;\n return a !== 0 && t >= 0 && t <= 1 ? [t] : [];\n}\n/**\n * Finds the roots of a parametric quadratic equation in `t`,\n * where `t` lies in the interval of `[0,1]`.\n */\nfunction quadraticRoots$1(a, b, c) {\n if (a === 0) {\n return linearRoot$1(b, c);\n }\n var D = b * b - 4 * a * c; // The polynomial's discriminant.\n var roots = [];\n if (D === 0) {\n // A single real root.\n var t = -b / (2 * a);\n if (t >= 0 && t <= 1) {\n roots.push(t);\n }\n } else if (D > 0) {\n // A pair of distinct real roots.\n var rD = Math.sqrt(D);\n var t1 = (-b - rD) / (2 * a);\n var t2 = (-b + rD) / (2 * a);\n if (t1 >= 0 && t1 <= 1) {\n roots.push(t1);\n }\n if (t2 >= 0 && t2 <= 1) {\n roots.push(t2);\n }\n }\n // else -> Complex roots.\n return roots;\n}\n/**\n * Finds the roots of a parametric cubic equation in `t`,\n * where `t` lies in the interval of `[0,1]`.\n * Returns an array of parametric intersection locations along the cubic,\n * excluding out-of-bounds intersections (before or after the end point\n * or in the imaginary plane).\n * An adaptation of http://www.particleincell.com/blog/2013/cubic-line-intersection/\n */\nfunction cubicRoots$1(a, b, c, d) {\n if (a === 0) {\n return quadraticRoots$1(b, c, d);\n }\n var A = b / a;\n var B = c / a;\n var C = d / a;\n var Q = (3 * B - A * A) / 9;\n var R = (9 * A * B - 27 * C - 2 * A * A * A) / 54;\n var D = Q * Q * Q + R * R; // The polynomial's discriminant.\n var third = 1 / 3;\n var roots = [];\n if (D >= 0) {\n // Complex or duplicate roots.\n var rD = Math.sqrt(D);\n var S = sign$1(R + rD) * Math.pow(Math.abs(R + rD), third);\n var T = sign$1(R - rD) * Math.pow(Math.abs(R - rD), third);\n var Im = Math.abs(Math.sqrt(3) * (S - T) / 2); // Complex part of the root pair.\n var t = -third * A + (S + T); // A real root.\n if (t >= 0 && t <= 1) {\n roots.push(t);\n }\n if (Im === 0) {\n var t_1 = -third * A - (S + T) / 2; // The real part of a complex root.\n if (t_1 >= 0 && t_1 <= 1) {\n roots.push(t_1);\n }\n }\n } else {\n // Distinct real roots.\n var theta = Math.acos(R / Math.sqrt(-Q * Q * Q));\n var thirdA = third * A;\n var twoSqrtQ = 2 * Math.sqrt(-Q);\n var t1 = twoSqrtQ * Math.cos(third * theta) - thirdA;\n var t2 = twoSqrtQ * Math.cos(third * (theta + 2 * Math.PI)) - thirdA;\n var t3 = twoSqrtQ * Math.cos(third * (theta + 4 * Math.PI)) - thirdA;\n if (t1 >= 0 && t1 <= 1) {\n roots.push(t1);\n }\n if (t2 >= 0 && t2 <= 1) {\n roots.push(t2);\n }\n if (t3 >= 0 && t3 <= 1) {\n roots.push(t3);\n }\n }\n return roots;\n}\nvar __values$u = undefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\n/**\n * Returns the intersection point for the given pair of line segments, or null,\n * if the segments are parallel or don't intersect.\n * Based on http://paulbourke.net/geometry/pointlineplane/\n */\nfunction segmentIntersection$1(ax1, ay1, ax2, ay2, bx1, by1, bx2, by2) {\n var d = (ax2 - ax1) * (by2 - by1) - (ay2 - ay1) * (bx2 - bx1);\n if (d === 0) {\n // The lines are parallel.\n return null;\n }\n var ua = ((bx2 - bx1) * (ay1 - by1) - (ax1 - bx1) * (by2 - by1)) / d;\n var ub = ((ax2 - ax1) * (ay1 - by1) - (ay2 - ay1) * (ax1 - bx1)) / d;\n if (ua >= 0 && ua <= 1 && ub >= 0 && ub <= 1) {\n return {\n x: ax1 + ua * (ax2 - ax1),\n y: ay1 + ua * (ay2 - ay1)\n };\n }\n return null; // The intersection point is outside either or both segments.\n}\n/**\n * Returns intersection points of the given cubic curve and the line segment.\n * Takes in x/y components of cubic control points and line segment start/end points\n * as parameters.\n */\nfunction cubicSegmentIntersections$1(px1, py1, px2, py2, px3, py3, px4, py4, x1, y1, x2, y2) {\n var e_1, _a;\n var intersections = [];\n // Find line equation coefficients.\n var A = y1 - y2;\n var B = x2 - x1;\n var C = x1 * (y2 - y1) - y1 * (x2 - x1);\n // Find cubic Bezier curve equation coefficients from control points.\n var bx = bezierCoefficients$1(px1, px2, px3, px4);\n var by = bezierCoefficients$1(py1, py2, py3, py4);\n var a = A * bx[0] + B * by[0]; // t^3\n var b = A * bx[1] + B * by[1]; // t^2\n var c = A * bx[2] + B * by[2]; // t\n var d = A * bx[3] + B * by[3] + C; // 1\n var roots = cubicRoots$1(a, b, c, d);\n try {\n // Verify that the roots are within bounds of the linear segment.\n for (var roots_1 = __values$u(roots), roots_1_1 = roots_1.next(); !roots_1_1.done; roots_1_1 = roots_1.next()) {\n var t = roots_1_1.value;\n var tt = t * t;\n var ttt = t * tt;\n // Find the cartesian plane coordinates for the parametric root `t`.\n var x = bx[0] * ttt + bx[1] * tt + bx[2] * t + bx[3];\n var y = by[0] * ttt + by[1] * tt + by[2] * t + by[3];\n // The parametric cubic roots we found are intersection points\n // with an infinite line, and so the x/y coordinates above are as well.\n // Make sure the x/y is also within the bounds of the given segment.\n var s = void 0;\n if (x1 !== x2) {\n s = (x - x1) / (x2 - x1);\n } else {\n // the line is vertical\n s = (y - y1) / (y2 - y1);\n }\n if (s >= 0 && s <= 1) {\n intersections.push({\n x: x,\n y: y\n });\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (roots_1_1 && !roots_1_1.done && (_a = roots_1.return)) _a.call(roots_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n return intersections;\n}\n/**\n * Returns the given coordinates vector multiplied by the coefficient matrix\n * of the parametric cubic Bézier equation.\n */\nfunction bezierCoefficients$1(P1, P2, P3, P4) {\n return [\n // Bézier expressed as matrix operations:\n -P1 + 3 * P2 - 3 * P3 + P4, 3 * P1 - 6 * P2 + 3 * P3, -3 * P1 + 3 * P2, P1];\n}\nvar __values$t = undefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar Path2D$1 = /** @class */function () {\n function Path2D() {\n // The methods of this class will likely be called many times per animation frame,\n // and any allocation can trigger a GC cycle during animation, so we attempt\n // to minimize the number of allocations.\n this.previousCommands = [];\n this.previousParams = [];\n this.previousClosedPath = false;\n this.commands = [];\n this.params = [];\n this._closedPath = false;\n }\n Path2D.prototype.isDirty = function () {\n if (this._closedPath !== this.previousClosedPath) {\n return true;\n }\n if (this.previousCommands.length !== this.commands.length) {\n return true;\n }\n if (this.previousParams.length !== this.params.length) {\n return true;\n }\n for (var i = 0; i < this.commands.length; i++) {\n if (this.commands[i] !== this.previousCommands[i]) {\n return true;\n }\n }\n for (var i = 0; i < this.params.length; i++) {\n if (this.params[i] !== this.previousParams[i]) {\n return true;\n }\n }\n return false;\n };\n Path2D.prototype.draw = function (ctx) {\n var e_1, _a;\n var commands = this.commands;\n var params = this.params;\n var j = 0;\n ctx.beginPath();\n try {\n for (var commands_1 = __values$t(commands), commands_1_1 = commands_1.next(); !commands_1_1.done; commands_1_1 = commands_1.next()) {\n var command = commands_1_1.value;\n switch (command) {\n case 'M':\n ctx.moveTo(params[j++], params[j++]);\n break;\n case 'L':\n ctx.lineTo(params[j++], params[j++]);\n break;\n case 'C':\n ctx.bezierCurveTo(params[j++], params[j++], params[j++], params[j++], params[j++], params[j++]);\n break;\n case 'Z':\n ctx.closePath();\n break;\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (commands_1_1 && !commands_1_1.done && (_a = commands_1.return)) _a.call(commands_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n if (commands.length === 0) {\n ctx.closePath();\n }\n };\n Path2D.prototype.moveTo = function (x, y) {\n if (this.xy) {\n this.xy[0] = x;\n this.xy[1] = y;\n } else {\n this.xy = [x, y];\n }\n this.commands.push('M');\n this.params.push(x, y);\n };\n Path2D.prototype.lineTo = function (x, y) {\n if (this.xy) {\n this.commands.push('L');\n this.params.push(x, y);\n this.xy[0] = x;\n this.xy[1] = y;\n } else {\n this.moveTo(x, y);\n }\n };\n Path2D.prototype.rect = function (x, y, width, height) {\n this.moveTo(x, y);\n this.lineTo(x + width, y);\n this.lineTo(x + width, y + height);\n this.lineTo(x, y + height);\n this.closePath();\n };\n /**\n * Adds an arc segment to the path definition.\n * https://www.w3.org/TR/SVG11/paths.html#PathDataEllipticalArcCommands\n * @param rx The major-axis radius.\n * @param ry The minor-axis radius.\n * @param rotation The x-axis rotation, expressed in radians.\n * @param fA The large arc flag. `1` to use angle > π.\n * @param fS The sweep flag. `1` for the arc that goes to `x`/`y` clockwise.\n * @param x2 The x coordinate to arc to.\n * @param y2 The y coordinate to arc to.\n */\n Path2D.prototype.arcTo = function (rx, ry, rotation, fA, fS, x2, y2) {\n // Convert from endpoint to center parametrization:\n // https://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes\n var xy = this.xy;\n if (!xy) {\n return;\n }\n if (rx < 0) {\n rx = -rx;\n }\n if (ry < 0) {\n ry = -ry;\n }\n var x1 = xy[0];\n var y1 = xy[1];\n var hdx = (x1 - x2) / 2;\n var hdy = (y1 - y2) / 2;\n var sinPhi = Math.sin(rotation);\n var cosPhi = Math.cos(rotation);\n var xp = cosPhi * hdx + sinPhi * hdy;\n var yp = -sinPhi * hdx + cosPhi * hdy;\n var ratX = xp / rx;\n var ratY = yp / ry;\n var lambda = ratX * ratX + ratY * ratY;\n var cx = (x1 + x2) / 2;\n var cy = (y1 + y2) / 2;\n var cpx = 0;\n var cpy = 0;\n if (lambda >= 1) {\n lambda = Math.sqrt(lambda);\n rx *= lambda;\n ry *= lambda;\n // me gives lambda == cpx == cpy == 0;\n } else {\n lambda = Math.sqrt(1 / lambda - 1);\n if (fA === fS) {\n lambda = -lambda;\n }\n cpx = lambda * rx * ratY;\n cpy = -lambda * ry * ratX;\n cx += cosPhi * cpx - sinPhi * cpy;\n cy += sinPhi * cpx + cosPhi * cpy;\n }\n var theta1 = Math.atan2((yp - cpy) / ry, (xp - cpx) / rx);\n var deltaTheta = Math.atan2((-yp - cpy) / ry, (-xp - cpx) / rx) - theta1;\n this.cubicArc(cx, cy, rx, ry, rotation, theta1, theta1 + deltaTheta, 1 - fS);\n };\n /**\n * Approximates an elliptical arc with up to four cubic Bézier curves.\n * @param commands The string array to write SVG command letters to.\n * @param params The number array to write SVG command parameters (cubic control points) to.\n * @param cx The x-axis coordinate for the ellipse's center.\n * @param cy The y-axis coordinate for the ellipse's center.\n * @param rx The ellipse's major-axis radius.\n * @param ry The ellipse's minor-axis radius.\n * @param phi The rotation for this ellipse, expressed in radians.\n * @param theta1 The starting angle, measured clockwise from the positive x-axis and expressed in radians.\n * @param theta2 The ending angle, measured clockwise from the positive x-axis and expressed in radians.\n * @param anticlockwise The arc control points are always placed clockwise from `theta1` to `theta2`,\n * even when `theta1 > theta2`, unless this flag is set to `1`.\n */\n Path2D.cubicArc = function (commands, params, cx, cy, rx, ry, phi, theta1, theta2, anticlockwise) {\n if (anticlockwise) {\n var temp = theta1;\n theta1 = theta2;\n theta2 = temp;\n }\n var start = params.length;\n // See https://pomax.github.io/bezierinfo/#circles_cubic\n // Arc of unit circle (start angle = 0, end angle <= π/2) in cubic Bézier coordinates:\n // S = [1, 0]\n // C1 = [1, f]\n // C2 = [cos(θ) + f * sin(θ), sin(θ) - f * cos(θ)]\n // E = [cos(θ), sin(θ)]\n // f = 4/3 * tan(θ/4)\n var f90 = 0.5522847498307935; // f for θ = π/2 is 4/3 * (Math.sqrt(2) - 1)\n var sinTheta1 = Math.sin(theta1);\n var cosTheta1 = Math.cos(theta1);\n var sinPhi = Math.sin(phi);\n var cosPhi = Math.cos(phi);\n var rightAngle = Math.PI / 2;\n // Since we know how to draw an arc of a unit circle with a cubic Bézier,\n // to draw an elliptical arc with arbitrary rotation and radii we:\n // 1) rotate the Bézier coordinates that represent a circular arc by θ\n // 2) scale the circular arc separately along the x/y axes, making it elliptical\n // 3) rotate elliptical arc by φ\n // |cos(φ) -sin(φ)| |sx 0| |cos(θ) -sin(θ)| -> |xx xy|\n // |sin(φ) cos(φ)| | 0 sy| |sin(θ) cos(θ)| -> |yx yy|\n var xx = cosPhi * cosTheta1 * rx - sinPhi * sinTheta1 * ry;\n var yx = sinPhi * cosTheta1 * rx + cosPhi * sinTheta1 * ry;\n var xy = -cosPhi * sinTheta1 * rx - sinPhi * cosTheta1 * ry;\n var yy = -sinPhi * sinTheta1 * rx + cosPhi * cosTheta1 * ry;\n // Always draw clockwise from θ1 to θ2.\n theta2 -= theta1;\n if (theta2 < 0) {\n theta2 += Math.PI * 2;\n }\n // Multiplying each point [x, y] by:\n // |xx xy cx| |x|\n // |yx yy cy| |y|\n // | 0 0 1| |1|\n commands.push('M');\n params.push(xx + cx, yx + cy);\n while (theta2 >= rightAngle) {\n theta2 -= rightAngle;\n commands.push('C');\n // Temp workaround for https://bugs.chromium.org/p/chromium/issues/detail?id=993330\n // Revert this commit when fixed ^^.\n var lastX = xy + cx;\n params.push(xx + xy * f90 + cx, yx + yy * f90 + cy, xx * f90 + xy + cx, yx * f90 + yy + cy, Math.abs(lastX) < 1e-8 ? 0 : lastX, yy + cy);\n // Prepend π/2 rotation matrix.\n // |xx xy| | 0 1| -> | xy -xx|\n // |yx yy| |-1 0| -> | yy -yx|\n // [xx, yx, xy, yy] = [xy, yy, -xx, -yx];\n // Compared to swapping with a temp variable, destructuring is:\n // - 10% faster in Chrome 70\n // - 99% slower in Firefox 63\n // Temp variable solution is 45% faster in FF than Chrome.\n // https://jsperf.com/multi-swap\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1165569\n var temp = xx;\n xx = xy;\n xy = -temp;\n temp = yx;\n yx = yy;\n yy = -temp;\n }\n if (theta2) {\n var f = 4 / 3 * Math.tan(theta2 / 4);\n var sinPhi2 = Math.sin(theta2);\n var cosPhi2 = Math.cos(theta2);\n var C2x = cosPhi2 + f * sinPhi2;\n var C2y = sinPhi2 - f * cosPhi2;\n commands.push('C');\n // Temp workaround for https://bugs.chromium.org/p/chromium/issues/detail?id=993330\n // Revert this commit when fixed ^^.\n var lastX = xx * cosPhi2 + xy * sinPhi2 + cx;\n params.push(xx + xy * f + cx, yx + yy * f + cy, xx * C2x + xy * C2y + cx, yx * C2x + yy * C2y + cy, Math.abs(lastX) < 1e-8 ? 0 : lastX, yx * cosPhi2 + yy * sinPhi2 + cy);\n }\n if (anticlockwise) {\n for (var i = start, j = params.length - 2; i < j; i += 2, j -= 2) {\n var temp = params[i];\n params[i] = params[j];\n params[j] = temp;\n temp = params[i + 1];\n params[i + 1] = params[j + 1];\n params[j + 1] = temp;\n }\n }\n };\n Path2D.prototype.cubicArc = function (cx, cy, rx, ry, phi, theta1, theta2, anticlockwise) {\n var commands = this.commands;\n var params = this.params;\n var start = commands.length;\n Path2D.cubicArc(commands, params, cx, cy, rx, ry, phi, theta1, theta2, anticlockwise);\n var x = params[params.length - 2];\n var y = params[params.length - 1];\n if (this.xy) {\n commands[start] = 'L';\n this.xy[0] = x;\n this.xy[1] = y;\n } else {\n this.xy = [x, y];\n }\n };\n /**\n * Returns the `[x, y]` coordinates of the curve at `t`.\n * @param points `(n + 1) * 2` control point coordinates for a Bézier curve of n-th order.\n * @param t\n */\n Path2D.prototype.deCasteljau = function (points, t) {\n var n = points.length;\n if (n < 2 || n % 2 === 1) {\n throw new Error('Fewer than two points or not an even count.');\n } else if (n === 2 || t === 0) {\n return points.slice(0, 2);\n } else if (t === 1) {\n return points.slice(-2);\n } else {\n var newPoints = [];\n var last = n - 2;\n for (var i = 0; i < last; i += 2) {\n newPoints.push((1 - t) * points[i] + t * points[i + 2],\n // x\n (1 - t) * points[i + 1] + t * points[i + 3] // y\n );\n }\n return this.deCasteljau(newPoints, t);\n }\n };\n /**\n * Approximates the given curve using `n` line segments.\n * @param points `(n + 1) * 2` control point coordinates for a Bézier curve of n-th order.\n * @param n\n */\n Path2D.prototype.approximateCurve = function (points, n) {\n var xy = this.deCasteljau(points, 0);\n this.moveTo(xy[0], xy[1]);\n var step = 1 / n;\n for (var t = step; t <= 1; t += step) {\n var xy_1 = this.deCasteljau(points, t);\n this.lineTo(xy_1[0], xy_1[1]);\n }\n };\n /**\n * Adds a quadratic curve segment to the path definition.\n * Note: the given quadratic segment is converted and stored as a cubic one.\n * @param cx x-component of the curve's control point\n * @param cy y-component of the curve's control point\n * @param x x-component of the end point\n * @param y y-component of the end point\n */\n Path2D.prototype.quadraticCurveTo = function (cx, cy, x, y) {\n if (!this.xy) {\n this.moveTo(cx, cy);\n }\n // See https://pomax.github.io/bezierinfo/#reordering\n this.cubicCurveTo((this.xy[0] + 2 * cx) / 3, (this.xy[1] + 2 * cy) / 3,\n // 1/3 start + 2/3 control\n (2 * cx + x) / 3, (2 * cy + y) / 3,\n // 2/3 control + 1/3 end\n x, y);\n };\n Path2D.prototype.cubicCurveTo = function (cx1, cy1, cx2, cy2, x, y) {\n if (!this.xy) {\n this.moveTo(cx1, cy1);\n }\n this.commands.push('C');\n this.params.push(cx1, cy1, cx2, cy2, x, y);\n this.xy[0] = x;\n this.xy[1] = y;\n };\n Object.defineProperty(Path2D.prototype, \"closedPath\", {\n get: function () {\n return this._closedPath;\n },\n enumerable: true,\n configurable: true\n });\n Path2D.prototype.closePath = function () {\n if (this.xy) {\n this.xy = undefined;\n this.commands.push('Z');\n this._closedPath = true;\n }\n };\n Path2D.prototype.clear = function (_a) {\n var trackChanges = (_a === void 0 ? {\n trackChanges: false\n } : _a).trackChanges;\n if (trackChanges) {\n this.previousCommands = this.commands;\n this.previousParams = this.params;\n this.previousClosedPath = this._closedPath;\n this.commands = [];\n this.params = [];\n } else {\n this.commands.length = 0;\n this.params.length = 0;\n }\n this.xy = undefined;\n this._closedPath = false;\n };\n Path2D.prototype.isPointInPath = function (x, y) {\n var commands = this.commands;\n var params = this.params;\n var cn = commands.length;\n // Hit testing using ray casting method, where the ray's origin is some point\n // outside the path. In this case, an offscreen point that is remote enough, so that\n // even if the path itself is large and is partially offscreen, the ray's origin\n // will likely be outside the path anyway. To test if the given point is inside the\n // path or not, we cast a ray from the origin to the given point and check the number\n // of intersections of this segment with the path. If the number of intersections is\n // even, then the ray both entered and exited the path an equal number of times,\n // therefore the point is outside the path, and inside the path, if the number of\n // intersections is odd. Since the path is compound, we check if the ray segment\n // intersects with each of the path's segments, which can be either a line segment\n // (one or no intersection points) or a Bézier curve segment (up to 3 intersection\n // points).\n var ox = -10000;\n var oy = -10000;\n // the starting point of the current path\n var sx = NaN;\n var sy = NaN;\n // the previous point of the current path\n var px = 0;\n var py = 0;\n var intersectionCount = 0;\n for (var ci = 0, pi = 0; ci < cn; ci++) {\n switch (commands[ci]) {\n case 'M':\n if (!isNaN(sx)) {\n if (segmentIntersection$1(sx, sy, px, py, ox, oy, x, y)) {\n intersectionCount++;\n }\n }\n px = params[pi++];\n sx = px;\n py = params[pi++];\n sy = py;\n break;\n case 'L':\n if (segmentIntersection$1(px, py, params[pi++], params[pi++], ox, oy, x, y)) {\n intersectionCount++;\n }\n px = params[pi - 2];\n py = params[pi - 1];\n break;\n case 'C':\n intersectionCount += cubicSegmentIntersections$1(px, py, params[pi++], params[pi++], params[pi++], params[pi++], params[pi++], params[pi++], ox, oy, x, y).length;\n px = params[pi - 2];\n py = params[pi - 1];\n break;\n case 'Z':\n if (!isNaN(sx)) {\n if (segmentIntersection$1(sx, sy, px, py, ox, oy, x, y)) {\n intersectionCount++;\n }\n }\n break;\n }\n }\n return intersectionCount % 2 === 1;\n };\n /**\n * Returns an array of sub-paths of this Path,\n * where each sub-path is represented exclusively by cubic segments.\n */\n Path2D.prototype.toCubicPaths = function () {\n // Each sub-path is an array of `(n * 3 + 1) * 2` numbers,\n // where `n` is the number of segments.\n var paths = [];\n var params = this.params;\n // current path\n var path;\n // the starting point of the current path\n var sx;\n var sy;\n // the previous point of the current path\n var px;\n var py;\n var i = 0; // current parameter\n this.commands.forEach(function (command) {\n switch (command) {\n case 'M':\n px = params[i++];\n py = params[i++];\n sx = px;\n sy = py;\n paths.push([sx, sy]);\n break;\n case 'L':\n var x = params[i++];\n var y = params[i++];\n // Place control points along the line `a + (b - a) * t`\n // at t = 1/3 and 2/3:\n path.push((px + px + x) / 3, (py + py + y) / 3, (px + x + x) / 3, (py + y + y) / 3, x, y);\n px = x;\n py = y;\n break;\n case 'C':\n path.push(params[i++], params[i++], params[i++], params[i++], params[i++], params[i++]);\n px = params[i - 2];\n py = params[i - 1];\n break;\n case 'Z':\n path.push((px + px + sx) / 3, (py + py + sy) / 3, (px + sx + sx) / 3, (py + sy + sy) / 3, sx, sy);\n px = sx;\n py = sy;\n break;\n }\n });\n return paths;\n };\n Path2D.cubicPathToString = function (path) {\n var n = path.length;\n if (!(n % 2 === 0 && (n / 2 - 1) / 2 >= 1)) {\n throw new Error('Invalid path.');\n }\n return 'M' + path.slice(0, 2).join(',') + 'C' + path.slice(2).join(',');\n };\n return Path2D;\n}();\nvar __extends$2J = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign$B = undefined && undefined.__assign || function () {\n __assign$B = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$B.apply(this, arguments);\n};\nvar __decorate$1F = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __values$s = undefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$I = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread$p = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$I(arguments[i]));\n return ar;\n};\nvar Group$1 = /** @class */function (_super) {\n __extends$2J(Group, _super);\n function Group(opts) {\n var _a, _b;\n var _this = _super.call(this) || this;\n _this.opts = opts;\n _this.clipPath = new Path2D$1();\n _this.opacity = 1;\n _this.lastBBox = undefined;\n var _c = opts || {},\n zIndex = _c.zIndex,\n zIndexSubOrder = _c.zIndexSubOrder;\n _this.isContainerNode = true;\n if (zIndex !== undefined) {\n _this.zIndex = zIndex;\n }\n if (zIndexSubOrder !== undefined) {\n _this.zIndexSubOrder = zIndexSubOrder;\n }\n if ((_a = _this.opts) === null || _a === void 0 ? void 0 : _a.optimiseDirtyTracking) {\n _this.visibleChildren = {};\n _this.dirtyChildren = {};\n }\n _this.name = (_b = _this.opts) === null || _b === void 0 ? void 0 : _b.name;\n return _this;\n }\n Group.prototype.opacityChanged = function () {\n if (this.layer) {\n this.layer.opacity = this.opacity;\n }\n };\n Group.prototype.zIndexChanged = function () {\n var _a;\n if (this.layer) {\n (_a = this._scene) === null || _a === void 0 ? void 0 : _a.moveLayer(this.layer, this.zIndex, this.zIndexSubOrder);\n }\n };\n Group.prototype.isLayer = function () {\n return this.layer != null;\n };\n Group.prototype.append = function (nodes) {\n var e_1, _a;\n _super.prototype.append.call(this, nodes);\n if (this.dirtyChildren) {\n nodes = nodes instanceof Array ? nodes : [nodes];\n try {\n for (var nodes_1 = __values$s(nodes), nodes_1_1 = nodes_1.next(); !nodes_1_1.done; nodes_1_1 = nodes_1.next()) {\n var node = nodes_1_1.value;\n this.dirtyChildren[node.id] = node;\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (nodes_1_1 && !nodes_1_1.done && (_a = nodes_1.return)) _a.call(nodes_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n }\n };\n Group.prototype._setScene = function (scene) {\n var _a;\n if (this._scene && this.layer) {\n this._scene.removeLayer(this.layer);\n this.layer = undefined;\n }\n if (this.layer) {\n throw new Error('AG Charts - unable to deregister scene rendering layer!');\n }\n _super.prototype._setScene.call(this, scene);\n if (scene && ((_a = this.opts) === null || _a === void 0 ? void 0 : _a.layer)) {\n var _b = this.opts || {},\n zIndex = _b.zIndex,\n zIndexSubOrder = _b.zIndexSubOrder,\n name_1 = _b.name;\n this.layer = scene.addLayer({\n zIndex: zIndex,\n zIndexSubOrder: zIndexSubOrder,\n name: name_1\n });\n }\n };\n Group.prototype.visibilityChanged = function () {\n if (this.layer) {\n this.layer.enabled = this.visible;\n }\n };\n Group.prototype.removeChild = function (node) {\n _super.prototype.removeChild.call(this, node);\n if (this.dirtyChildren && this.visibleChildren) {\n delete this.dirtyChildren[node.id];\n delete this.visibleChildren[node.id];\n }\n return node;\n };\n Group.prototype.markDirty = function (source, type) {\n if (type === void 0) {\n type = RedrawType.TRIVIAL;\n }\n var parentType = type <= RedrawType.MINOR ? RedrawType.TRIVIAL : type;\n _super.prototype.markDirty.call(this, source, type, parentType);\n if (source !== this && this.dirtyChildren) {\n this.dirtyChildren[source.id] = source;\n }\n };\n Group.prototype.markClean = function (opts) {\n var e_2, _a;\n // Ensure we update visibility tracking before blowing away dirty flags.\n this.syncChildVisibility();\n var _b = this.dirtyChildren,\n dirtyChildren = _b === void 0 ? {} : _b;\n try {\n for (var _c = __values$s(Object.keys(dirtyChildren)), _d = _c.next(); !_d.done; _d = _c.next()) {\n var key = _d.value;\n delete dirtyChildren[key];\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n _super.prototype.markClean.call(this, opts);\n };\n // We consider a group to be boundless, thus any point belongs to it.\n Group.prototype.containsPoint = function (_x, _y) {\n return true;\n };\n Group.prototype.computeBBox = function () {\n var left = Infinity;\n var right = -Infinity;\n var top = Infinity;\n var bottom = -Infinity;\n this.computeTransformMatrix();\n this.children.forEach(function (child) {\n if (!child.visible) {\n return;\n }\n var bbox = child.computeTransformedBBox();\n if (!bbox) {\n return;\n }\n var x = bbox.x;\n var y = bbox.y;\n if (x < left) {\n left = x;\n }\n if (y < top) {\n top = y;\n }\n if (x + bbox.width > right) {\n right = x + bbox.width;\n }\n if (y + bbox.height > bottom) {\n bottom = y + bbox.height;\n }\n });\n return new BBox$1(left, top, right - left, bottom - top);\n };\n Group.prototype.computeTransformedBBox = function () {\n return this.computeBBox();\n };\n Group.prototype.render = function (renderCtx) {\n var _a;\n if (this.layer && ((_a = this.opts) === null || _a === void 0 ? void 0 : _a.optimiseDirtyTracking)) {\n this.optimisedRender(renderCtx);\n return;\n }\n this.basicRender(renderCtx);\n };\n Group.prototype.basicRender = function (renderCtx) {\n var e_3, _a;\n var _b = this.opts,\n _c = (_b === void 0 ? {} : _b).name,\n name = _c === void 0 ? undefined : _c;\n var _d = this._debug,\n _e = (_d === void 0 ? {} : _d).consoleLog,\n consoleLog = _e === void 0 ? false : _e;\n var _f = this,\n dirty = _f.dirty,\n dirtyZIndex = _f.dirtyZIndex,\n clipPath = _f.clipPath,\n layer = _f.layer,\n children = _f.children;\n var ctx = renderCtx.ctx,\n forceRender = renderCtx.forceRender,\n clipBBox = renderCtx.clipBBox,\n resized = renderCtx.resized,\n stats = renderCtx.stats;\n var isDirty = dirty >= RedrawType.MINOR || dirtyZIndex || resized;\n var isChildDirty = isDirty || children.some(function (n) {\n return n.dirty >= RedrawType.TRIVIAL;\n });\n if (name && consoleLog) {\n console.log({\n name: name,\n group: this,\n isDirty: isDirty,\n isChildDirty: isChildDirty,\n renderCtx: renderCtx,\n forceRender: forceRender\n });\n }\n if (layer) {\n // By default there is no need to force redraw a group which has it's own canvas layer\n // as the layer is independent of any other layer.\n forceRender = false;\n // If bounding-box of a layer changes, force re-render.\n var currentBBox = this.computeBBox();\n if (this.lastBBox === undefined || !this.lastBBox.equals(currentBBox)) {\n forceRender = true;\n this.lastBBox = currentBBox;\n }\n }\n if (!isDirty && !isChildDirty && !forceRender) {\n if (name && consoleLog && stats) {\n var counts = this.nodeCount;\n console.log({\n name: name,\n result: 'skipping',\n renderCtx: renderCtx,\n counts: counts,\n group: this\n });\n }\n if (layer && stats) {\n stats.layersSkipped++;\n stats.nodesSkipped += this.nodeCount.count;\n }\n _super.prototype.markClean.call(this, {\n recursive: false\n });\n // Nothing to do.\n return;\n }\n var groupVisible = this.visible;\n if (layer) {\n // Switch context to the canvas layer we use for this group.\n ctx = layer.context;\n ctx.save();\n ctx.setTransform(renderCtx.ctx.getTransform());\n forceRender = true;\n layer.clear();\n if (clipBBox) {\n var width = clipBBox.width,\n height = clipBBox.height,\n x = clipBBox.x,\n y = clipBBox.y;\n if (consoleLog) {\n console.log({\n name: name,\n clipBBox: clipBBox,\n ctxTransform: ctx.getTransform(),\n renderCtx: renderCtx,\n group: this\n });\n }\n clipPath.clear();\n clipPath.rect(x, y, width, height);\n clipPath.draw(ctx);\n ctx.clip();\n }\n } else {\n // Only apply opacity if this isn't a distinct layer - opacity will be applied\n // at composition time.\n ctx.globalAlpha *= this.opacity;\n }\n // A group can have `scaling`, `rotation`, `translation` properties\n // that are applied to the canvas context before children are rendered,\n // so all children can be transformed at once.\n this.computeTransformMatrix();\n this.matrix.toContext(ctx);\n clipBBox = clipBBox ? this.matrix.inverse().transformBBox(clipBBox) : undefined;\n if (dirtyZIndex) {\n this.sortChildren();\n forceRender = true;\n }\n // Reduce churn if renderCtx is identical.\n var renderContextChanged = forceRender !== renderCtx.forceRender || clipBBox !== renderCtx.clipBBox || ctx !== renderCtx.ctx;\n var childRenderContext = renderContextChanged ? __assign$B(__assign$B({}, renderCtx), {\n ctx: ctx,\n forceRender: forceRender,\n clipBBox: clipBBox\n }) : renderCtx;\n // Render visible children.\n var skipped = 0;\n try {\n for (var children_1 = __values$s(children), children_1_1 = children_1.next(); !children_1_1.done; children_1_1 = children_1.next()) {\n var child = children_1_1.value;\n if (!child.visible || !groupVisible) {\n // Skip invisible children, but make sure their dirty flag is reset.\n child.markClean();\n if (stats) skipped += child.nodeCount.count;\n continue;\n }\n if (!forceRender && child.dirty === RedrawType.NONE) {\n // Skip children that don't need to be redrawn.\n if (stats) skipped += child.nodeCount.count;\n continue;\n }\n // Render marks this node (and children) as clean - no need to explicitly markClean().\n ctx.save();\n child.render(childRenderContext);\n ctx.restore();\n }\n } catch (e_3_1) {\n e_3 = {\n error: e_3_1\n };\n } finally {\n try {\n if (children_1_1 && !children_1_1.done && (_a = children_1.return)) _a.call(children_1);\n } finally {\n if (e_3) throw e_3.error;\n }\n }\n if (stats) stats.nodesSkipped += skipped;\n // Render marks this node as clean - no need to explicitly markClean().\n _super.prototype.render.call(this, renderCtx);\n if (layer) {\n if (stats) stats.layersRendered++;\n ctx.restore();\n layer.snapshot();\n }\n if (name && consoleLog && stats) {\n var counts = this.nodeCount;\n console.log({\n name: name,\n result: 'rendered',\n skipped: skipped,\n renderCtx: renderCtx,\n counts: counts,\n group: this\n });\n }\n };\n Group.prototype.optimisedRender = function (renderCtx) {\n var e_4, _a, e_5, _b;\n var _c = this._debug,\n _d = (_c === void 0 ? {} : _c).consoleLog,\n consoleLog = _d === void 0 ? false : _d;\n var _e = this,\n name = _e.name,\n dirty = _e.dirty,\n dirtyZIndex = _e.dirtyZIndex,\n clipPath = _e.clipPath,\n layer = _e.layer,\n _f = _e.dirtyChildren,\n dirtyChildren = _f === void 0 ? {} : _f,\n _g = _e.visibleChildren,\n visibleChildren = _g === void 0 ? {} : _g,\n groupVisible = _e.visible;\n var ctx = renderCtx.ctx,\n clipBBox = renderCtx.clipBBox,\n resized = renderCtx.resized,\n stats = renderCtx.stats;\n if (!layer) {\n return;\n }\n var isDirty = dirty >= RedrawType.MINOR || dirtyZIndex || resized;\n var isChildDirty = Object.keys(dirtyChildren).length > 0;\n if (name && consoleLog) {\n console.log({\n name: name,\n group: this,\n isDirty: isDirty,\n isChildDirty: isChildDirty,\n renderCtx: renderCtx\n });\n }\n if (!isDirty && !isChildDirty) {\n if (name && consoleLog && stats) {\n var counts = this.nodeCount;\n console.log({\n name: name,\n result: 'skipping',\n renderCtx: renderCtx,\n counts: counts,\n group: this\n });\n }\n if (stats) {\n stats.layersSkipped++;\n stats.nodesSkipped += this.nodeCount.count;\n }\n _super.prototype.markClean.call(this, {\n recursive: false\n });\n // Nothing to do.\n return;\n }\n // Switch context to the canvas layer we use for this group.\n ctx = layer.context;\n ctx.save();\n ctx.setTransform(renderCtx.ctx.getTransform());\n layer.clear();\n if (clipBBox) {\n var width = clipBBox.width,\n height = clipBBox.height,\n x = clipBBox.x,\n y = clipBBox.y;\n if (consoleLog) {\n console.log({\n name: name,\n clipBBox: clipBBox,\n ctxTransform: ctx.getTransform(),\n renderCtx: renderCtx,\n group: this\n });\n }\n clipPath.clear();\n clipPath.rect(x, y, width, height);\n clipPath.draw(ctx);\n ctx.clip();\n }\n this.syncChildVisibility();\n // A group can have `scaling`, `rotation`, `translation` properties\n // that are applied to the canvas context before children are rendered,\n // so all children can be transformed at once.\n this.computeTransformMatrix();\n this.matrix.toContext(ctx);\n clipBBox = clipBBox ? this.matrix.inverse().transformBBox(clipBBox) : undefined;\n if (dirtyZIndex) {\n this.sortChildren();\n }\n // Reduce churn if renderCtx is identical.\n var renderContextChanged = renderCtx.forceRender !== true || clipBBox !== renderCtx.clipBBox || ctx !== renderCtx.ctx;\n var childRenderContext = renderContextChanged ? __assign$B(__assign$B({}, renderCtx), {\n ctx: ctx,\n forceRender: true,\n clipBBox: clipBBox\n }) : renderCtx;\n if (consoleLog) {\n console.log({\n name: name,\n visibleChildren: visibleChildren,\n dirtyChildren: dirtyChildren\n });\n }\n var skipped = 0;\n if (groupVisible) {\n try {\n for (var _h = __values$s(Object.values(visibleChildren)), _j = _h.next(); !_j.done; _j = _h.next()) {\n var child = _j.value;\n ctx.save();\n child.render(childRenderContext);\n ctx.restore();\n }\n } catch (e_4_1) {\n e_4 = {\n error: e_4_1\n };\n } finally {\n try {\n if (_j && !_j.done && (_a = _h.return)) _a.call(_h);\n } finally {\n if (e_4) throw e_4.error;\n }\n }\n }\n this.markClean({\n recursive: false\n });\n try {\n for (var _k = __values$s(Object.values(dirtyChildren)), _l = _k.next(); !_l.done; _l = _k.next()) {\n var child = _l.value;\n child.markClean();\n delete dirtyChildren[child.id];\n }\n } catch (e_5_1) {\n e_5 = {\n error: e_5_1\n };\n } finally {\n try {\n if (_l && !_l.done && (_b = _k.return)) _b.call(_k);\n } finally {\n if (e_5) throw e_5.error;\n }\n }\n if (stats) stats.nodesSkipped += skipped;\n if (stats) stats.layersRendered++;\n ctx.restore();\n layer.snapshot();\n if (name && consoleLog && stats) {\n var counts = this.nodeCount;\n console.log({\n name: name,\n result: 'rendered',\n skipped: skipped,\n renderCtx: renderCtx,\n counts: counts,\n group: this\n });\n }\n };\n Group.prototype.syncChildVisibility = function () {\n var e_6, _a;\n var _b = this,\n dirtyChildren = _b.dirtyChildren,\n visibleChildren = _b.visibleChildren;\n if (!dirtyChildren || !visibleChildren) {\n return;\n }\n try {\n for (var _c = __values$s(Object.values(dirtyChildren)), _d = _c.next(); !_d.done; _d = _c.next()) {\n var child = _d.value;\n if (!child.visible && visibleChildren[child.id]) {\n delete visibleChildren[child.id];\n } else if (child.visible && !visibleChildren[child.id]) {\n visibleChildren[child.id] = child;\n }\n }\n } catch (e_6_1) {\n e_6 = {\n error: e_6_1\n };\n } finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n } finally {\n if (e_6) throw e_6.error;\n }\n }\n };\n Group.prototype.sortChildren = function () {\n this.dirtyZIndex = false;\n this.children.sort(function (a, b) {\n var _a, _b;\n return compoundAscending(__spread$p([a.zIndex], (_a = a.zIndexSubOrder, _a !== null && _a !== void 0 ? _a : [undefined, undefined]), [a.serialNumber]), __spread$p([b.zIndex], (_b = b.zIndexSubOrder, _b !== null && _b !== void 0 ? _b : [undefined, undefined]), [b.serialNumber]), ascendingStringNumberUndefined);\n });\n };\n Group.className = 'Group';\n __decorate$1F([SceneChangeDetection({\n convertor: function (v) {\n return Math.min(1, Math.max(0, v));\n },\n changeCb: function (o) {\n return o.opacityChanged();\n }\n })], Group.prototype, \"opacity\", void 0);\n return Group;\n}(Node$1);\nvar __values$r = undefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar EnterNode$1 = /** @class */function () {\n function EnterNode(parent, datum) {\n this.next = null;\n this.scene = parent.scene;\n this.parent = parent;\n this.datum = datum;\n }\n EnterNode.prototype.appendChild = function (node) {\n // This doesn't work without the `strict: true` in the `tsconfig.json`,\n // so we must have two `if` checks below, instead of this single one.\n // if (this.next && !Node.isNode(this.next)) {\n // throw new Error(`${this.next} is not a Node.`);\n // }\n if (this.next === null) {\n return this.parent.insertBefore(node, null);\n }\n if (!Node$1.isNode(this.next)) {\n throw new Error(this.next + \" is not a Node.\");\n }\n return this.parent.insertBefore(node, this.next);\n };\n EnterNode.prototype.insertBefore = function (node, nextNode) {\n return this.parent.insertBefore(node, nextNode);\n };\n return EnterNode;\n}();\n/**\n * G - type of the selected node(s).\n * GDatum - type of the datum of the selected node(s).\n * P - type of the parent node(s).\n * PDatum - type of the datum of the parent node(s).\n */\nvar Selection$1 = /** @class */function () {\n function Selection(groups, parents) {\n this.groups = groups;\n this.parents = parents;\n }\n Selection.select = function (node) {\n return new Selection([[typeof node === 'function' ? node() : node]], [undefined]);\n };\n Selection.selectAll = function (nodes) {\n return new Selection([nodes == null ? [] : nodes], [undefined]);\n };\n /**\n * Creates new nodes, appends them to the nodes of this selection and returns them\n * as a new selection. The created nodes inherit the datums and the parents of the nodes\n * they replace.\n * @param Class The constructor function to use to create the new nodes.\n */\n Selection.prototype.append = function (Class) {\n return this.select(function (node) {\n return node.appendChild(new Class());\n });\n };\n /**\n * Runs the given selector that returns a single node for every node in each group.\n * The original nodes are then replaced by the nodes returned by the selector\n * and returned as a new selection.\n * The selected nodes inherit the datums and the parents of the original nodes.\n */\n Selection.prototype.select = function (selector) {\n var groups = this.groups;\n var numGroups = groups.length;\n var subgroups = [];\n for (var j = 0; j < numGroups; j++) {\n var group = groups[j];\n var groupSize = group.length;\n var subgroup = subgroups[j] = new Array(groupSize);\n for (var i = 0; i < groupSize; i++) {\n var node = group[i];\n if (node) {\n var subnode = selector(node, node.datum, i, group);\n if (subnode) {\n subnode.datum = node.datum;\n }\n subgroup[i] = subnode;\n }\n // else this can be a group of the `enter` selection,\n // for example, with no nodes at the i-th position,\n // only nodes at the end of the group\n }\n }\n return new Selection(subgroups, this.parents);\n };\n /**\n * Same as {@link select}, but uses the given {@param Class} (constructor) as a selector.\n * @param Class The constructor function to use to find matching nodes.\n */\n Selection.prototype.selectByClass = function (Class) {\n return this.select(function (node) {\n if (Node$1.isNode(node)) {\n var children = node.children;\n var n = children.length;\n for (var i = 0; i < n; i++) {\n var child = children[i];\n if (child instanceof Class) {\n return child;\n }\n }\n }\n });\n };\n Selection.prototype.selectByTag = function (tag) {\n return this.select(function (node) {\n if (Node$1.isNode(node)) {\n var children = node.children;\n var n = children.length;\n for (var i = 0; i < n; i++) {\n var child = children[i];\n if (child.tag === tag) {\n return child;\n }\n }\n }\n });\n };\n Selection.prototype.selectAllByClass = function (Class) {\n return this.selectAll(function (node) {\n var nodes = [];\n if (Node$1.isNode(node)) {\n var children = node.children;\n var n = children.length;\n for (var i = 0; i < n; i++) {\n var child = children[i];\n if (child instanceof Class) {\n nodes.push(child);\n }\n }\n }\n return nodes;\n });\n };\n Selection.prototype.selectAllByTag = function (tag) {\n return this.selectAll(function (node) {\n var nodes = [];\n if (Node$1.isNode(node)) {\n var children = node.children;\n var n = children.length;\n for (var i = 0; i < n; i++) {\n var child = children[i];\n if (child.tag === tag) {\n nodes.push(child);\n }\n }\n }\n return nodes;\n });\n };\n Selection.prototype.selectNone = function () {\n return [];\n };\n /**\n * Runs the given selector that returns a group of nodes for every node in each group.\n * The original nodes are then replaced by the groups of nodes returned by the selector\n * and returned as a new selection. The original nodes become the parent nodes for each\n * group in the new selection. The selected nodes do not inherit the datums of the original nodes.\n * If called without any parameters, creates a new selection with an empty group for each\n * node in this selection.\n */\n Selection.prototype.selectAll = function (selectorAll) {\n if (!selectorAll) {\n selectorAll = this.selectNone;\n }\n // Each subgroup is populated with the selector (run on each group node) results.\n var subgroups = [];\n // In the new selection that we return, subgroups become groups,\n // and group nodes become parents.\n var parents = [];\n var groups = this.groups;\n var groupCount = groups.length;\n for (var j = 0; j < groupCount; j++) {\n var group = groups[j];\n var groupLength = group.length;\n for (var i = 0; i < groupLength; i++) {\n var node = group[i];\n if (node) {\n subgroups.push(selectorAll(node, node.datum, i, group));\n parents.push(node);\n }\n }\n }\n return new Selection(subgroups, parents);\n };\n /**\n * Runs the given callback for every node in this selection and returns this selection.\n * @param cb\n */\n Selection.prototype.each = function (cb) {\n var e_1, _a, e_2, _b;\n try {\n for (var _c = __values$r(this.groups), _d = _c.next(); !_d.done; _d = _c.next()) {\n var group = _d.value;\n var i = 0;\n try {\n for (var group_1 = (e_2 = void 0, __values$r(group)), group_1_1 = group_1.next(); !group_1_1.done; group_1_1 = group_1.next()) {\n var node = group_1_1.value;\n if (node) {\n cb(node, node.datum, i, group);\n }\n i++;\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (group_1_1 && !group_1_1.done && (_b = group_1.return)) _b.call(group_1);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n return this;\n };\n Selection.prototype.remove = function () {\n return this.each(function (node) {\n if (Node$1.isNode(node)) {\n var parent_1 = node.parent;\n if (parent_1) {\n parent_1.removeChild(node);\n }\n }\n });\n };\n Selection.prototype.merge = function (other) {\n var groups0 = this.groups;\n var groups1 = other.groups;\n var m0 = groups0.length;\n var m1 = groups1.length;\n var m = Math.min(m0, m1);\n var merges = new Array(m0);\n var j = 0;\n for (; j < m; j++) {\n var group0 = groups0[j];\n var group1 = groups1[j];\n var n = group0.length;\n var merge = merges[j] = new Array(n);\n for (var i = 0; i < n; i++) {\n var node = group0[i] || group1[i];\n merge[i] = node || undefined;\n }\n }\n for (; j < m0; j++) {\n merges[j] = groups0[j];\n }\n return new Selection(merges, this.parents);\n };\n /**\n * Return the first non-null element in this selection.\n * If the selection is empty, returns null.\n */\n Selection.prototype.node = function () {\n var groups = this.groups;\n var numGroups = groups.length;\n for (var j = 0; j < numGroups; j++) {\n var group = groups[j];\n var groupSize = group.length;\n for (var i = 0; i < groupSize; i++) {\n var node = group[i];\n if (node) {\n return node;\n }\n }\n }\n return null;\n };\n Selection.prototype.attr = function (name, value) {\n this.each(function (node) {\n node[name] = value;\n });\n return this;\n };\n Selection.prototype.attrFn = function (name, value) {\n this.each(function (node, datum, index, group) {\n node[name] = value(node, datum, index, group);\n });\n return this;\n };\n /**\n * Invokes the given function once, passing in this selection.\n * Returns this selection. Facilitates method chaining.\n * @param cb\n */\n Selection.prototype.call = function (cb) {\n cb(this);\n return this;\n };\n Object.defineProperty(Selection.prototype, \"size\", {\n /**\n * Returns the total number of nodes in this selection.\n */\n get: function () {\n var e_3, _a, e_4, _b;\n var size = 0;\n try {\n for (var _c = __values$r(this.groups), _d = _c.next(); !_d.done; _d = _c.next()) {\n var group = _d.value;\n try {\n for (var group_2 = (e_4 = void 0, __values$r(group)), group_2_1 = group_2.next(); !group_2_1.done; group_2_1 = group_2.next()) {\n var node = group_2_1.value;\n if (node) {\n size++;\n }\n }\n } catch (e_4_1) {\n e_4 = {\n error: e_4_1\n };\n } finally {\n try {\n if (group_2_1 && !group_2_1.done && (_b = group_2.return)) _b.call(group_2);\n } finally {\n if (e_4) throw e_4.error;\n }\n }\n }\n } catch (e_3_1) {\n e_3 = {\n error: e_3_1\n };\n } finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n } finally {\n if (e_3) throw e_3.error;\n }\n }\n return size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Selection.prototype, \"data\", {\n /**\n * Returns the array of data for the selected elements.\n */\n get: function () {\n var e_5, _a, e_6, _b;\n var data = new Array(this.size);\n var i = 0;\n try {\n for (var _c = __values$r(this.groups), _d = _c.next(); !_d.done; _d = _c.next()) {\n var group = _d.value;\n try {\n for (var group_3 = (e_6 = void 0, __values$r(group)), group_3_1 = group_3.next(); !group_3_1.done; group_3_1 = group_3.next()) {\n var node = group_3_1.value;\n if (node) {\n data[i++] = node.datum;\n }\n }\n } catch (e_6_1) {\n e_6 = {\n error: e_6_1\n };\n } finally {\n try {\n if (group_3_1 && !group_3_1.done && (_b = group_3.return)) _b.call(group_3);\n } finally {\n if (e_6) throw e_6.error;\n }\n }\n }\n } catch (e_5_1) {\n e_5 = {\n error: e_5_1\n };\n } finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n } finally {\n if (e_5) throw e_5.error;\n }\n }\n return data;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Selection.prototype, \"enter\", {\n get: function () {\n return new Selection(this.enterGroups ? this.enterGroups : [[]], this.parents);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Selection.prototype, \"exit\", {\n get: function () {\n return new Selection(this.exitGroups ? this.exitGroups : [[]], this.parents);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Binds the given value to each selected node and returns this selection\n * with its {@link GDatum} type changed to the type of the given value.\n * This method doesn't compute a join and doesn't affect indexes or the enter and exit selections.\n * This method can also be used to clear bound data.\n * @param value\n */\n Selection.prototype.setDatum = function (value) {\n return this.each(function (node) {\n node.datum = value;\n });\n };\n Object.defineProperty(Selection.prototype, \"datum\", {\n /**\n * Returns the bound datum for the first non-null element in the selection.\n * This is generally useful only if you know the selection contains exactly one element.\n */\n get: function () {\n var node = this.node();\n return node ? node.datum : null;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Binds the specified array of values with the selected nodes, returning a new selection\n * that represents the _update_ selection: the nodes successfully bound to the values.\n * Also defines the {@link enter} and {@link exit} selections on the returned selection,\n * which can be used to add or remove the nodes to correspond to the new data.\n * The `values` is an array of values of a particular type, or a function that returns\n * an array of values for each group.\n * When values are assigned to the nodes, they are stored in the {@link Node.datum} property.\n * @param values\n * @param key\n */\n Selection.prototype.setData = function (values, key) {\n if (typeof values !== 'function') {\n var data_1 = values;\n values = function () {\n return data_1;\n };\n }\n var groups = this.groups;\n var parents = this.parents;\n var numGroups = groups.length;\n var updateGroups = new Array(numGroups);\n var enterGroups = new Array(numGroups);\n var exitGroups = new Array(numGroups);\n for (var j = 0; j < numGroups; j++) {\n var group = groups[j];\n var parent_2 = parents[j];\n if (!parent_2) {\n throw new Error(\"Group #\" + j + \" has no parent: \" + group);\n }\n var groupSize = group.length;\n var data = values(parent_2, parent_2.datum, j, parents);\n var dataSize = data.length;\n var enterGroup = enterGroups[j] = new Array(dataSize);\n var updateGroup = updateGroups[j] = new Array(dataSize);\n var exitGroup = exitGroups[j] = new Array(groupSize);\n if (key) {\n this.bindKey(parent_2, group, enterGroup, updateGroup, exitGroup, data, key);\n } else {\n this.bindIndex(parent_2, group, enterGroup, updateGroup, exitGroup, data);\n }\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0; i0 < dataSize; i0++) {\n var previous = enterGroup[i0];\n if (previous) {\n if (i0 >= i1) {\n i1 = i0 + 1;\n }\n var next = updateGroup[i1];\n while (!next && i1 < dataSize) {\n i1++;\n next = updateGroup[i1];\n }\n previous.next = next || null;\n }\n }\n }\n var result = new Selection(updateGroups, parents);\n result.enterGroups = enterGroups;\n result.exitGroups = exitGroups;\n return result;\n };\n Selection.prototype.bindIndex = function (parent, group, enter, update, exit, data) {\n var groupSize = group.length;\n var dataSize = data.length;\n var i = 0;\n for (; i < dataSize; i++) {\n var node = group[i];\n if (node) {\n node.datum = data[i];\n update[i] = node;\n } else {\n // more datums than group nodes\n enter[i] = new EnterNode$1(parent, data[i]);\n }\n }\n // more group nodes than datums\n for (; i < groupSize; i++) {\n var node = group[i];\n if (node) {\n exit[i] = node;\n }\n }\n };\n Selection.prototype.bindKey = function (parent, group, enter, update, exit, data, key) {\n var groupSize = group.length;\n var dataSize = data.length;\n var keyValues = new Array(groupSize);\n var nodeByKeyValue = {};\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (var i = 0; i < groupSize; i++) {\n var node = group[i];\n if (node) {\n var keyValue = keyValues[i] = Selection.keyPrefix + key(node, node.datum, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n // Compute the key for each datum.\n // If there is a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (var i = 0; i < dataSize; i++) {\n var keyValue = Selection.keyPrefix + key(parent, data[i], i, data);\n var node = nodeByKeyValue[keyValue];\n if (node) {\n update[i] = node;\n node.datum = data[i];\n nodeByKeyValue[keyValue] = undefined;\n } else {\n enter[i] = new EnterNode$1(parent, data[i]);\n }\n }\n // Add any remaining nodes that were not bound to data to exit.\n for (var i = 0; i < groupSize; i++) {\n var node = group[i];\n if (node && nodeByKeyValue[keyValues[i]] === node) {\n exit[i] = node;\n }\n }\n };\n Selection.keyPrefix = '$'; // Protect against keys like '__proto__'.\n return Selection;\n}();\nvar __extends$2I = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1E = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar Line$1 = /** @class */function (_super) {\n __extends$2I(Line, _super);\n function Line() {\n var _this = _super.call(this) || this;\n _this.x1 = 0;\n _this.y1 = 0;\n _this.x2 = 0;\n _this.y2 = 0;\n _this.restoreOwnStyles();\n return _this;\n }\n Line.prototype.computeBBox = function () {\n return new BBox$1(this.x1, this.y1, this.x2 - this.x1, this.y2 - this.y1);\n };\n Line.prototype.isPointInPath = function (_x, _y) {\n return false;\n };\n Line.prototype.render = function (renderCtx) {\n var _a;\n var ctx = renderCtx.ctx,\n forceRender = renderCtx.forceRender,\n stats = renderCtx.stats;\n if (this.dirty === RedrawType.NONE && !forceRender) {\n if (stats) stats.nodesSkipped += this.nodeCount.count;\n return;\n }\n this.computeTransformMatrix();\n this.matrix.toContext(ctx);\n var x1 = this.x1;\n var y1 = this.y1;\n var x2 = this.x2;\n var y2 = this.y2;\n // Align to the pixel grid if the line is strictly vertical\n // or horizontal (but not both, i.e. a dot).\n if (x1 === x2) {\n var x = Math.round(x1) + Math.floor(this.strokeWidth) % 2 / 2;\n x1 = x;\n x2 = x;\n } else if (y1 === y2) {\n var y = Math.round(y1) + Math.floor(this.strokeWidth) % 2 / 2;\n y1 = y;\n y2 = y;\n }\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n this.fillStroke(ctx);\n (_a = this.fillShadow) === null || _a === void 0 ? void 0 : _a.markClean();\n _super.prototype.render.call(this, renderCtx);\n };\n Line.className = 'Line';\n Line.defaultStyles = chainObjects$1(Shape$1.defaultStyles, {\n fill: undefined,\n strokeWidth: 1\n });\n __decorate$1E([SceneChangeDetection({\n redraw: RedrawType.MAJOR\n })], Line.prototype, \"x1\", void 0);\n __decorate$1E([SceneChangeDetection({\n redraw: RedrawType.MAJOR\n })], Line.prototype, \"y1\", void 0);\n __decorate$1E([SceneChangeDetection({\n redraw: RedrawType.MAJOR\n })], Line.prototype, \"x2\", void 0);\n __decorate$1E([SceneChangeDetection({\n redraw: RedrawType.MAJOR\n })], Line.prototype, \"y2\", void 0);\n return Line;\n}(Shape$1);\nvar __extends$2H = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1D = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nfunction ScenePathChangeDetection(opts) {\n var _a = opts || {},\n _b = _a.redraw,\n redraw = _b === void 0 ? RedrawType.MAJOR : _b,\n changeCb = _a.changeCb,\n convertor = _a.convertor;\n return SceneChangeDetection({\n redraw: redraw,\n type: 'path',\n convertor: convertor,\n changeCb: changeCb\n });\n}\nvar Path$1 = /** @class */function (_super) {\n __extends$2H(Path, _super);\n function Path(renderOverride) {\n var _this = _super.call(this) || this;\n _this.renderOverride = renderOverride;\n /**\n * Declare a path to retain for later rendering and hit testing\n * using custom Path2D class. Think of it as a TypeScript version\n * of the native Path2D (with some differences) that works in all browsers.\n */\n _this.path = new Path2D$1();\n /**\n * The path only has to be updated when certain attributes change.\n * For example, if transform attributes (such as `translationX`)\n * are changed, we don't have to update the path. The `dirtyPath` flag\n * is how we keep track if the path has to be updated or not.\n */\n _this._dirtyPath = true;\n return _this;\n }\n Object.defineProperty(Path.prototype, \"dirtyPath\", {\n get: function () {\n return this._dirtyPath;\n },\n set: function (value) {\n if (this._dirtyPath !== value) {\n this._dirtyPath = value;\n if (value) {\n this.markDirty(this, RedrawType.MAJOR);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Path.prototype.checkPathDirty = function () {\n var _a, _b;\n if (this._dirtyPath) {\n return;\n }\n this.dirtyPath = this.path.isDirty() || (_b = (_a = this.fillShadow) === null || _a === void 0 ? void 0 : _a.isDirty(), _b !== null && _b !== void 0 ? _b : false);\n };\n Path.prototype.isPointInPath = function (x, y) {\n var point = this.transformPoint(x, y);\n return this.path.closedPath && this.path.isPointInPath(point.x, point.y);\n };\n Path.prototype.isDirtyPath = function () {\n // Override point for more expensive dirty checks.\n };\n Path.prototype.updatePath = function () {\n // Override point for subclasses.\n };\n Path.prototype.render = function (renderCtx) {\n var _a, _b;\n var ctx = renderCtx.ctx,\n forceRender = renderCtx.forceRender,\n stats = renderCtx.stats;\n if (this.dirty === RedrawType.NONE && !forceRender) {\n if (stats) stats.nodesSkipped += this.nodeCount.count;\n return;\n }\n this.computeTransformMatrix();\n this.matrix.toContext(ctx);\n if (this.dirtyPath || this.isDirtyPath()) {\n this.updatePath();\n this.dirtyPath = false;\n }\n if (this.clipPath) {\n ctx.save();\n if (this.clipMode === 'normal') {\n // Bound the shape rendered to the clipping path.\n this.clipPath.draw(ctx);\n ctx.clip();\n }\n if (this.renderOverride) {\n this.renderOverride(ctx);\n } else {\n this.path.draw(ctx);\n this.fillStroke(ctx);\n }\n if (this.clipMode === 'punch-out') {\n // Bound the shape rendered to outside the clipping path.\n this.clipPath.draw(ctx);\n ctx.clip();\n // Fallback values, but practically these should never be used.\n var _c = (_a = this.computeBBox(), _a !== null && _a !== void 0 ? _a : {}),\n _d = _c.x,\n x = _d === void 0 ? -10000 : _d,\n _e = _c.y,\n y = _e === void 0 ? -10000 : _e,\n _f = _c.width,\n width = _f === void 0 ? 20000 : _f,\n _g = _c.height,\n height = _g === void 0 ? 20000 : _g;\n ctx.clearRect(x, y, width, height);\n }\n ctx.restore();\n } else if (this.renderOverride) {\n this.renderOverride(ctx);\n } else {\n this.path.draw(ctx);\n this.fillStroke(ctx);\n }\n (_b = this.fillShadow) === null || _b === void 0 ? void 0 : _b.markClean();\n _super.prototype.render.call(this, renderCtx);\n };\n Path.className = 'Path';\n __decorate$1D([ScenePathChangeDetection()], Path.prototype, \"clipPath\", void 0);\n __decorate$1D([ScenePathChangeDetection()], Path.prototype, \"clipMode\", void 0);\n return Path;\n}(Shape$1);\nvar twoPi = Math.PI * 2;\n/**\n * Normalize the given angle to be in the [0, 2π) interval.\n * @param radians Angle in radians.\n */\nfunction normalizeAngle360(radians) {\n radians %= twoPi;\n radians += twoPi;\n radians %= twoPi;\n return radians;\n}\nfunction normalizeAngle360Inclusive(radians) {\n radians %= twoPi;\n radians += twoPi;\n if (radians !== twoPi) {\n radians %= twoPi;\n }\n return radians;\n}\n/**\n * Normalize the given angle to be in the [-π, π) interval.\n * @param radians Angle in radians.\n */\nfunction normalizeAngle180(radians) {\n radians %= twoPi;\n if (radians < -Math.PI) {\n radians += twoPi;\n } else if (radians >= Math.PI) {\n radians -= twoPi;\n }\n return radians;\n}\nfunction toRadians(degrees) {\n return degrees / 180 * Math.PI;\n}\nfunction isEqual(a, b, epsilon) {\n if (epsilon === void 0) {\n epsilon = 1e-10;\n }\n return Math.abs(a - b) < epsilon;\n}\n/**\n * `Number.toFixed(n)` always formats a number so that it has `n` digits after the decimal point.\n * For example, `Number(0.00003427).toFixed(2)` returns `0.00`.\n * That's not very helpful, because all the meaningful information is lost.\n * In this case we would want the formatted value to have at least two significant digits: `0.000034`,\n * not two fraction digits.\n * @param value\n * @param fractionOrSignificantDigits\n */\nfunction toFixed(value, fractionOrSignificantDigits) {\n if (fractionOrSignificantDigits === void 0) {\n fractionOrSignificantDigits = 2;\n }\n var power = Math.floor(Math.log(Math.abs(value)) / Math.LN10);\n if (power >= 0 || !isFinite(power)) {\n return value.toFixed(fractionOrSignificantDigits); // fraction digits\n }\n return value.toFixed(Math.abs(power) - 1 + fractionOrSignificantDigits); // significant digits\n}\n/**\n * Returns the mathematically correct n modulus of m. For context, the JS % operator is remainder\n * NOT modulus, which is why this is needed.\n */\nfunction mod(n, m) {\n // https://stackoverflow.com/a/13163436\n var remain = n % m;\n return remain >= 0 ? remain : remain + m;\n}\nvar __extends$2G = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1C = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar ArcType = /*#__PURE__*/function (ArcType) {\n ArcType[ArcType[\"Open\"] = 0] = \"Open\";\n ArcType[ArcType[\"Chord\"] = 1] = \"Chord\";\n ArcType[ArcType[\"Round\"] = 2] = \"Round\";\n return ArcType;\n}(ArcType || {});\n/**\n * Elliptical arc node.\n */\nvar Arc = /** @class */function (_super) {\n __extends$2G(Arc, _super);\n function Arc() {\n var _this = _super.call(this) || this;\n _this.centerX = 0;\n _this.centerY = 0;\n _this.radiusX = 10;\n _this.radiusY = 10;\n _this.startAngle = 0;\n _this.endAngle = Math.PI * 2;\n _this.counterClockwise = false;\n /**\n * The type of arc to render:\n * - {@link ArcType.Open} - end points of the arc segment are not connected (default)\n * - {@link ArcType.Chord} - end points of the arc segment are connected by a line segment\n * - {@link ArcType.Round} - each of the end points of the arc segment are connected\n * to the center of the arc\n * Arcs with {@link ArcType.Open} do not support hit testing, even if they have their\n * {@link Shape.fillStyle} set, because they are not closed paths. Hit testing support\n * would require using two paths - one for rendering, another for hit testing - and there\n * doesn't seem to be a compelling reason to do that, when one can just use {@link ArcType.Chord}\n * to create a closed path.\n */\n _this.type = ArcType.Open;\n _this.restoreOwnStyles();\n return _this;\n }\n Object.defineProperty(Arc.prototype, \"fullPie\", {\n get: function () {\n return isEqual(normalizeAngle360(this.startAngle), normalizeAngle360(this.endAngle));\n },\n enumerable: true,\n configurable: true\n });\n Arc.prototype.updatePath = function () {\n var path = this.path;\n path.clear(); // No need to recreate the Path, can simply clear the existing one.\n // This is much faster than the native Path2D implementation even though this `cubicArc`\n // method is pure TypeScript and actually produces the definition of an elliptical arc,\n // where you can specify two radii and rotation, while Path2D's `arc` method simply produces\n // a circular arc. Maybe it's due to the experimental nature of the Path2D class,\n // maybe it's because we have to create a new instance of it on each render, who knows...\n path.cubicArc(this.centerX, this.centerY, this.radiusX, this.radiusY, 0, this.startAngle, this.endAngle, this.counterClockwise ? 1 : 0);\n if (this.type === ArcType.Chord) {\n path.closePath();\n } else if (this.type === ArcType.Round && !this.fullPie) {\n path.lineTo(this.centerX, this.centerY);\n path.closePath();\n }\n };\n Arc.prototype.computeBBox = function () {\n // Only works with full arcs (circles) and untransformed ellipses.\n return new BBox$1(this.centerX - this.radiusX, this.centerY - this.radiusY, this.radiusX * 2, this.radiusY * 2);\n };\n Arc.prototype.isPointInPath = function (x, y) {\n var point = this.transformPoint(x, y);\n var bbox = this.computeBBox();\n return this.type !== ArcType.Open && bbox.containsPoint(point.x, point.y) && this.path.isPointInPath(point.x, point.y);\n };\n Arc.className = 'Arc';\n Arc.defaultStyles = chainObjects$1(Shape$1.defaultStyles, {\n lineWidth: 1,\n fillStyle: null\n });\n __decorate$1C([ScenePathChangeDetection()], Arc.prototype, \"centerX\", void 0);\n __decorate$1C([ScenePathChangeDetection()], Arc.prototype, \"centerY\", void 0);\n __decorate$1C([ScenePathChangeDetection()], Arc.prototype, \"radiusX\", void 0);\n __decorate$1C([ScenePathChangeDetection()], Arc.prototype, \"radiusY\", void 0);\n __decorate$1C([ScenePathChangeDetection()], Arc.prototype, \"startAngle\", void 0);\n __decorate$1C([ScenePathChangeDetection()], Arc.prototype, \"endAngle\", void 0);\n __decorate$1C([ScenePathChangeDetection()], Arc.prototype, \"counterClockwise\", void 0);\n __decorate$1C([ScenePathChangeDetection()], Arc.prototype, \"type\", void 0);\n return Arc;\n}(Path$1);\nvar doOnceFlags$1 = {};\n/**\n * If the key was passed before, then doesn't execute the func\n * @param {Function} func\n * @param {string} key\n */\nfunction doOnce$1(func, key) {\n if (doOnceFlags$1[key]) {\n return;\n }\n func();\n doOnceFlags$1[key] = true;\n}\nvar __extends$2F = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar t0$1 = new Date();\nvar t1$1 = new Date();\n/**\n * The interval methods don't mutate Date parameters.\n */\nvar TimeInterval$1 = /** @class */function () {\n function TimeInterval(floor, offset) {\n this._floor = floor;\n this._offset = offset;\n }\n /**\n * Returns a new date representing the latest interval boundary date before or equal to date.\n * For example, `day.floor(date)` typically returns 12:00 AM local time on the given date.\n * @param date\n */\n TimeInterval.prototype.floor = function (date) {\n date = new Date(+date);\n this._floor(date);\n return date;\n };\n /**\n * Returns a new date representing the earliest interval boundary date after or equal to date.\n * @param date\n */\n TimeInterval.prototype.ceil = function (date) {\n date = new Date(+date - 1);\n this._floor(date);\n this._offset(date, 1);\n this._floor(date);\n return date;\n };\n /**\n * Returns a new date representing the closest interval boundary date to date.\n * @param date\n */\n TimeInterval.prototype.round = function (date) {\n var d0 = this.floor(date);\n var d1 = this.ceil(date);\n var ms = +date;\n return ms - d0.getTime() < d1.getTime() - ms ? d0 : d1;\n };\n /**\n * Returns a new date equal to date plus step intervals.\n * @param date\n * @param step\n */\n TimeInterval.prototype.offset = function (date, step) {\n if (step === void 0) {\n step = 1;\n }\n date = new Date(+date);\n this._offset(date, Math.floor(step));\n return date;\n };\n /**\n * Returns an array of dates representing every interval boundary after or equal to start (inclusive) and before stop (exclusive).\n * @param start\n * @param stop\n * @param step\n */\n TimeInterval.prototype.range = function (start, stop, step) {\n if (step === void 0) {\n step = 1;\n }\n var range = [];\n start = this.ceil(start);\n step = Math.floor(step);\n if (start > stop || step <= 0) {\n return range;\n }\n var previous;\n do {\n previous = new Date(+start);\n range.push(previous);\n this._offset(start, step);\n this._floor(start);\n } while (previous < start && start < stop);\n return range;\n };\n // Returns an interval that is a subset of this interval.\n // For example, to create an interval that return 1st, 11th, 21st and 31st of each month:\n // day.filter(date => (date.getDate() - 1) % 10 === 0)\n TimeInterval.prototype.filter = function (test) {\n var _this = this;\n var floor = function (date) {\n if (date >= date) {\n _this._floor(date);\n while (!test(date)) {\n date.setTime(date.getTime() - 1);\n _this._floor(date);\n }\n }\n return date;\n };\n var offset = function (date, step) {\n if (date >= date) {\n if (step < 0) {\n while (++step <= 0) {\n do {\n _this._offset(date, -1);\n } while (!test(date));\n }\n } else {\n while (--step >= 0) {\n do {\n _this._offset(date, 1);\n } while (!test(date));\n }\n }\n }\n return date;\n };\n return new TimeInterval(floor, offset);\n };\n return TimeInterval;\n}();\nvar CountableTimeInterval$1 = /** @class */function (_super) {\n __extends$2F(CountableTimeInterval, _super);\n function CountableTimeInterval(floor, offset, count, field) {\n var _this = _super.call(this, floor, offset) || this;\n _this._count = count;\n _this._field = field;\n return _this;\n }\n /**\n * Returns the number of interval boundaries after start (exclusive) and before or equal to end (inclusive).\n * @param start\n * @param end\n */\n CountableTimeInterval.prototype.count = function (start, end) {\n t0$1.setTime(+start);\n t1$1.setTime(+end);\n this._floor(t0$1);\n this._floor(t1$1);\n return Math.floor(this._count(t0$1, t1$1));\n };\n /**\n * Returns a filtered view of this interval representing every step'th date.\n * The meaning of step is dependent on this interval’s parent interval as defined by the `field` function.\n * @param step\n */\n CountableTimeInterval.prototype.every = function (step) {\n var _this = this;\n var result;\n step = Math.floor(step);\n if (isFinite(step) && step > 0) {\n if (step > 1) {\n var field_1 = this._field;\n if (field_1) {\n result = this.filter(function (d) {\n return field_1(d) % step === 0;\n });\n } else {\n result = this.filter(function (d) {\n return _this.count(0, d) % step === 0;\n });\n }\n } else {\n result = this;\n }\n }\n return result;\n };\n return CountableTimeInterval;\n}(TimeInterval$1);\n\n/**\n * Constants to declare the expected nominal zIndex for all types of layer in chart rendering.\n */\nvar Layers = /*#__PURE__*/function (Layers) {\n Layers[Layers[\"SERIES_BACKGROUND_ZINDEX\"] = -10] = \"SERIES_BACKGROUND_ZINDEX\";\n Layers[Layers[\"AXIS_GRIDLINES_ZINDEX\"] = 0] = \"AXIS_GRIDLINES_ZINDEX\";\n Layers[Layers[\"SERIES_CROSSLINE_RANGE_ZINDEX\"] = 10] = \"SERIES_CROSSLINE_RANGE_ZINDEX\";\n Layers[Layers[\"AXIS_ZINDEX\"] = 20] = \"AXIS_ZINDEX\";\n Layers[Layers[\"SERIES_LAYER_ZINDEX\"] = 500] = \"SERIES_LAYER_ZINDEX\";\n Layers[Layers[\"SERIES_LABEL_ZINDEX\"] = 1000] = \"SERIES_LABEL_ZINDEX\";\n Layers[Layers[\"SERIES_CROSSLINE_LINE_ZINDEX\"] = 2500] = \"SERIES_CROSSLINE_LINE_ZINDEX\";\n Layers[Layers[\"LEGEND_ZINDEX\"] = 3000] = \"LEGEND_ZINDEX\";\n return Layers;\n}(Layers || {});\nfunction circleRectOverlap(c, x, y, w, h) {\n // Find closest horizontal and vertical edges.\n var edgeX = c.x < x ? x : c.x > x + w ? x + w : c.x;\n var edgeY = c.y < y ? y : c.y > y + h ? y + h : c.y;\n // Find distance to closest edges.\n var dx = c.x - edgeX;\n var dy = c.y - edgeY;\n var d = Math.sqrt(dx * dx + dy * dy);\n return d <= c.size * 0.5;\n}\nfunction rectRectOverlap(r1, x2, y2, w2, h2) {\n var xOverlap = r1.x + r1.width > x2 && r1.x < x2 + w2;\n var yOverlap = r1.y + r1.height > y2 && r1.y < y2 + h2;\n return xOverlap && yOverlap;\n}\nfunction rectContainsRect(r1, r2x, r2y, r2w, r2h) {\n return r2x + r2w < r1.x + r1.width && r2x > r1.x && r2y > r1.y && r2y + r2h < r1.y + r1.height;\n}\nfunction isPointLabelDatum(x) {\n return x != null && typeof x.point === 'object' && typeof x.label === 'object';\n}\n/**\n * @param data Points and labels for one or more series. The order of series determines label placement precedence.\n * @param bounds Bounds to fit the labels into. If a label can't be fully contained, it doesn't fit.\n * @returns Placed labels for the given series (in the given order).\n */\nfunction placeLabels(data, bounds, padding) {\n if (padding === void 0) {\n padding = 5;\n }\n var result = [];\n data = data.map(function (d) {\n return d.slice().sort(function (a, b) {\n return b.point.size - a.point.size;\n });\n });\n for (var j = 0; j < data.length; j++) {\n var labels = result[j] = [];\n var datum = data[j];\n if (!(datum && datum.length && datum[0].label)) {\n continue;\n }\n var _loop_1 = function (i, ln) {\n var d = datum[i];\n var l = d.label;\n var r = d.point.size * 0.5;\n var x = d.point.x - l.width * 0.5;\n var y = d.point.y - r - l.height - padding;\n var width = l.width,\n height = l.height;\n var withinBounds = !bounds || rectContainsRect(bounds, x, y, width, height);\n if (!withinBounds) {\n return \"continue\";\n }\n var overlapPoints = data.some(function (datum) {\n return datum.some(function (d) {\n return circleRectOverlap(d.point, x, y, width, height);\n });\n });\n if (overlapPoints) {\n return \"continue\";\n }\n var overlapLabels = result.some(function (labels) {\n return labels.some(function (l) {\n return rectRectOverlap(l, x, y, width, height);\n });\n });\n if (overlapLabels) {\n return \"continue\";\n }\n labels.push({\n index: i,\n text: l.text,\n x: x,\n y: y,\n width: width,\n height: height,\n datum: d\n });\n };\n for (var i = 0, ln = datum.length; i < ln; i++) {\n _loop_1(i, ln);\n }\n }\n return result;\n}\nfunction axisLabelsOverlap(data, padding) {\n var result = [];\n var _loop_2 = function (i) {\n var datum = data[i];\n var _a = datum.point,\n x = _a.x,\n y = _a.y,\n _b = datum.label,\n width = _b.width,\n height = _b.height,\n text = _b.text;\n width += padding !== null && padding !== void 0 ? padding : 0;\n height += padding !== null && padding !== void 0 ? padding : 0;\n var overlapLabels = result.some(function (l) {\n var overlap = rectRectOverlap(l, x, y, width, height);\n return overlap;\n });\n if (overlapLabels) {\n return {\n value: true\n };\n }\n result.push({\n index: i,\n text: text,\n x: x,\n y: y,\n width: width,\n height: height,\n datum: datum\n });\n };\n for (var i = 0; i < data.length; i++) {\n var state_1 = _loop_2(i);\n if (typeof state_1 === \"object\") return state_1.value;\n }\n return false;\n}\nvar __decorate$1B = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __read$H = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread$o = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$H(arguments[i]));\n return ar;\n};\nvar __values$q = undefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar TICK_COUNT = predicateWithMessage(function (v, ctx) {\n return NUMBER(0)(v, ctx) || v instanceof TimeInterval$1;\n}, \"expecting a tick count Number value or, for a time axis, a Time Interval such as 'agCharts.time.month'\");\nvar OPT_TICK_COUNT = predicateWithMessage(function (v, ctx) {\n return OPTIONAL(v, ctx, TICK_COUNT);\n}, \"expecting an optional tick count Number value or, for a time axis, a Time Interval such as 'agCharts.time.month'\");\nvar GRID_STYLE_KEYS = ['stroke', 'lineDash'];\nvar GRID_STYLE = predicateWithMessage(ARRAY(undefined, function (o) {\n for (var key in o) {\n if (!GRID_STYLE_KEYS.includes(key)) {\n return false;\n }\n }\n return true;\n}), \"expecting an Array of objects with gridline style properties such as 'stroke' and 'lineDash'\");\nvar Tags = /*#__PURE__*/function (Tags) {\n Tags[Tags[\"Tick\"] = 0] = \"Tick\";\n Tags[Tags[\"GridLine\"] = 1] = \"GridLine\";\n return Tags;\n}(Tags || {});\nvar AxisLine = /** @class */function () {\n function AxisLine() {\n this.width = 1;\n this.color = 'rgba(195, 195, 195, 1)';\n }\n __decorate$1B([Validate(NUMBER(0))], AxisLine.prototype, \"width\", void 0);\n __decorate$1B([Validate(OPT_COLOR_STRING)], AxisLine.prototype, \"color\", void 0);\n return AxisLine;\n}();\nvar AxisTick = /** @class */function () {\n function AxisTick() {\n /**\n * The line width to be used by axis ticks.\n */\n this.width = 1;\n /**\n * The line length to be used by axis ticks.\n */\n this.size = 6;\n /**\n * The color of the axis ticks.\n * Use `undefined` rather than `rgba(0, 0, 0, 0)` to make the ticks invisible.\n */\n this.color = 'rgba(195, 195, 195, 1)';\n /**\n * A hint of how many ticks to use (the exact number of ticks might differ),\n * a `TimeInterval` or a `CountableTimeInterval`.\n * For example:\n *\n * axis.tick.count = 5;\n * axis.tick.count = year;\n * axis.tick.count = month.every(6);\n */\n this.count = undefined;\n }\n __decorate$1B([Validate(NUMBER(0))], AxisTick.prototype, \"width\", void 0);\n __decorate$1B([Validate(NUMBER(0))], AxisTick.prototype, \"size\", void 0);\n __decorate$1B([Validate(OPT_COLOR_STRING)], AxisTick.prototype, \"color\", void 0);\n __decorate$1B([Validate(OPT_TICK_COUNT)], AxisTick.prototype, \"count\", void 0);\n return AxisTick;\n}();\nvar AxisLabel = /** @class */function () {\n function AxisLabel() {\n this.fontStyle = undefined;\n this.fontWeight = undefined;\n this.fontSize = 12;\n this.fontFamily = 'Verdana, sans-serif';\n /**\n * The padding between the labels and the ticks.\n */\n this.padding = 5;\n /**\n * The color of the labels.\n * Use `undefined` rather than `rgba(0, 0, 0, 0)` to make labels invisible.\n */\n this.color = 'rgba(87, 87, 87, 1)';\n /**\n * Custom label rotation in degrees.\n * Labels are rendered perpendicular to the axis line by default.\n * Or parallel to the axis line, if the {@link parallel} is set to `true`.\n * The value of this config is used as the angular offset/deflection\n * from the default rotation.\n */\n this.rotation = undefined;\n /**\n * If specified and axis labels may collide, they are rotated to reduce collisions. If the\n * `rotation` property is specified, it takes precedence.\n */\n this.autoRotate = undefined;\n /**\n * Rotation angle to use when autoRotate is applied.\n */\n this.autoRotateAngle = 335;\n /**\n * By default labels and ticks are positioned to the left of the axis line.\n * `true` positions the labels to the right of the axis line.\n * However, if the axis is rotated, it's easier to think in terms\n * of this side or the opposite side, rather than left and right.\n * We use the term `mirror` for conciseness, although it's not\n * true mirroring - for example, when a label is rotated, so that\n * it is inclined at the 45 degree angle, text flowing from north-west\n * to south-east, ending at the tick to the left of the axis line,\n * and then we set this config to `true`, the text will still be flowing\n * from north-west to south-east, _starting_ at the tick to the right\n * of the axis line.\n */\n this.mirrored = false;\n /**\n * Labels are rendered perpendicular to the axis line by default.\n * Setting this config to `true` makes labels render parallel to the axis line\n * and center aligns labels' text at the ticks.\n */\n this.parallel = false;\n /**\n * In case {@param value} is a number, the {@param fractionDigits} parameter will\n * be provided as well. The `fractionDigits` corresponds to the number of fraction\n * digits used by the tick step. For example, if the tick step is `0.0005`,\n * the `fractionDigits` is 4.\n */\n this.formatter = undefined;\n this.format = undefined;\n }\n __decorate$1B([Validate(OPT_FONT_STYLE)], AxisLabel.prototype, \"fontStyle\", void 0);\n __decorate$1B([Validate(OPT_FONT_WEIGHT)], AxisLabel.prototype, \"fontWeight\", void 0);\n __decorate$1B([Validate(NUMBER(1))], AxisLabel.prototype, \"fontSize\", void 0);\n __decorate$1B([Validate(STRING)], AxisLabel.prototype, \"fontFamily\", void 0);\n __decorate$1B([Validate(NUMBER(0))], AxisLabel.prototype, \"padding\", void 0);\n __decorate$1B([Validate(OPT_COLOR_STRING)], AxisLabel.prototype, \"color\", void 0);\n __decorate$1B([Validate(OPT_NUMBER(-360, 360))], AxisLabel.prototype, \"rotation\", void 0);\n __decorate$1B([Validate(OPT_BOOLEAN)], AxisLabel.prototype, \"autoRotate\", void 0);\n __decorate$1B([Validate(NUMBER(-360, 360))], AxisLabel.prototype, \"autoRotateAngle\", void 0);\n __decorate$1B([Validate(BOOLEAN)], AxisLabel.prototype, \"mirrored\", void 0);\n __decorate$1B([Validate(BOOLEAN)], AxisLabel.prototype, \"parallel\", void 0);\n __decorate$1B([Validate(OPT_STRING)], AxisLabel.prototype, \"format\", void 0);\n return AxisLabel;\n}();\n/**\n * A general purpose linear axis with no notion of orientation.\n * The axis is always rendered vertically, with horizontal labels positioned to the left\n * of the axis line by default. The axis can be {@link rotation | rotated} by an arbitrary angle,\n * so that it can be used as a top, right, bottom, left, radial or any other kind\n * of linear axis.\n * The generic `D` parameter is the type of the domain of the axis' scale.\n * The output range of the axis' scale is always numeric (screen coordinates).\n */\nvar Axis = /** @class */function () {\n function Axis(scale) {\n this.id = createId$1(this);\n this.nice = true;\n this.dataDomain = [];\n this.axisGroup = new Group$1({\n name: this.id + \"-axis\",\n layer: true,\n zIndex: Layers.AXIS_ZINDEX\n });\n this.crossLineGroup = new Group$1({\n name: this.id + \"-CrossLines\"\n });\n this.lineGroup = this.axisGroup.appendChild(new Group$1({\n name: this.id + \"-Line\"\n }));\n this.tickGroup = this.axisGroup.appendChild(new Group$1({\n name: this.id + \"-Tick\"\n }));\n this.titleGroup = this.axisGroup.appendChild(new Group$1({\n name: this.id + \"-Title\"\n }));\n this.tickGroupSelection = Selection$1.select(this.tickGroup).selectAll();\n this.lineNode = this.lineGroup.appendChild(new Line$1());\n this.gridlineGroup = new Group$1({\n name: this.id + \"-gridline\",\n layer: true,\n zIndex: Layers.AXIS_GRIDLINES_ZINDEX\n });\n this.gridlineGroupSelection = Selection$1.select(this.gridlineGroup).selectAll();\n this._crossLines = [];\n this.line = new AxisLine();\n this.tick = new AxisTick();\n this.label = new AxisLabel();\n this.translation = {\n x: 0,\n y: 0\n };\n this.rotation = 0; // axis rotation angle in degrees\n this.requestedRange = [0, 1];\n this._visibleRange = [0, 1];\n this._title = undefined;\n /**\n * The length of the grid. The grid is only visible in case of a non-zero value.\n * In case {@link radialGrid} is `true`, the value is interpreted as an angle\n * (in degrees).\n */\n this._gridLength = 0;\n /**\n * The array of styles to cycle through when rendering grid lines.\n * For example, use two {@link GridStyle} objects for alternating styles.\n * Contains only one {@link GridStyle} object by default, meaning all grid lines\n * have the same style.\n */\n this.gridStyle = [{\n stroke: 'rgba(219, 219, 219, 1)',\n lineDash: [4, 2]\n }];\n /**\n * `false` - render grid as lines of {@link gridLength} that extend the ticks\n * on the opposite side of the axis\n * `true` - render grid as concentric circles that go through the ticks\n */\n this._radialGrid = false;\n this.fractionDigits = 0;\n /**\n * The distance between the grid ticks and the axis ticks.\n */\n this.gridPadding = 0;\n this.thickness = 0;\n this._scale = scale;\n this.refreshScale();\n }\n Object.defineProperty(Axis.prototype, \"scale\", {\n get: function () {\n return this._scale;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Axis.prototype, \"crossLines\", {\n get: function () {\n return this._crossLines;\n },\n set: function (value) {\n var _this = this;\n var _a, _b;\n (_a = this._crossLines) === null || _a === void 0 ? void 0 : _a.forEach(function (crossLine) {\n return _this.detachCrossLine(crossLine);\n });\n this._crossLines = value;\n (_b = this._crossLines) === null || _b === void 0 ? void 0 : _b.forEach(function (crossLine) {\n _this.attachCrossLine(crossLine);\n _this.initCrossLine(crossLine);\n });\n },\n enumerable: true,\n configurable: true\n });\n Axis.prototype.attachCrossLine = function (crossLine) {\n this.crossLineGroup.appendChild(crossLine.group);\n };\n Axis.prototype.detachCrossLine = function (crossLine) {\n this.crossLineGroup.removeChild(crossLine.group);\n };\n /**\n * Meant to be overridden in subclasses to provide extra context the the label formatter.\n * The return value of this function will be passed to the laber.formatter as the `axis` parameter.\n */\n Axis.prototype.getMeta = function () {\n // Override point for subclasses.\n };\n Axis.prototype.refreshScale = function () {\n var _this = this;\n var _a;\n this.requestedRange = this.scale.range.slice();\n (_a = this.crossLines) === null || _a === void 0 ? void 0 : _a.forEach(function (crossLine) {\n _this.initCrossLine(crossLine);\n });\n };\n Axis.prototype.updateRange = function () {\n var _a;\n var _b = this,\n rr = _b.requestedRange,\n vr = _b.visibleRange,\n scale = _b.scale;\n var span = (rr[1] - rr[0]) / (vr[1] - vr[0]);\n var shift = span * vr[0];\n var start = rr[0] - shift;\n scale.range = [start, start + span];\n (_a = this.crossLines) === null || _a === void 0 ? void 0 : _a.forEach(function (crossLine) {\n crossLine.clippedRange = [rr[0], rr[1]];\n });\n };\n /**\n * Checks if a point or an object is in range.\n * @param x A point (or object's starting point).\n * @param width Object's width.\n * @param tolerance Expands the range on both ends by this amount.\n */\n Axis.prototype.inRange = function (x, width, tolerance) {\n if (width === void 0) {\n width = 0;\n }\n if (tolerance === void 0) {\n tolerance = 0;\n }\n return this.inRangeEx(x, width, tolerance) === 0;\n };\n Axis.prototype.inRangeEx = function (x, width, tolerance) {\n if (width === void 0) {\n width = 0;\n }\n if (tolerance === void 0) {\n tolerance = 0;\n }\n var range = this.range;\n // Account for inverted ranges, for example [500, 100] as well as [100, 500]\n var min = Math.min(range[0], range[1]);\n var max = Math.max(range[0], range[1]);\n if (x + width < min - tolerance) {\n return -1; // left of range\n }\n if (x > max + tolerance) {\n return 1; // right of range\n }\n return 0; // in range\n };\n Object.defineProperty(Axis.prototype, \"range\", {\n get: function () {\n return this.requestedRange;\n },\n set: function (value) {\n this.requestedRange = value.slice();\n this.updateRange();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Axis.prototype, \"visibleRange\", {\n get: function () {\n return this._visibleRange.slice();\n },\n set: function (value) {\n if (value && value.length === 2) {\n var _a = __read$H(value, 2),\n min = _a[0],\n max = _a[1];\n min = Math.max(0, min);\n max = Math.min(1, max);\n min = Math.min(min, max);\n max = Math.max(min, max);\n this._visibleRange = [min, max];\n this.updateRange();\n }\n },\n enumerable: true,\n configurable: true\n });\n Axis.prototype.onLabelFormatChange = function (ticks, format) {\n var scale = this.scale;\n if (format && scale && scale.tickFormat) {\n try {\n this.labelFormatter = scale.tickFormat({\n ticks: ticks,\n count: ticks.length,\n specifier: format\n });\n } catch (e) {\n this.labelFormatter = undefined;\n doOnce$1(function () {\n return console.warn(\"AG Charts - the axis label format string \" + format + \" is invalid. No formatting will be applied\");\n }, \"invalid axis label format string \" + format);\n }\n } else {\n this.labelFormatter = undefined;\n }\n };\n Object.defineProperty(Axis.prototype, \"title\", {\n get: function () {\n return this._title;\n },\n set: function (value) {\n var oldTitle = this._title;\n if (oldTitle !== value) {\n if (oldTitle) {\n this.titleGroup.removeChild(oldTitle.node);\n }\n if (value) {\n value.node.rotation = -Math.PI / 2;\n this.titleGroup.appendChild(value.node);\n }\n this._title = value;\n // position title so that it doesn't briefly get rendered in the top left hand corner of the canvas before update is called.\n this.updateTitle({\n ticks: this.scale.ticks(this.tick.count)\n });\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Axis.prototype, \"gridLength\", {\n get: function () {\n return this._gridLength;\n },\n set: function (value) {\n var _this = this;\n var _a;\n // Was visible and now invisible, or was invisible and now visible.\n if (this._gridLength && !value || !this._gridLength && value) {\n this.gridlineGroupSelection = this.gridlineGroupSelection.remove().setData([]);\n }\n this._gridLength = value;\n (_a = this.crossLines) === null || _a === void 0 ? void 0 : _a.forEach(function (crossLine) {\n _this.initCrossLine(crossLine);\n });\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Axis.prototype, \"radialGrid\", {\n get: function () {\n return this._radialGrid;\n },\n set: function (value) {\n if (this._radialGrid !== value) {\n this._radialGrid = value;\n this.gridlineGroupSelection = this.gridlineGroupSelection.remove().setData([]);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Creates/removes/updates the scene graph nodes that constitute the axis.\n */\n Axis.prototype.update = function (primaryTickCount) {\n var _a, _b;\n this.calculateDomain();\n var _c = this,\n scale = _c.scale,\n gridLength = _c.gridLength,\n tick = _c.tick,\n label = _c.label,\n requestedRange = _c.requestedRange;\n var requestedRangeMin = Math.min.apply(Math, __spread$o(requestedRange));\n var requestedRangeMax = Math.max.apply(Math, __spread$o(requestedRange));\n var rotation = toRadians(this.rotation);\n var parallelLabels = label.parallel;\n var anySeriesActive = this.isAnySeriesActive();\n // The side of the axis line to position the labels on.\n // -1 = left (default)\n // 1 = right\n var sideFlag = label.mirrored ? 1 : -1;\n // When labels are parallel to the axis line, the `parallelFlipFlag` is used to\n // flip the labels to avoid upside-down text, when the axis is rotated\n // such that it is in the right hemisphere, i.e. the angle of rotation\n // is in the [0, π] interval.\n // The rotation angle is normalized, so that we have an easier time checking\n // if it's in the said interval. Since the axis is always rendered vertically\n // and then rotated, zero rotation means 12 (not 3) o-clock.\n // -1 = flip\n // 1 = don't flip (default)\n var parallelFlipRotation = normalizeAngle360(rotation);\n var regularFlipRotation = normalizeAngle360(rotation - Math.PI / 2);\n var halfBandwidth = (scale.bandwidth || 0) / 2;\n this.updatePosition();\n this.updateLine();\n var i = 0;\n var labelOverlap = true;\n var ticks = [];\n var defaultTickCount = 10;\n var tickCount = this.tick.count !== undefined;\n var nice = this.nice && scale.nice;\n var continuous = scale instanceof ContinuousScale$1;\n var secondaryAxis = primaryTickCount !== undefined;\n var calculatePrimaryDomain = !secondaryAxis && !tickCount && nice;\n scale.domain = this.dataDomain;\n if (nice) {\n scale.nice(this.tick.count);\n }\n while (labelOverlap) {\n var unchanged = true;\n var _loop_1 = function () {\n if (i >= defaultTickCount) {\n return \"break\";\n }\n if (calculatePrimaryDomain) {\n // `scale.nice` mutates `scale.domain` based on new tick count\n scale.domain = this_1.dataDomain;\n scale.nice(defaultTickCount - i);\n }\n var prevTicks = ticks;\n // filter generated ticks if this is a category axis or this.tick.count is specified\n var filteredTicks = continuous && !tickCount || i === 0 ? undefined : ticks.filter(function (_, i) {\n return i % 2 === 0;\n });\n var secondaryAxisTicks = void 0;\n if (secondaryAxis) {\n // `updateSecondaryAxisTicks` mutates `scale.domain` based on `primaryTickCount`\n secondaryAxisTicks = this_1.updateSecondaryAxisTicks(primaryTickCount);\n }\n ticks = (_a = filteredTicks !== null && filteredTicks !== void 0 ? filteredTicks : secondaryAxisTicks, _a !== null && _a !== void 0 ? _a : this_1.scale.ticks(this_1.tick.count, i));\n this_1.updateSelections({\n halfBandwidth: halfBandwidth,\n gridLength: gridLength,\n ticks: ticks\n });\n if (!secondaryAxis && ticks.length > 0) {\n primaryTickCount = ticks.length;\n }\n unchanged = ticks.every(function (t, i) {\n return t === prevTicks[i];\n });\n i++;\n };\n var this_1 = this;\n while (unchanged) {\n var state_1 = _loop_1();\n if (state_1 === \"break\") break;\n }\n if (unchanged) {\n break;\n }\n // When the scale domain or the ticks change, the label format may change\n this.onLabelFormatChange(ticks, this.label.format);\n var _d = this.updateLabels({\n parallelFlipRotation: parallelFlipRotation,\n regularFlipRotation: regularFlipRotation,\n sideFlag: sideFlag,\n tickLineGroupSelection: this.tickGroupSelection,\n ticks: ticks\n }),\n labelData = _d.labelData,\n rotated = _d.rotated;\n var labelPadding = rotated ? 0 : 10;\n labelOverlap = axisLabelsOverlap(labelData, labelPadding);\n }\n this.updateGridLines({\n gridLength: gridLength,\n halfBandwidth: halfBandwidth,\n sideFlag: sideFlag\n });\n var anyTickVisible = false;\n var visibleFn = function (node) {\n var min = Math.floor(requestedRangeMin);\n var max = Math.ceil(requestedRangeMax);\n var visible = min !== max && node.translationY >= min && node.translationY <= max;\n anyTickVisible = visible || anyTickVisible;\n return visible;\n };\n var _e = this,\n gridlineGroupSelection = _e.gridlineGroupSelection,\n tickGroupSelection = _e.tickGroupSelection;\n gridlineGroupSelection.attrFn('visible', visibleFn);\n tickGroupSelection.attrFn('visible', visibleFn);\n this.tickGroup.visible = anyTickVisible;\n this.gridlineGroup.visible = anyTickVisible;\n (_b = this.crossLines) === null || _b === void 0 ? void 0 : _b.forEach(function (crossLine) {\n crossLine.sideFlag = -sideFlag;\n crossLine.direction = rotation === -Math.PI / 2 ? ChartAxisDirection.X : ChartAxisDirection.Y;\n crossLine.label.parallel = crossLine.label.parallel !== undefined ? crossLine.label.parallel : parallelLabels;\n crossLine.parallelFlipRotation = parallelFlipRotation;\n crossLine.regularFlipRotation = regularFlipRotation;\n crossLine.update(anySeriesActive);\n });\n this.updateTitle({\n ticks: ticks\n });\n tickGroupSelection.selectByTag(Tags.Tick).each(function (line) {\n line.strokeWidth = tick.width;\n line.stroke = tick.color;\n line.visible = anyTickVisible;\n }).attr('x1', sideFlag * tick.size).attr('x2', 0).attr('y1', 0).attr('y2', 0);\n return primaryTickCount;\n };\n Axis.prototype.calculateDomain = function () {\n // Placeholder for subclasses to override.\n };\n Axis.prototype.updatePosition = function () {\n var _a = this,\n label = _a.label,\n axisGroup = _a.axisGroup,\n gridlineGroup = _a.gridlineGroup,\n crossLineGroup = _a.crossLineGroup,\n translation = _a.translation,\n gridlineGroupSelection = _a.gridlineGroupSelection,\n gridPadding = _a.gridPadding,\n gridLength = _a.gridLength;\n var rotation = toRadians(this.rotation);\n var sideFlag = label.mirrored ? 1 : -1;\n var translationX = Math.floor(translation.x);\n var translationY = Math.floor(translation.y);\n crossLineGroup.translationX = translationX;\n crossLineGroup.translationY = translationY;\n crossLineGroup.rotation = rotation;\n axisGroup.translationX = translationX;\n axisGroup.translationY = translationY;\n axisGroup.rotation = rotation;\n gridlineGroup.translationX = translationX;\n gridlineGroup.translationY = translationY;\n gridlineGroup.rotation = rotation;\n gridlineGroupSelection.selectByTag(Tags.GridLine).each(function (line) {\n line.x1 = gridPadding;\n line.x2 = -sideFlag * gridLength + gridPadding;\n line.y1 = 0;\n line.y2 = 0;\n });\n };\n Axis.prototype.updateSecondaryAxisTicks = function (_primaryTickCount) {\n throw new Error('AG Charts - unexpected call to updateSecondaryAxisTicks() - check axes configuration.');\n };\n Axis.prototype.updateTickGroupSelection = function (_a) {\n var data = _a.data;\n var updateAxis = this.tickGroupSelection.setData(data);\n updateAxis.exit.remove();\n var enterAxis = updateAxis.enter.append(Group$1);\n // Line auto-snaps to pixel grid if vertical or horizontal.\n enterAxis.append(Line$1).each(function (node) {\n return node.tag = Tags.Tick;\n });\n enterAxis.append(Text$1);\n return updateAxis.merge(enterAxis);\n };\n Axis.prototype.updateGridLineGroupSelection = function (_a) {\n var gridLength = _a.gridLength,\n data = _a.data;\n var updateGridlines = this.gridlineGroupSelection.setData(gridLength ? data : []);\n updateGridlines.exit.remove();\n var gridlineGroupSelection = updateGridlines;\n if (gridLength) {\n var tagFn = function (node) {\n return node.tag = Tags.GridLine;\n };\n var enterGridline = updateGridlines.enter.append(Group$1);\n if (this.radialGrid) {\n enterGridline.append(Arc).each(tagFn);\n } else {\n enterGridline.append(Line$1).each(tagFn);\n }\n gridlineGroupSelection = updateGridlines.merge(enterGridline);\n }\n return gridlineGroupSelection;\n };\n Axis.prototype.updateSelections = function (_a) {\n var ticks = _a.ticks,\n halfBandwidth = _a.halfBandwidth,\n gridLength = _a.gridLength;\n var scale = this.scale;\n var data = ticks.map(function (t) {\n return {\n tick: t,\n translationY: scale.convert(t) + halfBandwidth\n };\n });\n var gridlineGroupSelection = this.updateGridLineGroupSelection({\n gridLength: gridLength,\n data: data\n });\n var tickGroupSelection = this.updateTickGroupSelection({\n data: data\n });\n // We need raw `translationY` values on `datum` for accurate label collision detection in axes.update()\n // But node `translationY` values must be rounded to get pixel grid alignment\n gridlineGroupSelection.attrFn('translationY', function (_, datum) {\n return Math.round(datum.translationY);\n });\n tickGroupSelection.attrFn('translationY', function (_, datum) {\n return Math.round(datum.translationY);\n });\n this.tickGroupSelection = tickGroupSelection;\n this.gridlineGroupSelection = gridlineGroupSelection;\n };\n Axis.prototype.updateGridLines = function (_a) {\n var gridLength = _a.gridLength,\n halfBandwidth = _a.halfBandwidth,\n sideFlag = _a.sideFlag;\n var _b = this,\n gridStyle = _b.gridStyle,\n scale = _b.scale,\n tick = _b.tick,\n gridPadding = _b.gridPadding;\n if (gridLength && gridStyle.length) {\n var styleCount_1 = gridStyle.length;\n var gridLines = void 0;\n if (this.radialGrid) {\n var angularGridLength_1 = normalizeAngle360Inclusive(toRadians(gridLength));\n gridLines = this.gridlineGroupSelection.selectByTag(Tags.GridLine).each(function (arc, datum) {\n var radius = Math.round(scale.convert(datum) + halfBandwidth);\n arc.centerX = 0;\n arc.centerY = scale.range[0] - radius;\n arc.endAngle = angularGridLength_1;\n arc.radiusX = radius;\n arc.radiusY = radius;\n });\n } else {\n gridLines = this.gridlineGroupSelection.selectByTag(Tags.GridLine).each(function (line) {\n line.x1 = gridPadding;\n line.x2 = -sideFlag * gridLength + gridPadding;\n line.y1 = 0;\n line.y2 = 0;\n line.visible = Math.abs(line.parent.translationY - scale.range[0]) > 1;\n });\n }\n gridLines.each(function (gridLine, _, index) {\n var style = gridStyle[index % styleCount_1];\n gridLine.stroke = style.stroke;\n gridLine.strokeWidth = tick.width;\n gridLine.lineDash = style.lineDash;\n gridLine.fill = undefined;\n });\n }\n };\n Axis.prototype.updateLabels = function (_a) {\n var _this = this;\n var ticks = _a.ticks,\n tickLineGroupSelection = _a.tickLineGroupSelection,\n sideFlag = _a.sideFlag,\n parallelFlipRotation = _a.parallelFlipRotation,\n regularFlipRotation = _a.regularFlipRotation;\n var _b = this,\n label = _b.label,\n parallelLabels = _b.label.parallel,\n scale = _b.scale,\n tick = _b.tick,\n requestedRange = _b.requestedRange;\n var requestedRangeMin = Math.min.apply(Math, __spread$o(requestedRange));\n var requestedRangeMax = Math.max.apply(Math, __spread$o(requestedRange));\n var labelAutoRotation = 0;\n var labelRotation = label.rotation ? normalizeAngle360(toRadians(label.rotation)) : 0;\n var parallelFlipFlag = !labelRotation && parallelFlipRotation >= 0 && parallelFlipRotation <= Math.PI ? -1 : 1;\n // Flip if the axis rotation angle is in the top hemisphere.\n var regularFlipFlag = !labelRotation && regularFlipRotation >= 0 && regularFlipRotation <= Math.PI ? -1 : 1;\n // `ticks instanceof NumericTicks` doesn't work here, so we feature detect.\n this.fractionDigits = ticks.fractionDigits >= 0 ? ticks.fractionDigits : 0;\n // Update properties that affect the size of the axis labels and measure the labels\n var labelBboxes = new Map();\n var labelCount = 0;\n var halfFirstLabelLength = false;\n var halfLastLabelLength = false;\n var availableRange = requestedRangeMax - requestedRangeMin;\n var labelSelection = tickLineGroupSelection.selectByClass(Text$1).each(function (node, datum, index) {\n var tick = datum.tick;\n node.fontStyle = label.fontStyle;\n node.fontWeight = label.fontWeight;\n node.fontSize = label.fontSize;\n node.fontFamily = label.fontFamily;\n node.fill = label.color;\n node.text = _this.formatTickDatum(tick, index);\n var userHidden = node.text === '' || node.text == undefined;\n labelBboxes.set(index, userHidden ? null : node.computeBBox());\n if (userHidden) {\n return;\n }\n labelCount++;\n if (index === 0 && node.translationY === scale.range[0]) {\n halfFirstLabelLength = true; // first label protrudes axis line\n } else if (index === ticks.length - 1 && node.translationY === scale.range[1]) {\n halfLastLabelLength = true; // last label protrudes axis line\n }\n });\n var labelX = sideFlag * (tick.size + label.padding);\n var step = availableRange / labelCount;\n var rotateLabels = function (bboxes, parallelLabels) {\n var e_1, _a;\n var rotate = false;\n var lastIdx = bboxes.size - 1;\n var padding = 12;\n try {\n for (var _b = __values$q(bboxes.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {\n var _d = __read$H(_c.value, 2),\n i = _d[0],\n bbox = _d[1];\n if (bbox == null) {\n continue;\n }\n var divideBy = i === 0 && halfFirstLabelLength || i === lastIdx && halfLastLabelLength ? 2 : 1;\n // When the labels are parallel to the axis line, use the width of the text to calculate the total length of all labels\n var length_1 = parallelLabels ? bbox.width / divideBy : bbox.height / divideBy;\n var lengthWithPadding = length_1 <= 0 ? 0 : length_1 + padding;\n if (lengthWithPadding > step) {\n rotate = true;\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n return rotate;\n };\n var rotate = rotateLabels(labelBboxes, parallelLabels);\n if (label.rotation === undefined && label.autoRotate === true && rotate) {\n // When no user label rotation angle has been specified and the width of any label exceeds the average tick gap (`rotate` is `true`),\n // automatically rotate the labels\n labelAutoRotation = normalizeAngle360(toRadians(label.autoRotateAngle));\n }\n var autoRotation = parallelLabels ? parallelFlipFlag * Math.PI / 2 : regularFlipFlag === -1 ? Math.PI : 0;\n var labelTextBaseline = parallelLabels && !labelRotation ? sideFlag * parallelFlipFlag === -1 ? 'hanging' : 'bottom' : 'middle';\n var alignFlag = labelRotation > 0 && labelRotation <= Math.PI || labelAutoRotation > 0 && labelAutoRotation <= Math.PI ? -1 : 1;\n var labelTextAlign = parallelLabels ? labelRotation || labelAutoRotation ? sideFlag * alignFlag === -1 ? 'end' : 'start' : 'center' : sideFlag * regularFlipFlag === -1 ? 'end' : 'start';\n var labelData = [];\n var combinedRotation = autoRotation + labelRotation + labelAutoRotation;\n var labelRotationMatrix = new Matrix$1();\n if (combinedRotation) {\n Matrix$1.updateTransformMatrix(labelRotationMatrix, 1, 1, combinedRotation, 0, 0);\n }\n labelSelection.each(function (label, datum) {\n if (label.text === '' || label.text == undefined) {\n label.visible = false; // hide empty labels\n return;\n }\n label.textBaseline = labelTextBaseline;\n label.textAlign = labelTextAlign;\n label.x = labelX;\n label.rotationCenterX = labelX;\n label.rotation = combinedRotation;\n var userHidden = label.text === '' || label.text == undefined;\n if (userHidden) {\n return;\n }\n // Text.computeBBox() does not take into account any of the transformations that have been applied to the label nodes, only the width and height are useful.\n // Rather than taking into account all transformations including those of parent nodes which would be the result of `computeTransformedBBox()`, giving the x and y in the entire axis coordinate space,\n // take into account only the rotation and translation applied to individual label nodes to get the x y coordinates of the labels relative to each other\n // this makes label collision detection a lot simpler\n var bbox = label.computeBBox();\n var _a = bbox.width,\n width = _a === void 0 ? 0 : _a,\n _b = bbox.height,\n height = _b === void 0 ? 0 : _b;\n var translationY = datum.translationY;\n var translatedBBox = new BBox$1(labelX, translationY, 0, 0);\n labelRotationMatrix.transformBBox(translatedBBox, 0, bbox);\n var _c = bbox.x,\n x = _c === void 0 ? 0 : _c,\n _d = bbox.y,\n y = _d === void 0 ? 0 : _d;\n labelData.push({\n point: {\n x: x,\n y: y,\n size: 0\n },\n label: {\n width: width,\n height: height,\n text: label.text\n }\n });\n });\n return {\n labelData: labelData,\n rotated: !!(labelRotation || labelAutoRotation)\n };\n };\n Axis.prototype.updateLine = function () {\n // Render axis line.\n var _a = this,\n lineNode = _a.lineNode,\n requestedRange = _a.requestedRange;\n lineNode.x1 = 0;\n lineNode.x2 = 0;\n lineNode.y1 = requestedRange[0];\n lineNode.y2 = requestedRange[1];\n lineNode.strokeWidth = this.line.width;\n lineNode.stroke = this.line.color;\n lineNode.visible = true;\n };\n Axis.prototype.updateTitle = function (_a) {\n var ticks = _a.ticks;\n var _b;\n var _c = this,\n label = _c.label,\n rotation = _c.rotation,\n title = _c.title,\n lineNode = _c.lineNode,\n requestedRange = _c.requestedRange,\n tickGroup = _c.tickGroup,\n lineGroup = _c.lineGroup;\n if (!title) {\n return;\n }\n var titleVisible = false;\n if (title.enabled && lineNode.visible) {\n titleVisible = true;\n var sideFlag = label.mirrored ? 1 : -1;\n var parallelFlipRotation = normalizeAngle360(rotation);\n var padding = Caption.PADDING;\n var titleNode = title.node;\n var titleRotationFlag = sideFlag === -1 && parallelFlipRotation > Math.PI && parallelFlipRotation < Math.PI * 2 ? -1 : 1;\n titleNode.rotation = titleRotationFlag * sideFlag * Math.PI / 2;\n titleNode.x = Math.floor(titleRotationFlag * sideFlag * (requestedRange[0] + requestedRange[1]) / 2);\n var lineBBox = lineGroup.computeBBox();\n var bboxYDimension = rotation === 0 ? lineBBox.width : lineBBox.height;\n if (((_b = ticks) === null || _b === void 0 ? void 0 : _b.length) > 0) {\n var tickBBox = tickGroup.computeBBox();\n var tickWidth = rotation === 0 ? tickBBox.width : tickBBox.height;\n if (Math.abs(tickWidth) < Infinity) {\n bboxYDimension += tickWidth;\n }\n }\n if (sideFlag === -1) {\n titleNode.y = Math.floor(titleRotationFlag * (-padding - bboxYDimension));\n } else {\n titleNode.y = Math.floor(-padding - bboxYDimension);\n }\n titleNode.textBaseline = titleRotationFlag === 1 ? 'bottom' : 'top';\n }\n title.node.visible = titleVisible;\n };\n // For formatting (nice rounded) tick values.\n Axis.prototype.formatTickDatum = function (datum, index) {\n var _a = this,\n label = _a.label,\n labelFormatter = _a.labelFormatter,\n fractionDigits = _a.fractionDigits;\n var meta = this.getMeta();\n return label.formatter ? label.formatter({\n value: fractionDigits >= 0 ? datum : String(datum),\n index: index,\n fractionDigits: fractionDigits,\n formatter: labelFormatter,\n axis: meta\n }) : labelFormatter ? labelFormatter(datum) : typeof datum === 'number' && fractionDigits >= 0 ?\n // the `datum` is a floating point number\n datum.toFixed(fractionDigits) :\n // the`datum` is an integer, a string or an object\n String(datum);\n };\n // For formatting arbitrary values between the ticks.\n Axis.prototype.formatDatum = function (datum) {\n return String(datum);\n };\n Axis.prototype.computeBBox = function () {\n return this.axisGroup.computeBBox();\n };\n Axis.prototype.initCrossLine = function (crossLine) {\n crossLine.scale = this.scale;\n crossLine.gridLength = this.gridLength;\n };\n Axis.prototype.isAnySeriesActive = function () {\n return false;\n };\n __decorate$1B([Validate(BOOLEAN)], Axis.prototype, \"nice\", void 0);\n __decorate$1B([Validate(GRID_STYLE)], Axis.prototype, \"gridStyle\", void 0);\n __decorate$1B([Validate(NUMBER(0))], Axis.prototype, \"thickness\", void 0);\n return Axis;\n}();\nvar __extends$2E = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1A = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __read$G = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread$n = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$G(arguments[i]));\n return ar;\n};\nvar ChartAxisDirection = /*#__PURE__*/function (ChartAxisDirection) {\n ChartAxisDirection[\"X\"] = \"x\";\n ChartAxisDirection[\"Y\"] = \"y\";\n return ChartAxisDirection;\n}(ChartAxisDirection || {});\nfunction flipChartAxisDirection(direction) {\n if (direction === ChartAxisDirection.X) {\n return ChartAxisDirection.Y;\n } else {\n return ChartAxisDirection.X;\n }\n}\nvar ChartAxisPosition = /*#__PURE__*/function (ChartAxisPosition) {\n ChartAxisPosition[\"Top\"] = \"top\";\n ChartAxisPosition[\"Right\"] = \"right\";\n ChartAxisPosition[\"Bottom\"] = \"bottom\";\n ChartAxisPosition[\"Left\"] = \"left\";\n ChartAxisPosition[\"Angle\"] = \"angle\";\n ChartAxisPosition[\"Radius\"] = \"radius\";\n return ChartAxisPosition;\n}(ChartAxisPosition || {});\nvar ChartAxis = /** @class */function (_super) {\n __extends$2E(ChartAxis, _super);\n function ChartAxis() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.keys = [];\n _this.direction = ChartAxisDirection.Y;\n _this.boundSeries = [];\n _this.includeInvisibleDomains = false;\n _this._position = ChartAxisPosition.Left;\n return _this;\n }\n Object.defineProperty(ChartAxis.prototype, \"type\", {\n get: function () {\n return this.constructor.type || '';\n },\n enumerable: true,\n configurable: true\n });\n ChartAxis.prototype.getMeta = function () {\n return {\n id: this.id,\n direction: this.direction,\n boundSeries: this.boundSeries\n };\n };\n ChartAxis.prototype.useCalculatedTickCount = function () {\n // We only want to use the new algorithm for number axes. Category axes don't use a\n // calculated or user-supplied tick-count, and time axes need special handling depending on\n // the time-range involved.\n return this.scale instanceof LinearScale$1;\n };\n Object.defineProperty(ChartAxis.prototype, \"position\", {\n get: function () {\n return this._position;\n },\n set: function (value) {\n if (this._position !== value) {\n this._position = value;\n switch (value) {\n case ChartAxisPosition.Top:\n this.direction = ChartAxisDirection.X;\n this.rotation = -90;\n this.label.mirrored = true;\n this.label.parallel = true;\n break;\n case ChartAxisPosition.Right:\n this.direction = ChartAxisDirection.Y;\n this.rotation = 0;\n this.label.mirrored = true;\n this.label.parallel = false;\n break;\n case ChartAxisPosition.Bottom:\n this.direction = ChartAxisDirection.X;\n this.rotation = -90;\n this.label.mirrored = false;\n this.label.parallel = true;\n break;\n case ChartAxisPosition.Left:\n this.direction = ChartAxisDirection.Y;\n this.rotation = 0;\n this.label.mirrored = false;\n this.label.parallel = false;\n break;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n ChartAxis.prototype.calculateDomain = function () {\n var _a;\n var _b = this,\n direction = _b.direction,\n boundSeries = _b.boundSeries,\n includeInvisibleDomains = _b.includeInvisibleDomains;\n if (this.linkedTo) {\n this.dataDomain = this.linkedTo.dataDomain;\n } else {\n var domains_1 = [];\n boundSeries.filter(function (s) {\n return includeInvisibleDomains || s.isEnabled();\n }).forEach(function (series) {\n domains_1.push(series.getDomain(direction));\n });\n var domain = (_a = new Array()).concat.apply(_a, __spread$n(domains_1));\n this.dataDomain = this.normaliseDataDomain(domain);\n }\n };\n ChartAxis.prototype.normaliseDataDomain = function (d) {\n return d;\n };\n ChartAxis.prototype.isAnySeriesActive = function () {\n var _this = this;\n return this.boundSeries.some(function (s) {\n return _this.includeInvisibleDomains || s.isEnabled();\n });\n };\n __decorate$1A([Validate(STRING_ARRAY)], ChartAxis.prototype, \"keys\", void 0);\n __decorate$1A([Validate(POSITION)], ChartAxis.prototype, \"_position\", void 0);\n return ChartAxis;\n}(Axis);\nfunction calculateNiceSecondaryAxis(domain, primaryTickCount) {\n // Make secondary axis domain nice using strict tick count, matching the tick count from the primary axis.\n // This is to make the secondary axis grid lines/ tick positions align with the ones from the primary axis.\n var start = Math.floor(domain[0]);\n var stop = domain[1];\n start = calculateNiceStart(start, stop, primaryTickCount);\n var step = getTickStep(start, stop, primaryTickCount);\n var segments = primaryTickCount - 1;\n stop = start + segments * step;\n var d = [start, stop];\n var ticks = getTicks(start, step, primaryTickCount);\n return [d, ticks];\n}\nfunction calculateNiceStart(a, b, count) {\n var rawStep = Math.abs(b - a) / (count - 1);\n var order = Math.floor(Math.log10(rawStep));\n var magnitude = Math.pow(10, order);\n return Math.floor(a / magnitude) * magnitude;\n}\nfunction getTicks(start, step, count) {\n // power of the step will be negative if the step is a fraction (between 0 and 1)\n var stepPower = Math.floor(Math.log10(step));\n var fractionDigits = step > 0 && step < 1 ? Math.abs(stepPower) : 0;\n var f = Math.pow(10, fractionDigits);\n var ticks = new NumericTicks$1(fractionDigits);\n for (var i = 0; i < count; i++) {\n var tick = start + step * i;\n ticks[i] = Math.round(tick * f) / f;\n }\n return ticks;\n}\nfunction getTickStep(start, stop, count) {\n var segments = count - 1;\n var rawStep = (stop - start) / segments;\n return calculateNextNiceStep(rawStep);\n}\nfunction calculateNextNiceStep(rawStep) {\n var order = Math.floor(Math.log10(rawStep));\n var magnitude = Math.pow(10, order);\n // Make order 1\n var step = rawStep / magnitude * 10;\n if (step > 0 && step <= 1) {\n return magnitude / 10;\n }\n if (step > 1 && step <= 2) {\n return 2 * magnitude / 10;\n }\n if (step > 1 && step <= 5) {\n return 5 * magnitude / 10;\n }\n if (step > 5 && step <= 10) {\n return 10 * magnitude / 10;\n }\n if (step > 10 && step <= 20) {\n return 20 * magnitude / 10;\n }\n if (step > 20 && step <= 40) {\n return 40 * magnitude / 10;\n }\n if (step > 40 && step <= 50) {\n return 50 * magnitude / 10;\n }\n if (step > 50 && step <= 100) {\n return 100 * magnitude / 10;\n }\n return step;\n}\nvar __extends$2D = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1z = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __read$F = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nfunction NUMBER_OR_NAN(min, max) {\n // Can be NaN or finite number\n var message = \"expecting a finite Number\" + ((min !== undefined ? ', more than or equal to ' + min : '') + (max !== undefined ? ', less than or equal to ' + max : ''));\n return predicateWithMessage(function (v) {\n return typeof v === 'number' && (isNaN(v) || Number.isFinite(v)) && (min !== undefined ? v >= min : true) && (max !== undefined ? v <= max : true);\n }, message);\n}\nvar NumberAxis = /** @class */function (_super) {\n __extends$2D(NumberAxis, _super);\n function NumberAxis(scale) {\n if (scale === void 0) {\n scale = new LinearScale$1();\n }\n var _this = _super.call(this, scale) || this;\n _this.min = NaN;\n _this.max = NaN;\n _this.scale.clamper = filter;\n return _this;\n }\n NumberAxis.prototype.normaliseDataDomain = function (d) {\n var _a = this,\n min = _a.min,\n max = _a.max;\n if (d.length > 2) {\n d = extent$1(d, isContinuous$1, Number) || [NaN, NaN];\n }\n if (!isNaN(min)) {\n d = [min, d[1]];\n }\n if (!isNaN(max)) {\n d = [d[0], max];\n }\n if (d[0] > d[1]) {\n d = [];\n }\n this.scale.clamp = true;\n return d;\n };\n NumberAxis.prototype.formatDatum = function (datum) {\n if (typeof datum === 'number') {\n return datum.toFixed(2);\n } else {\n doOnce$1(function () {\n return console.warn('AG Charts - Data contains Date objects which are being plotted against a number axis, please only use a number axis for numbers.');\n }, \"number axis config used with Date objects\");\n return String(datum);\n }\n };\n NumberAxis.prototype.updateSecondaryAxisTicks = function (primaryTickCount) {\n if (this.dataDomain == null) {\n throw new Error('AG Charts - dataDomain not calculated, cannot perform tick calculation.');\n }\n var _a = __read$F(calculateNiceSecondaryAxis(this.dataDomain, primaryTickCount !== null && primaryTickCount !== void 0 ? primaryTickCount : 0), 2),\n d = _a[0],\n ticks = _a[1];\n this.scale.domain = d;\n return ticks;\n };\n NumberAxis.className = 'NumberAxis';\n NumberAxis.type = 'number';\n __decorate$1z([Validate(AND(NUMBER_OR_NAN(), LESS_THAN('max')))], NumberAxis.prototype, \"min\", void 0);\n __decorate$1z([Validate(AND(NUMBER_OR_NAN(), GREATER_THAN('min')))], NumberAxis.prototype, \"max\", void 0);\n return NumberAxis;\n}(ChartAxis);\nvar __read$E = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\n/**\n * Maps a discrete domain to a continuous numeric range.\n * See https://github.com/d3/d3-scale#band-scales for more info.\n */\nvar BandScale$1 = /** @class */function () {\n function BandScale() {\n this.type = 'band';\n /**\n * Maps datum to its index in the {@link domain} array.\n * Used to check for duplicate datums (not allowed).\n */\n this.index = new Map();\n /**\n * The output range values for datum at each index.\n */\n this.ordinalRange = [];\n /**\n * Contains unique datums only. Since `{}` is used in place of `Map`\n * for IE11 compatibility, the datums are converted `toString` before\n * the uniqueness check.\n */\n this._domain = [];\n this._range = [0, 1];\n this._bandwidth = 1;\n this._rawBandwidth = 1;\n /**\n * The ratio of the range that is reserved for space between bands.\n */\n this._paddingInner = 0;\n /**\n * The ratio of the range that is reserved for space before the first\n * and after the last band.\n */\n this._paddingOuter = 0;\n this._round = false;\n /**\n * How the leftover range is distributed.\n * `0.5` - equal distribution of space before the first and after the last band,\n * with bands effectively centered within the range.\n */\n this._align = 0.5;\n }\n Object.defineProperty(BandScale.prototype, \"domain\", {\n get: function () {\n return this._domain;\n },\n set: function (values) {\n var domain = this._domain;\n domain.length = 0;\n this.index = new Map();\n var index = this.index;\n // In case one wants to have duplicate domain values, for example, two 'Italy' categories,\n // one should use objects rather than strings for domain values like so:\n // { toString: () => 'Italy' }\n // { toString: () => 'Italy' }\n values.forEach(function (value) {\n if (index.get(value) === undefined) {\n index.set(value, domain.push(value) - 1);\n }\n });\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"range\", {\n get: function () {\n return this._range;\n },\n set: function (values) {\n this._range[0] = values[0];\n this._range[1] = values[1];\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n BandScale.prototype.ticks = function () {\n return this._domain;\n };\n BandScale.prototype.convert = function (d) {\n var i = this.index.get(d);\n if (i === undefined) {\n return NaN;\n }\n var r = this.ordinalRange[i];\n if (r === undefined) {\n return NaN;\n }\n return r;\n };\n Object.defineProperty(BandScale.prototype, \"bandwidth\", {\n get: function () {\n return this._bandwidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"rawBandwidth\", {\n get: function () {\n return this._rawBandwidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"padding\", {\n get: function () {\n return this._paddingInner;\n },\n set: function (value) {\n value = Math.max(0, Math.min(1, value));\n this._paddingInner = value;\n this._paddingOuter = value;\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"paddingInner\", {\n get: function () {\n return this._paddingInner;\n },\n set: function (value) {\n this._paddingInner = Math.max(0, Math.min(1, value)); // [0, 1]\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"paddingOuter\", {\n get: function () {\n return this._paddingOuter;\n },\n set: function (value) {\n this._paddingOuter = Math.max(0, Math.min(1, value)); // [0, 1]\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"round\", {\n get: function () {\n return this._round;\n },\n set: function (value) {\n this._round = value;\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"align\", {\n get: function () {\n return this._align;\n },\n set: function (value) {\n this._align = Math.max(0, Math.min(1, value)); // [0, 1]\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n BandScale.prototype.rescale = function () {\n var _a;\n var n = this._domain.length;\n if (!n) {\n return;\n }\n var _b = __read$E(this._range, 2),\n a = _b[0],\n b = _b[1];\n var reversed = b < a;\n if (reversed) {\n _a = __read$E([b, a], 2), a = _a[0], b = _a[1];\n }\n var rawStep = (b - a) / Math.max(1, n - this._paddingInner + this._paddingOuter * 2);\n var step = rawStep;\n if (this._round) {\n step = Math.floor(step);\n }\n a += (b - a - step * (n - this._paddingInner)) * this._align;\n this._bandwidth = step * (1 - this._paddingInner);\n this._rawBandwidth = rawStep * (1 - this._paddingInner);\n if (this._round) {\n a = Math.round(a);\n this._bandwidth = Math.round(this._bandwidth);\n }\n var values = [];\n for (var i = 0; i < n; i++) {\n values.push(a + step * i);\n }\n if (reversed) {\n values.reverse();\n }\n this.ordinalRange = values;\n };\n return BandScale;\n}();\nvar __extends$2C = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1y = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __read$D = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread$m = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$D(arguments[i]));\n return ar;\n};\nvar CategoryAxis = /** @class */function (_super) {\n __extends$2C(CategoryAxis, _super);\n function CategoryAxis() {\n var _this = _super.call(this, new BandScale$1()) || this;\n _this._paddingOverrideEnabled = false;\n _this.groupPaddingInner = 0.1;\n _this.includeInvisibleDomains = true;\n return _this;\n }\n Object.defineProperty(CategoryAxis.prototype, \"paddingInner\", {\n get: function () {\n this._paddingOverrideEnabled = true;\n return this.scale.paddingInner;\n },\n set: function (value) {\n this._paddingOverrideEnabled = true;\n this.scale.paddingInner = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CategoryAxis.prototype, \"paddingOuter\", {\n get: function () {\n return this.scale.paddingOuter;\n },\n set: function (value) {\n this.scale.paddingOuter = value;\n },\n enumerable: true,\n configurable: true\n });\n CategoryAxis.prototype.normaliseDataDomain = function (d) {\n // Prevent duplicate categories.\n var valuesSet = new Set(d);\n return new (Array.bind.apply(Array, __spread$m([void 0], valuesSet.values())))();\n };\n CategoryAxis.prototype.calculateDomain = function () {\n if (!this._paddingOverrideEnabled) {\n var boundSeries = this.boundSeries;\n if (boundSeries.some(function (s) {\n return ['bar', 'column'].includes(s.type);\n })) {\n this.scale.paddingInner = 0.2;\n this.scale.paddingOuter = 0.3;\n } else {\n this.scale.paddingInner = 1;\n this.scale.paddingOuter = 0;\n }\n }\n return _super.prototype.calculateDomain.call(this);\n };\n CategoryAxis.className = 'CategoryAxis';\n CategoryAxis.type = 'category';\n __decorate$1y([Validate(NUMBER(0, 1))], CategoryAxis.prototype, \"groupPaddingInner\", void 0);\n return CategoryAxis;\n}(ChartAxis);\n\n/**\n * The tree layout is calculated in abstract x/y coordinates, where the root is at (0, 0)\n * and the tree grows downward from the root.\n */\nvar TreeNode = /** @class */function () {\n function TreeNode(label, parent, number) {\n if (label === void 0) {\n label = '';\n }\n if (number === void 0) {\n number = 0;\n }\n this.x = 0;\n this.y = 0;\n this.subtreeLeft = NaN;\n this.subtreeRight = NaN;\n this.screenX = 0;\n this.screenY = 0;\n this.children = [];\n this.leafCount = 0;\n this.prelim = 0;\n this.mod = 0;\n this.ancestor = this;\n this.change = 0;\n this.shift = 0;\n this.label = label;\n // screenX and screenY are meant to be recomputed from (layout) x and y\n // when the tree is resized (without performing another layout)\n this.parent = parent;\n this.depth = parent ? parent.depth + 1 : 0;\n this.number = number;\n }\n TreeNode.prototype.getLeftSibling = function () {\n return this.number > 0 && this.parent ? this.parent.children[this.number - 1] : undefined;\n };\n TreeNode.prototype.getLeftmostSibling = function () {\n return this.number > 0 && this.parent ? this.parent.children[0] : undefined;\n };\n // traverse the left contour of a subtree, return the successor of v on this contour\n TreeNode.prototype.nextLeft = function () {\n return this.children ? this.children[0] : this.thread;\n };\n // traverse the right contour of a subtree, return the successor of v on this contour\n TreeNode.prototype.nextRight = function () {\n return this.children ? this.children[this.children.length - 1] : this.thread;\n };\n TreeNode.prototype.getSiblings = function () {\n var _this = this;\n return this.parent ? this.parent.children.filter(function (_, i) {\n return i !== _this.number;\n }) : [];\n };\n return TreeNode;\n}();\n/**\n * Converts an array of ticks, where each tick has an array of labels, to a label tree.\n * If `pad` is `true`, will ensure that every branch matches the depth of the tree by\n * creating empty labels.\n */\nfunction ticksToTree(ticks, pad) {\n if (pad === void 0) {\n pad = true;\n }\n var root = new TreeNode();\n var depth = 0;\n if (pad) {\n ticks.forEach(function (tick) {\n return depth = Math.max(depth, tick.labels.length);\n });\n }\n ticks.forEach(function (tick) {\n if (pad) {\n while (tick.labels.length < depth) {\n tick.labels.unshift('');\n }\n }\n insertTick(root, tick);\n });\n return root;\n}\nfunction insertTick(root, tick) {\n var pathParts = tick.labels.slice().reverse(); // path elements from root to leaf label\n var lastPartIndex = pathParts.length - 1;\n pathParts.forEach(function (pathPart, partIndex) {\n var children = root.children;\n var existingNode = find(children, function (child) {\n return child.label === pathPart;\n });\n var isNotLeaf = partIndex !== lastPartIndex;\n if (existingNode && isNotLeaf) {\n // the isNotLeaf check is to allow duplicate leafs\n root = existingNode;\n } else {\n var node = new TreeNode(pathPart, root);\n node.number = children.length;\n children.push(node);\n if (isNotLeaf) {\n root = node;\n }\n }\n });\n}\n// Shift the subtree.\nfunction moveSubtree(wm, wp, shift) {\n var subtrees = wp.number - wm.number;\n var ratio = shift / subtrees;\n wp.change -= ratio;\n wp.shift += shift;\n wm.change += ratio;\n wp.prelim += shift;\n wp.mod += shift;\n}\nfunction ancestor(vim, v, defaultAncestor) {\n return v.getSiblings().indexOf(vim.ancestor) >= 0 ? vim.ancestor : defaultAncestor;\n}\n// Spaces out the children.\nfunction executeShifts(v) {\n var children = v.children;\n if (children) {\n var shift = 0;\n var change = 0;\n for (var i = children.length - 1; i >= 0; i--) {\n var w = children[i];\n w.prelim += shift;\n w.mod += shift;\n change += w.change;\n shift += w.shift + change;\n }\n }\n}\n// Moves current subtree with v as the root if some nodes are conflicting in space.\nfunction apportion(v, defaultAncestor, distance) {\n var w = v.getLeftSibling();\n if (w) {\n var vop = v;\n var vip = v;\n var vim = w;\n var vom = vip.getLeftmostSibling();\n var sip = vip.mod;\n var sop = vop.mod;\n var sim = vim.mod;\n var som = vom.mod;\n while (vim.nextRight() && vip.nextLeft()) {\n vim = vim.nextRight();\n vip = vip.nextLeft();\n vom = vom.nextLeft();\n vop = vop.nextRight();\n vop.ancestor = v;\n var shift = vim.prelim + sim - (vip.prelim + sip) + distance;\n if (shift > 0) {\n moveSubtree(ancestor(vim, v, defaultAncestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.mod;\n sip += vip.mod;\n som += vom.mod;\n sop += vop.mod;\n }\n if (vim.nextRight() && !vop.nextRight()) {\n vop.thread = vim.nextRight();\n vop.mod += sim - sop;\n } else {\n if (vip.nextLeft() && !vom.nextLeft()) {\n vom.thread = vip.nextLeft();\n vom.mod += sip - som;\n }\n defaultAncestor = v;\n }\n }\n return defaultAncestor;\n}\n// Compute the preliminary x-coordinate of node and its children (recursively).\nfunction firstWalk(node, distance) {\n var children = node.children;\n if (children.length) {\n var defaultAncestor_1 = children[0];\n children.forEach(function (child) {\n firstWalk(child, distance);\n defaultAncestor_1 = apportion(child, defaultAncestor_1, distance);\n });\n executeShifts(node);\n var midpoint = (children[0].prelim + children[children.length - 1].prelim) / 2;\n var leftSibling = node.getLeftSibling();\n if (leftSibling) {\n node.prelim = leftSibling.prelim + distance;\n node.mod = node.prelim - midpoint;\n } else {\n node.prelim = midpoint;\n }\n } else {\n var leftSibling = node.getLeftSibling();\n node.prelim = leftSibling ? leftSibling.prelim + distance : 0;\n }\n}\nvar Dimensions = /** @class */function () {\n function Dimensions() {\n this.top = Infinity;\n this.right = -Infinity;\n this.bottom = -Infinity;\n this.left = Infinity;\n }\n Dimensions.prototype.update = function (node, xy) {\n var _a = xy(node),\n x = _a.x,\n y = _a.y;\n if (x > this.right) {\n this.right = x;\n }\n if (x < this.left) {\n this.left = x;\n }\n if (y > this.bottom) {\n this.bottom = y;\n }\n if (y < this.top) {\n this.top = y;\n }\n };\n return Dimensions;\n}();\nfunction secondWalk(v, m, layout) {\n v.x = v.prelim + m;\n v.y = v.depth;\n layout.update(v);\n v.children.forEach(function (w) {\n return secondWalk(w, m + v.mod, layout);\n });\n}\n// After the second walk the parent nodes are positioned at the center of their immediate children.\n// If we want the parent nodes to be positioned at the center of the subtree for which they are roots,\n// we need a third walk to adjust the positions.\nfunction thirdWalk(v) {\n var children = v.children;\n var leafCount = 0;\n children.forEach(function (w) {\n thirdWalk(w);\n if (w.children.length) {\n leafCount += w.leafCount;\n } else {\n leafCount++;\n }\n });\n v.leafCount = leafCount;\n if (children.length) {\n v.subtreeLeft = children[0].subtreeLeft;\n v.subtreeRight = children[v.children.length - 1].subtreeRight;\n v.x = (v.subtreeLeft + v.subtreeRight) / 2;\n } else {\n v.subtreeLeft = v.x;\n v.subtreeRight = v.x;\n }\n}\nfunction treeLayout(root) {\n var layout = new TreeLayout();\n firstWalk(root, 1);\n secondWalk(root, -root.prelim, layout);\n thirdWalk(root);\n return layout;\n}\nvar TreeLayout = /** @class */function () {\n function TreeLayout() {\n this.dimensions = new Dimensions();\n this.leafCount = 0;\n this.nodes = [];\n // One might want to process leaf nodes separately from the rest of the tree.\n // For example, position labels corresponding to leafs vertically, rather than horizontally.\n this.leafNodes = [];\n this.nonLeafNodes = [];\n this.depth = 0;\n }\n TreeLayout.prototype.update = function (node) {\n this.dimensions.update(node, function (node) {\n return {\n x: node.x,\n y: node.y\n };\n });\n if (!node.children.length) {\n this.leafCount++;\n this.leafNodes.push(node);\n } else {\n this.nonLeafNodes.push(node);\n }\n if (node.depth > this.depth) {\n this.depth = node.depth;\n }\n this.nodes.push(node);\n };\n TreeLayout.prototype.resize = function (width, height, shiftX, shiftY, flipX) {\n if (shiftX === void 0) {\n shiftX = 0;\n }\n if (shiftY === void 0) {\n shiftY = 0;\n }\n if (flipX === void 0) {\n flipX = false;\n }\n var xSteps = this.leafCount - 1;\n var ySteps = this.depth;\n var dimensions = this.dimensions;\n var scalingX = 1;\n var scalingY = 1;\n if (width > 0 && xSteps) {\n var existingSpacingX = (dimensions.right - dimensions.left) / xSteps;\n var desiredSpacingX = width / xSteps;\n scalingX = desiredSpacingX / existingSpacingX;\n if (flipX) {\n scalingX = -scalingX;\n }\n }\n if (height > 0 && ySteps) {\n var existingSpacingY = (dimensions.bottom - dimensions.top) / ySteps;\n var desiredSpacingY = height / ySteps;\n scalingY = desiredSpacingY / existingSpacingY;\n }\n var screenDimensions = new Dimensions();\n this.nodes.forEach(function (node) {\n node.screenX = node.x * scalingX;\n node.screenY = node.y * scalingY;\n screenDimensions.update(node, function (node) {\n return {\n x: node.screenX,\n y: node.screenY\n };\n });\n });\n // Normalize so that root top and leftmost leaf left start at zero.\n var offsetX = -screenDimensions.left;\n var offsetY = -screenDimensions.top;\n this.nodes.forEach(function (node) {\n node.screenX += offsetX + shiftX;\n node.screenY += offsetY + shiftY;\n });\n };\n return TreeLayout;\n}();\nvar __extends$2B = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1x = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __read$C = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread$l = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$C(arguments[i]));\n return ar;\n};\nvar GroupedCategoryAxisLabel = /** @class */function (_super) {\n __extends$2B(GroupedCategoryAxisLabel, _super);\n function GroupedCategoryAxisLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.grid = false;\n return _this;\n }\n __decorate$1x([Validate(BOOLEAN)], GroupedCategoryAxisLabel.prototype, \"grid\", void 0);\n return GroupedCategoryAxisLabel;\n}(AxisLabel);\nvar GroupedCategoryAxis = /** @class */function (_super) {\n __extends$2B(GroupedCategoryAxis, _super);\n function GroupedCategoryAxis() {\n var _this = _super.call(this, new BandScale$1()) || this;\n // Label scale (labels are positioned between ticks, tick count = label count + 1).\n // We don't call is `labelScale` for consistency with other axes.\n _this.tickScale = new BandScale$1();\n _this.translation = {\n x: 0,\n y: 0\n };\n _this.line = new AxisLine();\n _this.label = new GroupedCategoryAxisLabel();\n /**\n * The color of the labels.\n * Use `undefined` rather than `rgba(0, 0, 0, 0)` to make labels invisible.\n */\n _this.labelColor = 'rgba(87, 87, 87, 1)';\n _this.includeInvisibleDomains = true;\n var _a = _this,\n axisGroup = _a.axisGroup,\n gridlineGroup = _a.gridlineGroup,\n tickScale = _a.tickScale,\n scale = _a.scale;\n scale.paddingOuter = 0.1;\n scale.paddingInner = scale.paddingOuter * 2;\n _this.requestedRange = scale.range.slice();\n _this.refreshScale();\n tickScale.paddingInner = 1;\n tickScale.paddingOuter = 0;\n _this.gridLineSelection = Selection$1.select(gridlineGroup).selectAll();\n _this.axisLineSelection = Selection$1.select(axisGroup).selectAll();\n _this.separatorSelection = Selection$1.select(axisGroup).selectAll();\n _this.labelSelection = Selection$1.select(axisGroup).selectAll();\n return _this;\n }\n Object.defineProperty(GroupedCategoryAxis.prototype, \"range\", {\n get: function () {\n return this.requestedRange.slice();\n },\n set: function (value) {\n this.requestedRange = value.slice();\n this.updateRange();\n },\n enumerable: true,\n configurable: true\n });\n GroupedCategoryAxis.prototype.updateRange = function () {\n var _a = this,\n rr = _a.requestedRange,\n vr = _a.visibleRange,\n scale = _a.scale;\n var span = (rr[1] - rr[0]) / (vr[1] - vr[0]);\n var shift = span * vr[0];\n var start = rr[0] - shift;\n this.tickScale.range = scale.range = [start, start + span];\n this.resizeTickTree();\n };\n GroupedCategoryAxis.prototype.resizeTickTree = function () {\n var s = this.scale;\n var range = s.domain.length ? [s.convert(s.domain[0]), s.convert(s.domain[s.domain.length - 1])] : s.range;\n var layout = this.tickTreeLayout;\n var lineHeight = this.lineHeight;\n if (layout) {\n layout.resize(Math.abs(range[1] - range[0]), layout.depth * lineHeight, (Math.min(range[0], range[1]) || 0) + (s.bandwidth || 0) / 2, -layout.depth * lineHeight, range[1] - range[0] < 0);\n }\n };\n Object.defineProperty(GroupedCategoryAxis.prototype, \"lineHeight\", {\n get: function () {\n return this.label.fontSize * 1.5;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GroupedCategoryAxis.prototype, \"gridLength\", {\n get: function () {\n return this._gridLength;\n },\n /**\n * The length of the grid. The grid is only visible in case of a non-zero value.\n */\n set: function (value) {\n // Was visible and now invisible, or was invisible and now visible.\n if (this._gridLength && !value || !this._gridLength && value) {\n this.gridLineSelection = this.gridLineSelection.remove().setData([]);\n this.labelSelection = this.labelSelection.remove().setData([]);\n }\n this._gridLength = value;\n },\n enumerable: true,\n configurable: true\n });\n GroupedCategoryAxis.prototype.calculateDomain = function () {\n var _a;\n var _b = this,\n direction = _b.direction,\n boundSeries = _b.boundSeries;\n var domains = [];\n var isNumericX = undefined;\n boundSeries.filter(function (s) {\n return s.visible;\n }).forEach(function (series) {\n if (direction === ChartAxisDirection.X) {\n if (isNumericX === undefined) {\n // always add first X domain\n var domain_1 = series.getDomain(direction);\n domains.push(domain_1);\n isNumericX = typeof domain_1[0] === 'number';\n } else if (isNumericX) {\n // only add further X domains if the axis is numeric\n domains.push(series.getDomain(direction));\n }\n } else {\n domains.push(series.getDomain(direction));\n }\n });\n var domain = (_a = new Array()).concat.apply(_a, __spread$l(domains));\n var values = extent$1(domain, isContinuous$1) || domain;\n this.dataDomain = this.normaliseDataDomain(values);\n };\n GroupedCategoryAxis.prototype.normaliseDataDomain = function (d) {\n // Prevent duplicate categories.\n var values = d.filter(function (s, i, arr) {\n return arr.indexOf(s) === i;\n });\n var tickTree = ticksToTree(values);\n this.tickTreeLayout = treeLayout(tickTree);\n var tickScaleDomain = values.slice();\n tickScaleDomain.push('');\n this.tickScale.domain = tickScaleDomain;\n this.resizeTickTree();\n return values;\n };\n /**\n * Creates/removes/updates the scene graph nodes that constitute the axis.\n * Supposed to be called _manually_ after changing _any_ of the axis properties.\n * This allows to bulk set axis properties before updating the nodes.\n * The node changes made by this method are rendered on the next animation frame.\n * We could schedule this method call automatically on the next animation frame\n * when any of the axis properties change (the way we do when properties of scene graph's\n * nodes change), but this will mean that we first wait for the next animation\n * frame to make changes to the nodes of the axis, then wait for another animation\n * frame to render those changes. It's nice to have everything update automatically,\n * but this extra level of async indirection will not just introduce an unwanted delay,\n * it will also make it harder to reason about the program.\n */\n GroupedCategoryAxis.prototype.update = function (primaryTickCount) {\n var _this = this;\n this.calculateDomain();\n var _a = this,\n scale = _a.scale,\n label = _a.label,\n tickScale = _a.tickScale,\n requestedRange = _a.requestedRange;\n scale.domain = this.dataDomain;\n var rangeStart = scale.range[0];\n var rangeEnd = scale.range[1];\n var rangeLength = Math.abs(rangeEnd - rangeStart);\n var bandwidth = rangeLength / scale.domain.length || 0;\n var parallelLabels = label.parallel;\n var rotation = toRadians(this.rotation);\n var isHorizontal = Math.abs(Math.cos(rotation)) < 1e-8;\n var labelRotation = this.label.rotation ? normalizeAngle360(toRadians(this.label.rotation)) : 0;\n this.updatePosition();\n var title = this.title;\n // The Text `node` of the Caption is not used to render the title of the grouped category axis.\n // The phantom root of the tree layout is used instead.\n if (title) {\n title.node.visible = false;\n }\n var lineHeight = this.lineHeight;\n // Render ticks and labels.\n var tickTreeLayout = this.tickTreeLayout;\n var labels = scale.ticks();\n var treeLabels = tickTreeLayout ? tickTreeLayout.nodes : [];\n var isLabelTree = tickTreeLayout ? tickTreeLayout.depth > 1 : false;\n var ticks = tickScale.ticks();\n // The side of the axis line to position the labels on.\n // -1 = left (default)\n // 1 = right\n var sideFlag = label.mirrored ? 1 : -1;\n // When labels are parallel to the axis line, the `parallelFlipFlag` is used to\n // flip the labels to avoid upside-down text, when the axis is rotated\n // such that it is in the right hemisphere, i.e. the angle of rotation\n // is in the [0, π] interval.\n // The rotation angle is normalized, so that we have an easier time checking\n // if it's in the said interval. Since the axis is always rendered vertically\n // and then rotated, zero rotation means 12 (not 3) o-clock.\n // -1 = flip\n // 1 = don't flip (default)\n var parallelFlipRotation = normalizeAngle360(rotation);\n var parallelFlipFlag = !labelRotation && parallelFlipRotation >= 0 && parallelFlipRotation <= Math.PI ? -1 : 1;\n var regularFlipRotation = normalizeAngle360(rotation - Math.PI / 2);\n // Flip if the axis rotation angle is in the top hemisphere.\n var regularFlipFlag = !labelRotation && regularFlipRotation >= 0 && regularFlipRotation <= Math.PI ? -1 : 1;\n var updateGridLines = this.gridLineSelection.setData(this.gridLength ? ticks : []);\n updateGridLines.exit.remove();\n var enterGridLines = updateGridLines.enter.append(Line$1);\n var gridLineSelection = updateGridLines.merge(enterGridLines);\n var updateLabels = this.labelSelection.setData(treeLabels);\n updateLabels.exit.remove();\n var enterLabels = updateLabels.enter.append(Text$1);\n var labelSelection = updateLabels.merge(enterLabels);\n var labelFormatter = label.formatter;\n var labelBBoxes = new Map();\n var maxLeafLabelWidth = 0;\n labelSelection.each(function (node, datum, index) {\n node.fontStyle = label.fontStyle;\n node.fontWeight = label.fontWeight;\n node.fontSize = label.fontSize;\n node.fontFamily = label.fontFamily;\n node.fill = label.color;\n node.textBaseline = parallelFlipFlag === -1 ? 'bottom' : 'hanging';\n node.textAlign = 'center';\n node.translationX = datum.screenY - label.fontSize * 0.25;\n node.translationY = datum.screenX;\n if (index === 0) {\n // use the phantom root as the axis title\n if (title && title.enabled && labels.length > 0) {\n node.visible = true;\n node.text = title.text;\n node.fontSize = title.fontSize;\n node.fontStyle = title.fontStyle;\n node.fontWeight = title.fontWeight;\n node.fontFamily = title.fontFamily;\n node.textBaseline = 'hanging';\n } else {\n node.visible = false;\n }\n } else {\n node.text = labelFormatter ? labelFormatter({\n value: String(datum.label),\n index: index\n }) : String(datum.label);\n node.visible = datum.screenX >= requestedRange[0] && datum.screenX <= requestedRange[1];\n }\n var bbox = node.computeBBox();\n labelBBoxes.set(node.id, bbox);\n if (bbox.width > maxLeafLabelWidth) {\n maxLeafLabelWidth = bbox.width;\n }\n });\n var labelX = sideFlag * label.padding;\n var autoRotation = parallelLabels ? parallelFlipFlag * Math.PI / 2 : regularFlipFlag === -1 ? Math.PI : 0;\n var labelGrid = this.label.grid;\n var separatorData = [];\n labelSelection.each(function (label, datum, index) {\n label.x = labelX;\n label.rotationCenterX = labelX;\n if (!datum.children.length) {\n label.rotation = labelRotation;\n label.textAlign = 'end';\n label.textBaseline = 'middle';\n var bbox = labelBBoxes.get(label.id);\n if (bbox && bbox.height > bandwidth) {\n label.visible = false;\n }\n } else {\n label.translationX -= maxLeafLabelWidth - lineHeight + _this.label.padding;\n var availableRange = datum.leafCount * bandwidth;\n var bbox = labelBBoxes.get(label.id);\n if (bbox && bbox.width > availableRange) {\n label.visible = false;\n } else if (isHorizontal) {\n label.rotation = autoRotation;\n } else {\n label.rotation = -Math.PI / 2;\n }\n }\n // Calculate positions of label separators for all nodes except the root.\n // Each separator is placed to the top of the current label.\n if (datum.parent && isLabelTree) {\n var y = !datum.children.length ? datum.screenX - bandwidth / 2 : datum.screenX - datum.leafCount * bandwidth / 2;\n if (!datum.children.length) {\n if (datum.number !== datum.children.length - 1 || labelGrid) {\n separatorData.push({\n y: y,\n x1: 0,\n x2: -maxLeafLabelWidth - _this.label.padding * 2,\n toString: function () {\n return String(index);\n }\n });\n }\n } else {\n var x = -maxLeafLabelWidth - _this.label.padding * 2 + datum.screenY;\n separatorData.push({\n y: y,\n x1: x + lineHeight,\n x2: x,\n toString: function () {\n return String(index);\n }\n });\n }\n }\n });\n // Calculate the position of the long separator on the far bottom of the axis.\n var minX = 0;\n separatorData.forEach(function (d) {\n return minX = Math.min(minX, d.x2);\n });\n separatorData.push({\n y: Math.max(rangeStart, rangeEnd),\n x1: 0,\n x2: minX,\n toString: function () {\n return String(separatorData.length);\n }\n });\n var updateSeparators = this.separatorSelection.setData(separatorData);\n updateSeparators.exit.remove();\n var enterSeparators = updateSeparators.enter.append(Line$1);\n var separatorSelection = updateSeparators.merge(enterSeparators);\n this.separatorSelection = separatorSelection;\n var epsilon = 0.0000001;\n separatorSelection.each(function (line, datum) {\n line.x1 = datum.x1;\n line.x2 = datum.x2;\n line.y1 = datum.y;\n line.y2 = datum.y;\n line.visible = datum.y >= requestedRange[0] - epsilon && datum.y <= requestedRange[1] + epsilon;\n line.stroke = _this.tick.color;\n line.fill = undefined;\n line.strokeWidth = 1;\n });\n this.gridLineSelection = gridLineSelection;\n this.labelSelection = labelSelection;\n // Render axis lines.\n var lineCount = tickTreeLayout ? tickTreeLayout.depth + 1 : 1;\n var lines = [];\n for (var i = 0; i < lineCount; i++) {\n lines.push(i);\n }\n var updateAxisLines = this.axisLineSelection.setData(lines);\n updateAxisLines.exit.remove();\n var enterAxisLines = updateAxisLines.enter.append(Line$1);\n var axisLineSelection = updateAxisLines.merge(enterAxisLines);\n this.axisLineSelection = axisLineSelection;\n axisLineSelection.each(function (line, _, index) {\n var x = index > 0 ? -maxLeafLabelWidth - _this.label.padding * 2 - (index - 1) * lineHeight : 0;\n line.x1 = x;\n line.x2 = x;\n line.y1 = requestedRange[0];\n line.y2 = requestedRange[1];\n line.strokeWidth = _this.line.width;\n line.stroke = _this.line.color;\n line.visible = labels.length > 0 && (index === 0 || labelGrid && isLabelTree);\n });\n if (this.gridLength) {\n var styles_1 = this.gridStyle;\n var styleCount_1 = styles_1.length;\n gridLineSelection.each(function (line, datum, index) {\n var y = Math.round(tickScale.convert(datum));\n line.x1 = 0;\n line.x2 = -sideFlag * _this.gridLength;\n line.y1 = y;\n line.y2 = y;\n line.visible = y >= requestedRange[0] && y <= requestedRange[1] && Math.abs(line.parent.translationY - rangeStart) > 1;\n var style = styles_1[index % styleCount_1];\n line.stroke = style.stroke;\n line.strokeWidth = _this.tick.width;\n line.lineDash = style.lineDash;\n line.fill = undefined;\n });\n }\n return primaryTickCount;\n };\n GroupedCategoryAxis.className = 'GroupedCategoryAxis';\n GroupedCategoryAxis.type = 'groupedCategory';\n __decorate$1x([Validate(OPT_COLOR_STRING)], GroupedCategoryAxis.prototype, \"labelColor\", void 0);\n return GroupedCategoryAxis;\n}(ChartAxis);\nfunction floor$k(date) {\n return date;\n}\nfunction offset$k(date, milliseconds) {\n date.setTime(date.getTime() + milliseconds);\n}\nfunction count$k(start, end) {\n return end.getTime() - start.getTime();\n}\nvar millisecond$1 = new CountableTimeInterval$1(floor$k, offset$k, count$k);\n\n// Common time unit sizes in milliseconds.\nvar epochYear = new Date(0).getFullYear();\nvar durationSecond$1 = 1000;\nvar durationMinute$1 = durationSecond$1 * 60;\nvar durationHour$1 = durationMinute$1 * 60;\nvar durationDay$1 = durationHour$1 * 24;\nvar durationWeek$1 = durationDay$1 * 7;\nvar durationMonth$1 = durationDay$1 * 30;\nvar durationYear$1 = durationDay$1 * 365;\nfunction floor$j(date) {\n date.setTime(date.getTime() - date.getMilliseconds());\n}\nfunction offset$j(date, seconds) {\n date.setTime(date.getTime() + seconds * durationSecond$1);\n}\nfunction count$j(start, end) {\n return (end.getTime() - start.getTime()) / durationSecond$1;\n}\nvar second$1 = new CountableTimeInterval$1(floor$j, offset$j, count$j);\nfunction floor$i(date) {\n date.setTime(date.getTime() - date.getMilliseconds() - date.getSeconds() * durationSecond$1);\n}\nfunction offset$i(date, minutes) {\n date.setTime(date.getTime() + minutes * durationMinute$1);\n}\nfunction count$i(start, end) {\n return (end.getTime() - start.getTime()) / durationMinute$1;\n}\nfunction field$g(date) {\n return Math.floor(date.getTime() / durationMinute$1);\n}\nvar minute$1 = new CountableTimeInterval$1(floor$i, offset$i, count$i, field$g);\nfunction floor$h(date) {\n date.setTime(date.getTime() - date.getMilliseconds() - date.getSeconds() * durationSecond$1 - date.getMinutes() * durationMinute$1);\n}\nfunction offset$h(date, hours) {\n date.setTime(date.getTime() + hours * durationHour$1);\n}\nfunction count$h(start, end) {\n return (end.getTime() - start.getTime()) / durationHour$1;\n}\nfunction field$f(date) {\n return Math.floor(date.getTime() / durationHour$1);\n}\nvar hour$1 = new CountableTimeInterval$1(floor$h, offset$h, count$h, field$f);\nfunction floor$g(date) {\n date.setHours(0, 0, 0, 0);\n}\nfunction offset$g(date, days) {\n date.setDate(date.getDate() + days);\n}\nfunction count$g(start, end) {\n var tzMinuteDelta = end.getTimezoneOffset() - start.getTimezoneOffset();\n return (end.getTime() - start.getTime() - tzMinuteDelta * durationMinute$1) / durationDay$1;\n}\nfunction field$e(date) {\n return Math.floor(date.getTime() / durationDay$1);\n}\nvar day$1 = new CountableTimeInterval$1(floor$g, offset$g, count$g, field$e);\n\n// Set date to n-th day of the week.\nfunction weekday$3(n) {\n // Sets the `date` to the start of the `n`-th day of the current week.\n // n == 0 is Sunday.\n function floor(date) {\n // 1..31 1..7\n date.setDate(date.getDate() - (date.getDay() + 7 - n) % 7);\n date.setHours(0, 0, 0, 0); // h, m, s, ms\n }\n // Offset the date by the given number of weeks.\n function offset(date, weeks) {\n date.setDate(date.getDate() + weeks * 7);\n }\n // Count the number of weeks between the start and end dates.\n function count(start, end) {\n var msDelta = end.getTime() - start.getTime();\n var tzMinuteDelta = end.getTimezoneOffset() - start.getTimezoneOffset();\n return (msDelta - tzMinuteDelta * durationMinute$1) / durationWeek$1;\n }\n return new CountableTimeInterval$1(floor, offset, count);\n}\nvar sunday$1 = weekday$3(0);\nvar monday$1 = weekday$3(1);\nvar tuesday = weekday$3(2);\nvar wednesday = weekday$3(3);\nvar thursday$1 = weekday$3(4);\nvar friday = weekday$3(5);\nvar saturday = weekday$3(6);\nfunction floor$f(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}\nfunction offset$f(date, months) {\n date.setMonth(date.getMonth() + months);\n}\nfunction count$f(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}\nfunction field$d(date) {\n var yearsSinceEpoch = date.getFullYear() - epochYear;\n var monthsSinceEpoch = yearsSinceEpoch * 12 + date.getMonth();\n return monthsSinceEpoch;\n}\nvar month$1 = new CountableTimeInterval$1(floor$f, offset$f, count$f, field$d);\nfunction floor$e(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}\nfunction offset$e(date, years) {\n date.setFullYear(date.getFullYear() + years);\n}\nfunction count$e(start, end) {\n return end.getFullYear() - start.getFullYear();\n}\nfunction field$c(date) {\n return date.getFullYear() - epochYear;\n}\nvar year$1 = new CountableTimeInterval$1(floor$e, offset$e, count$e, field$c);\nfunction floor$d(date) {\n date.setUTCHours(0, 0, 0, 0);\n}\nfunction offset$d(date, days) {\n date.setUTCDate(date.getUTCDate() + days);\n}\nfunction count$d(start, end) {\n return (end.getTime() - start.getTime()) / durationDay$1;\n}\nfunction field$b(date) {\n return date.getUTCDate() - 1;\n}\nvar utcDay$1 = new CountableTimeInterval$1(floor$d, offset$d, count$d, field$b);\nfunction floor$c(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}\nfunction offset$c(date, years) {\n date.setUTCFullYear(date.getUTCFullYear() + years);\n}\nfunction count$c(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}\nfunction field$a(date) {\n return date.getUTCFullYear();\n}\nvar utcYear$1 = new CountableTimeInterval$1(floor$c, offset$c, count$c, field$a);\n\n// Set date to n-th day of the week.\nfunction weekday$2(n) {\n // Sets the `date` to the start of the `n`-th day of the current week.\n // n == 0 is Sunday.\n function floor(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - n) % 7);\n date.setHours(0, 0, 0, 0); // h, m, s, ms\n }\n // Offset the date by the given number of weeks.\n function offset(date, weeks) {\n date.setUTCDate(date.getUTCDate() + weeks * 7);\n }\n // Count the number of weeks between the start and end dates.\n function count(start, end) {\n return (end.getTime() - start.getTime()) / durationWeek$1;\n }\n return new CountableTimeInterval$1(floor, offset, count);\n}\nvar utcSunday$1 = weekday$2(0);\nvar utcMonday$1 = weekday$2(1);\nweekday$2(2);\nweekday$2(3);\nvar utcThursday$1 = weekday$2(4);\nweekday$2(5);\nweekday$2(6);\nfunction localDate$1(d) {\n // For JS Dates the [0, 100) interval is a time warp, a fast forward to the 20th century.\n // For example, -1 is -0001 BC, 0 is already 1900 AD.\n if (d.y >= 0 && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\nfunction utcDate$1(d) {\n if (d.y >= 0 && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n/**\n * Creates a lookup map for array of names to go from a name to index.\n * @param names\n */\nfunction formatLookup$1(names) {\n var map = {};\n for (var i = 0, n = names.length; i < n; i++) {\n map[names[i].toLowerCase()] = i;\n }\n return map;\n}\nfunction newYear$1(y) {\n return {\n y: y,\n m: 0,\n d: 1,\n H: 0,\n M: 0,\n S: 0,\n L: 0\n };\n}\nvar percentCharCode$1 = 37;\nvar numberRe$1 = /^\\s*\\d+/; // ignores next directive\nvar percentRe$1 = /^%/;\nvar requoteRe$1 = /[\\\\^$*+?|[\\]().{}]/g;\n/**\n * Prepends any character in the `requoteRe` set with a backslash.\n * @param s\n */\nvar requote$1 = function (s) {\n return s.replace(requoteRe$1, '\\\\$&');\n}; // $& - matched substring\n/**\n * Returns a RegExp that matches any string that starts with any of the given names (case insensitive).\n * @param names\n */\nvar formatRe$1 = function (names) {\n return new RegExp('^(?:' + names.map(requote$1).join('|') + ')', 'i');\n};\n// A map of padding modifiers to padding strings. Default is `0`.\nvar pads$1 = {\n '-': '',\n _: ' ',\n '0': '0'\n};\nfunction pad$1(value, fill, width) {\n var sign = value < 0 ? '-' : '';\n var string = String(sign ? -value : value);\n var length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n/**\n * Create a new time-locale-based object which exposes time-formatting\n * methods for the specified locale definition.\n *\n * @param timeLocale A time locale definition.\n */\nfunction formatLocale$2(timeLocale) {\n var lDateTime = timeLocale.dateTime;\n var lDate = timeLocale.date;\n var lTime = timeLocale.time;\n var lPeriods = timeLocale.periods;\n var lWeekdays = timeLocale.days;\n var lShortWeekdays = timeLocale.shortDays;\n var lMonths = timeLocale.months;\n var lShortMonths = timeLocale.shortMonths;\n var periodRe = formatRe$1(lPeriods);\n var periodLookup = formatLookup$1(lPeriods);\n var weekdayRe = formatRe$1(lWeekdays);\n var weekdayLookup = formatLookup$1(lWeekdays);\n var shortWeekdayRe = formatRe$1(lShortWeekdays);\n var shortWeekdayLookup = formatLookup$1(lShortWeekdays);\n var monthRe = formatRe$1(lMonths);\n var monthLookup = formatLookup$1(lMonths);\n var shortMonthRe = formatRe$1(lShortMonths);\n var shortMonthLookup = formatLookup$1(lShortMonths);\n var formats = {\n a: formatShortWeekday,\n A: formatWeekday,\n b: formatShortMonth,\n B: formatMonth,\n c: undefined,\n d: formatDayOfMonth,\n e: formatDayOfMonth,\n f: formatMicroseconds,\n H: formatHour24,\n I: formatHour12,\n j: formatDayOfYear,\n L: formatMilliseconds,\n m: formatMonthNumber,\n M: formatMinutes,\n p: formatPeriod,\n Q: formatUnixTimestamp,\n s: formatUnixTimestampSeconds,\n S: formatSeconds,\n u: formatWeekdayNumberMonday,\n U: formatWeekNumberSunday,\n V: formatWeekNumberISO,\n w: formatWeekdayNumberSunday,\n W: formatWeekNumberMonday,\n x: undefined,\n X: undefined,\n y: formatYear,\n Y: formatFullYear,\n Z: formatZone,\n '%': formatLiteralPercent\n };\n var utcFormats = {\n a: formatUTCShortWeekday,\n A: formatUTCWeekday,\n b: formatUTCShortMonth,\n B: formatUTCMonth,\n c: undefined,\n d: formatUTCDayOfMonth,\n e: formatUTCDayOfMonth,\n f: formatUTCMicroseconds,\n H: formatUTCHour24,\n I: formatUTCHour12,\n j: formatUTCDayOfYear,\n L: formatUTCMilliseconds,\n m: formatUTCMonthNumber,\n M: formatUTCMinutes,\n p: formatUTCPeriod,\n Q: formatUnixTimestamp,\n s: formatUnixTimestampSeconds,\n S: formatUTCSeconds,\n u: formatUTCWeekdayNumberMonday,\n U: formatUTCWeekNumberSunday,\n V: formatUTCWeekNumberISO,\n w: formatUTCWeekdayNumberSunday,\n W: formatUTCWeekNumberMonday,\n x: undefined,\n X: undefined,\n y: formatUTCYear,\n Y: formatUTCFullYear,\n Z: formatUTCZone,\n '%': formatLiteralPercent\n };\n var parses = {\n a: parseShortWeekday,\n A: parseWeekday,\n b: parseShortMonth,\n B: parseMonth,\n c: parseLocaleDateTime,\n d: parseDayOfMonth,\n e: parseDayOfMonth,\n f: parseMicroseconds,\n H: parseHour24,\n I: parseHour24,\n j: parseDayOfYear,\n L: parseMilliseconds,\n m: parseMonthNumber,\n M: parseMinutes,\n p: parsePeriod,\n Q: parseUnixTimestamp,\n s: parseUnixTimestampSeconds,\n S: parseSeconds,\n u: parseWeekdayNumberMonday,\n U: parseWeekNumberSunday,\n V: parseWeekNumberISO,\n w: parseWeekdayNumberSunday,\n W: parseWeekNumberMonday,\n x: parseLocaleDate,\n X: parseLocaleTime,\n y: parseYear,\n Y: parseFullYear,\n Z: parseZone,\n '%': parseLiteralPercent\n };\n // Recursive definitions.\n formats.x = newFormat(lDate, formats);\n formats.X = newFormat(lTime, formats);\n formats.c = newFormat(lDateTime, formats);\n utcFormats.x = newFormat(lDate, utcFormats);\n utcFormats.X = newFormat(lTime, utcFormats);\n utcFormats.c = newFormat(lDateTime, utcFormats);\n function newParse(specifier, newDate) {\n return function (str) {\n var d = newYear$1(1900);\n str += '';\n var i = parseSpecifier(d, specifier, str, 0);\n if (i != str.length) {\n return undefined;\n }\n // If a UNIX timestamp is specified, return it.\n if ('Q' in d) {\n return new Date(d.Q);\n }\n // The am-pm flag is 0 for AM, and 1 for PM.\n if ('p' in d) {\n d.H = d.H % 12 + d.p * 12;\n }\n // Convert day-of-week and week-of-year to day-of-year.\n if ('V' in d) {\n if (d.V < 1 || d.V > 53) {\n return undefined;\n }\n if (!('w' in d)) {\n d.w = 1;\n }\n if ('Z' in d) {\n var week = utcDate$1(newYear$1(d.y));\n var day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday$1.ceil(week) : utcMonday$1.floor(week);\n week = utcDay$1.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n var week = newDate(newYear$1(d.y));\n var day = week.getDay();\n week = day > 4 || day === 0 ? monday$1.ceil(week) : monday$1.floor(week);\n week = day$1.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if ('W' in d || 'U' in d) {\n if (!('w' in d)) {\n d.w = 'u' in d ? d.u % 7 : 'W' in d ? 1 : 0;\n }\n var day = 'Z' in d ? utcDate$1(newYear$1(d.y)).getUTCDay() : newDate(newYear$1(d.y)).getDay();\n d.m = 0;\n d.d = 'W' in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if ('Z' in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate$1(d);\n }\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n /**\n * Creates a new function that formats the given Date or timestamp according to specifier.\n * @param specifier\n * @param formats\n */\n function newFormat(specifier, formats) {\n return function (date) {\n var string = [];\n var n = specifier.length;\n var i = -1;\n var j = 0;\n if (!(date instanceof Date)) {\n date = new Date(+date);\n }\n while (++i < n) {\n if (specifier.charCodeAt(i) === percentCharCode$1) {\n string.push(specifier.slice(j, i)); // copy the chunks of specifier with no directives as is\n var c = specifier.charAt(++i);\n var pad_1 = pads$1[c];\n if (pad_1 != undefined) {\n // if format directive has a padding modifier in front of it\n c = specifier.charAt(++i); // fetch the directive itself\n } else {\n pad_1 = c === 'e' ? ' ' : '0'; // use the default padding modifier\n }\n var format = formats[c];\n if (format) {\n // if the directive has a corresponding formatting function\n c = format(date, pad_1); // replace the directive with the formatted date\n }\n string.push(c);\n j = i + 1;\n }\n }\n string.push(specifier.slice(j, i));\n return string.join('');\n };\n }\n // Simultaneously walks over the specifier and the parsed string, populating the `d` map with parsed values.\n // The returned number is expected to equal the length of the parsed `string`, if parsing succeeded.\n function parseSpecifier(d, specifier, string, j) {\n // i - `specifier` string index\n // j - parsed `string` index\n var i = 0;\n var n = specifier.length;\n var m = string.length;\n while (i < n) {\n if (j >= m) {\n return -1;\n }\n var code = specifier.charCodeAt(i++);\n if (code === percentCharCode$1) {\n var char = specifier.charAt(i++);\n var parse = parses[char in pads$1 ? specifier.charAt(i++) : char];\n if (!parse || (j = parse(d, string, j)) < 0) {\n return -1;\n }\n } else if (code != string.charCodeAt(j++)) {\n return -1;\n }\n }\n return j;\n }\n // ----------------------------- formats ----------------------------------\n function formatMicroseconds(date, fill) {\n return formatMilliseconds(date, fill) + '000';\n }\n function formatMilliseconds(date, fill) {\n return pad$1(date.getMilliseconds(), fill, 3);\n }\n function formatSeconds(date, fill) {\n return pad$1(date.getSeconds(), fill, 2);\n }\n function formatMinutes(date, fill) {\n return pad$1(date.getMinutes(), fill, 2);\n }\n function formatHour12(date, fill) {\n return pad$1(date.getHours() % 12 || 12, fill, 2);\n }\n function formatHour24(date, fill) {\n return pad$1(date.getHours(), fill, 2);\n }\n function formatPeriod(date) {\n return lPeriods[date.getHours() >= 12 ? 1 : 0];\n }\n function formatShortWeekday(date) {\n return lShortWeekdays[date.getDay()];\n }\n function formatWeekday(date) {\n return lWeekdays[date.getDay()];\n }\n function formatWeekdayNumberMonday(date) {\n var dayOfWeek = date.getDay();\n return dayOfWeek === 0 ? 7 : dayOfWeek;\n }\n function formatWeekNumberSunday(date, fill) {\n return pad$1(sunday$1.count(year$1.floor(date), date), fill, 2);\n }\n function formatWeekNumberISO(date, fill) {\n var day = date.getDay();\n date = day >= 4 || day === 0 ? thursday$1.floor(date) : thursday$1.ceil(date);\n var yearStart = year$1.floor(date);\n return pad$1(thursday$1.count(yearStart, date) + (yearStart.getDay() === 4 ? 1 : 0), fill, 2);\n }\n function formatWeekdayNumberSunday(date) {\n return date.getDay();\n }\n function formatWeekNumberMonday(date, fill) {\n return pad$1(monday$1.count(year$1.floor(date), date), fill, 2);\n }\n function formatDayOfMonth(date, fill) {\n return pad$1(date.getDate(), fill, 2);\n }\n function formatDayOfYear(date, fill) {\n return pad$1(1 + day$1.count(year$1.floor(date), date), fill, 3);\n }\n function formatShortMonth(date) {\n return lShortMonths[date.getMonth()];\n }\n function formatMonth(date) {\n return lMonths[date.getMonth()];\n }\n function formatMonthNumber(date, fill) {\n return pad$1(date.getMonth() + 1, fill, 2);\n }\n function formatYear(date, fill) {\n return pad$1(date.getFullYear() % 100, fill, 2);\n }\n function formatFullYear(date, fill) {\n return pad$1(date.getFullYear() % 10000, fill, 4);\n }\n function formatZone(date) {\n var z = date.getTimezoneOffset();\n return (z > 0 ? '-' : (z *= -1, '+')) + pad$1(Math.floor(z / 60), '0', 2) + pad$1(z % 60, '0', 2);\n }\n // -------------------------- UTC formats -----------------------------------\n function formatUTCMicroseconds(date, fill) {\n return formatUTCMilliseconds(date, fill) + '000';\n }\n function formatUTCMilliseconds(date, fill) {\n return pad$1(date.getUTCMilliseconds(), fill, 3);\n }\n function formatUTCSeconds(date, fill) {\n return pad$1(date.getUTCSeconds(), fill, 2);\n }\n function formatUTCMinutes(date, fill) {\n return pad$1(date.getUTCMinutes(), fill, 2);\n }\n function formatUTCHour12(date, fill) {\n return pad$1(date.getUTCHours() % 12 || 12, fill, 2);\n }\n function formatUTCHour24(date, fill) {\n return pad$1(date.getUTCHours(), fill, 2);\n }\n function formatUTCPeriod(date) {\n return lPeriods[date.getUTCHours() >= 12 ? 1 : 0];\n }\n function formatUTCDayOfMonth(date, fill) {\n return pad$1(date.getUTCDate(), fill, 2);\n }\n function formatUTCDayOfYear(date, fill) {\n return pad$1(1 + utcDay$1.count(utcYear$1.floor(date), date), fill, 3);\n }\n function formatUTCMonthNumber(date, fill) {\n return pad$1(date.getUTCMonth() + 1, fill, 2);\n }\n function formatUTCShortMonth(date) {\n return lShortMonths[date.getUTCMonth()];\n }\n function formatUTCMonth(date) {\n return lMonths[date.getUTCMonth()];\n }\n function formatUTCShortWeekday(date) {\n return lShortWeekdays[date.getUTCDay()];\n }\n function formatUTCWeekday(date) {\n return lWeekdays[date.getUTCDay()];\n }\n function formatUTCWeekdayNumberMonday(date) {\n var dayOfWeek = date.getUTCDay();\n return dayOfWeek === 0 ? 7 : dayOfWeek;\n }\n function formatUTCWeekNumberSunday(date, fill) {\n return pad$1(utcSunday$1.count(utcYear$1.floor(date), date), fill, 2);\n }\n function formatUTCWeekNumberISO(date, fill) {\n var day = date.getUTCDay();\n date = day >= 4 || day === 0 ? utcThursday$1.floor(date) : utcThursday$1.ceil(date);\n var yearStart = utcYear$1.floor(date);\n return pad$1(utcThursday$1.count(yearStart, date) + (yearStart.getUTCDay() === 4 ? 1 : 0), fill, 4);\n }\n function formatUTCWeekdayNumberSunday(date) {\n return date.getUTCDay();\n }\n function formatUTCWeekNumberMonday(date, fill) {\n return pad$1(utcMonday$1.count(utcYear$1.floor(date), date), fill, 2);\n }\n function formatUTCYear(date, fill) {\n return pad$1(date.getUTCFullYear() % 100, fill, 2);\n }\n function formatUTCFullYear(date, fill) {\n return pad$1(date.getUTCFullYear() % 10000, fill, 4);\n }\n function formatUTCZone() {\n return '+0000';\n }\n function formatLiteralPercent() {\n return '%';\n }\n function formatUnixTimestamp(date) {\n return date.getTime();\n }\n function formatUnixTimestampSeconds(date) {\n return Math.floor(date.getTime() / 1000);\n }\n // ------------------------------- parsers ------------------------------------\n function parseMicroseconds(d, string, i) {\n var n = numberRe$1.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(parseFloat(n[0]) / 1000), i + n[0].length) : -1;\n }\n function parseMilliseconds(d, string, i) {\n var n = numberRe$1.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n }\n function parseSeconds(d, string, i) {\n var n = numberRe$1.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n }\n function parseMinutes(d, string, i) {\n var n = numberRe$1.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n }\n function parseHour24(d, string, i) {\n var n = numberRe$1.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n }\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n function parseDayOfMonth(d, string, i) {\n var n = numberRe$1.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n }\n function parseDayOfYear(d, string, i) {\n var n = numberRe$1.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n }\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n function parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe$1.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n }\n function parseWeekNumberSunday(d, string, i) {\n var n = numberRe$1.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n }\n function parseWeekNumberISO(d, string, i) {\n var n = numberRe$1.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n }\n function parseWeekNumberMonday(d, string, i) {\n var n = numberRe$1.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n }\n function parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe$1.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n }\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n function parseMonthNumber(d, string, i) {\n var n = numberRe$1.exec(string.slice(i, i + 2));\n return n ? (d.m = parseFloat(n[0]) - 1, i + n[0].length) : -1;\n }\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, lDateTime, string, i);\n }\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, lDate, string, i);\n }\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, lTime, string, i);\n }\n function parseUnixTimestamp(d, string, i) {\n var n = numberRe$1.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n }\n function parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe$1.exec(string.slice(i));\n return n ? (d.Q = +n[0] * 1000, i + n[0].length) : -1;\n }\n function parseYear(d, string, i) {\n var n = numberRe$1.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n }\n function parseFullYear(d, string, i) {\n var n = numberRe$1.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n }\n function parseZone(d, string, i) {\n var n = /^(Z)|^([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || '00')), i + n[0].length) : -1;\n }\n function parseLiteralPercent(_, string, i) {\n var n = percentRe$1.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n }\n return {\n format: function (specifier) {\n var f = newFormat(specifier, formats);\n f.toString = function () {\n return specifier;\n };\n return f;\n },\n parse: function (specifier) {\n var p = newParse(specifier, localDate$1);\n p.toString = function () {\n return specifier;\n };\n return p;\n },\n utcFormat: function (specifier) {\n var f = newFormat(specifier, utcFormats);\n f.toString = function () {\n return specifier;\n };\n return f;\n },\n utcParse: function (specifier) {\n var p = newParse(specifier, utcDate$1);\n p.toString = function () {\n return specifier;\n };\n return p;\n }\n };\n}\nvar locale$1;\nsetDefaultLocale$1({\n dateTime: '%x, %X',\n date: '%-m/%-d/%Y',\n time: '%-I:%M:%S %p',\n periods: ['AM', 'PM'],\n days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n shortDays: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n shortMonths: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']\n});\nfunction setDefaultLocale$1(definition) {\n locale$1 = formatLocale$2(definition);\n return locale$1;\n}\nvar __extends$2A = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __values$p = undefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$B = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread$k = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$B(arguments[i]));\n return ar;\n};\nvar _a;\nvar DefaultTimeFormats = /*#__PURE__*/function (DefaultTimeFormats) {\n DefaultTimeFormats[DefaultTimeFormats[\"MILLISECOND\"] = 0] = \"MILLISECOND\";\n DefaultTimeFormats[DefaultTimeFormats[\"SECOND\"] = 1] = \"SECOND\";\n DefaultTimeFormats[DefaultTimeFormats[\"MINUTE\"] = 2] = \"MINUTE\";\n DefaultTimeFormats[DefaultTimeFormats[\"HOUR\"] = 3] = \"HOUR\";\n DefaultTimeFormats[DefaultTimeFormats[\"SHORT_MONTH\"] = 4] = \"SHORT_MONTH\";\n DefaultTimeFormats[DefaultTimeFormats[\"MONTH\"] = 5] = \"MONTH\";\n DefaultTimeFormats[DefaultTimeFormats[\"YEAR\"] = 6] = \"YEAR\";\n return DefaultTimeFormats;\n}(DefaultTimeFormats || {});\nvar formatStrings = (_a = {}, _a[DefaultTimeFormats.MILLISECOND] = '.%L', _a[DefaultTimeFormats.SECOND] = ':%S', _a[DefaultTimeFormats.MINUTE] = '%I:%M', _a[DefaultTimeFormats.HOUR] = '%I %p', _a[DefaultTimeFormats.SHORT_MONTH] = '%b %d', _a[DefaultTimeFormats.MONTH] = '%B', _a[DefaultTimeFormats.YEAR] = '%Y', _a);\nvar TimeScale$1 = /** @class */function (_super) {\n __extends$2A(TimeScale, _super);\n function TimeScale() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'time';\n _this.year = year$1;\n _this.month = month$1;\n _this.week = sunday$1;\n _this.day = day$1;\n _this.hour = hour$1;\n _this.minute = minute$1;\n _this.second = second$1;\n _this.millisecond = millisecond$1;\n _this.format = locale$1.format;\n /**\n * Array of default tick intervals in the following format:\n *\n * [\n * interval (unit of time),\n * number of units (step),\n * the length of that number of units in milliseconds\n * ]\n */\n _this.tickIntervals = [[_this.second, 1, durationSecond$1], [_this.second, 5, 5 * durationSecond$1], [_this.second, 15, 15 * durationSecond$1], [_this.second, 30, 30 * durationSecond$1], [_this.minute, 1, durationMinute$1], [_this.minute, 5, 5 * durationMinute$1], [_this.minute, 15, 15 * durationMinute$1], [_this.minute, 30, 30 * durationMinute$1], [_this.hour, 1, durationHour$1], [_this.hour, 3, 3 * durationHour$1], [_this.hour, 6, 6 * durationHour$1], [_this.hour, 12, 12 * durationHour$1], [_this.day, 1, durationDay$1], [_this.day, 2, 2 * durationDay$1], [_this.week, 1, durationWeek$1], [_this.month, 1, durationMonth$1], [_this.month, 3, 3 * durationMonth$1], [_this.year, 1, durationYear$1]];\n _this._domain = [new Date(2000, 0, 1), new Date(2000, 0, 2)];\n return _this;\n }\n TimeScale.prototype.calculateDefaultTickFormat = function (ticks) {\n var e_1, _a;\n var defaultTimeFormat = DefaultTimeFormats.YEAR;\n var updateFormat = function (format) {\n if (format < defaultTimeFormat) {\n defaultTimeFormat = format;\n }\n };\n try {\n for (var _b = __values$p(ticks !== null && ticks !== void 0 ? ticks : []), _c = _b.next(); !_c.done; _c = _b.next()) {\n var value = _c.value;\n this.second.floor(value) < value ? updateFormat(DefaultTimeFormats.MILLISECOND) : this.minute.floor(value) < value ? updateFormat(DefaultTimeFormats.SECOND) : this.hour.floor(value) < value ? updateFormat(DefaultTimeFormats.MINUTE) : this.day.floor(value) < value ? updateFormat(DefaultTimeFormats.HOUR) : this.month.floor(value) < value ? updateFormat(DefaultTimeFormats.SHORT_MONTH) : this.year.floor(value) < value ? updateFormat(DefaultTimeFormats.MONTH) : updateFormat(DefaultTimeFormats.YEAR);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n var domain = _super.prototype.getDomain.call(this);\n var start = Math.min.apply(Math, __spread$k(domain));\n var stop = Math.max.apply(Math, __spread$k(domain));\n var extent = stop - start;\n var formatStringArray = [formatStrings[defaultTimeFormat]];\n var timeEndIndex = 0;\n switch (defaultTimeFormat) {\n case DefaultTimeFormats.SECOND:\n if (extent / durationMinute$1 > 1) {\n formatStringArray.push(formatStrings[DefaultTimeFormats.MINUTE]);\n }\n // fall through deliberately\n case DefaultTimeFormats.MINUTE:\n if (extent / durationHour$1 > 1) {\n formatStringArray.push(formatStrings[DefaultTimeFormats.HOUR]);\n }\n // fall through deliberately\n case DefaultTimeFormats.HOUR:\n timeEndIndex = formatStringArray.length;\n if (extent / durationDay$1 > 1) {\n formatStringArray.push(formatStrings[DefaultTimeFormats.SHORT_MONTH]);\n }\n // fall through deliberately\n case DefaultTimeFormats.SHORT_MONTH:\n // fall through deliberately\n case DefaultTimeFormats.MONTH:\n if (extent / durationYear$1 > 1) {\n formatStringArray.push(formatStrings[DefaultTimeFormats.YEAR]);\n }\n }\n if (timeEndIndex < formatStringArray.length) {\n // Insert a gap between all date components.\n formatStringArray = __spread$k(formatStringArray.slice(0, timeEndIndex), [formatStringArray.slice(timeEndIndex).join(' ')]);\n }\n if (timeEndIndex > 0) {\n // Reverse order of time components, since they should be displayed in descending\n // granularity.\n formatStringArray = __spread$k(formatStringArray.slice(0, timeEndIndex).reverse(), formatStringArray.slice(timeEndIndex));\n if (timeEndIndex < formatStringArray.length) {\n // Insert a gap between time and date components.\n formatStringArray.splice(timeEndIndex, 0, ' ');\n }\n }\n return formatStringArray.join('');\n };\n TimeScale.prototype.defaultTickFormat = function (ticks) {\n var _this = this;\n var formatString = this.calculateDefaultTickFormat(ticks);\n return function (date) {\n return _this.format(formatString)(date);\n };\n };\n /**\n *\n * @param interval If the `interval` is a number, it's interpreted as the desired tick count\n * and the method tries to pick an appropriate interval automatically, based on the extent of the domain.\n * If the `interval` is `undefined`, it defaults to `10`.\n * If the `interval` is a time interval, simply use it.\n * @param start The start time (timestamp).\n * @param stop The end time (timestamp).\n * @param step Number of intervals between ticks.\n */\n TimeScale.prototype.tickInterval = function (_a) {\n var _b;\n var interval = _a.interval,\n start = _a.start,\n stop = _a.stop,\n step = _a.step,\n offset = _a.offset;\n if (typeof interval === 'number') {\n var tickCount = Math.max(0, interval - (offset !== null && offset !== void 0 ? offset : 0));\n var tickIntervals = this.tickIntervals;\n var target = Math.abs(stop - start) / tickCount;\n var i = complexBisectRight$1(tickIntervals, target, function (interval) {\n return interval[2];\n });\n if (i === tickIntervals.length) {\n step = tickStep$1(start / durationYear$1, stop / durationYear$1, tickCount);\n interval = this.year;\n } else if (i) {\n _b = __read$B(tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i], 2), interval = _b[0], step = _b[1];\n } else {\n step = Math.max(tickStep$1(start, stop, interval), 1);\n interval = this.millisecond;\n }\n }\n return step == undefined ? interval : interval.every(step);\n };\n Object.defineProperty(TimeScale.prototype, \"domain\", {\n get: function () {\n return _super.prototype.getDomain.call(this).map(function (t) {\n return new Date(t);\n });\n },\n set: function (values) {\n _super.prototype.setDomain.call(this, values.map(function (t) {\n return t instanceof Date ? +t : +new Date(+t);\n }));\n },\n enumerable: true,\n configurable: true\n });\n TimeScale.prototype.invert = function (y) {\n return new Date(_super.prototype.invert.call(this, y));\n };\n /**\n * Returns uniformly-spaced dates that represent the scale's domain.\n * @param interval The desired tick count or a time interval object.\n */\n TimeScale.prototype.ticks = function (interval, offset) {\n if (interval === void 0) {\n interval = 10;\n }\n var d = _super.prototype.getDomain.call(this);\n var t0 = d[0];\n var t1 = d[d.length - 1];\n var reverse = t1 < t0;\n if (reverse) {\n var _ = t0;\n t0 = t1;\n t1 = _;\n }\n var t = this.tickInterval({\n interval: interval,\n start: t0,\n stop: t1,\n offset: offset\n });\n var i = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return reverse ? i.reverse() : i;\n };\n /**\n * Returns a time format function suitable for displaying tick values.\n * @param count Ignored. Used only to satisfy the {@link Scale} interface.\n * @param specifier If the specifier string is provided, this method is equivalent to\n * the {@link TimeLocaleObject.format} method.\n * If no specifier is provided, this method returns the default time format function.\n */\n TimeScale.prototype.tickFormat = function (_a) {\n var ticks = _a.ticks,\n specifier = _a.specifier;\n return specifier == undefined ? this.defaultTickFormat(ticks) : this.format(specifier);\n };\n /**\n * Extends the domain so that it starts and ends on nice round values.\n * This method typically modifies the scale’s domain, and may only extend the bounds to the nearest round value.\n * @param interval\n */\n TimeScale.prototype.nice = function (interval) {\n if (interval === void 0) {\n interval = 10;\n }\n var d = _super.prototype.getDomain.call(this);\n var i = this.tickInterval({\n interval: interval,\n start: d[0],\n stop: d[d.length - 1]\n });\n if (i) {\n this.domain = this._nice(d, i);\n }\n };\n TimeScale.prototype._nice = function (domain, interval) {\n var _a, _b;\n domain = domain.slice();\n var i0 = 0;\n var i1 = domain.length - 1;\n var x0 = domain[i0];\n var x1 = domain[i1];\n if (x1 < x0) {\n _a = __read$B([i1, i0], 2), i0 = _a[0], i1 = _a[1];\n _b = __read$B([x1, x0], 2), x0 = _b[0], x1 = _b[1];\n }\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n };\n return TimeScale;\n}(ContinuousScale$1);\nvar __extends$2z = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1w = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar TimeAxis = /** @class */function (_super) {\n __extends$2z(TimeAxis, _super);\n function TimeAxis() {\n var _this = _super.call(this, new TimeScale$1()) || this;\n _this.datumFormat = '%m/%d/%y, %H:%M:%S';\n _this.min = undefined;\n _this.max = undefined;\n var scale = _this.scale;\n scale.clamp = true;\n scale.clamper = filter;\n _this.refreshScale();\n _this.datumFormatter = scale.tickFormat({\n specifier: _this.datumFormat\n });\n return _this;\n }\n TimeAxis.prototype.normaliseDataDomain = function (d) {\n var _a = this,\n min = _a.min,\n max = _a.max;\n if (typeof min === 'number') {\n min = new Date(min);\n }\n if (typeof max === 'number') {\n max = new Date(max);\n }\n if (d.length > 2) {\n d = (extent$1(d, isContinuous$1, Number) || [0, 1000]).map(function (x) {\n return new Date(x);\n });\n }\n if (min instanceof Date) {\n d = [min, d[1]];\n }\n if (max instanceof Date) {\n d = [d[0], max];\n }\n if (d[0] > d[1]) {\n d = [];\n }\n return d;\n };\n TimeAxis.prototype.onLabelFormatChange = function (ticks, format) {\n if (format) {\n _super.prototype.onLabelFormatChange.call(this, ticks, format);\n } else {\n // For time axis labels to look nice, even if date format wasn't set.\n this.labelFormatter = this.scale.tickFormat({\n ticks: ticks\n });\n }\n };\n TimeAxis.prototype.formatDatum = function (datum) {\n return this.datumFormatter(datum);\n };\n TimeAxis.className = 'TimeAxis';\n TimeAxis.type = 'time';\n __decorate$1w([Validate(AND(OPT_DATE_OR_DATETIME_MS, LESS_THAN('max')))], TimeAxis.prototype, \"min\", void 0);\n __decorate$1w([Validate(AND(OPT_DATE_OR_DATETIME_MS, GREATER_THAN('min')))], TimeAxis.prototype, \"max\", void 0);\n return TimeAxis;\n}(ChartAxis);\n\n/**\n * Wraps a native OffscreenCanvas and overrides its OffscreenCanvasRenderingContext2D to\n * provide resolution independent rendering based on `window.devicePixelRatio`.\n */\nvar HdpiOffscreenCanvas = /** @class */function () {\n // The width/height attributes of the Canvas element default to\n // 300/150 according to w3.org.\n function HdpiOffscreenCanvas(_a) {\n var _b = _a.width,\n width = _b === void 0 ? 600 : _b,\n _c = _a.height,\n height = _c === void 0 ? 300 : _c,\n _d = _a.overrideDevicePixelRatio,\n overrideDevicePixelRatio = _d === void 0 ? undefined : _d;\n this.enabled = true;\n this.opacity = 1;\n // `NaN` is deliberate here, so that overrides are always applied\n // and the `resetTransform` inside the `resize` method works in IE11.\n this._pixelRatio = NaN;\n this._width = 0;\n this._height = 0;\n this.canvas = new OffscreenCanvas(width, height);\n this.context = this.canvas.getContext('2d');\n this.imageSource = this.canvas.transferToImageBitmap();\n this.setPixelRatio(overrideDevicePixelRatio);\n this.resize(width, height);\n }\n HdpiOffscreenCanvas.isSupported = function () {\n return window['OffscreenCanvas'] != null;\n };\n HdpiOffscreenCanvas.prototype.snapshot = function () {\n this.imageSource.close();\n this.imageSource = this.canvas.transferToImageBitmap();\n };\n HdpiOffscreenCanvas.prototype.destroy = function () {\n this.imageSource.close();\n };\n HdpiOffscreenCanvas.prototype.clear = function () {\n this.context.save();\n this.context.resetTransform();\n this.context.clearRect(0, 0, this.width, this.height);\n this.context.restore();\n };\n Object.defineProperty(HdpiOffscreenCanvas.prototype, \"pixelRatio\", {\n get: function () {\n return this._pixelRatio;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Changes the pixel ratio of the Canvas element to the given value,\n * or uses the window.devicePixelRatio (default), then resizes the Canvas\n * element accordingly (default).\n */\n HdpiOffscreenCanvas.prototype.setPixelRatio = function (ratio) {\n var pixelRatio = ratio || window.devicePixelRatio;\n if (pixelRatio === this.pixelRatio) {\n return;\n }\n HdpiCanvas$1.overrideScale(this.context, pixelRatio);\n this._pixelRatio = pixelRatio;\n this.resize(this.width, this.height);\n };\n Object.defineProperty(HdpiOffscreenCanvas.prototype, \"width\", {\n get: function () {\n return this._width;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HdpiOffscreenCanvas.prototype, \"height\", {\n get: function () {\n return this._height;\n },\n enumerable: true,\n configurable: true\n });\n HdpiOffscreenCanvas.prototype.resize = function (width, height) {\n if (!(width > 0 && height > 0)) {\n return;\n }\n var _a = this,\n canvas = _a.canvas,\n context = _a.context,\n pixelRatio = _a.pixelRatio;\n canvas.width = Math.round(width * pixelRatio);\n canvas.height = Math.round(height * pixelRatio);\n context.resetTransform();\n this._width = width;\n this._height = height;\n };\n return HdpiOffscreenCanvas;\n}();\nvar __assign$A = undefined && undefined.__assign || function () {\n __assign$A = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$A.apply(this, arguments);\n};\nvar __awaiter$e = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$e = undefined && undefined.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __read$A = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread$j = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$A(arguments[i]));\n return ar;\n};\nvar __values$o = undefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar Scene$1 = /** @class */function () {\n function Scene(opts) {\n var _a, _b;\n this.id = createId$1(this);\n this.layers = [];\n this._nextZIndex = 0;\n this._nextLayerId = 0;\n this._dirty = false;\n this._root = null;\n this.debug = {\n dirtyTree: false,\n stats: false,\n renderBoundingBoxes: false,\n consoleLog: false\n };\n var _c = opts.document,\n document = _c === void 0 ? window.document : _c,\n _d = opts.mode,\n mode = _d === void 0 ? windowValue('agChartsSceneRenderModel') || 'adv-composite' : _d,\n width = opts.width,\n height = opts.height,\n _e = opts.overrideDevicePixelRatio,\n overrideDevicePixelRatio = _e === void 0 ? undefined : _e;\n this.overrideDevicePixelRatio = overrideDevicePixelRatio;\n this.opts = {\n document: document,\n mode: mode\n };\n this.debug.stats = (_a = windowValue('agChartsSceneStats'), _a !== null && _a !== void 0 ? _a : false);\n this.debug.dirtyTree = (_b = windowValue('agChartsSceneDirtyTree'), _b !== null && _b !== void 0 ? _b : false);\n this.canvas = new HdpiCanvas$1({\n document: document,\n width: width,\n height: height,\n overrideDevicePixelRatio: overrideDevicePixelRatio\n });\n this.ctx = this.canvas.context;\n }\n Object.defineProperty(Scene.prototype, \"container\", {\n get: function () {\n return this.canvas.container;\n },\n set: function (value) {\n this.canvas.container = value;\n },\n enumerable: true,\n configurable: true\n });\n Scene.prototype.download = function (fileName, fileFormat) {\n this.canvas.download(fileName, fileFormat);\n };\n Scene.prototype.getDataURL = function (type) {\n return this.canvas.getDataURL(type);\n };\n Object.defineProperty(Scene.prototype, \"width\", {\n get: function () {\n return this.pendingSize ? this.pendingSize[0] : this.canvas.width;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Scene.prototype, \"height\", {\n get: function () {\n return this.pendingSize ? this.pendingSize[1] : this.canvas.height;\n },\n enumerable: true,\n configurable: true\n });\n Scene.prototype.resize = function (width, height) {\n width = Math.round(width);\n height = Math.round(height);\n // HdpiCanvas doesn't allow width/height <= 0.\n var lessThanZero = width <= 0 || height <= 0;\n var unchanged = width === this.width && height === this.height;\n if (unchanged || lessThanZero) {\n return false;\n }\n this.pendingSize = [width, height];\n this.markDirty();\n return true;\n };\n Scene.prototype.addLayer = function (opts) {\n var _a;\n var mode = this.opts.mode;\n var layeredModes = ['composite', 'dom-composite', 'adv-composite'];\n if (!layeredModes.includes(mode)) {\n return undefined;\n }\n var _b = opts || {},\n _c = _b.zIndex,\n zIndex = _c === void 0 ? this._nextZIndex++ : _c,\n name = _b.name,\n zIndexSubOrder = _b.zIndexSubOrder;\n var _d = this,\n width = _d.width,\n height = _d.height,\n overrideDevicePixelRatio = _d.overrideDevicePixelRatio;\n var domLayer = mode === 'dom-composite';\n var advLayer = mode === 'adv-composite';\n var canvas = !advLayer || !HdpiOffscreenCanvas.isSupported() ? new HdpiCanvas$1({\n document: this.opts.document,\n width: width,\n height: height,\n domLayer: domLayer,\n zIndex: zIndex,\n name: name,\n overrideDevicePixelRatio: overrideDevicePixelRatio\n }) : new HdpiOffscreenCanvas({\n width: width,\n height: height,\n overrideDevicePixelRatio: overrideDevicePixelRatio\n });\n var newLayer = {\n id: this._nextLayerId++,\n name: name,\n zIndex: zIndex,\n zIndexSubOrder: zIndexSubOrder,\n canvas: canvas\n };\n if (zIndex >= this._nextZIndex) {\n this._nextZIndex = zIndex + 1;\n }\n this.layers.push(newLayer);\n this.sortLayers();\n if (domLayer) {\n var domCanvases = this.layers.map(function (v) {\n return v.canvas;\n }).filter(function (v) {\n return v instanceof HdpiCanvas$1;\n });\n var newLayerIndex = domCanvases.findIndex(function (v) {\n return v === canvas;\n });\n var lastLayer = (_a = domCanvases[newLayerIndex - 1], _a !== null && _a !== void 0 ? _a : this.canvas);\n lastLayer.element.insertAdjacentElement('afterend', canvas.element);\n }\n if (this.debug.consoleLog) {\n console.log({\n layers: this.layers\n });\n }\n return newLayer.canvas;\n };\n Scene.prototype.removeLayer = function (canvas) {\n var index = this.layers.findIndex(function (l) {\n return l.canvas === canvas;\n });\n if (index >= 0) {\n this.layers.splice(index, 1);\n canvas.destroy();\n this.markDirty();\n if (this.debug.consoleLog) {\n console.log({\n layers: this.layers\n });\n }\n }\n };\n Scene.prototype.moveLayer = function (canvas, newZIndex, newZIndexSubOrder) {\n var layer = this.layers.find(function (l) {\n return l.canvas === canvas;\n });\n if (layer) {\n layer.zIndex = newZIndex;\n layer.zIndexSubOrder = newZIndexSubOrder;\n this.sortLayers();\n this.markDirty();\n if (this.debug.consoleLog) {\n console.log({\n layers: this.layers\n });\n }\n }\n };\n Scene.prototype.sortLayers = function () {\n this.layers.sort(function (a, b) {\n var _a, _b;\n return compoundAscending(__spread$j([a.zIndex], (_a = a.zIndexSubOrder, _a !== null && _a !== void 0 ? _a : [undefined, undefined]), [a.id]), __spread$j([b.zIndex], (_b = b.zIndexSubOrder, _b !== null && _b !== void 0 ? _b : [undefined, undefined]), [b.id]), ascendingStringNumberUndefined);\n });\n };\n Scene.prototype.markDirty = function () {\n this._dirty = true;\n };\n Object.defineProperty(Scene.prototype, \"dirty\", {\n get: function () {\n return this._dirty;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Scene.prototype, \"root\", {\n get: function () {\n return this._root;\n },\n set: function (node) {\n if (node === this._root) {\n return;\n }\n if (this._root) {\n this._root._setScene();\n }\n this._root = node;\n if (node) {\n // If `node` is the root node of another scene ...\n if (node.parent === null && node.scene && node.scene !== this) {\n node.scene.root = null;\n }\n node._setScene(this);\n }\n this.markDirty();\n },\n enumerable: true,\n configurable: true\n });\n Scene.prototype.destroy = function () {\n var e_1, _a;\n this.container = undefined;\n var layers = this.layers;\n try {\n for (var layers_1 = __values$o(layers), layers_1_1 = layers_1.next(); !layers_1_1.done; layers_1_1 = layers_1.next()) {\n var layer = layers_1_1.value;\n layer.canvas.destroy();\n delete layer['canvas'];\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (layers_1_1 && !layers_1_1.done && (_a = layers_1.return)) _a.call(layers_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n layers.splice(0, layers.length);\n };\n Scene.prototype.render = function (opts) {\n return __awaiter$e(this, void 0, void 0, function () {\n var _a, _b, debugSplitTimes, _c, extraDebugStats, _d, canvas, ctx, root, layers, pendingSize, mode, renderCtx, canvasCleared, _e, dirtyTree, paths;\n var _f;\n return __generator$e(this, function (_g) {\n _a = opts || {}, _b = _a.debugSplitTimes, debugSplitTimes = _b === void 0 ? [performance.now()] : _b, _c = _a.extraDebugStats, extraDebugStats = _c === void 0 ? {} : _c;\n _d = this, canvas = _d.canvas, ctx = _d.ctx, root = _d.root, layers = _d.layers, pendingSize = _d.pendingSize, mode = _d.opts.mode;\n if (pendingSize) {\n (_f = this.canvas).resize.apply(_f, __spread$j(pendingSize));\n this.layers.forEach(function (layer) {\n var _a;\n return (_a = layer.canvas).resize.apply(_a, __spread$j(pendingSize));\n });\n this.pendingSize = undefined;\n }\n if (root && !root.visible) {\n this._dirty = false;\n return [2 /*return*/];\n }\n if (root && !this.dirty) {\n if (this.debug.consoleLog) {\n console.log('no-op', {\n redrawType: RedrawType[root.dirty],\n tree: this.buildTree(root)\n });\n }\n this.debugStats(debugSplitTimes, ctx, undefined, extraDebugStats);\n return [2 /*return*/];\n }\n renderCtx = {\n ctx: ctx,\n forceRender: true,\n resized: !!pendingSize\n };\n if (this.debug.stats === 'detailed') {\n renderCtx.stats = {\n layersRendered: 0,\n layersSkipped: 0,\n nodesRendered: 0,\n nodesSkipped: 0\n };\n }\n canvasCleared = false;\n if (!root || root.dirty >= RedrawType.TRIVIAL) {\n // start with a blank canvas, clear previous drawing\n canvasCleared = true;\n canvas.clear();\n }\n if (root && this.debug.dirtyTree) {\n _e = this.buildDirtyTree(root), dirtyTree = _e.dirtyTree, paths = _e.paths;\n console.log({\n dirtyTree: dirtyTree,\n paths: paths\n });\n }\n if (root && canvasCleared) {\n if (this.debug.consoleLog) {\n console.log('before', {\n redrawType: RedrawType[root.dirty],\n canvasCleared: canvasCleared,\n tree: this.buildTree(root)\n });\n }\n if (root.visible) {\n ctx.save();\n root.render(renderCtx);\n ctx.restore();\n }\n }\n if (mode !== 'dom-composite' && layers.length > 0 && canvasCleared) {\n ctx.save();\n ctx.setTransform(1 / canvas.pixelRatio, 0, 0, 1 / canvas.pixelRatio, 0, 0);\n layers.forEach(function (_a) {\n var _b = _a.canvas,\n imageSource = _b.imageSource,\n enabled = _b.enabled,\n opacity = _b.opacity;\n if (!enabled) {\n return;\n }\n ctx.globalAlpha = opacity;\n ctx.drawImage(imageSource, 0, 0);\n });\n ctx.restore();\n }\n this._dirty = false;\n this.debugStats(debugSplitTimes, ctx, renderCtx.stats, extraDebugStats);\n if (root && this.debug.consoleLog) {\n console.log('after', {\n redrawType: RedrawType[root.dirty],\n canvasCleared: canvasCleared,\n tree: this.buildTree(root)\n });\n }\n return [2 /*return*/];\n });\n });\n };\n Scene.prototype.debugStats = function (debugSplitTimes, ctx, renderCtxStats, extraDebugStats) {\n var e_2, _a;\n if (extraDebugStats === void 0) {\n extraDebugStats = {};\n }\n var end = performance.now();\n if (this.debug.stats) {\n var start = debugSplitTimes[0];\n debugSplitTimes.push(end);\n var pct = function (rendered, skipped) {\n var total = rendered + skipped;\n return rendered + \" / \" + total + \" (\" + Math.round(100 * rendered / total) + \"%)\";\n };\n var time_1 = function (start, end) {\n return Math.round((end - start) * 100) / 100 + \"ms\";\n };\n var _b = renderCtxStats !== null && renderCtxStats !== void 0 ? renderCtxStats : {},\n _c = _b.layersRendered,\n layersRendered = _c === void 0 ? 0 : _c,\n _d = _b.layersSkipped,\n layersSkipped = _d === void 0 ? 0 : _d,\n _e = _b.nodesRendered,\n nodesRendered = _e === void 0 ? 0 : _e,\n _f = _b.nodesSkipped,\n nodesSkipped = _f === void 0 ? 0 : _f;\n var splits = debugSplitTimes.map(function (t, i) {\n return i > 0 ? time_1(debugSplitTimes[i - 1], t) : null;\n }).filter(function (v) {\n return v != null;\n }).join(' + ');\n var extras = Object.entries(extraDebugStats).map(function (_a) {\n var _b = __read$A(_a, 2),\n k = _b[0],\n v = _b[1];\n return k + \": \" + v;\n }).join(' ; ');\n var stats = [time_1(start, end) + \" (\" + splits + \")\", \"\" + extras, this.debug.stats === 'detailed' ? \"Layers: \" + pct(layersRendered, layersSkipped) : null, this.debug.stats === 'detailed' ? \"Nodes: \" + pct(nodesRendered, nodesSkipped) : null].filter(function (v) {\n return v != null;\n });\n var lineHeight = 15;\n ctx.save();\n ctx.fillStyle = 'white';\n ctx.fillRect(0, 0, 200, 10 + lineHeight * stats.length);\n ctx.fillStyle = 'black';\n var index = 0;\n try {\n for (var stats_1 = __values$o(stats), stats_1_1 = stats_1.next(); !stats_1_1.done; stats_1_1 = stats_1.next()) {\n var stat = stats_1_1.value;\n ctx.fillText(stat, 2, 10 + index++ * lineHeight);\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (stats_1_1 && !stats_1_1.done && (_a = stats_1.return)) _a.call(stats_1);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n ctx.restore();\n }\n };\n Scene.prototype.buildTree = function (node) {\n var _this = this;\n var _a;\n var name = (_a = node instanceof Group$1 ? node.name : null, _a !== null && _a !== void 0 ? _a : node.id);\n return __assign$A({\n name: name,\n node: node,\n dirty: RedrawType[node.dirty]\n }, node.children.map(function (c) {\n return _this.buildTree(c);\n }).reduce(function (result, childTree) {\n var treeNodeName = childTree.name,\n _a = childTree.node,\n visible = _a.visible,\n opacity = _a.opacity,\n zIndex = _a.zIndex,\n zIndexSubOrder = _a.zIndexSubOrder;\n if (!visible || opacity <= 0) {\n treeNodeName = \"( \" + treeNodeName + \" )\";\n }\n if (node instanceof Group$1 && node.isLayer()) {\n treeNodeName = \"[ \" + treeNodeName + \" ]\";\n }\n var key = [\"\" + (treeNodeName !== null && treeNodeName !== void 0 ? treeNodeName : ''), \"z: \" + zIndex, zIndexSubOrder && \"zo: \" + zIndexSubOrder.join(' / ')].filter(function (v) {\n return !!v;\n }).join(' ');\n result[key] = childTree;\n return result;\n }, {}));\n };\n Scene.prototype.buildDirtyTree = function (node) {\n var _this = this;\n var _a;\n if (node.dirty === RedrawType.NONE) {\n return {\n dirtyTree: {},\n paths: []\n };\n }\n var childrenDirtyTree = node.children.map(function (c) {\n return _this.buildDirtyTree(c);\n }).filter(function (c) {\n return c.paths.length > 0;\n });\n var name = (_a = node instanceof Group$1 ? node.name : null, _a !== null && _a !== void 0 ? _a : node.id);\n var paths = childrenDirtyTree.length === 0 ? [name] : childrenDirtyTree.map(function (c) {\n return c.paths;\n }).reduce(function (r, p) {\n return r.concat(p);\n }, []).map(function (p) {\n return name + \".\" + p;\n });\n return {\n dirtyTree: __assign$A({\n name: name,\n node: node,\n dirty: RedrawType[node.dirty]\n }, childrenDirtyTree.map(function (c) {\n return c.dirtyTree;\n }).filter(function (t) {\n return t.dirty !== undefined;\n }).reduce(function (result, childTree) {\n result[childTree.name || ''] = childTree;\n return result;\n }, {})),\n paths: paths\n };\n };\n Scene.className = 'Scene';\n return Scene;\n}();\nfunction createDeprecationWarning() {\n var logged = false;\n return function (key, message) {\n if (logged) {\n return;\n }\n var msg = [\"AG Charts - Property [\" + key + \"] is deprecated.\", message].filter(function (v) {\n return v != null;\n }).join(' ');\n console.warn(msg);\n logged = true;\n };\n}\nfunction Deprecated(message, opts) {\n var _a;\n var def = (_a = opts) === null || _a === void 0 ? void 0 : _a.default;\n var warn = createDeprecationWarning();\n return function (target, key) {\n // `target` is either a constructor (static member) or prototype (instance member)\n if (target.hasOwnProperty(key)) {\n return;\n }\n var symbol = Symbol(\"__\" + key + \"__\");\n Object.defineProperty(target, key, {\n get: function () {\n return this[symbol];\n },\n set: function (value) {\n if (value !== def) {\n warn(key, message);\n }\n this[symbol] = value;\n },\n enumerable: true,\n configurable: false\n });\n };\n}\nfunction DeprecatedAndRenamedTo(newPropName) {\n var warnDeprecated = createDeprecationWarning();\n return function (target, key) {\n // `target` is either a constructor (static member) or prototype (instance member)\n if (target.hasOwnProperty(key)) {\n return;\n }\n var warnRenamed = function () {\n return warnDeprecated(key, \"Use [\" + newPropName + \"] instead.\");\n };\n Object.defineProperty(target, key, {\n get: function () {\n warnRenamed();\n return this[newPropName];\n },\n set: function (value) {\n if (value !== this[newPropName]) {\n warnRenamed();\n this[newPropName] = value;\n }\n },\n enumerable: true,\n configurable: false\n });\n };\n}\nvar __extends$2y = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1v = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __read$z = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread$i = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$z(arguments[i]));\n return ar;\n};\nvar __values$n = undefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\n/** Modes of matching user interactions to rendered nodes (e.g. hover or click) */\nvar SeriesNodePickMode = /*#__PURE__*/function (SeriesNodePickMode) {\n /** Pick matches based upon pick coordinates being inside a matching shape/marker. */\n SeriesNodePickMode[SeriesNodePickMode[\"EXACT_SHAPE_MATCH\"] = 0] = \"EXACT_SHAPE_MATCH\";\n /** Pick matches by nearest category/X-axis value, then distance within that category/X-value. */\n SeriesNodePickMode[SeriesNodePickMode[\"NEAREST_BY_MAIN_AXIS_FIRST\"] = 1] = \"NEAREST_BY_MAIN_AXIS_FIRST\";\n /** Pick matches by nearest category value, then distance within that category. */\n SeriesNodePickMode[SeriesNodePickMode[\"NEAREST_BY_MAIN_CATEGORY_AXIS_FIRST\"] = 2] = \"NEAREST_BY_MAIN_CATEGORY_AXIS_FIRST\";\n /** Pick matches based upon distance to ideal position */\n SeriesNodePickMode[SeriesNodePickMode[\"NEAREST_NODE\"] = 3] = \"NEAREST_NODE\";\n return SeriesNodePickMode;\n}(SeriesNodePickMode || {});\nvar warnDeprecated = createDeprecationWarning();\nvar warnSeriesDeprecated = function () {\n return warnDeprecated('series', 'Use seriesId to get the series ID');\n};\nvar SeriesNodeClickEvent = /** @class */function () {\n function SeriesNodeClickEvent(nativeEvent, datum, series) {\n this.type = 'nodeClick';\n this.event = nativeEvent;\n this.datum = datum.datum;\n this.seriesId = series.id;\n this._series = series;\n }\n Object.defineProperty(SeriesNodeClickEvent.prototype, \"series\", {\n /** @deprecated */\n get: function () {\n warnSeriesDeprecated();\n return this._series;\n },\n enumerable: true,\n configurable: true\n });\n return SeriesNodeClickEvent;\n}();\nvar SeriesItemHighlightStyle = /** @class */function () {\n function SeriesItemHighlightStyle() {\n this.fill = 'yellow';\n this.fillOpacity = undefined;\n this.stroke = undefined;\n this.strokeWidth = undefined;\n }\n __decorate$1v([Validate(OPT_COLOR_STRING)], SeriesItemHighlightStyle.prototype, \"fill\", void 0);\n __decorate$1v([Validate(OPT_NUMBER(0, 1))], SeriesItemHighlightStyle.prototype, \"fillOpacity\", void 0);\n __decorate$1v([Validate(OPT_COLOR_STRING)], SeriesItemHighlightStyle.prototype, \"stroke\", void 0);\n __decorate$1v([Validate(OPT_NUMBER(0))], SeriesItemHighlightStyle.prototype, \"strokeWidth\", void 0);\n return SeriesItemHighlightStyle;\n}();\nvar SeriesHighlightStyle = /** @class */function () {\n function SeriesHighlightStyle() {\n this.strokeWidth = undefined;\n this.dimOpacity = undefined;\n this.enabled = undefined;\n }\n __decorate$1v([Validate(OPT_NUMBER(0))], SeriesHighlightStyle.prototype, \"strokeWidth\", void 0);\n __decorate$1v([Validate(OPT_NUMBER(0, 1))], SeriesHighlightStyle.prototype, \"dimOpacity\", void 0);\n __decorate$1v([Validate(OPT_BOOLEAN)], SeriesHighlightStyle.prototype, \"enabled\", void 0);\n return SeriesHighlightStyle;\n}();\nvar HighlightStyle = /** @class */function () {\n function HighlightStyle() {\n /**\n * @deprecated Use item.fill instead.\n */\n this.fill = undefined;\n /**\n * @deprecated Use item.stroke instead.\n */\n this.stroke = undefined;\n /**\n * @deprecated Use item.strokeWidth instead.\n */\n this.strokeWidth = undefined;\n this.item = new SeriesItemHighlightStyle();\n this.series = new SeriesHighlightStyle();\n }\n __decorate$1v([Deprecated('Use item.fill instead.')], HighlightStyle.prototype, \"fill\", void 0);\n __decorate$1v([Deprecated('Use item.stroke instead.')], HighlightStyle.prototype, \"stroke\", void 0);\n __decorate$1v([Deprecated('Use item.strokeWidth instead.')], HighlightStyle.prototype, \"strokeWidth\", void 0);\n return HighlightStyle;\n}();\nvar SeriesTooltip = /** @class */function () {\n function SeriesTooltip() {\n this.enabled = true;\n }\n __decorate$1v([Validate(BOOLEAN)], SeriesTooltip.prototype, \"enabled\", void 0);\n return SeriesTooltip;\n}();\nvar Series = /** @class */function (_super) {\n __extends$2y(Series, _super);\n function Series(_a) {\n var _b = _a === void 0 ? {} : _a,\n _c = _b.useSeriesGroupLayer,\n useSeriesGroupLayer = _c === void 0 ? true : _c,\n _d = _b.useLabelLayer,\n useLabelLayer = _d === void 0 ? false : _d,\n _e = _b.pickModes,\n pickModes = _e === void 0 ? [SeriesNodePickMode.NEAREST_BY_MAIN_AXIS_FIRST] : _e;\n var _this = _super.call(this) || this;\n _this.id = createId$1(_this);\n // The group node that contains all the nodes used to render this series.\n _this.group = new Group$1();\n _this.directions = [ChartAxisDirection.X, ChartAxisDirection.Y];\n _this.directionKeys = {};\n // Flag to determine if we should recalculate node data.\n _this.nodeDataRefresh = true;\n _this._data = undefined;\n _this._visible = true;\n _this.showInLegend = true;\n _this.cursor = 'default';\n _this.highlightStyle = new HighlightStyle();\n var group = _this.group;\n _this.backgroundGroup = group.appendChild(new Group$1({\n name: _this.id + \"-background\",\n layer: useSeriesGroupLayer,\n zIndex: Layers.SERIES_BACKGROUND_ZINDEX\n }));\n _this.seriesGroup = group.appendChild(new Group$1({\n name: _this.id + \"-series\",\n layer: useSeriesGroupLayer,\n zIndex: Layers.SERIES_LAYER_ZINDEX\n }));\n _this.pickGroup = _this.seriesGroup.appendChild(new Group$1());\n _this.highlightGroup = group.appendChild(new Group$1({\n name: _this.id + \"-highlight\",\n layer: true,\n zIndex: Layers.SERIES_LAYER_ZINDEX,\n zIndexSubOrder: [_this.id, 15000],\n optimiseDirtyTracking: true\n }));\n _this.highlightNode = _this.highlightGroup.appendChild(new Group$1());\n _this.highlightLabel = _this.highlightGroup.appendChild(new Group$1());\n _this.highlightNode.zIndex = 0;\n _this.highlightLabel.zIndex = 10;\n _this.pickModes = pickModes;\n if (useLabelLayer) {\n _this.labelGroup = group.appendChild(new Group$1({\n name: _this.id + \"-series-labels\",\n layer: true,\n zIndex: Layers.SERIES_LABEL_ZINDEX\n }));\n }\n return _this;\n }\n Object.defineProperty(Series.prototype, \"type\", {\n get: function () {\n return this.constructor.type || '';\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Series.prototype, \"data\", {\n get: function () {\n return this._data;\n },\n set: function (input) {\n this._data = input;\n this.nodeDataRefresh = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Series.prototype, \"visible\", {\n get: function () {\n return this._visible;\n },\n set: function (value) {\n this._visible = value;\n this.visibleChanged();\n },\n enumerable: true,\n configurable: true\n });\n Series.prototype.destroy = function () {\n // Override point for sub-classes.\n };\n Object.defineProperty(Series.prototype, \"grouped\", {\n set: function (g) {\n if (g === true) {\n throw new Error(\"AG Charts - grouped: true is unsupported for series of type: \" + this.type);\n }\n },\n enumerable: true,\n configurable: true\n });\n Series.prototype.setColors = function (_fills, _strokes) {\n // Override point for subclasses.\n };\n // Returns the actual keys used (to fetch the values from `data` items) for the given direction.\n Series.prototype.getKeys = function (direction) {\n var _this = this;\n var directionKeys = this.directionKeys;\n var keys = directionKeys && directionKeys[direction];\n var values = [];\n if (keys) {\n keys.forEach(function (key) {\n var value = _this[key];\n if (value) {\n if (Array.isArray(value)) {\n values.push.apply(values, __spread$i(value));\n } else {\n values.push(value);\n }\n }\n });\n }\n return values;\n };\n // Indicate that something external changed and we should recalculate nodeData.\n Series.prototype.markNodeDataDirty = function () {\n this.nodeDataRefresh = true;\n };\n Series.prototype.visibleChanged = function () {\n // Override point for this.visible change post-processing.\n };\n Series.prototype.getOpacity = function (datum) {\n var _a = this.highlightStyle.series,\n _b = _a.dimOpacity,\n dimOpacity = _b === void 0 ? 1 : _b,\n _c = _a.enabled,\n enabled = _c === void 0 ? true : _c;\n var defaultOpacity = 1;\n if (enabled === false || dimOpacity === defaultOpacity) {\n return defaultOpacity;\n }\n switch (this.isItemIdHighlighted(datum)) {\n case 'no-highlight':\n case 'highlighted':\n return defaultOpacity;\n case 'peer-highlighted':\n case 'other-highlighted':\n return dimOpacity;\n }\n };\n Series.prototype.getStrokeWidth = function (defaultStrokeWidth, datum) {\n var _a = this.highlightStyle.series,\n strokeWidth = _a.strokeWidth,\n _b = _a.enabled,\n enabled = _b === void 0 ? true : _b;\n if (enabled === false || strokeWidth === undefined) {\n // No change in styling for highlight cases.\n return defaultStrokeWidth;\n }\n switch (this.isItemIdHighlighted(datum)) {\n case 'highlighted':\n return strokeWidth;\n case 'no-highlight':\n case 'other-highlighted':\n case 'peer-highlighted':\n return defaultStrokeWidth;\n }\n };\n Series.prototype.isItemIdHighlighted = function (datum) {\n var _a = this.chart,\n _b = _a === void 0 ? {} : _a,\n _c = _b.highlightedDatum,\n _d = _c === void 0 ? {} : _c,\n _e = _d.series,\n series = _e === void 0 ? undefined : _e,\n _f = _d.itemId,\n itemId = _f === void 0 ? undefined : _f,\n _g = _b.highlightedDatum,\n highlightedDatum = _g === void 0 ? undefined : _g;\n var highlighting = series != null;\n if (!highlighting) {\n // Highlighting not active.\n return 'no-highlight';\n }\n if (series !== this) {\n // Highlighting active, this series not highlighted.\n return 'other-highlighted';\n }\n if (itemId === undefined) {\n // Series doesn't use itemIds - so no further refinement needed, series is highlighted.\n return 'highlighted';\n }\n if (datum && highlightedDatum !== datum && itemId !== datum.itemId) {\n // A peer (in same Series instance) sub-series has highlight active, but this sub-series\n // does not.\n return 'peer-highlighted';\n }\n return 'highlighted';\n };\n Series.prototype.pickNode = function (point, limitPickModes) {\n var e_1, _a;\n var _b = this,\n pickModes = _b.pickModes,\n visible = _b.visible,\n group = _b.group;\n if (!visible || !group.visible) {\n return;\n }\n try {\n for (var pickModes_1 = __values$n(pickModes), pickModes_1_1 = pickModes_1.next(); !pickModes_1_1.done; pickModes_1_1 = pickModes_1.next()) {\n var pickMode = pickModes_1_1.value;\n if (limitPickModes && !limitPickModes.includes(pickMode)) {\n continue;\n }\n var match = undefined;\n switch (pickMode) {\n case SeriesNodePickMode.EXACT_SHAPE_MATCH:\n match = this.pickNodeExactShape(point);\n break;\n case SeriesNodePickMode.NEAREST_BY_MAIN_AXIS_FIRST:\n case SeriesNodePickMode.NEAREST_BY_MAIN_CATEGORY_AXIS_FIRST:\n match = this.pickNodeMainAxisFirst(point, pickMode === SeriesNodePickMode.NEAREST_BY_MAIN_CATEGORY_AXIS_FIRST);\n break;\n case SeriesNodePickMode.NEAREST_NODE:\n match = this.pickNodeClosestDatum(point);\n break;\n }\n if (match) {\n return {\n pickMode: pickMode,\n match: match.datum,\n distance: match.distance\n };\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (pickModes_1_1 && !pickModes_1_1.done && (_a = pickModes_1.return)) _a.call(pickModes_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n };\n Series.prototype.pickNodeExactShape = function (point) {\n var match = this.pickGroup.pickNode(point.x, point.y);\n if (match) {\n return {\n datum: match.datum,\n distance: 0\n };\n }\n };\n Series.prototype.pickNodeClosestDatum = function (_point) {\n // Override point for sub-classes - but if this is invoked, the sub-class specified it wants\n // to use this feature.\n throw new Error('AG Charts - Series.pickNodeClosestDatum() not implemented');\n };\n Series.prototype.pickNodeMainAxisFirst = function (_point, _requireCategoryAxis) {\n // Override point for sub-classes - but if this is invoked, the sub-class specified it wants\n // to use this feature.\n throw new Error('AG Charts - Series.pickNodeMainAxisFirst() not implemented');\n };\n Series.prototype.fireNodeClickEvent = function (_event, _datum) {\n var eventObject = this.getNodeClickEvent(_event, _datum);\n this.fireEvent(eventObject);\n };\n Series.prototype.getNodeClickEvent = function (event, datum) {\n return new SeriesNodeClickEvent(event, datum, this);\n };\n Series.prototype.toggleSeriesItem = function (_itemId, enabled) {\n this.visible = enabled;\n this.nodeDataRefresh = true;\n };\n Series.prototype.isEnabled = function () {\n return this.visible;\n };\n Series.prototype.fixNumericExtent = function (extent, axis) {\n if (extent === undefined) {\n // Don't return a range, there is no range.\n return [];\n }\n var _a = __read$z(extent, 2),\n min = _a[0],\n max = _a[1];\n min = +min;\n max = +max;\n if (min === 0 && max === 0) {\n // domain has zero length and the single valid value is 0. Use the default of [0, 1].\n return [0, 1];\n }\n if (min === Infinity && max === -Infinity) {\n // There's no data in the domain.\n return [];\n }\n if (min === Infinity) {\n min = 0;\n }\n if (max === -Infinity) {\n max = 0;\n }\n if (min === max) {\n // domain has zero length, there is only a single valid value in data\n if (axis instanceof TimeAxis) {\n // numbers in domain correspond to Unix timestamps\n // automatically expand domain by 1 in each direction\n min -= 1;\n max += 1;\n } else {\n var padding = Math.abs(min * 0.01);\n min -= padding;\n max += padding;\n }\n }\n if (!(isNumber$1(min) && isNumber$1(max))) {\n return [];\n }\n return [min, max];\n };\n Series.highlightedZIndex = 1000000000000;\n __decorate$1v([Validate(STRING)], Series.prototype, \"id\", void 0);\n __decorate$1v([Validate(BOOLEAN)], Series.prototype, \"_visible\", void 0);\n __decorate$1v([Validate(BOOLEAN)], Series.prototype, \"showInLegend\", void 0);\n __decorate$1v([Validate(STRING)], Series.prototype, \"cursor\", void 0);\n return Series;\n}(Observable$1);\nvar __extends$2x = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1u = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar Padding$1 = /** @class */function (_super) {\n __extends$2x(Padding, _super);\n function Padding(top, right, bottom, left) {\n if (top === void 0) {\n top = 0;\n }\n if (right === void 0) {\n right = top;\n }\n if (bottom === void 0) {\n bottom = top;\n }\n if (left === void 0) {\n left = right;\n }\n var _this = _super.call(this) || this;\n _this.top = top;\n _this.right = right;\n _this.bottom = bottom;\n _this.left = left;\n return _this;\n }\n Padding.prototype.clear = function () {\n this.top = this.right = this.bottom = this.left = 0;\n };\n __decorate$1u([Validate(NUMBER(0))], Padding.prototype, \"top\", void 0);\n __decorate$1u([Validate(NUMBER(0))], Padding.prototype, \"right\", void 0);\n __decorate$1u([Validate(NUMBER(0))], Padding.prototype, \"bottom\", void 0);\n __decorate$1u([Validate(NUMBER(0))], Padding.prototype, \"left\", void 0);\n return Padding;\n}(Observable$1);\nvar Gradient = /** @class */function () {\n function Gradient() {\n this.stops = [];\n }\n return Gradient;\n}();\nvar __extends$2w = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar LinearGradient = /** @class */function (_super) {\n __extends$2w(LinearGradient, _super);\n function LinearGradient() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.angle = 0;\n return _this;\n }\n LinearGradient.prototype.createGradient = function (ctx, bbox) {\n var stops = this.stops;\n var radians = this.angle % 360 * Math.PI / 180;\n var cos = Math.cos(radians);\n var sin = Math.sin(radians);\n var w = bbox.width;\n var h = bbox.height;\n var cx = bbox.x + w * 0.5;\n var cy = bbox.y + h * 0.5;\n if (w > 0 && h > 0) {\n var l = Math.sqrt(h * h + w * w) * Math.abs(Math.cos(radians - Math.atan(h / w))) / 2;\n var gradient_1 = ctx.createLinearGradient(cx + cos * l, cy + sin * l, cx - cos * l, cy - sin * l);\n stops.forEach(function (stop) {\n gradient_1.addColorStop(stop.offset, stop.color);\n });\n return gradient_1;\n }\n return 'black';\n };\n return LinearGradient;\n}(Gradient);\nvar __extends$2v = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1t = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar RectSizing = /*#__PURE__*/function (RectSizing) {\n RectSizing[RectSizing[\"Content\"] = 0] = \"Content\";\n RectSizing[RectSizing[\"Border\"] = 1] = \"Border\";\n return RectSizing;\n}(RectSizing || {});\nvar Rect = /** @class */function (_super) {\n __extends$2v(Rect, _super);\n function Rect() {\n var _this = _super.call(this, function (ctx) {\n return _this.renderRect(ctx);\n }) || this;\n _this.borderPath = new Path2D$1();\n _this.x = 0;\n _this.y = 0;\n _this.width = 10;\n _this.height = 10;\n _this.radius = 0;\n /**\n * If `true`, the rect is aligned to the pixel grid for crisp looking lines.\n * Animated rects may not look nice with this option enabled, for example\n * when a rect is translated by a sub-pixel value on each frame.\n */\n _this.crisp = false;\n _this.gradient = false;\n _this.lastUpdatePathStrokeWidth = Shape$1.defaultStyles.strokeWidth;\n _this.effectiveStrokeWidth = Shape$1.defaultStyles.strokeWidth;\n /**\n * When the rectangle's width or height is less than a pixel\n * and crisp mode is on, the rectangle will still fit into the pixel,\n * but will be less opaque to make an effect of holding less space.\n */\n _this.microPixelEffectOpacity = 1;\n return _this;\n }\n Rect.prototype.updateGradientInstance = function () {\n var fill = this.fill;\n if (this.gradient) {\n if (fill) {\n var gradient = new LinearGradient();\n gradient.angle = 270;\n gradient.stops = [{\n offset: 0,\n color: Color$1.fromString(fill).brighter().toString()\n }, {\n offset: 1,\n color: Color$1.fromString(fill).darker().toString()\n }];\n this.gradientInstance = gradient;\n }\n } else {\n this.gradientInstance = undefined;\n }\n this.gradientFill = fill;\n };\n Rect.prototype.isDirtyPath = function () {\n var _a;\n if (this.lastUpdatePathStrokeWidth !== this.strokeWidth) {\n return true;\n }\n if (this.path.isDirty() || this.borderPath.isDirty() || ((_a = this.clipPath) === null || _a === void 0 ? void 0 : _a.isDirty())) {\n return true;\n }\n return false;\n };\n Rect.prototype.updatePath = function () {\n var _a, _b, _c;\n var _d = this,\n path = _d.path,\n borderPath = _d.borderPath,\n crisp = _d.crisp;\n var _e = this,\n x = _e.x,\n y = _e.y,\n w = _e.width,\n h = _e.height,\n strokeWidth = _e.strokeWidth;\n var pixelRatio = (_b = (_a = this.scene) === null || _a === void 0 ? void 0 : _a.canvas.pixelRatio, _b !== null && _b !== void 0 ? _b : 1);\n var pixelSize = 1 / pixelRatio;\n var microPixelEffectOpacity = 1;\n path.clear({\n trackChanges: true\n });\n borderPath.clear({\n trackChanges: true\n });\n if (crisp) {\n if (w <= pixelSize) {\n microPixelEffectOpacity *= w / pixelSize;\n }\n if (h <= pixelSize) {\n microPixelEffectOpacity *= h / pixelSize;\n }\n w = this.align(x, w);\n h = this.align(y, h);\n x = this.align(x);\n y = this.align(y);\n }\n if (strokeWidth) {\n if (w < pixelSize) {\n // Too narrow, draw a vertical stroke\n var lx = x + pixelSize / 2;\n borderPath.moveTo(lx, y);\n borderPath.lineTo(lx, y + h);\n strokeWidth = pixelSize;\n this.borderClipPath = undefined;\n } else if (h < pixelSize) {\n // Too narrow, draw a horizontal stroke\n var ly = y + pixelSize / 2;\n borderPath.moveTo(x, ly);\n borderPath.lineTo(x + w, ly);\n strokeWidth = pixelSize;\n this.borderClipPath = undefined;\n } else if (strokeWidth < w && strokeWidth < h) {\n var halfStrokeWidth = strokeWidth / 2;\n x += halfStrokeWidth;\n y += halfStrokeWidth;\n w -= strokeWidth;\n h -= strokeWidth;\n // Clipping not needed in this case; fill to center of stroke.\n this.borderClipPath = undefined;\n path.rect(x, y, w, h);\n borderPath.rect(x, y, w, h);\n } else {\n // Skip the fill and just render the stroke.\n this.borderClipPath = (_c = this.borderClipPath, _c !== null && _c !== void 0 ? _c : new Path2D$1());\n this.borderClipPath.clear({\n trackChanges: true\n });\n this.borderClipPath.rect(x, y, w, h);\n borderPath.rect(x, y, w, h);\n }\n } else {\n // No borderPath needed, and thus no clipPath needed either. Fill to full extent of\n // Rect.\n this.borderClipPath = undefined;\n path.rect(x, y, w, h);\n }\n this.effectiveStrokeWidth = strokeWidth;\n this.lastUpdatePathStrokeWidth = strokeWidth;\n this.microPixelEffectOpacity = microPixelEffectOpacity;\n };\n Rect.prototype.computeBBox = function () {\n var _a = this,\n x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height;\n return new BBox$1(x, y, width, height);\n };\n Rect.prototype.isPointInPath = function (x, y) {\n var point = this.transformPoint(x, y);\n var bbox = this.computeBBox();\n return bbox.containsPoint(point.x, point.y);\n };\n Rect.prototype.renderRect = function (ctx) {\n var _a, _b;\n var _c = this,\n stroke = _c.stroke,\n effectiveStrokeWidth = _c.effectiveStrokeWidth,\n fill = _c.fill,\n path = _c.path,\n borderPath = _c.borderPath,\n borderClipPath = _c.borderClipPath,\n opacity = _c.opacity,\n microPixelEffectOpacity = _c.microPixelEffectOpacity;\n var borderActive = !!stroke && !!effectiveStrokeWidth;\n if (fill) {\n var _d = this,\n gradientFill = _d.gradientFill,\n fillOpacity = _d.fillOpacity,\n fillShadow = _d.fillShadow;\n if (fill !== gradientFill) {\n this.updateGradientInstance();\n }\n var gradientInstance = this.gradientInstance;\n if (gradientInstance) {\n ctx.fillStyle = gradientInstance.createGradient(ctx, this.computeBBox());\n } else {\n ctx.fillStyle = fill;\n }\n ctx.globalAlpha = opacity * fillOpacity * microPixelEffectOpacity;\n // The canvas context scaling (depends on the device's pixel ratio)\n // has no effect on shadows, so we have to account for the pixel ratio\n // manually here.\n if (fillShadow && fillShadow.enabled) {\n var pixelRatio = (_b = (_a = this.scene) === null || _a === void 0 ? void 0 : _a.canvas.pixelRatio, _b !== null && _b !== void 0 ? _b : 1);\n ctx.shadowColor = fillShadow.color;\n ctx.shadowOffsetX = fillShadow.xOffset * pixelRatio;\n ctx.shadowOffsetY = fillShadow.yOffset * pixelRatio;\n ctx.shadowBlur = fillShadow.blur * pixelRatio;\n }\n path.draw(ctx);\n ctx.fill();\n ctx.shadowColor = 'rgba(0, 0, 0, 0)';\n }\n if (borderActive) {\n var _e = this,\n strokeOpacity = _e.strokeOpacity,\n lineDash = _e.lineDash,\n lineDashOffset = _e.lineDashOffset,\n lineCap = _e.lineCap,\n lineJoin = _e.lineJoin;\n if (borderClipPath) {\n // strokeWidth is larger than width or height, so use clipping to render correctly.\n // This is the simplest way to achieve the correct rendering due to nuances with ~0\n // width/height lines in Canvas operations.\n borderClipPath.draw(ctx);\n ctx.clip();\n }\n borderPath.draw(ctx);\n ctx.strokeStyle = stroke;\n ctx.globalAlpha = opacity * strokeOpacity * microPixelEffectOpacity;\n ctx.lineWidth = effectiveStrokeWidth;\n if (lineDash) {\n ctx.setLineDash(lineDash);\n }\n if (lineDashOffset) {\n ctx.lineDashOffset = lineDashOffset;\n }\n if (lineCap) {\n ctx.lineCap = lineCap;\n }\n if (lineJoin) {\n ctx.lineJoin = lineJoin;\n }\n ctx.stroke();\n }\n };\n Rect.className = 'Rect';\n __decorate$1t([ScenePathChangeDetection()], Rect.prototype, \"x\", void 0);\n __decorate$1t([ScenePathChangeDetection()], Rect.prototype, \"y\", void 0);\n __decorate$1t([ScenePathChangeDetection()], Rect.prototype, \"width\", void 0);\n __decorate$1t([ScenePathChangeDetection()], Rect.prototype, \"height\", void 0);\n __decorate$1t([ScenePathChangeDetection()], Rect.prototype, \"radius\", void 0);\n __decorate$1t([ScenePathChangeDetection()], Rect.prototype, \"crisp\", void 0);\n __decorate$1t([ScenePathChangeDetection({\n changeCb: function (r) {\n return r.updateGradientInstance();\n }\n })], Rect.prototype, \"gradient\", void 0);\n return Rect;\n}(Path$1);\nvar __extends$2u = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1s = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar Background = /** @class */function (_super) {\n __extends$2u(Background, _super);\n function Background() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.node = new Rect();\n _this._visible = true;\n return _this;\n }\n Object.defineProperty(Background.prototype, \"width\", {\n get: function () {\n return this.node.width;\n },\n set: function (value) {\n this.node.width = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Background.prototype, \"height\", {\n get: function () {\n return this.node.height;\n },\n set: function (value) {\n this.node.height = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Background.prototype, \"visible\", {\n get: function () {\n return this._visible;\n },\n set: function (value) {\n this._visible = value;\n this.node.visible = this._visible;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Background.prototype, \"fill\", {\n get: function () {\n return this._fill;\n },\n set: function (value) {\n this._fill = value;\n this.node.fill = this._fill;\n },\n enumerable: true,\n configurable: true\n });\n __decorate$1s([Validate(BOOLEAN)], Background.prototype, \"_visible\", void 0);\n __decorate$1s([Validate(OPT_COLOR_STRING)], Background.prototype, \"_fill\", void 0);\n return Background;\n}(Observable$1);\nvar __extends$2t = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1r = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __values$m = undefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar Marker$1 = /** @class */function (_super) {\n __extends$2t(Marker, _super);\n function Marker() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.x = 0;\n _this.y = 0;\n _this.size = 12;\n return _this;\n }\n Marker.prototype.computeBBox = function () {\n var _a = this,\n x = _a.x,\n y = _a.y,\n size = _a.size;\n var half = size / 2;\n return new BBox$1(x - half, y - half, size, size);\n };\n Marker.prototype.applyPath = function (s, moves) {\n var e_1, _a;\n var path = this.path;\n var _b = this,\n x = _b.x,\n y = _b.y;\n path.clear();\n try {\n for (var moves_1 = __values$m(moves), moves_1_1 = moves_1.next(); !moves_1_1.done; moves_1_1 = moves_1.next()) {\n var _c = moves_1_1.value,\n mx = _c.x,\n my = _c.y,\n t = _c.t;\n x += mx * s;\n y += my * s;\n if (t === 'move') {\n path.moveTo(x, y);\n } else {\n path.lineTo(x, y);\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (moves_1_1 && !moves_1_1.done && (_a = moves_1.return)) _a.call(moves_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n path.closePath();\n };\n __decorate$1r([ScenePathChangeDetection()], Marker.prototype, \"x\", void 0);\n __decorate$1r([ScenePathChangeDetection()], Marker.prototype, \"y\", void 0);\n __decorate$1r([ScenePathChangeDetection({\n convertor: Math.abs\n })], Marker.prototype, \"size\", void 0);\n return Marker;\n}(Path$1);\nvar __extends$2s = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar Square$1 = /** @class */function (_super) {\n __extends$2s(Square, _super);\n function Square() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Square.prototype.updatePath = function () {\n var _a = this,\n path = _a.path,\n x = _a.x,\n y = _a.y;\n var hs = this.size / 2;\n path.clear();\n path.moveTo(this.align(x - hs), this.align(y - hs));\n path.lineTo(this.align(x + hs), this.align(y - hs));\n path.lineTo(this.align(x + hs), this.align(y + hs));\n path.lineTo(this.align(x - hs), this.align(y + hs));\n path.closePath();\n };\n Square.className = 'Square';\n return Square;\n}(Marker$1);\nvar __extends$2r = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar MarkerLabel = /** @class */function (_super) {\n __extends$2r(MarkerLabel, _super);\n function MarkerLabel() {\n var _this = _super.call(this) || this;\n _this.label = new Text$1();\n _this._marker = new Square$1();\n _this._markerSize = 15;\n _this._spacing = 8;\n var label = _this.label;\n label.textBaseline = 'middle';\n label.fontSize = 12;\n label.fontFamily = 'Verdana, sans-serif';\n label.fill = 'black';\n // For better looking vertical alignment of labels to markers.\n label.y = HdpiCanvas$1.has.textMetrics ? 1 : 0;\n _this.append([_this.marker, label]);\n _this.update();\n return _this;\n }\n Object.defineProperty(MarkerLabel.prototype, \"text\", {\n get: function () {\n return this.label.text;\n },\n set: function (value) {\n this.label.text = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"fontStyle\", {\n get: function () {\n return this.label.fontStyle;\n },\n set: function (value) {\n this.label.fontStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"fontWeight\", {\n get: function () {\n return this.label.fontWeight;\n },\n set: function (value) {\n this.label.fontWeight = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"fontSize\", {\n get: function () {\n return this.label.fontSize;\n },\n set: function (value) {\n this.label.fontSize = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"fontFamily\", {\n get: function () {\n return this.label.fontFamily;\n },\n set: function (value) {\n this.label.fontFamily = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"color\", {\n get: function () {\n return this.label.fill;\n },\n set: function (value) {\n this.label.fill = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"marker\", {\n get: function () {\n return this._marker;\n },\n set: function (value) {\n if (this._marker !== value) {\n this.removeChild(this._marker);\n this._marker = value;\n this.appendChild(value);\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"markerSize\", {\n get: function () {\n return this._markerSize;\n },\n set: function (value) {\n if (this._markerSize !== value) {\n this._markerSize = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"markerFill\", {\n get: function () {\n return this.marker.fill;\n },\n set: function (value) {\n this.marker.fill = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"markerStroke\", {\n get: function () {\n return this.marker.stroke;\n },\n set: function (value) {\n this.marker.stroke = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"markerStrokeWidth\", {\n get: function () {\n return this.marker.strokeWidth;\n },\n set: function (value) {\n this.marker.strokeWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"markerFillOpacity\", {\n get: function () {\n return this.marker.fillOpacity;\n },\n set: function (value) {\n this.marker.fillOpacity = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"markerStrokeOpacity\", {\n get: function () {\n return this.marker.strokeOpacity;\n },\n set: function (value) {\n this.marker.strokeOpacity = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"spacing\", {\n get: function () {\n return this._spacing;\n },\n set: function (value) {\n if (this._spacing !== value) {\n this._spacing = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n MarkerLabel.prototype.update = function () {\n var marker = this.marker;\n var markerSize = this.markerSize;\n marker.size = markerSize;\n this.label.x = markerSize / 2 + this.spacing;\n };\n MarkerLabel.prototype.render = function (renderCtx) {\n // Cannot override field Group.opacity with get/set pair, so\n // propagate opacity changes here.\n this.marker.opacity = this.opacity;\n this.label.opacity = this.opacity;\n _super.prototype.render.call(this, renderCtx);\n };\n MarkerLabel.className = 'MarkerLabel';\n return MarkerLabel;\n}(Group$1);\nvar __extends$2q = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar Circle$1 = /** @class */function (_super) {\n __extends$2q(Circle, _super);\n function Circle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Circle.prototype.updatePath = function () {\n var _a = this,\n x = _a.x,\n y = _a.y,\n path = _a.path,\n size = _a.size;\n var r = size / 2;\n path.clear();\n path.cubicArc(x, y, r, r, 0, 0, Math.PI * 2, 0);\n path.closePath();\n };\n Circle.className = 'Circle';\n return Circle;\n}(Marker$1);\nvar __extends$2p = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar Cross = /** @class */function (_super) {\n __extends$2p(Cross, _super);\n function Cross() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Cross.prototype.updatePath = function () {\n var s = this.size / 4.2;\n _super.prototype.applyPath.call(this, s, Cross.moves);\n };\n Cross.className = 'Cross';\n Cross.moves = [{\n x: -1,\n y: 0,\n t: 'move'\n }, {\n x: -1,\n y: -1\n }, {\n x: +1,\n y: -1\n }, {\n x: +1,\n y: +1\n }, {\n x: +1,\n y: -1\n }, {\n x: +1,\n y: +1\n }, {\n x: -1,\n y: +1\n }, {\n x: +1,\n y: +1\n }, {\n x: -1,\n y: +1\n }, {\n x: -1,\n y: -1\n }, {\n x: -1,\n y: +1\n }, {\n x: -1,\n y: -1\n }];\n return Cross;\n}(Marker$1);\nvar __extends$2o = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar Diamond$1 = /** @class */function (_super) {\n __extends$2o(Diamond, _super);\n function Diamond() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Diamond.prototype.updatePath = function () {\n var s = this.size / 2;\n _super.prototype.applyPath.call(this, s, Diamond.moves);\n };\n Diamond.className = 'Diamond';\n Diamond.moves = [{\n x: 0,\n y: -1,\n t: 'move'\n }, {\n x: +1,\n y: +1\n }, {\n x: -1,\n y: +1\n }, {\n x: -1,\n y: -1\n }, {\n x: +1,\n y: -1\n }];\n return Diamond;\n}(Marker$1);\nvar __extends$2n = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar Heart = /** @class */function (_super) {\n __extends$2n(Heart, _super);\n function Heart() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Heart.prototype.rad = function (degree) {\n return degree / 180 * Math.PI;\n };\n Heart.prototype.updatePath = function () {\n var _a = this,\n x = _a.x,\n path = _a.path,\n size = _a.size,\n rad = _a.rad;\n var r = size / 4;\n var y = this.y + r / 2;\n path.clear();\n path.cubicArc(x - r, y - r, r, r, 0, rad(130), rad(330), 0);\n path.cubicArc(x + r, y - r, r, r, 0, rad(220), rad(50), 0);\n path.lineTo(x, y + r);\n path.closePath();\n };\n Heart.className = 'Heart';\n return Heart;\n}(Marker$1);\nvar __extends$2m = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar Plus = /** @class */function (_super) {\n __extends$2m(Plus, _super);\n function Plus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Plus.prototype.updatePath = function () {\n var s = this.size / 3;\n _super.prototype.applyPath.call(this, s, Plus.moves);\n };\n Plus.className = 'Plus';\n Plus.moves = [{\n x: -0.5,\n y: -0.5,\n t: 'move'\n }, {\n x: 0,\n y: -1\n }, {\n x: +1,\n y: 0\n }, {\n x: 0,\n y: +1\n }, {\n x: +1,\n y: 0\n }, {\n x: 0,\n y: +1\n }, {\n x: -1,\n y: 0\n }, {\n x: 0,\n y: +1\n }, {\n x: -1,\n y: 0\n }, {\n x: 0,\n y: -1\n }, {\n x: -1,\n y: 0\n }, {\n x: 0,\n y: -1\n }];\n return Plus;\n}(Marker$1);\nvar __extends$2l = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar Triangle = /** @class */function (_super) {\n __extends$2l(Triangle, _super);\n function Triangle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Triangle.prototype.updatePath = function () {\n var s = this.size * 1.1;\n _super.prototype.applyPath.call(this, s, Triangle.moves);\n };\n Triangle.className = 'Triangle';\n Triangle.moves = [{\n x: 0,\n y: -0.48,\n t: 'move'\n }, {\n x: 0.5,\n y: 0.87\n }, {\n x: -1,\n y: 0\n }];\n return Triangle;\n}(Marker$1);\n\n// This function is in its own file because putting it into SeriesMarker makes the Legend\n// suddenly aware of the series (it's an agnostic component), and putting it into Marker\n// introduces circular dependencies.\nfunction getMarker$1(shape) {\n if (shape === void 0) {\n shape = Square$1;\n }\n if (typeof shape === 'string') {\n switch (shape) {\n case 'circle':\n return Circle$1;\n case 'cross':\n return Cross;\n case 'diamond':\n return Diamond$1;\n case 'heart':\n return Heart;\n case 'plus':\n return Plus;\n case 'triangle':\n return Triangle;\n default:\n return Square$1;\n }\n }\n if (typeof shape === 'function') {\n return shape;\n }\n return Square$1;\n}\nvar __decorate$1q = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __read$y = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread$h = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$y(arguments[i]));\n return ar;\n};\nvar __values$l = undefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar LegendOrientation = /*#__PURE__*/function (LegendOrientation) {\n LegendOrientation[LegendOrientation[\"Vertical\"] = 0] = \"Vertical\";\n LegendOrientation[LegendOrientation[\"Horizontal\"] = 1] = \"Horizontal\";\n return LegendOrientation;\n}(LegendOrientation || {});\nvar LegendPosition = /*#__PURE__*/function (LegendPosition) {\n LegendPosition[\"Top\"] = \"top\";\n LegendPosition[\"Right\"] = \"right\";\n LegendPosition[\"Bottom\"] = \"bottom\";\n LegendPosition[\"Left\"] = \"left\";\n return LegendPosition;\n}(LegendPosition || {});\nvar LegendLabel = /** @class */function () {\n function LegendLabel() {\n this.maxLength = undefined;\n this.color = 'black';\n this.fontStyle = undefined;\n this.fontWeight = undefined;\n this.fontSize = 12;\n this.fontFamily = 'Verdana, sans-serif';\n this.formatter = undefined;\n }\n LegendLabel.prototype.getFont = function () {\n return getFont$2(this.fontSize, this.fontFamily, this.fontStyle, this.fontWeight);\n };\n __decorate$1q([Validate(OPT_NUMBER(0))], LegendLabel.prototype, \"maxLength\", void 0);\n __decorate$1q([Validate(COLOR_STRING)], LegendLabel.prototype, \"color\", void 0);\n __decorate$1q([Validate(OPT_FONT_STYLE)], LegendLabel.prototype, \"fontStyle\", void 0);\n __decorate$1q([Validate(OPT_FONT_WEIGHT)], LegendLabel.prototype, \"fontWeight\", void 0);\n __decorate$1q([Validate(NUMBER(0))], LegendLabel.prototype, \"fontSize\", void 0);\n __decorate$1q([Validate(STRING)], LegendLabel.prototype, \"fontFamily\", void 0);\n __decorate$1q([Validate(OPT_FUNCTION)], LegendLabel.prototype, \"formatter\", void 0);\n return LegendLabel;\n}();\nvar LegendMarker = /** @class */function () {\n function LegendMarker() {\n this.size = 15;\n /**\n * If the marker type is set, the legend will always use that marker type for all its items,\n * regardless of the type that comes from the `data`.\n */\n this._shape = undefined;\n /**\n * Padding between the marker and the label within each legend item.\n */\n this.padding = 8;\n this.strokeWidth = 1;\n }\n Object.defineProperty(LegendMarker.prototype, \"shape\", {\n get: function () {\n return this._shape;\n },\n set: function (value) {\n var _a;\n this._shape = value;\n (_a = this.parent) === null || _a === void 0 ? void 0 : _a.onMarkerShapeChange();\n },\n enumerable: true,\n configurable: true\n });\n __decorate$1q([Validate(NUMBER(0))], LegendMarker.prototype, \"size\", void 0);\n __decorate$1q([Validate(NUMBER(0))], LegendMarker.prototype, \"padding\", void 0);\n __decorate$1q([Validate(NUMBER(0))], LegendMarker.prototype, \"strokeWidth\", void 0);\n return LegendMarker;\n}();\nvar LegendItem = /** @class */function () {\n function LegendItem() {\n this.marker = new LegendMarker();\n this.label = new LegendLabel();\n /** Used to constrain the width of legend items. */\n this.maxWidth = undefined;\n /**\n * The legend uses grid layout for its items, occupying as few columns as possible when positioned to left or right,\n * and as few rows as possible when positioned to top or bottom. This config specifies the amount of horizontal\n * padding between legend items.\n */\n this.paddingX = 16;\n /**\n * The legend uses grid layout for its items, occupying as few columns as possible when positioned to left or right,\n * and as few rows as possible when positioned to top or bottom. This config specifies the amount of vertical\n * padding between legend items.\n */\n this.paddingY = 8;\n }\n __decorate$1q([Validate(OPT_NUMBER(0))], LegendItem.prototype, \"maxWidth\", void 0);\n __decorate$1q([Validate(NUMBER(0))], LegendItem.prototype, \"paddingX\", void 0);\n __decorate$1q([Validate(NUMBER(0))], LegendItem.prototype, \"paddingY\", void 0);\n return LegendItem;\n}();\nvar NO_OP_LISTENER = function () {\n // Default listener that does nothing.\n};\nvar LegendListeners = /** @class */function () {\n function LegendListeners() {\n this.legendItemClick = NO_OP_LISTENER;\n }\n __decorate$1q([Validate(FUNCTION)], LegendListeners.prototype, \"legendItemClick\", void 0);\n return LegendListeners;\n}();\nvar Legend = /** @class */function () {\n function Legend() {\n this.id = createId$1(this);\n this.group = new Group$1({\n name: 'legend',\n layer: true,\n zIndex: Layers.LEGEND_ZINDEX\n });\n this.itemSelection = Selection$1.select(this.group).selectAll();\n this.oldSize = [0, 0];\n this.item = new LegendItem();\n this.listeners = new LegendListeners();\n this.truncatedItems = new Set();\n this._data = [];\n this._enabled = true;\n this.orientation = LegendOrientation.Vertical;\n this._position = LegendPosition.Right;\n /** Reverse the display order of legend items if `true`. */\n this.reverseOrder = undefined;\n /**\n * Spacing between the legend and the edge of the chart's element.\n */\n this.spacing = 20;\n this.characterWidths = new Map();\n this.size = [0, 0];\n this.item.marker.parent = this;\n }\n Object.defineProperty(Legend.prototype, \"data\", {\n get: function () {\n return this._data;\n },\n set: function (value) {\n this._data = value;\n this.group.visible = value.length > 0 && this.enabled;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Legend.prototype, \"enabled\", {\n get: function () {\n return this._enabled;\n },\n set: function (value) {\n this._enabled = value;\n this.group.visible = value && this.data.length > 0;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Legend.prototype, \"position\", {\n get: function () {\n return this._position;\n },\n set: function (value) {\n this._position = value;\n switch (value) {\n case 'right':\n case 'left':\n this.orientation = LegendOrientation.Vertical;\n break;\n case 'bottom':\n case 'top':\n this.orientation = LegendOrientation.Horizontal;\n break;\n }\n },\n enumerable: true,\n configurable: true\n });\n Legend.prototype.onMarkerShapeChange = function () {\n this.itemSelection = this.itemSelection.setData([]);\n this.itemSelection.exit.remove();\n this.group.markDirty(this.group, RedrawType.MINOR);\n };\n Legend.prototype.getCharacterWidths = function (font) {\n var characterWidths = this.characterWidths;\n if (characterWidths.has(font)) {\n return characterWidths.get(font);\n }\n var cw = {\n '...': HdpiCanvas$1.getTextSize('...', font).width\n };\n characterWidths.set(font, cw);\n return cw;\n };\n /**\n * The method is given the desired size of the legend, which only serves as a hint.\n * The vertically oriented legend will take as much horizontal space as needed, but will\n * respect the height constraints, and the horizontal legend will take as much vertical\n * space as needed in an attempt not to exceed the given width.\n * After the layout is done, the {@link size} will contain the actual size of the legend.\n * If the actual size is not the same as the previous actual size, the legend will fire\n * the 'layoutChange' event to communicate that another layout is needed, and the above\n * process should be repeated.\n * @param width\n * @param height\n */\n Legend.prototype.performLayout = function (width, height) {\n var _this = this;\n var _a = this.item,\n paddingX = _a.paddingX,\n paddingY = _a.paddingY,\n label = _a.label,\n maxWidth = _a.maxWidth,\n _b = _a.marker,\n markerSize = _b.size,\n markerPadding = _b.padding,\n markerShape = _b.shape,\n _c = _a.label,\n _d = _c.maxLength,\n maxLength = _d === void 0 ? Infinity : _d,\n fontStyle = _c.fontStyle,\n fontWeight = _c.fontWeight,\n fontSize = _c.fontSize,\n fontFamily = _c.fontFamily;\n var data = __spread$h(this.data);\n if (this.reverseOrder) {\n data.reverse();\n }\n var updateSelection = this.itemSelection.setData(data, function (_, datum) {\n var Marker = getMarker$1(markerShape || datum.marker.shape);\n return datum.id + '-' + datum.itemId + '-' + Marker.name;\n });\n updateSelection.exit.remove();\n var enterSelection = updateSelection.enter.append(MarkerLabel).each(function (node, datum) {\n var Marker = getMarker$1(markerShape || datum.marker.shape);\n node.marker = new Marker();\n });\n var itemSelection = this.itemSelection = updateSelection.merge(enterSelection);\n var itemCount = itemSelection.size;\n // Update properties that affect the size of the legend items and measure them.\n var bboxes = [];\n var font = label.getFont();\n var ellipsis = \"...\";\n var itemMaxWidthPercentage = 0.8;\n var maxItemWidth = maxWidth !== null && maxWidth !== void 0 ? maxWidth : width * itemMaxWidthPercentage;\n itemSelection.each(function (markerLabel, datum) {\n var e_1, _a;\n var _b;\n var text = (_b = datum.label.text, _b !== null && _b !== void 0 ? _b : '');\n markerLabel.markerSize = markerSize;\n markerLabel.spacing = markerPadding;\n markerLabel.fontStyle = fontStyle;\n markerLabel.fontWeight = fontWeight;\n markerLabel.fontSize = fontSize;\n markerLabel.fontFamily = fontFamily;\n var textChars = text.split('');\n var addEllipsis = false;\n if (text.length > maxLength) {\n text = \"\" + text.substring(0, maxLength);\n addEllipsis = true;\n }\n var labelWidth = markerSize + markerPadding + HdpiCanvas$1.getTextSize(text, font).width;\n if (labelWidth > maxItemWidth) {\n var truncatedText = '';\n var characterWidths = _this.getCharacterWidths(font);\n var cumCharSize = characterWidths[ellipsis];\n try {\n for (var textChars_1 = __values$l(textChars), textChars_1_1 = textChars_1.next(); !textChars_1_1.done; textChars_1_1 = textChars_1.next()) {\n var char = textChars_1_1.value;\n if (!characterWidths[char]) {\n characterWidths[char] = HdpiCanvas$1.getTextSize(char, font).width;\n }\n cumCharSize += characterWidths[char];\n if (cumCharSize > maxItemWidth) {\n break;\n }\n truncatedText += char;\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (textChars_1_1 && !textChars_1_1.done && (_a = textChars_1.return)) _a.call(textChars_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n text = truncatedText;\n addEllipsis = true;\n }\n var id = datum.itemId || datum.id;\n if (addEllipsis) {\n text += ellipsis;\n _this.truncatedItems.add(id);\n } else {\n _this.truncatedItems.delete(id);\n }\n markerLabel.text = text;\n bboxes.push(markerLabel.computeBBox());\n });\n var itemHeight = bboxes.length && bboxes[0].height;\n var rowCount = 0;\n var columnWidth = 0;\n var paddedItemsWidth = 0;\n var paddedItemsHeight = 0;\n width = Math.max(1, width);\n height = Math.max(1, height);\n switch (this.orientation) {\n case LegendOrientation.Horizontal:\n if (!(isFinite(width) && width > 0)) {\n return false;\n }\n rowCount = 0;\n var columnCount = 0;\n // Split legend items into columns until the width is suitable.\n do {\n var itemsWidth = 0;\n columnCount = 0;\n columnWidth = 0;\n rowCount++;\n var i = 0;\n while (i < itemCount) {\n var bbox = bboxes[i];\n if (bbox.width > columnWidth) {\n columnWidth = bbox.width;\n }\n i++;\n if (i % rowCount === 0) {\n itemsWidth += columnWidth;\n columnWidth = 0;\n columnCount++;\n }\n }\n if (i % rowCount !== 0) {\n itemsWidth += columnWidth;\n columnCount++;\n }\n paddedItemsWidth = itemsWidth + (columnCount - 1) * paddingX;\n } while (paddedItemsWidth > width && columnCount > 1);\n paddedItemsHeight = itemHeight * rowCount + (rowCount - 1) * paddingY;\n break;\n case LegendOrientation.Vertical:\n if (!(isFinite(height) && height > 0)) {\n return false;\n }\n rowCount = itemCount * 2;\n // Split legend items into columns until the height is suitable.\n do {\n rowCount = (rowCount >> 1) + rowCount % 2;\n columnWidth = 0;\n var itemsWidth = 0;\n var itemsHeight = 0;\n var columnCount_1 = 0;\n var i = 0;\n while (i < itemCount) {\n var bbox = bboxes[i];\n if (!columnCount_1) {\n itemsHeight += bbox.height;\n }\n if (bbox.width > columnWidth) {\n columnWidth = bbox.width;\n }\n i++;\n if (i % rowCount === 0) {\n itemsWidth += columnWidth;\n columnWidth = 0;\n columnCount_1++;\n }\n }\n if (i % rowCount !== 0) {\n itemsWidth += columnWidth;\n columnCount_1++;\n }\n paddedItemsWidth = itemsWidth + (columnCount_1 - 1) * paddingX;\n paddedItemsHeight = itemsHeight + (rowCount - 1) * paddingY;\n } while (paddedItemsHeight > height && rowCount > 1);\n break;\n }\n // Top-left corner of the first legend item.\n var startX = (width - paddedItemsWidth) / 2;\n var startY = (height - paddedItemsHeight) / 2;\n var x = 0;\n var y = 0;\n columnWidth = 0;\n // Position legend items using the layout computed above.\n itemSelection.each(function (markerLabel, _, i) {\n // Round off for pixel grid alignment to work properly.\n markerLabel.translationX = Math.floor(startX + x);\n markerLabel.translationY = Math.floor(startY + y);\n var bbox = bboxes[i];\n if (bbox.width > columnWidth) {\n columnWidth = bbox.width;\n }\n if ((i + 1) % rowCount === 0) {\n x += columnWidth + paddingX;\n y = 0;\n columnWidth = 0;\n } else {\n y += bbox.height + paddingY;\n }\n });\n // Update legend item properties that don't affect the layout.\n this.update();\n var size = this.size;\n var oldSize = this.oldSize;\n size[0] = paddedItemsWidth;\n size[1] = paddedItemsHeight;\n if (size[0] !== oldSize[0] || size[1] !== oldSize[1]) {\n oldSize[0] = size[0];\n oldSize[1] = size[1];\n }\n };\n Legend.prototype.update = function () {\n var _a = this.item,\n strokeWidth = _a.marker.strokeWidth,\n color = _a.label.color;\n this.itemSelection.each(function (markerLabel, datum) {\n var marker = datum.marker;\n markerLabel.markerFill = marker.fill;\n markerLabel.markerStroke = marker.stroke;\n markerLabel.markerStrokeWidth = strokeWidth;\n markerLabel.markerFillOpacity = marker.fillOpacity;\n markerLabel.markerStrokeOpacity = marker.strokeOpacity;\n markerLabel.opacity = datum.enabled ? 1 : 0.5;\n markerLabel.color = color;\n });\n };\n Legend.prototype.getDatumForPoint = function (x, y) {\n var node = this.group.pickNode(x, y);\n if (node && node.parent) {\n return node.parent.datum;\n }\n };\n Legend.className = 'Legend';\n __decorate$1q([Validate(BOOLEAN)], Legend.prototype, \"_enabled\", void 0);\n __decorate$1q([Validate(POSITION)], Legend.prototype, \"_position\", void 0);\n __decorate$1q([Validate(OPT_BOOLEAN)], Legend.prototype, \"reverseOrder\", void 0);\n __decorate$1q([Validate(NUMBER(0))], Legend.prototype, \"spacing\", void 0);\n return Legend;\n}();\nvar __values$k = undefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar SizeMonitor = /** @class */function () {\n function SizeMonitor() {}\n SizeMonitor.init = function () {\n var _this = this;\n var NativeResizeObserver = window.ResizeObserver;\n if (NativeResizeObserver) {\n this.resizeObserver = new NativeResizeObserver(function (entries) {\n var e_1, _a;\n try {\n for (var entries_1 = __values$k(entries), entries_1_1 = entries_1.next(); !entries_1_1.done; entries_1_1 = entries_1.next()) {\n var entry = entries_1_1.value;\n var _b = entry.contentRect,\n width = _b.width,\n height = _b.height;\n _this.checkSize(_this.elements.get(entry.target), entry.target, width, height);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (entries_1_1 && !entries_1_1.done && (_a = entries_1.return)) _a.call(entries_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n });\n } else {\n // polyfill (more reliable even in browsers that support ResizeObserver)\n var step = function () {\n _this.elements.forEach(function (entry, element) {\n _this.checkClientSize(element, entry);\n });\n };\n window.setInterval(step, 100);\n }\n this.ready = true;\n };\n SizeMonitor.checkSize = function (entry, element, width, height) {\n if (entry) {\n if (!entry.size || width !== entry.size.width || height !== entry.size.height) {\n entry.size = {\n width: width,\n height: height\n };\n entry.cb(entry.size, element);\n }\n }\n };\n // Only a single callback is supported.\n SizeMonitor.observe = function (element, cb) {\n if (!this.ready) {\n this.init();\n }\n this.unobserve(element);\n if (this.resizeObserver) {\n this.resizeObserver.observe(element);\n }\n this.elements.set(element, {\n cb: cb\n });\n // Ensure first size callback happens synchronously.\n this.checkClientSize(element, {\n cb: cb\n });\n };\n SizeMonitor.unobserve = function (element) {\n if (this.resizeObserver) {\n this.resizeObserver.unobserve(element);\n }\n this.elements.delete(element);\n };\n SizeMonitor.checkClientSize = function (element, entry) {\n var width = element.clientWidth ? element.clientWidth : 0;\n var height = element.clientHeight ? element.clientHeight : 0;\n this.checkSize(entry, element, width, height);\n };\n SizeMonitor.elements = new Map();\n SizeMonitor.ready = false;\n return SizeMonitor;\n}();\nvar __awaiter$d = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$d = undefined && undefined.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n/**\n * Wrap a function in debouncing trigger function. A requestAnimationFrame() is scheduled\n * after the first schedule() call, and subsequent schedule() calls will be ignored until the\n * animation callback executes.\n */\nfunction debouncedAnimationFrame(cb) {\n return buildScheduler(function (cb) {\n return requestAnimationFrame(cb);\n }, cb);\n}\nfunction debouncedCallback(cb) {\n return buildScheduler(function (cb) {\n return setTimeout(cb, 0);\n }, cb);\n}\nfunction buildScheduler(scheduleFn, cb) {\n var scheduleCount = 0;\n var promiseRunning = false;\n var awaitingPromise;\n var awaitingDone;\n var busy = function () {\n return promiseRunning;\n };\n var done = function () {\n var _a;\n promiseRunning = false;\n (_a = awaitingDone) === null || _a === void 0 ? void 0 : _a();\n awaitingDone = undefined;\n awaitingPromise = undefined;\n if (scheduleCount > 0) {\n scheduleFn(scheduleCb);\n }\n };\n var scheduleCb = function () {\n var count = scheduleCount;\n scheduleCount = 0;\n promiseRunning = true;\n var maybePromise = cb({\n count: count\n });\n if (!maybePromise) {\n done();\n return;\n }\n maybePromise.then(done).catch(done);\n };\n return {\n schedule: function () {\n if (scheduleCount === 0 && !busy()) {\n scheduleFn(scheduleCb);\n }\n scheduleCount++;\n },\n await: function () {\n return __awaiter$d(this, void 0, void 0, function () {\n return __generator$d(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!busy()) {\n return [2 /*return*/];\n }\n if (!awaitingPromise) {\n awaitingPromise = new Promise(function (resolve) {\n awaitingDone = resolve;\n });\n }\n _a.label = 1;\n case 1:\n if (!busy()) return [3 /*break*/, 3];\n return [4 /*yield*/, awaitingPromise];\n case 2:\n _a.sent();\n return [3 /*break*/, 1];\n case 3:\n return [2 /*return*/];\n }\n });\n });\n }\n };\n}\nvar __extends$2k = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1p = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar MARKER_SHAPES = ['circle', 'cross', 'diamond', 'heart', 'plus', 'square', 'triangle'];\nvar MARKER_SHAPE = predicateWithMessage(function (v) {\n return MARKER_SHAPES.includes(v) || Object.getPrototypeOf(v) === Marker$1;\n}, \"expecting a marker shape keyword such as 'circle', 'diamond' or 'square' or an object extending the Marker class\");\nvar SeriesMarker = /** @class */function (_super) {\n __extends$2k(SeriesMarker, _super);\n function SeriesMarker() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.enabled = true;\n /**\n * One of the predefined marker names, or a marker constructor function (for user-defined markers).\n * A series will create one marker instance per data point.\n */\n _this.shape = Circle$1;\n _this.size = 6;\n /**\n * In case a series has the `sizeKey` set, the `sizeKey` values along with the `size` and `maxSize` configs\n * will be used to determine the size of the marker. All values will be mapped to a marker size\n * within the `[size, maxSize]` range, where the largest values will correspond to the `maxSize`\n * and the lowest to the `size`.\n */\n _this.maxSize = 30;\n _this.domain = undefined;\n _this.fill = undefined;\n _this.stroke = undefined;\n _this.strokeWidth = 1;\n _this.fillOpacity = undefined;\n _this.strokeOpacity = undefined;\n return _this;\n }\n __decorate$1p([ValidateAndChangeDetection({\n validatePredicate: BOOLEAN,\n sceneChangeDetectionOpts: {\n redraw: RedrawType.MAJOR\n }\n })], SeriesMarker.prototype, \"enabled\", void 0);\n __decorate$1p([ValidateAndChangeDetection({\n validatePredicate: MARKER_SHAPE,\n sceneChangeDetectionOpts: {\n redraw: RedrawType.MAJOR\n }\n })], SeriesMarker.prototype, \"shape\", void 0);\n __decorate$1p([ValidateAndChangeDetection({\n validatePredicate: NUMBER(0),\n sceneChangeDetectionOpts: {\n redraw: RedrawType.MAJOR\n }\n })], SeriesMarker.prototype, \"size\", void 0);\n __decorate$1p([ValidateAndChangeDetection({\n validatePredicate: NUMBER(0),\n sceneChangeDetectionOpts: {\n redraw: RedrawType.MAJOR\n }\n })], SeriesMarker.prototype, \"maxSize\", void 0);\n __decorate$1p([ValidateAndChangeDetection({\n validatePredicate: OPT_NUMBER_ARRAY,\n sceneChangeDetectionOpts: {\n redraw: RedrawType.MAJOR\n }\n })], SeriesMarker.prototype, \"domain\", void 0);\n __decorate$1p([ValidateAndChangeDetection({\n validatePredicate: OPT_COLOR_STRING,\n sceneChangeDetectionOpts: {\n redraw: RedrawType.MAJOR\n }\n })], SeriesMarker.prototype, \"fill\", void 0);\n __decorate$1p([ValidateAndChangeDetection({\n validatePredicate: OPT_COLOR_STRING,\n sceneChangeDetectionOpts: {\n redraw: RedrawType.MAJOR\n }\n })], SeriesMarker.prototype, \"stroke\", void 0);\n __decorate$1p([ValidateAndChangeDetection({\n validatePredicate: OPT_NUMBER(0),\n sceneChangeDetectionOpts: {\n redraw: RedrawType.MAJOR\n }\n })], SeriesMarker.prototype, \"strokeWidth\", void 0);\n __decorate$1p([ValidateAndChangeDetection({\n validatePredicate: OPT_NUMBER(0, 1),\n sceneChangeDetectionOpts: {\n redraw: RedrawType.MAJOR\n }\n })], SeriesMarker.prototype, \"fillOpacity\", void 0);\n __decorate$1p([ValidateAndChangeDetection({\n validatePredicate: OPT_NUMBER(0, 1),\n sceneChangeDetectionOpts: {\n redraw: RedrawType.MAJOR\n }\n })], SeriesMarker.prototype, \"strokeOpacity\", void 0);\n return SeriesMarker;\n}(ChangeDetectable);\nvar __assign$z = undefined && undefined.__assign || function () {\n __assign$z = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$z.apply(this, arguments);\n};\nvar __read$x = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread$g = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$x(arguments[i]));\n return ar;\n};\nvar __values$j = undefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\n/**\n * Performs a JSON-diff between a source and target JSON structure.\n *\n * On a per property basis, takes the target property value where:\n * - types are different.\n * - type is primitive.\n * - type is array and length or content have changed.\n *\n * Recurses for object types.\n *\n * @param source starting point for diff\n * @param target target for diff vs. source\n *\n * @returns `null` if no differences, or an object with the subset of properties that have changed.\n */\nfunction jsonDiff(source, target) {\n var e_1, _a;\n var sourceType = classify(source);\n var targetType = classify(target);\n if (targetType === 'array') {\n if (sourceType !== 'array' || source.length !== target.length) {\n return __spread$g(target);\n }\n if (target.some(function (targetElement, i) {\n var _a;\n return jsonDiff((_a = source) === null || _a === void 0 ? void 0 : _a[i], targetElement) != null;\n })) {\n return __spread$g(target);\n }\n return null;\n }\n if (targetType === 'primitive') {\n if (sourceType !== 'primitive') {\n return __assign$z({}, target);\n }\n if (source !== target) {\n return target;\n }\n return null;\n }\n var lhs = source || {};\n var rhs = target || {};\n var allProps = new Set(__spread$g(Object.keys(lhs), Object.keys(rhs)));\n var propsChangedCount = 0;\n var result = {};\n var _loop_1 = function (prop) {\n // Cheap-and-easy equality check.\n if (lhs[prop] === rhs[prop]) {\n return \"continue\";\n }\n var take = function (v) {\n result[prop] = v;\n propsChangedCount++;\n };\n var lhsType = classify(lhs[prop]);\n var rhsType = classify(rhs[prop]);\n if (lhsType !== rhsType) {\n // Types changed, just take RHS.\n take(rhs[prop]);\n return \"continue\";\n }\n if (rhsType === 'primitive' || rhsType === null) {\n take(rhs[prop]);\n return \"continue\";\n }\n if (rhsType === 'array' && lhs[prop].length !== rhs[prop].length) {\n // Arrays are different sizes, so just take target array.\n take(rhs[prop]);\n return \"continue\";\n }\n if (rhsType === 'class-instance') {\n // Don't try to do anything tricky with array diffs!\n take(rhs[prop]);\n return \"continue\";\n }\n if (rhsType === 'function' && lhs[prop] !== rhs[prop]) {\n take(rhs[prop]);\n return \"continue\";\n }\n var diff = jsonDiff(lhs[prop], rhs[prop]);\n if (diff !== null) {\n take(diff);\n }\n };\n try {\n for (var allProps_1 = __values$j(allProps), allProps_1_1 = allProps_1.next(); !allProps_1_1.done; allProps_1_1 = allProps_1.next()) {\n var prop = allProps_1_1.value;\n _loop_1(prop);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (allProps_1_1 && !allProps_1_1.done && (_a = allProps_1.return)) _a.call(allProps_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n return propsChangedCount === 0 ? null : result;\n}\n/**\n * Special value used by `jsonMerge` to signal that a property should be removed from the merged\n * output.\n */\nvar DELETE = Symbol('');\nvar NOT_SPECIFIED = Symbol('');\n/**\n * Merge together the provide JSON object structures, with the precedence of application running\n * from higher indexes to lower indexes.\n *\n * Deep-clones all objects to avoid mutation of the inputs changing the output object. For arrays,\n * just performs a deep-clone of the entire array, no merging of elements attempted.\n *\n * @param json all json objects to merge\n * @param opts merge options\n * @param opts.avoidDeepClone contains a list of properties where deep clones should be avoided\n *\n * @returns the combination of all of the json inputs\n */\nfunction jsonMerge(json, opts) {\n var e_2, _a;\n var _b;\n var avoidDeepClone = ((_b = opts) === null || _b === void 0 ? void 0 : _b.avoidDeepClone) || [];\n var jsonTypes = json.map(function (v) {\n return classify(v);\n });\n if (jsonTypes.some(function (v) {\n return v === 'array';\n })) {\n // Clone final array.\n var finalValue = json[json.length - 1];\n if (finalValue instanceof Array) {\n return finalValue.map(function (v) {\n var type = classify(v);\n return type === 'array' ? jsonMerge([[], v], opts) : type === 'object' ? jsonMerge([{}, v], opts) : v;\n });\n }\n return finalValue;\n }\n var result = {};\n var props = new Set(json.map(function (v) {\n return v != null ? Object.keys(v) : [];\n }).reduce(function (r, n) {\n return r.concat(n);\n }, []));\n var _loop_2 = function (nextProp) {\n var values = json.map(function (j) {\n return j != null && nextProp in j ? j[nextProp] : NOT_SPECIFIED;\n }).filter(function (v) {\n return v !== NOT_SPECIFIED;\n });\n if (values.length === 0) {\n return \"continue\";\n }\n var lastValue = values[values.length - 1];\n if (lastValue === DELETE) {\n return \"continue\";\n }\n var types = values.map(function (v) {\n return classify(v);\n });\n var type = types[0];\n if (types.some(function (t) {\n return t !== type && t !== null;\n })) {\n // Short-circuit if mismatching types.\n result[nextProp] = lastValue;\n return \"continue\";\n }\n if ((type === 'array' || type === 'object') && !avoidDeepClone.includes(nextProp)) {\n result[nextProp] = jsonMerge(values, opts);\n } else if (type === 'array') {\n // Arrays need to be shallow copied to avoid external mutation and allow jsonDiff to\n // detect changes.\n result[nextProp] = __spread$g(lastValue);\n } else {\n // Just directly assign/overwrite.\n result[nextProp] = lastValue;\n }\n };\n try {\n for (var props_1 = __values$j(props), props_1_1 = props_1.next(); !props_1_1.done; props_1_1 = props_1.next()) {\n var nextProp = props_1_1.value;\n _loop_2(nextProp);\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (props_1_1 && !props_1_1.done && (_a = props_1.return)) _a.call(props_1);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n return result;\n}\n/**\n * Recursively apply a JSON object into a class-hierarchy, optionally instantiating certain classes\n * by property name.\n *\n * @param target to apply source JSON properties into\n * @param source to be applied\n * @param params.path path for logging/error purposes, to aid with pinpointing problems\n * @param params.matcherPath path for pattern matching, to lookup allowedTypes override.\n * @param params.skip property names to skip from the source\n * @param params.constructors dictionary of property name to class constructors for properties that\n * require object construction\n * @param params.allowedTypes overrides by path for allowed property types\n */\nfunction jsonApply(target, source, params) {\n if (params === void 0) {\n params = {};\n }\n var _a, _b, _c, _d;\n var _e = params.path,\n path = _e === void 0 ? undefined : _e,\n _f = params.matcherPath,\n matcherPath = _f === void 0 ? path ? path.replace(/(\\[[0-9+]+\\])/i, '[]') : undefined : _f,\n _g = params.skip,\n skip = _g === void 0 ? [] : _g,\n _h = params.constructors,\n constructors = _h === void 0 ? {} : _h,\n _j = params.allowedTypes,\n allowedTypes = _j === void 0 ? {} : _j;\n if (target == null) {\n throw new Error(\"AG Charts - target is uninitialised: \" + (path || ''));\n }\n if (source == null) {\n return target;\n }\n var targetType = classify(target);\n var _loop_3 = function (property) {\n var propertyMatcherPath = \"\" + (matcherPath ? matcherPath + '.' : '') + property;\n if (skip.indexOf(propertyMatcherPath) >= 0) {\n return \"continue\";\n }\n var newValue = source[property];\n var propertyPath = \"\" + (path ? path + '.' : '') + property;\n var targetAny = target;\n var targetClass = targetAny.constructor;\n var currentValue = targetAny[property];\n var ctr = (_a = constructors[property], _a !== null && _a !== void 0 ? _a : constructors[propertyMatcherPath]);\n try {\n var currentValueType = classify(currentValue);\n var newValueType = classify(newValue);\n if (targetType === 'class-instance' && !(property in target || targetAny.hasOwnProperty(property))) {\n console.warn(\"AG Charts - unable to set [\" + propertyPath + \"] in \" + ((_b = targetClass) === null || _b === void 0 ? void 0 : _b.name) + \" - property is unknown\");\n return \"continue\";\n }\n var allowableTypes = allowedTypes[propertyMatcherPath] || [currentValueType];\n if (currentValueType === 'class-instance' && newValueType === 'object') {\n // Allowed, this is the common case! - do not error.\n } else if (currentValueType != null && newValueType != null && !allowableTypes.includes(newValueType)) {\n console.warn(\"AG Charts - unable to set [\" + propertyPath + \"] in \" + ((_c = targetClass) === null || _c === void 0 ? void 0 : _c.name) + \" - can't apply type of [\" + newValueType + \"], allowed types are: [\" + allowableTypes + \"]\");\n return \"continue\";\n }\n if (newValueType === 'array') {\n ctr = ctr !== null && ctr !== void 0 ? ctr : constructors[propertyMatcherPath + \"[]\"];\n if (ctr != null) {\n var newValueArray = newValue;\n targetAny[property] = newValueArray.map(function (v) {\n return jsonApply(new ctr(), v, __assign$z(__assign$z({}, params), {\n path: propertyPath,\n matcherPath: propertyMatcherPath + '[]'\n }));\n });\n } else {\n targetAny[property] = newValue;\n }\n } else if (newValueType === 'class-instance') {\n targetAny[property] = newValue;\n } else if (newValueType === 'object') {\n if (currentValue != null) {\n jsonApply(currentValue, newValue, __assign$z(__assign$z({}, params), {\n path: propertyPath,\n matcherPath: propertyMatcherPath\n }));\n } else if (ctr != null) {\n targetAny[property] = jsonApply(new ctr(), newValue, __assign$z(__assign$z({}, params), {\n path: propertyPath,\n matcherPath: propertyMatcherPath\n }));\n } else {\n targetAny[property] = newValue;\n }\n } else {\n targetAny[property] = newValue;\n }\n } catch (error) {\n console.warn(\"AG Charts - unable to set [\" + propertyPath + \"] in [\" + ((_d = targetClass) === null || _d === void 0 ? void 0 : _d.name) + \"]; nested error is: \" + error.message);\n return \"continue\";\n }\n };\n for (var property in source) {\n _loop_3(property);\n }\n return target;\n}\n/**\n * Walk the given JSON object graphs, invoking the visit() callback for every object encountered.\n * Arrays are descended into without a callback, however their elements will have the visit()\n * callback invoked if they are objects.\n *\n * @param json to traverse\n * @param visit callback for each non-primitive and non-array object found\n * @param opts.skip property names to skip when walking\n * @param jsons to traverse in parallel\n */\nfunction jsonWalk(json, visit, opts) {\n var jsons = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n jsons[_i - 3] = arguments[_i];\n }\n var _a;\n var jsonType = classify(json);\n var skip = opts.skip || [];\n if (jsonType === 'array') {\n json.forEach(function (element, index) {\n var _a;\n jsonWalk.apply(void 0, __spread$g([element, visit, opts], (_a = jsons) === null || _a === void 0 ? void 0 : _a.map(function (o) {\n var _a;\n return (_a = o) === null || _a === void 0 ? void 0 : _a[index];\n })));\n });\n return;\n } else if (jsonType !== 'object') {\n return;\n }\n visit.apply(void 0, __spread$g([jsonType, json], jsons));\n var _loop_4 = function (property) {\n if (skip.indexOf(property) >= 0) {\n return \"continue\";\n }\n var value = json[property];\n var otherValues = (_a = jsons) === null || _a === void 0 ? void 0 : _a.map(function (o) {\n var _a;\n return (_a = o) === null || _a === void 0 ? void 0 : _a[property];\n });\n var valueType = classify(value);\n if (valueType === 'object' || valueType === 'array') {\n jsonWalk.apply(void 0, __spread$g([value, visit, opts], otherValues));\n }\n };\n for (var property in json) {\n _loop_4(property);\n }\n}\n/**\n * Classify the type of a value to assist with handling for merge purposes.\n */\nfunction classify(value) {\n if (value == null) {\n return null;\n } else if (value instanceof HTMLElement) {\n return 'primitive';\n } else if (value instanceof Array) {\n return 'array';\n } else if (value instanceof Date) {\n return 'primitive';\n } else if (typeof value === 'object' && value.constructor === Object) {\n return 'object';\n } else if (typeof value === 'function') {\n return 'function';\n } else if (typeof value === 'object' && value.constructor != null) {\n return 'class-instance';\n }\n return 'primitive';\n}\nvar __extends$2j = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1o = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __awaiter$c = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$c = undefined && undefined.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __read$w = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread$f = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$w(arguments[i]));\n return ar;\n};\nvar __values$i = undefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar CartesianSeriesNodeClickEvent = /** @class */function (_super) {\n __extends$2j(CartesianSeriesNodeClickEvent, _super);\n function CartesianSeriesNodeClickEvent(xKey, yKey, nativeEvent, datum, series) {\n var _this = _super.call(this, nativeEvent, datum, series) || this;\n _this.xKey = xKey;\n _this.yKey = yKey;\n return _this;\n }\n return CartesianSeriesNodeClickEvent;\n}(SeriesNodeClickEvent);\nvar CartesianSeries = /** @class */function (_super) {\n __extends$2j(CartesianSeries, _super);\n function CartesianSeries(opts) {\n var _a;\n if (opts === void 0) {\n opts = {};\n }\n var _this = _super.call(this, {\n useSeriesGroupLayer: true,\n pickModes: opts.pickModes\n }) || this;\n _this._contextNodeData = [];\n _this.nodeDataDependencies = {};\n _this.highlightSelection = Selection$1.select(_this.highlightNode).selectAll();\n _this.highlightLabelSelection = Selection$1.select(_this.highlightLabel).selectAll();\n _this.subGroups = [];\n _this.subGroupId = 0;\n /**\n * The assumption is that the values will be reset (to `true`)\n * in the {@link yKeys} setter.\n */\n _this.seriesItemEnabled = new Map();\n _this.directionKeys = (_a = {}, _a[ChartAxisDirection.X] = ['xKey'], _a[ChartAxisDirection.Y] = ['yKey'], _a);\n var _b = opts.pickGroupIncludes,\n pickGroupIncludes = _b === void 0 ? ['datumNodes'] : _b,\n _c = opts.pathsPerSeries,\n pathsPerSeries = _c === void 0 ? 1 : _c,\n _d = opts.features,\n features = _d === void 0 ? [] : _d,\n _e = opts.pathsZIndexSubOrderOffset,\n pathsZIndexSubOrderOffset = _e === void 0 ? [] : _e,\n _f = opts.renderLayerPerSubSeries,\n renderLayerPerSubSeries = _f === void 0 ? true : _f;\n _this.opts = {\n pickGroupIncludes: pickGroupIncludes,\n pathsPerSeries: pathsPerSeries,\n features: features,\n pathsZIndexSubOrderOffset: pathsZIndexSubOrderOffset,\n renderLayerPerSubSeries: renderLayerPerSubSeries\n };\n return _this;\n }\n Object.defineProperty(CartesianSeries.prototype, \"contextNodeData\", {\n get: function () {\n var _a;\n return (_a = this._contextNodeData) === null || _a === void 0 ? void 0 : _a.slice();\n },\n enumerable: true,\n configurable: true\n });\n CartesianSeries.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this._contextNodeData.splice(0, this._contextNodeData.length);\n this.subGroups.splice(0, this.subGroups.length);\n };\n /**\n * Note: we are passing `isContinuousX` and `isContinuousY` into this method because it will\n * typically be called inside a loop and this check only needs to happen once.\n * @param x A domain value to be plotted along the x-axis.\n * @param y A domain value to be plotted along the y-axis.\n * @param isContinuousX Typically this will be the value of `xAxis.scale instanceof ContinuousScale`.\n * @param isContinuousY Typically this will be the value of `yAxis.scale instanceof ContinuousScale`.\n * @returns `[x, y]`, if both x and y are valid domain values for their respective axes/scales, or `undefined`.\n */\n CartesianSeries.prototype.checkDomainXY = function (x, y, isContinuousX, isContinuousY) {\n var isValidDatum = (isContinuousX && isContinuous$1(x) || !isContinuousX && isDiscrete(x)) && (isContinuousY && isContinuous$1(y) || !isContinuousY && isDiscrete(y));\n return isValidDatum ? [x, y] : undefined;\n };\n /**\n * Note: we are passing the xAxis and yAxis because the calling code is supposed to make sure\n * that series has both of them defined, and also to avoid one level of indirection,\n * e.g. `this.xAxis!.inRange(x)`, both of which are suboptimal in tight loops where this method is used.\n * @param x A range value to be plotted along the x-axis.\n * @param y A range value to be plotted along the y-axis.\n * @param xAxis The series' x-axis.\n * @param yAxis The series' y-axis.\n * @returns\n */\n CartesianSeries.prototype.checkRangeXY = function (x, y, xAxis, yAxis) {\n return !isNaN(x) && !isNaN(y) && xAxis.inRange(x) && yAxis.inRange(y);\n };\n CartesianSeries.prototype.update = function (_a) {\n var seriesRect = _a.seriesRect;\n var _b, _c;\n return __awaiter$c(this, void 0, void 0, function () {\n var _d, seriesItemEnabled, visible, _e, _f, _g, series, seriesHighlighted, anySeriesItemEnabled, newNodeDataDependencies;\n return __generator$c(this, function (_h) {\n switch (_h.label) {\n case 0:\n _d = this, seriesItemEnabled = _d.seriesItemEnabled, visible = _d.visible, _e = _d.chart, _f = (_e === void 0 ? {} : _e).highlightedDatum, _g = (_f === void 0 ? {} : _f).series, series = _g === void 0 ? undefined : _g;\n seriesHighlighted = series ? series === this : undefined;\n anySeriesItemEnabled = visible && seriesItemEnabled.size === 0 || __spread$f(seriesItemEnabled.values()).some(function (v) {\n return v === true;\n });\n newNodeDataDependencies = {\n seriesRectWidth: (_b = seriesRect) === null || _b === void 0 ? void 0 : _b.width,\n seriesRectHeight: (_c = seriesRect) === null || _c === void 0 ? void 0 : _c.height\n };\n if (jsonDiff(this.nodeDataDependencies, newNodeDataDependencies) != null) {\n this.nodeDataDependencies = newNodeDataDependencies;\n this.markNodeDataDirty();\n }\n return [4 /*yield*/, this.updateSelections(seriesHighlighted, anySeriesItemEnabled)];\n case 1:\n _h.sent();\n return [4 /*yield*/, this.updateNodes(seriesHighlighted, anySeriesItemEnabled)];\n case 2:\n _h.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n CartesianSeries.prototype.updateSelections = function (seriesHighlighted, anySeriesItemEnabled) {\n return __awaiter$c(this, void 0, void 0, function () {\n var _a;\n var _this = this;\n return __generator$c(this, function (_b) {\n switch (_b.label) {\n case 0:\n return [4 /*yield*/, this.updateHighlightSelection(seriesHighlighted)];\n case 1:\n _b.sent();\n if (!anySeriesItemEnabled) {\n return [2 /*return*/];\n }\n if (!this.nodeDataRefresh && !this.isPathOrSelectionDirty()) {\n return [2 /*return*/];\n }\n if (!this.nodeDataRefresh) return [3 /*break*/, 4];\n this.nodeDataRefresh = false;\n _a = this;\n return [4 /*yield*/, this.createNodeData()];\n case 2:\n _a._contextNodeData = _b.sent();\n return [4 /*yield*/, this.updateSeriesGroups()];\n case 3:\n _b.sent();\n _b.label = 4;\n case 4:\n return [4 /*yield*/, Promise.all(this.subGroups.map(function (g, i) {\n return _this.updateSeriesGroupSelections(g, i, seriesHighlighted);\n }))];\n case 5:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n CartesianSeries.prototype.updateSeriesGroupSelections = function (subGroup, seriesIdx, seriesHighlighted) {\n return __awaiter$c(this, void 0, void 0, function () {\n var datumSelection, labelSelection, markerSelection, paths, contextData, nodeData, labelData, itemId, _a, _b, _c;\n return __generator$c(this, function (_d) {\n switch (_d.label) {\n case 0:\n datumSelection = subGroup.datumSelection, labelSelection = subGroup.labelSelection, markerSelection = subGroup.markerSelection, paths = subGroup.paths;\n contextData = this._contextNodeData[seriesIdx];\n nodeData = contextData.nodeData, labelData = contextData.labelData, itemId = contextData.itemId;\n return [4 /*yield*/, this.updatePaths({\n seriesHighlighted: seriesHighlighted,\n itemId: itemId,\n contextData: contextData,\n paths: paths,\n seriesIdx: seriesIdx\n })];\n case 1:\n _d.sent();\n _a = subGroup;\n return [4 /*yield*/, this.updateDatumSelection({\n nodeData: nodeData,\n datumSelection: datumSelection,\n seriesIdx: seriesIdx\n })];\n case 2:\n _a.datumSelection = _d.sent();\n _b = subGroup;\n return [4 /*yield*/, this.updateLabelSelection({\n labelData: labelData,\n labelSelection: labelSelection,\n seriesIdx: seriesIdx\n })];\n case 3:\n _b.labelSelection = _d.sent();\n if (!markerSelection) return [3 /*break*/, 5];\n _c = subGroup;\n return [4 /*yield*/, this.updateMarkerSelection({\n nodeData: nodeData,\n markerSelection: markerSelection,\n seriesIdx: seriesIdx\n })];\n case 4:\n _c.markerSelection = _d.sent();\n _d.label = 5;\n case 5:\n return [2 /*return*/];\n }\n });\n });\n };\n CartesianSeries.prototype.updateSeriesGroups = function () {\n var _a;\n return __awaiter$c(this, void 0, void 0, function () {\n var _b, contextNodeData, seriesGroup, subGroups, _c, pickGroupIncludes, pathsPerSeries, features, pathsZIndexSubOrderOffset, renderLayerPerSubSeries, totalGroups, layer, subGroupId, subGroupZOffset, group, markerGroup, labelGroup, pickGroup, pathParentGroup, datumParentGroup, paths, index;\n return __generator$c(this, function (_d) {\n _b = this, contextNodeData = _b._contextNodeData, seriesGroup = _b.seriesGroup, subGroups = _b.subGroups, _c = _b.opts, pickGroupIncludes = _c.pickGroupIncludes, pathsPerSeries = _c.pathsPerSeries, features = _c.features, pathsZIndexSubOrderOffset = _c.pathsZIndexSubOrderOffset, renderLayerPerSubSeries = _c.renderLayerPerSubSeries;\n if (contextNodeData.length === subGroups.length) {\n return [2 /*return*/];\n }\n if (contextNodeData.length < subGroups.length) {\n subGroups.splice(contextNodeData.length).forEach(function (_a) {\n var e_1, _b;\n var group = _a.group,\n markerGroup = _a.markerGroup,\n paths = _a.paths;\n seriesGroup.removeChild(group);\n if (markerGroup) {\n seriesGroup.removeChild(markerGroup);\n }\n if (!pickGroupIncludes.includes('mainPath')) {\n try {\n for (var paths_1 = __values$i(paths), paths_1_1 = paths_1.next(); !paths_1_1.done; paths_1_1 = paths_1.next()) {\n var path = paths_1_1.value;\n seriesGroup.removeChild(path);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (paths_1_1 && !paths_1_1.done && (_b = paths_1.return)) _b.call(paths_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n }\n });\n }\n totalGroups = contextNodeData.length;\n while (totalGroups > subGroups.length) {\n layer = renderLayerPerSubSeries;\n subGroupId = this.subGroupId++;\n subGroupZOffset = subGroupId;\n group = new Group$1({\n name: this.id + \"-series-sub\" + subGroupId,\n layer: layer,\n zIndex: Layers.SERIES_LAYER_ZINDEX,\n zIndexSubOrder: [this.id, subGroupZOffset]\n });\n markerGroup = features.includes('markers') ? new Group$1({\n name: this.id + \"-series-sub\" + this.subGroupId++ + \"-markers\",\n layer: layer,\n zIndex: Layers.SERIES_LAYER_ZINDEX,\n zIndexSubOrder: [this.id, 10000 + subGroupId]\n }) : undefined;\n labelGroup = new Group$1({\n name: this.id + \"-series-sub\" + this.subGroupId++ + \"-labels\",\n layer: layer,\n zIndex: Layers.SERIES_LABEL_ZINDEX,\n zIndexSubOrder: [this.id, subGroupId]\n });\n pickGroup = new Group$1({\n name: this.id + \"-series-sub\" + this.subGroupId++ + \"-pickGroup\",\n zIndex: Layers.SERIES_LAYER_ZINDEX,\n zIndexSubOrder: [this.id, 10000 + subGroupId]\n });\n pathParentGroup = pickGroupIncludes.includes('mainPath') ? pickGroup : renderLayerPerSubSeries ? group : seriesGroup;\n datumParentGroup = pickGroupIncludes.includes('datumNodes') ? pickGroup : group;\n seriesGroup.appendChild(group);\n seriesGroup.appendChild(labelGroup);\n if (markerGroup) {\n seriesGroup.appendChild(markerGroup);\n }\n paths = [];\n for (index = 0; index < pathsPerSeries; index++) {\n paths[index] = new Path$1();\n paths[index].zIndex = Layers.SERIES_LAYER_ZINDEX;\n paths[index].zIndexSubOrder = [this.id, (_a = pathsZIndexSubOrderOffset[index], _a !== null && _a !== void 0 ? _a : 0) + subGroupZOffset];\n pathParentGroup.appendChild(paths[index]);\n }\n group.appendChild(pickGroup);\n subGroups.push({\n paths: paths,\n group: group,\n pickGroup: pickGroup,\n markerGroup: markerGroup,\n labelGroup: labelGroup,\n labelSelection: Selection$1.select(labelGroup).selectAll(),\n datumSelection: Selection$1.select(datumParentGroup).selectAll(),\n markerSelection: markerGroup ? Selection$1.select(markerGroup).selectAll() : undefined\n });\n }\n return [2 /*return*/];\n });\n });\n };\n CartesianSeries.prototype.updateNodes = function (seriesHighlighted, anySeriesItemEnabled) {\n var _a;\n return __awaiter$c(this, void 0, void 0, function () {\n var _b, highlightSelection, highlightLabelSelection, contextNodeData, seriesItemEnabled, features, markersEnabled, visible;\n var _this = this;\n return __generator$c(this, function (_c) {\n switch (_c.label) {\n case 0:\n _b = this, highlightSelection = _b.highlightSelection, highlightLabelSelection = _b.highlightLabelSelection, contextNodeData = _b._contextNodeData, seriesItemEnabled = _b.seriesItemEnabled, features = _b.opts.features;\n markersEnabled = features.includes('markers');\n visible = this.visible && ((_a = this._contextNodeData) === null || _a === void 0 ? void 0 : _a.length) > 0 && anySeriesItemEnabled;\n this.group.visible = visible;\n this.seriesGroup.visible = visible;\n this.highlightGroup.visible = visible && !!seriesHighlighted;\n this.seriesGroup.opacity = this.getOpacity();\n if (!markersEnabled) return [3 /*break*/, 2];\n return [4 /*yield*/, this.updateMarkerNodes({\n markerSelection: highlightSelection,\n isHighlight: true,\n seriesIdx: -1\n })];\n case 1:\n _c.sent();\n return [3 /*break*/, 4];\n case 2:\n return [4 /*yield*/, this.updateDatumNodes({\n datumSelection: highlightSelection,\n isHighlight: true,\n seriesIdx: -1\n })];\n case 3:\n _c.sent();\n _c.label = 4;\n case 4:\n return [4 /*yield*/, this.updateLabelNodes({\n labelSelection: highlightLabelSelection,\n seriesIdx: -1\n })];\n case 5:\n _c.sent();\n return [4 /*yield*/, Promise.all(this.subGroups.map(function (subGroup, seriesIdx) {\n return __awaiter$c(_this, void 0, void 0, function () {\n var group, markerGroup, datumSelection, labelSelection, markerSelection, paths, labelGroup, pickGroup, itemId, subGroupVisible, subGroupOpacity, paths_2, paths_2_1, path;\n var e_2, _a;\n var _b;\n return __generator$c(this, function (_c) {\n switch (_c.label) {\n case 0:\n group = subGroup.group, markerGroup = subGroup.markerGroup, datumSelection = subGroup.datumSelection, labelSelection = subGroup.labelSelection, markerSelection = subGroup.markerSelection, paths = subGroup.paths, labelGroup = subGroup.labelGroup, pickGroup = subGroup.pickGroup;\n itemId = contextNodeData[seriesIdx].itemId;\n subGroupVisible = visible && (_b = seriesItemEnabled.get(itemId), _b !== null && _b !== void 0 ? _b : true);\n subGroupOpacity = this.getOpacity({\n itemId: itemId\n });\n group.opacity = subGroupOpacity;\n group.visible = subGroupVisible;\n pickGroup.visible = subGroupVisible;\n labelGroup.visible = subGroupVisible;\n if (markerGroup) {\n markerGroup.opacity = subGroupOpacity;\n markerGroup.zIndex = group.zIndex >= Layers.SERIES_LAYER_ZINDEX ? group.zIndex : group.zIndex + 1;\n markerGroup.visible = subGroupVisible;\n }\n try {\n for (paths_2 = __values$i(paths), paths_2_1 = paths_2.next(); !paths_2_1.done; paths_2_1 = paths_2.next()) {\n path = paths_2_1.value;\n if (path.parent !== group) {\n path.opacity = subGroupOpacity;\n path.visible = subGroupVisible;\n }\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (paths_2_1 && !paths_2_1.done && (_a = paths_2.return)) _a.call(paths_2);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n if (!group.visible) {\n return [2 /*return*/];\n }\n return [4 /*yield*/, this.updatePathNodes({\n seriesHighlighted: seriesHighlighted,\n itemId: itemId,\n paths: paths,\n seriesIdx: seriesIdx\n })];\n case 1:\n _c.sent();\n return [4 /*yield*/, this.updateDatumNodes({\n datumSelection: datumSelection,\n isHighlight: false,\n seriesIdx: seriesIdx\n })];\n case 2:\n _c.sent();\n return [4 /*yield*/, this.updateLabelNodes({\n labelSelection: labelSelection,\n seriesIdx: seriesIdx\n })];\n case 3:\n _c.sent();\n if (!(markersEnabled && markerSelection)) return [3 /*break*/, 5];\n return [4 /*yield*/, this.updateMarkerNodes({\n markerSelection: markerSelection,\n isHighlight: false,\n seriesIdx: seriesIdx\n })];\n case 4:\n _c.sent();\n _c.label = 5;\n case 5:\n return [2 /*return*/];\n }\n });\n });\n }))];\n case 6:\n _c.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n CartesianSeries.prototype.updateHighlightSelection = function (seriesHighlighted) {\n return __awaiter$c(this, void 0, void 0, function () {\n var _a, _b, _c, _d, _e, datum, _f, highlightedDatum, highlightSelection, highlightLabelSelection, contextNodeData, item, _g, labelItem, _h, itemId_1, contextNodeData_1, contextNodeData_1_1, labelData, _j;\n var e_3, _k;\n return __generator$c(this, function (_l) {\n switch (_l.label) {\n case 0:\n _a = this, _b = _a.chart, _c = _b === void 0 ? {} : _b, _d = _c.highlightedDatum, _e = (_d === void 0 ? {} : _d).datum, datum = _e === void 0 ? undefined : _e, _f = _c.highlightedDatum, highlightedDatum = _f === void 0 ? undefined : _f, highlightSelection = _a.highlightSelection, highlightLabelSelection = _a.highlightLabelSelection, contextNodeData = _a._contextNodeData;\n item = seriesHighlighted && highlightedDatum && datum ? highlightedDatum : undefined;\n _g = this;\n return [4 /*yield*/, this.updateHighlightSelectionItem({\n item: item,\n highlightSelection: highlightSelection\n })];\n case 1:\n _g.highlightSelection = _l.sent();\n if (this.isLabelEnabled() && item != null) {\n _h = item.itemId, itemId_1 = _h === void 0 ? undefined : _h;\n try {\n for (contextNodeData_1 = __values$i(contextNodeData), contextNodeData_1_1 = contextNodeData_1.next(); !contextNodeData_1_1.done; contextNodeData_1_1 = contextNodeData_1.next()) {\n labelData = contextNodeData_1_1.value.labelData;\n labelItem = labelData.find(function (ld) {\n return ld.datum === item.datum && ld.itemId === itemId_1;\n });\n if (labelItem != null) {\n break;\n }\n }\n } catch (e_3_1) {\n e_3 = {\n error: e_3_1\n };\n } finally {\n try {\n if (contextNodeData_1_1 && !contextNodeData_1_1.done && (_k = contextNodeData_1.return)) _k.call(contextNodeData_1);\n } finally {\n if (e_3) throw e_3.error;\n }\n }\n }\n _j = this;\n return [4 /*yield*/, this.updateHighlightSelectionLabel({\n item: labelItem,\n highlightLabelSelection: highlightLabelSelection\n })];\n case 2:\n _j.highlightLabelSelection = _l.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n CartesianSeries.prototype.pickNodeExactShape = function (point) {\n var e_4, _a;\n var _b;\n var result = _super.prototype.pickNodeExactShape.call(this, point);\n if (result) {\n return result;\n }\n var x = point.x,\n y = point.y;\n var pickGroupIncludes = this.opts.pickGroupIncludes;\n var markerGroupIncluded = pickGroupIncludes.includes('markers');\n try {\n for (var _c = __values$i(this.subGroups), _d = _c.next(); !_d.done; _d = _c.next()) {\n var _e = _d.value,\n pickGroup = _e.pickGroup,\n markerGroup = _e.markerGroup;\n var match = pickGroup.pickNode(x, y);\n if (!match && markerGroupIncluded) {\n match = (_b = markerGroup) === null || _b === void 0 ? void 0 : _b.pickNode(x, y);\n }\n if (match) {\n return {\n datum: match.datum,\n distance: 0\n };\n }\n }\n } catch (e_4_1) {\n e_4 = {\n error: e_4_1\n };\n } finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n } finally {\n if (e_4) throw e_4.error;\n }\n }\n };\n CartesianSeries.prototype.pickNodeClosestDatum = function (point) {\n var e_5, _a, e_6, _b;\n var _c, _d, _e, _f;\n var x = point.x,\n y = point.y;\n var _g = this,\n xAxis = _g.xAxis,\n yAxis = _g.yAxis,\n group = _g.group,\n contextNodeData = _g._contextNodeData;\n var hitPoint = group.transformPoint(x, y);\n var minDistance = Infinity;\n var closestDatum;\n try {\n for (var contextNodeData_2 = __values$i(contextNodeData), contextNodeData_2_1 = contextNodeData_2.next(); !contextNodeData_2_1.done; contextNodeData_2_1 = contextNodeData_2.next()) {\n var context = contextNodeData_2_1.value;\n try {\n for (var _h = (e_6 = void 0, __values$i(context.nodeData)), _j = _h.next(); !_j.done; _j = _h.next()) {\n var datum = _j.value;\n var _k = datum.point,\n _l = _k === void 0 ? {} : _k,\n _m = _l.x,\n datumX = _m === void 0 ? NaN : _m,\n _o = _l.y,\n datumY = _o === void 0 ? NaN : _o;\n if (isNaN(datumX) || isNaN(datumY)) {\n continue;\n }\n var isInRange = ((_c = xAxis) === null || _c === void 0 ? void 0 : _c.inRange(datumX)) && ((_d = yAxis) === null || _d === void 0 ? void 0 : _d.inRange(datumY));\n if (!isInRange) {\n continue;\n }\n // No need to use Math.sqrt() since x < y implies Math.sqrt(x) < Math.sqrt(y) for\n // values > 1\n var distance = Math.max(Math.pow(hitPoint.x - datumX, 2) + Math.pow(hitPoint.y - datumY, 2), 0);\n if (distance < minDistance) {\n minDistance = distance;\n closestDatum = datum;\n }\n }\n } catch (e_6_1) {\n e_6 = {\n error: e_6_1\n };\n } finally {\n try {\n if (_j && !_j.done && (_b = _h.return)) _b.call(_h);\n } finally {\n if (e_6) throw e_6.error;\n }\n }\n }\n } catch (e_5_1) {\n e_5 = {\n error: e_5_1\n };\n } finally {\n try {\n if (contextNodeData_2_1 && !contextNodeData_2_1.done && (_a = contextNodeData_2.return)) _a.call(contextNodeData_2);\n } finally {\n if (e_5) throw e_5.error;\n }\n }\n if (closestDatum) {\n var distance = Math.max(Math.sqrt(minDistance) - (_f = (_e = closestDatum.point) === null || _e === void 0 ? void 0 : _e.size, _f !== null && _f !== void 0 ? _f : 0), 0);\n return {\n datum: closestDatum,\n distance: distance\n };\n }\n };\n CartesianSeries.prototype.pickNodeMainAxisFirst = function (point, requireCategoryAxis) {\n var e_7, _a, e_8, _b;\n var _c, _d, _e, _f;\n var x = point.x,\n y = point.y;\n var _g = this,\n xAxis = _g.xAxis,\n yAxis = _g.yAxis,\n group = _g.group,\n contextNodeData = _g._contextNodeData;\n // Prefer to start search with any available category axis.\n var directions = [xAxis, yAxis].filter(function (a) {\n return a instanceof CategoryAxis;\n }).map(function (a) {\n return a.direction;\n });\n if (requireCategoryAxis && directions.length === 0) {\n return;\n }\n // Default to X-axis unless we found a suitable category axis.\n var _h = __read$w(directions, 1),\n _j = _h[0],\n primaryDirection = _j === void 0 ? ChartAxisDirection.X : _j;\n var hitPoint = group.transformPoint(x, y);\n var hitPointCoords = primaryDirection === ChartAxisDirection.X ? [hitPoint.x, hitPoint.y] : [hitPoint.y, hitPoint.x];\n var minDistance = [Infinity, Infinity];\n var closestDatum = undefined;\n try {\n for (var contextNodeData_3 = __values$i(contextNodeData), contextNodeData_3_1 = contextNodeData_3.next(); !contextNodeData_3_1.done; contextNodeData_3_1 = contextNodeData_3.next()) {\n var context = contextNodeData_3_1.value;\n try {\n for (var _k = (e_8 = void 0, __values$i(context.nodeData)), _l = _k.next(); !_l.done; _l = _k.next()) {\n var datum = _l.value;\n var _m = datum.point,\n _o = _m === void 0 ? {} : _m,\n _p = _o.x,\n datumX = _p === void 0 ? NaN : _p,\n _q = _o.y,\n datumY = _q === void 0 ? NaN : _q;\n if (isNaN(datumX) || isNaN(datumY)) {\n continue;\n }\n var isInRange = ((_c = xAxis) === null || _c === void 0 ? void 0 : _c.inRange(datumX)) && ((_d = yAxis) === null || _d === void 0 ? void 0 : _d.inRange(datumY));\n if (!isInRange) {\n continue;\n }\n var point_1 = primaryDirection === ChartAxisDirection.X ? [datumX, datumY] : [datumY, datumX];\n // Compare distances from most significant dimension to least.\n var newMinDistance = true;\n for (var i = 0; i < point_1.length; i++) {\n var dist = Math.abs(point_1[i] - hitPointCoords[i]);\n if (dist > minDistance[i]) {\n newMinDistance = false;\n break;\n }\n if (dist < minDistance[i]) {\n minDistance[i] = dist;\n minDistance.fill(Infinity, i + 1, minDistance.length);\n }\n }\n if (newMinDistance) {\n closestDatum = datum;\n }\n }\n } catch (e_8_1) {\n e_8 = {\n error: e_8_1\n };\n } finally {\n try {\n if (_l && !_l.done && (_b = _k.return)) _b.call(_k);\n } finally {\n if (e_8) throw e_8.error;\n }\n }\n }\n } catch (e_7_1) {\n e_7 = {\n error: e_7_1\n };\n } finally {\n try {\n if (contextNodeData_3_1 && !contextNodeData_3_1.done && (_a = contextNodeData_3.return)) _a.call(contextNodeData_3);\n } finally {\n if (e_7) throw e_7.error;\n }\n }\n if (closestDatum) {\n var distance = Math.max(Math.sqrt(Math.pow(minDistance[0], 2) + Math.pow(minDistance[1], 2)) - (_f = (_e = closestDatum.point) === null || _e === void 0 ? void 0 : _e.size, _f !== null && _f !== void 0 ? _f : 0), 0);\n return {\n datum: closestDatum,\n distance: distance\n };\n }\n };\n CartesianSeries.prototype.toggleSeriesItem = function (itemId, enabled) {\n if (this.seriesItemEnabled.size > 0) {\n this.seriesItemEnabled.set(itemId, enabled);\n this.nodeDataRefresh = true;\n } else {\n _super.prototype.toggleSeriesItem.call(this, itemId, enabled);\n }\n };\n CartesianSeries.prototype.isEnabled = function () {\n var e_9, _a;\n if (this.seriesItemEnabled.size > 0) {\n try {\n for (var _b = __values$i(this.seriesItemEnabled), _c = _b.next(); !_c.done; _c = _b.next()) {\n var _d = __read$w(_c.value, 2),\n enabled = _d[1];\n if (enabled) {\n return true;\n }\n }\n } catch (e_9_1) {\n e_9 = {\n error: e_9_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_9) throw e_9.error;\n }\n }\n return false;\n }\n return _super.prototype.isEnabled.call(this);\n };\n CartesianSeries.prototype.isPathOrSelectionDirty = function () {\n // Override point to allow more sophisticated dirty selection detection.\n return false;\n };\n CartesianSeries.prototype.getLabelData = function () {\n return [];\n };\n CartesianSeries.prototype.updatePaths = function (opts) {\n return __awaiter$c(this, void 0, void 0, function () {\n return __generator$c(this, function (_a) {\n // Override point for sub-classes.\n opts.paths.forEach(function (p) {\n return p.visible = false;\n });\n return [2 /*return*/];\n });\n });\n };\n CartesianSeries.prototype.updatePathNodes = function (_opts) {\n return __awaiter$c(this, void 0, void 0, function () {\n return __generator$c(this, function (_a) {\n return [2 /*return*/];\n });\n });\n };\n CartesianSeries.prototype.updateHighlightSelectionItem = function (opts) {\n return __awaiter$c(this, void 0, void 0, function () {\n var features, markersEnabled, item, highlightSelection, nodeData, markerSelection;\n return __generator$c(this, function (_a) {\n features = this.opts.features;\n markersEnabled = features.includes('markers');\n item = opts.item, highlightSelection = opts.highlightSelection;\n nodeData = item ? [item] : [];\n if (markersEnabled) {\n markerSelection = highlightSelection;\n return [2 /*return*/, this.updateMarkerSelection({\n nodeData: nodeData,\n markerSelection: markerSelection,\n seriesIdx: -1\n })];\n } else {\n return [2 /*return*/, this.updateDatumSelection({\n nodeData: nodeData,\n datumSelection: highlightSelection,\n seriesIdx: -1\n })];\n }\n });\n });\n };\n CartesianSeries.prototype.updateHighlightSelectionLabel = function (opts) {\n return __awaiter$c(this, void 0, void 0, function () {\n var item, highlightLabelSelection, labelData;\n return __generator$c(this, function (_a) {\n item = opts.item, highlightLabelSelection = opts.highlightLabelSelection;\n labelData = item ? [item] : [];\n return [2 /*return*/, this.updateLabelSelection({\n labelData: labelData,\n labelSelection: highlightLabelSelection,\n seriesIdx: -1\n })];\n });\n });\n };\n CartesianSeries.prototype.updateDatumSelection = function (opts) {\n return __awaiter$c(this, void 0, void 0, function () {\n return __generator$c(this, function (_a) {\n // Override point for sub-classes.\n return [2 /*return*/, opts.datumSelection];\n });\n });\n };\n CartesianSeries.prototype.updateDatumNodes = function (_opts) {\n return __awaiter$c(this, void 0, void 0, function () {\n return __generator$c(this, function (_a) {\n return [2 /*return*/];\n });\n });\n };\n CartesianSeries.prototype.updateMarkerSelection = function (opts) {\n return __awaiter$c(this, void 0, void 0, function () {\n return __generator$c(this, function (_a) {\n // Override point for sub-classes.\n return [2 /*return*/, opts.markerSelection];\n });\n });\n };\n CartesianSeries.prototype.updateMarkerNodes = function (_opts) {\n return __awaiter$c(this, void 0, void 0, function () {\n return __generator$c(this, function (_a) {\n return [2 /*return*/];\n });\n });\n };\n return CartesianSeries;\n}(Series);\nvar CartesianSeriesMarker = /** @class */function (_super) {\n __extends$2j(CartesianSeriesMarker, _super);\n function CartesianSeriesMarker() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.formatter = undefined;\n return _this;\n }\n __decorate$1o([ValidateAndChangeDetection({\n validatePredicate: OPT_FUNCTION,\n sceneChangeDetectionOpts: {\n redraw: RedrawType.MAJOR\n }\n })], CartesianSeriesMarker.prototype, \"formatter\", void 0);\n return CartesianSeriesMarker;\n}(SeriesMarker);\nfunction sleep(sleepTimeoutMs) {\n return new Promise(function (resolve) {\n setTimeout(function () {\n return resolve(undefined);\n }, sleepTimeoutMs);\n });\n}\nvar __decorate$1n = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __values$h = undefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar DEFAULT_TOOLTIP_CLASS = 'ag-chart-tooltip';\nvar defaultTooltipCss$1 = \"\\n.ag-chart-tooltip {\\n transition: transform 0.1s ease;\\n display: table;\\n position: absolute;\\n left: 0px;\\n top: 0px;\\n user-select: none;\\n pointer-events: none;\\n white-space: nowrap;\\n z-index: 99999;\\n font: 12px Verdana, sans-serif;\\n color: black;\\n background: rgb(244, 244, 244);\\n border-radius: 5px;\\n box-shadow: 0 0 1px rgba(3, 3, 3, 0.7), 0.5vh 0.5vh 1vh rgba(3, 3, 3, 0.25);\\n}\\n\\n.ag-chart-tooltip-no-animation {\\n transition: none !important;\\n}\\n\\n.ag-chart-tooltip-hidden {\\n visibility: hidden;\\n}\\n\\n.ag-chart-tooltip-title {\\n font-weight: bold;\\n padding: 7px;\\n border-top-left-radius: 5px;\\n border-top-right-radius: 5px;\\n color: white;\\n background-color: #888888;\\n border-top-left-radius: 5px;\\n border-top-right-radius: 5px;\\n}\\n\\n.ag-chart-tooltip-content {\\n padding: 7px;\\n line-height: 1.7em;\\n border-bottom-left-radius: 5px;\\n border-bottom-right-radius: 5px;\\n overflow: hidden;\\n}\\n\\n.ag-chart-tooltip-content:empty {\\n padding: 0;\\n height: 7px;\\n}\\n\\n.ag-chart-tooltip-arrow::before {\\n content: \\\"\\\";\\n\\n position: absolute;\\n top: 100%;\\n left: 50%;\\n transform: translateX(-50%);\\n\\n border: 6px solid #989898;\\n\\n border-left-color: transparent;\\n border-right-color: transparent;\\n border-top-color: #989898;\\n border-bottom-color: transparent;\\n\\n width: 0;\\n height: 0;\\n\\n margin: 0 auto;\\n}\\n\\n.ag-chart-tooltip-arrow::after {\\n content: \\\"\\\";\\n\\n position: absolute;\\n top: 100%;\\n left: 50%;\\n transform: translateX(-50%);\\n\\n border: 5px solid black;\\n\\n border-left-color: transparent;\\n border-right-color: transparent;\\n border-top-color: rgb(244, 244, 244);\\n border-bottom-color: transparent;\\n\\n width: 0;\\n height: 0;\\n\\n margin: 0 auto;\\n}\\n\\n.ag-chart-wrapper {\\n box-sizing: border-box;\\n overflow: hidden;\\n}\\n\";\nfunction toTooltipHtml$1(input, defaults) {\n if (typeof input === 'string') {\n return input;\n }\n defaults = defaults || {};\n var _a = input.content,\n content = _a === void 0 ? defaults.content || '' : _a,\n _b = input.title,\n title = _b === void 0 ? defaults.title || undefined : _b,\n _c = input.color,\n color = _c === void 0 ? defaults.color || 'white' : _c,\n _d = input.backgroundColor,\n backgroundColor = _d === void 0 ? defaults.backgroundColor || '#888' : _d;\n var titleHtml = title ? \"
\" + title + \"
\" : '';\n return titleHtml + \"
\" + content + \"
\";\n}\nvar Tooltip = /** @class */function () {\n function Tooltip(canvasElement, document, container) {\n var _this = this;\n this.enabled = true;\n this.class = undefined;\n this.lastClass = undefined;\n this.delay = 0;\n /**\n * If `true`, the tooltip will be shown for the marker closest to the mouse cursor.\n * Only has effect on series with markers.\n */\n this.tracking = true;\n this.showTimeout = 0;\n this.constrained = false;\n var tooltipRoot = document.body;\n var element = document.createElement('div');\n this.element = tooltipRoot.appendChild(element);\n this.element.classList.add(DEFAULT_TOOLTIP_CLASS);\n this.container = container;\n this.observedElement = canvasElement;\n // Detect when the chart becomes invisible and hide the tooltip as well.\n if (window.IntersectionObserver) {\n var observer = new IntersectionObserver(function (entries) {\n var e_1, _a;\n try {\n for (var entries_1 = __values$h(entries), entries_1_1 = entries_1.next(); !entries_1_1.done; entries_1_1 = entries_1.next()) {\n var entry = entries_1_1.value;\n if (entry.target === _this.observedElement() && entry.intersectionRatio === 0) {\n _this.toggle(false);\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (entries_1_1 && !entries_1_1.done && (_a = entries_1.return)) _a.call(entries_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n }, {\n root: tooltipRoot\n });\n observer.observe(this.observedElement());\n this.observer = observer;\n }\n if (Tooltip.tooltipDocuments.indexOf(document) < 0) {\n var styleElement = document.createElement('style');\n styleElement.innerHTML = defaultTooltipCss$1;\n // Make sure the default tooltip style goes before other styles so it can be overridden.\n document.head.insertBefore(styleElement, document.head.querySelector('style'));\n Tooltip.tooltipDocuments.push(document);\n }\n }\n Tooltip.prototype.destroy = function () {\n var parentNode = this.element.parentNode;\n if (parentNode) {\n parentNode.removeChild(this.element);\n }\n if (this.observer) {\n this.observer.unobserve(this.observedElement());\n }\n };\n Tooltip.prototype.isVisible = function () {\n var element = this.element;\n return !element.classList.contains(DEFAULT_TOOLTIP_CLASS + '-hidden');\n };\n Tooltip.prototype.updateClass = function (visible, constrained) {\n var _a = this,\n element = _a.element,\n newClass = _a.class,\n lastClass = _a.lastClass;\n var wasVisible = !element.classList.contains(DEFAULT_TOOLTIP_CLASS + \"-hidden\");\n var toggleClass = function (name, include) {\n var className = DEFAULT_TOOLTIP_CLASS + \"-\" + name;\n if (include) {\n element.classList.add(className);\n } else {\n element.classList.remove(className);\n }\n };\n toggleClass('no-animation', !wasVisible && !!visible); // No animation on first show.\n toggleClass('hidden', !visible); // Hide if not visible.\n toggleClass('arrow', !constrained); // Add arrow if tooltip is constrained.\n if (newClass !== lastClass) {\n if (lastClass) {\n element.classList.remove(lastClass);\n }\n if (newClass) {\n element.classList.add(newClass);\n }\n this.lastClass = newClass;\n }\n };\n /**\n * Shows tooltip at the given event's coordinates.\n * If the `html` parameter is missing, moves the existing tooltip to the new position.\n */\n Tooltip.prototype.show = function (meta, html, instantly) {\n var _this = this;\n if (instantly === void 0) {\n instantly = false;\n }\n var el = this.element;\n if (html !== undefined) {\n el.innerHTML = html;\n } else if (!el.innerHTML) {\n return;\n }\n var left = meta.pageX - el.clientWidth / 2;\n var top = meta.pageY - el.clientHeight - 8;\n this.constrained = false;\n if (this.container()) {\n var tooltipWidth = el.getBoundingClientRect().width;\n var minLeft = 0;\n var maxLeft = window.innerWidth - tooltipWidth - 1;\n if (left < minLeft) {\n left = minLeft;\n this.constrained = true;\n } else if (left > maxLeft) {\n left = maxLeft;\n this.constrained = true;\n }\n if (top < window.scrollY) {\n top = meta.pageY + 20;\n this.constrained = true;\n }\n }\n el.style.transform = \"translate(\" + Math.round(left) + \"px, \" + Math.round(top) + \"px)\";\n if (this.delay > 0 && !instantly) {\n this.toggle(false);\n this.showTimeout = window.setTimeout(function () {\n _this.toggle(true);\n }, this.delay);\n return;\n }\n this.toggle(true);\n };\n Tooltip.prototype.toggle = function (visible) {\n if (!visible) {\n window.clearTimeout(this.showTimeout);\n }\n this.updateClass(visible, this.constrained);\n };\n Tooltip.tooltipDocuments = [];\n __decorate$1n([Validate(BOOLEAN)], Tooltip.prototype, \"enabled\", void 0);\n __decorate$1n([Validate(OPT_STRING)], Tooltip.prototype, \"class\", void 0);\n __decorate$1n([Validate(NUMBER(0))], Tooltip.prototype, \"delay\", void 0);\n __decorate$1n([Validate(BOOLEAN)], Tooltip.prototype, \"tracking\", void 0);\n return Tooltip;\n}();\nvar __extends$2i = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign$y = undefined && undefined.__assign || function () {\n __assign$y = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$y.apply(this, arguments);\n};\nvar __decorate$1m = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __awaiter$b = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$b = undefined && undefined.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __values$g = undefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$v = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread$e = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$v(arguments[i]));\n return ar;\n};\n/** Types of chart-update, in pipeline execution order. */\nvar ChartUpdateType = /*#__PURE__*/function (ChartUpdateType) {\n ChartUpdateType[ChartUpdateType[\"FULL\"] = 0] = \"FULL\";\n ChartUpdateType[ChartUpdateType[\"PROCESS_DATA\"] = 1] = \"PROCESS_DATA\";\n ChartUpdateType[ChartUpdateType[\"PERFORM_LAYOUT\"] = 2] = \"PERFORM_LAYOUT\";\n ChartUpdateType[ChartUpdateType[\"SERIES_UPDATE\"] = 3] = \"SERIES_UPDATE\";\n ChartUpdateType[ChartUpdateType[\"SCENE_RENDER\"] = 4] = \"SCENE_RENDER\";\n ChartUpdateType[ChartUpdateType[\"NONE\"] = 5] = \"NONE\";\n return ChartUpdateType;\n}(ChartUpdateType || {});\nvar Chart = /** @class */function (_super) {\n __extends$2i(Chart, _super);\n function Chart(document, overrideDevicePixelRatio) {\n if (document === void 0) {\n document = window.document;\n }\n var _this = _super.call(this) || this;\n _this.id = createId$1(_this);\n _this.options = {};\n _this.userOptions = {};\n _this.background = new Background();\n _this.legend = new Legend();\n _this.legendAutoPadding = new Padding$1();\n _this._debug = false;\n _this.extraDebugStats = {};\n _this._container = undefined;\n _this._data = [];\n _this._autoSize = false;\n _this.padding = new Padding$1(20);\n _this._title = undefined;\n _this._subtitle = undefined;\n _this._destroyed = false;\n _this._pendingFactoryUpdates = [];\n _this._performUpdateNoRenderCount = 0;\n _this._performUpdateType = ChartUpdateType.NONE;\n _this.seriesToUpdate = new Set();\n _this.performUpdateTrigger = debouncedCallback(function (_a) {\n var count = _a.count;\n return __awaiter$b(_this, void 0, void 0, function () {\n var error_1;\n return __generator$b(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 2,, 3]);\n return [4 /*yield*/, this.performUpdate(count)];\n case 1:\n _b.sent();\n return [3 /*break*/, 3];\n case 2:\n error_1 = _b.sent();\n this._lastPerformUpdateError = error_1;\n console.error(error_1);\n return [3 /*break*/, 3];\n case 3:\n return [2 /*return*/];\n }\n });\n });\n });\n _this._axes = [];\n _this._series = [];\n _this.legendBBox = new BBox$1(0, 0, 0, 0);\n _this._onMouseDown = _this.onMouseDown.bind(_this);\n _this._onMouseMove = _this.onMouseMove.bind(_this);\n _this._onMouseUp = _this.onMouseUp.bind(_this);\n _this._onMouseOut = _this.onMouseOut.bind(_this);\n _this._onClick = _this.onClick.bind(_this);\n _this.lastPointerMeta = undefined;\n _this.pointerScheduler = debouncedAnimationFrame(function () {\n _this.handlePointer(_this.lastPointerMeta);\n _this.lastPointerMeta = undefined;\n });\n _this.pointerInsideLegend = false;\n _this.pointerOverLegendDatum = false;\n var root = new Group$1({\n name: 'root'\n });\n var background = _this.background;\n background.fill = 'white';\n root.appendChild(background.node);\n var element = _this.element = document.createElement('div');\n element.classList.add('ag-chart-wrapper');\n element.style.position = 'relative';\n _this.scene = new Scene$1({\n document: document,\n overrideDevicePixelRatio: overrideDevicePixelRatio\n });\n _this.scene.debug.consoleLog = _this._debug;\n _this.scene.root = root;\n _this.scene.container = element;\n _this.autoSize = true;\n SizeMonitor.observe(_this.element, function (size) {\n var width = size.width,\n height = size.height;\n if (!_this.autoSize) {\n return;\n }\n if (width === 0 && height === 0) {\n return;\n }\n if (width === _this.width && height === _this.height) {\n return;\n }\n _this._lastAutoSize = [width, height];\n _this.resize(width, height);\n });\n _this.tooltip = new Tooltip(function () {\n return _this.scene.canvas.element;\n }, document, function () {\n return _this.container;\n });\n _this.setupDomListeners(_this.scene.canvas.element);\n return _this;\n }\n Object.defineProperty(Chart.prototype, \"debug\", {\n get: function () {\n return this._debug;\n },\n set: function (value) {\n this._debug = value;\n this.scene.debug.consoleLog = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"container\", {\n get: function () {\n return this._container;\n },\n set: function (value) {\n if (this._container !== value) {\n var parentNode = this.element.parentNode;\n if (parentNode != null) {\n parentNode.removeChild(this.element);\n }\n if (value && !this.destroyed) {\n value.appendChild(this.element);\n }\n this._container = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"data\", {\n get: function () {\n return this._data;\n },\n set: function (data) {\n this._data = data;\n this.series.forEach(function (series) {\n return series.data = data;\n });\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"width\", {\n get: function () {\n return this.scene.width;\n },\n set: function (value) {\n this.autoSize = false;\n if (this.width !== value) {\n this.resize(value, this.height);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"height\", {\n get: function () {\n return this.scene.height;\n },\n set: function (value) {\n this.autoSize = false;\n if (this.height !== value) {\n this.resize(this.width, value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"autoSize\", {\n get: function () {\n return this._autoSize;\n },\n set: function (value) {\n if (this._autoSize === value) {\n return;\n }\n this._autoSize = value;\n var style = this.element.style;\n if (value) {\n style.display = 'block';\n style.width = '100%';\n style.height = '100%';\n if (!this._lastAutoSize) {\n return;\n }\n this.resize(this._lastAutoSize[0], this._lastAutoSize[1]);\n } else {\n style.display = 'inline-block';\n style.width = 'auto';\n style.height = 'auto';\n }\n },\n enumerable: true,\n configurable: true\n });\n Chart.prototype.download = function (fileName, fileFormat) {\n this.scene.download(fileName, fileFormat);\n };\n Object.defineProperty(Chart.prototype, \"title\", {\n get: function () {\n return this._title;\n },\n set: function (caption) {\n var _a, _b;\n var root = this.scene.root;\n if (this._title != null) {\n (_a = root) === null || _a === void 0 ? void 0 : _a.removeChild(this._title.node);\n }\n this._title = caption;\n if (this._title != null) {\n (_b = root) === null || _b === void 0 ? void 0 : _b.appendChild(this._title.node);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"subtitle\", {\n get: function () {\n return this._subtitle;\n },\n set: function (caption) {\n var _a, _b;\n var root = this.scene.root;\n if (this._subtitle != null) {\n (_a = root) === null || _a === void 0 ? void 0 : _a.removeChild(this._subtitle.node);\n }\n this._subtitle = caption;\n if (this._subtitle != null) {\n (_b = root) === null || _b === void 0 ? void 0 : _b.appendChild(this._subtitle.node);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"destroyed\", {\n get: function () {\n return this._destroyed;\n },\n enumerable: true,\n configurable: true\n });\n Chart.prototype.destroy = function () {\n this._performUpdateType = ChartUpdateType.NONE;\n this._pendingFactoryUpdates.splice(0);\n this.tooltip.destroy();\n SizeMonitor.unobserve(this.element);\n this.container = undefined;\n this.cleanupDomListeners(this.scene.canvas.element);\n this.scene.destroy();\n this.series.forEach(function (s) {\n return s.destroy();\n });\n this.series = [];\n this._destroyed = true;\n };\n Chart.prototype.log = function (opts) {\n if (this.debug) {\n console.log(opts);\n }\n };\n Chart.prototype.togglePointer = function (visible) {\n if (this.tooltip.enabled) {\n this.tooltip.toggle(visible);\n } else if (this.lastPick) {\n this.changeHighlightDatum();\n }\n };\n Chart.prototype.requestFactoryUpdate = function (cb) {\n var callbacks = this._pendingFactoryUpdates;\n var count = callbacks.length;\n if (count === 0) {\n callbacks.push(cb);\n this._processCallbacks();\n } else {\n // Factory callback process already running, the callback will be invoked asynchronously.\n // Clear the queue after the first callback to prevent unnecessary re-renderings.\n callbacks.splice(1, count - 1, cb);\n }\n };\n Chart.prototype._processCallbacks = function () {\n return __awaiter$b(this, void 0, void 0, function () {\n var callbacks, e_1;\n return __generator$b(this, function (_a) {\n switch (_a.label) {\n case 0:\n callbacks = this._pendingFactoryUpdates;\n _a.label = 1;\n case 1:\n if (!(callbacks.length > 0)) return [3 /*break*/, 7];\n if (!this.updatePending) return [3 /*break*/, 3];\n return [4 /*yield*/, sleep(1)];\n case 2:\n _a.sent();\n return [3 /*break*/, 1];\n // Make sure to check queue has an item before continuing.\n case 3:\n _a.trys.push([3, 5,, 6]);\n return [4 /*yield*/, callbacks[0]()];\n case 4:\n _a.sent();\n return [3 /*break*/, 6];\n case 5:\n e_1 = _a.sent();\n console.error(e_1);\n return [3 /*break*/, 6];\n case 6:\n callbacks.shift();\n return [3 /*break*/, 1];\n case 7:\n return [2 /*return*/];\n }\n });\n });\n };\n Object.defineProperty(Chart.prototype, \"performUpdateType\", {\n get: function () {\n return this._performUpdateType;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"updatePending\", {\n get: function () {\n return this._performUpdateType !== ChartUpdateType.NONE || this.lastPointerMeta != null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"lastPerformUpdateError\", {\n get: function () {\n return this._lastPerformUpdateError;\n },\n enumerable: true,\n configurable: true\n });\n Chart.prototype.awaitUpdateCompletion = function () {\n return __awaiter$b(this, void 0, void 0, function () {\n return __generator$b(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4 /*yield*/, this.performUpdateTrigger.await()];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n Chart.prototype.update = function (type, opts) {\n var e_2, _a;\n if (type === void 0) {\n type = ChartUpdateType.FULL;\n }\n var _b = opts || {},\n _c = _b.forceNodeDataRefresh,\n forceNodeDataRefresh = _c === void 0 ? false : _c,\n _d = _b.seriesToUpdate,\n seriesToUpdate = _d === void 0 ? this.series : _d;\n if (forceNodeDataRefresh) {\n this.series.forEach(function (series) {\n return series.markNodeDataDirty();\n });\n }\n try {\n for (var seriesToUpdate_1 = __values$g(seriesToUpdate), seriesToUpdate_1_1 = seriesToUpdate_1.next(); !seriesToUpdate_1_1.done; seriesToUpdate_1_1 = seriesToUpdate_1.next()) {\n var series = seriesToUpdate_1_1.value;\n this.seriesToUpdate.add(series);\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (seriesToUpdate_1_1 && !seriesToUpdate_1_1.done && (_a = seriesToUpdate_1.return)) _a.call(seriesToUpdate_1);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n if (type < this._performUpdateType) {\n this._performUpdateType = type;\n this.performUpdateTrigger.schedule();\n }\n };\n Chart.prototype.performUpdate = function (count) {\n return __awaiter$b(this, void 0, void 0, function () {\n var _a, performUpdateType, extraDebugStats, splits, _b, count_1, seriesRect_1, seriesUpdates, end;\n return __generator$b(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = this, performUpdateType = _a._performUpdateType, extraDebugStats = _a.extraDebugStats;\n splits = [performance.now()];\n _b = performUpdateType;\n switch (_b) {\n case ChartUpdateType.FULL:\n return [3 /*break*/, 1];\n case ChartUpdateType.PROCESS_DATA:\n return [3 /*break*/, 1];\n case ChartUpdateType.PERFORM_LAYOUT:\n return [3 /*break*/, 3];\n case ChartUpdateType.SERIES_UPDATE:\n return [3 /*break*/, 5];\n case ChartUpdateType.SCENE_RENDER:\n return [3 /*break*/, 7];\n case ChartUpdateType.NONE:\n return [3 /*break*/, 9];\n }\n return [3 /*break*/, 10];\n case 1:\n return [4 /*yield*/, this.processData()];\n case 2:\n _c.sent();\n splits.push(performance.now());\n // Disable tooltip/highlight if the data fundamentally shifted.\n this.disablePointer({\n updateProcessing: false\n });\n _c.label = 3;\n case 3:\n if (this._autoSize && !this._lastAutoSize) {\n count_1 = this._performUpdateNoRenderCount++;\n if (count_1 < 5) {\n // Reschedule if canvas size hasn't been set yet to avoid a race.\n this._performUpdateType = ChartUpdateType.PERFORM_LAYOUT;\n this.performUpdateTrigger.schedule();\n return [3 /*break*/, 10];\n }\n // After several failed passes, continue and accept there maybe a redundant\n // render. Sometimes this case happens when we already have the correct\n // width/height, and we end up never rendering the chart in that scenario.\n }\n this._performUpdateNoRenderCount = 0;\n return [4 /*yield*/, this.performLayout()];\n case 4:\n _c.sent();\n splits.push(performance.now());\n _c.label = 5;\n case 5:\n seriesRect_1 = this.seriesRect;\n seriesUpdates = __spread$e(this.seriesToUpdate).map(function (series) {\n return series.update({\n seriesRect: seriesRect_1\n });\n });\n this.seriesToUpdate.clear();\n return [4 /*yield*/, Promise.all(seriesUpdates)];\n case 6:\n _c.sent();\n splits.push(performance.now());\n _c.label = 7;\n case 7:\n return [4 /*yield*/, this.scene.render({\n debugSplitTimes: splits,\n extraDebugStats: extraDebugStats\n })];\n case 8:\n _c.sent();\n this.extraDebugStats = {};\n _c.label = 9;\n case 9:\n // Do nothing.\n this._performUpdateType = ChartUpdateType.NONE;\n _c.label = 10;\n case 10:\n end = performance.now();\n this.log({\n chart: this,\n durationMs: Math.round((end - splits[0]) * 100) / 100,\n count: count,\n performUpdateType: ChartUpdateType[performUpdateType]\n });\n return [2 /*return*/];\n }\n });\n });\n };\n Object.defineProperty(Chart.prototype, \"axes\", {\n get: function () {\n return this._axes;\n },\n set: function (values) {\n var _this = this;\n this._axes.forEach(function (axis) {\n return _this.detachAxis(axis);\n });\n // make linked axes go after the regular ones (simulates stable sort by `linkedTo` property)\n this._axes = values.filter(function (a) {\n return !a.linkedTo;\n }).concat(values.filter(function (a) {\n return a.linkedTo;\n }));\n this._axes.forEach(function (axis) {\n return _this.attachAxis(axis);\n });\n },\n enumerable: true,\n configurable: true\n });\n Chart.prototype.attachAxis = function (axis) {\n this.scene.root.insertBefore(axis.gridlineGroup, this.seriesRoot);\n this.scene.root.insertBefore(axis.axisGroup, this.seriesRoot);\n this.scene.root.insertBefore(axis.crossLineGroup, this.seriesRoot);\n };\n Chart.prototype.detachAxis = function (axis) {\n this.scene.root.removeChild(axis.axisGroup);\n this.scene.root.removeChild(axis.gridlineGroup);\n this.scene.root.removeChild(axis.crossLineGroup);\n };\n Object.defineProperty(Chart.prototype, \"series\", {\n get: function () {\n return this._series;\n },\n set: function (values) {\n var _this = this;\n this.removeAllSeries();\n values.forEach(function (series) {\n return _this.addSeries(series);\n });\n },\n enumerable: true,\n configurable: true\n });\n Chart.prototype.addSeries = function (series, before) {\n var _a = this,\n allSeries = _a.series,\n seriesRoot = _a.seriesRoot;\n var canAdd = allSeries.indexOf(series) < 0;\n if (canAdd) {\n var beforeIndex = before ? allSeries.indexOf(before) : -1;\n if (beforeIndex >= 0) {\n allSeries.splice(beforeIndex, 0, series);\n seriesRoot.insertBefore(series.group, before.group);\n } else {\n allSeries.push(series);\n seriesRoot.append(series.group);\n }\n this.initSeries(series);\n return true;\n }\n return false;\n };\n Chart.prototype.initSeries = function (series) {\n series.chart = this;\n if (!series.data) {\n series.data = this.data;\n }\n series.addEventListener('nodeClick', this.onSeriesNodeClick, this);\n };\n Chart.prototype.freeSeries = function (series) {\n series.chart = undefined;\n series.removeEventListener('nodeClick', this.onSeriesNodeClick, this);\n };\n Chart.prototype.addSeriesAfter = function (series, after) {\n var _a = this,\n allSeries = _a.series,\n seriesRoot = _a.seriesRoot;\n var canAdd = allSeries.indexOf(series) < 0;\n if (canAdd) {\n var afterIndex = after ? this.series.indexOf(after) : -1;\n if (afterIndex >= 0) {\n if (afterIndex + 1 < allSeries.length) {\n seriesRoot.insertBefore(series.group, allSeries[afterIndex + 1].group);\n } else {\n seriesRoot.append(series.group);\n }\n this.initSeries(series);\n allSeries.splice(afterIndex + 1, 0, series);\n } else {\n if (allSeries.length > 0) {\n seriesRoot.insertBefore(series.group, allSeries[0].group);\n } else {\n seriesRoot.append(series.group);\n }\n this.initSeries(series);\n allSeries.unshift(series);\n }\n }\n return false;\n };\n Chart.prototype.removeSeries = function (series) {\n var index = this.series.indexOf(series);\n if (index >= 0) {\n this.series.splice(index, 1);\n this.freeSeries(series);\n this.seriesRoot.removeChild(series.group);\n return true;\n }\n return false;\n };\n Chart.prototype.removeAllSeries = function () {\n var _this = this;\n this.series.forEach(function (series) {\n _this.freeSeries(series);\n _this.seriesRoot.removeChild(series.group);\n });\n this._series = []; // using `_series` instead of `series` to prevent infinite recursion\n };\n Chart.prototype.assignSeriesToAxes = function () {\n var _this = this;\n this.axes.forEach(function (axis) {\n axis.boundSeries = _this.series.filter(function (s) {\n var seriesAxis = axis.direction === ChartAxisDirection.X ? s.xAxis : s.yAxis;\n return seriesAxis === axis;\n });\n });\n };\n Chart.prototype.assignAxesToSeries = function (force) {\n var _this = this;\n if (force === void 0) {\n force = false;\n }\n // This method has to run before `assignSeriesToAxes`.\n var directionToAxesMap = {};\n this.axes.forEach(function (axis) {\n var direction = axis.direction;\n var directionAxes = directionToAxesMap[direction] || (directionToAxesMap[direction] = []);\n directionAxes.push(axis);\n });\n this.series.forEach(function (series) {\n series.directions.forEach(function (direction) {\n var currentAxis = direction === ChartAxisDirection.X ? series.xAxis : series.yAxis;\n if (currentAxis && !force) {\n return;\n }\n var directionAxes = directionToAxesMap[direction];\n if (!directionAxes) {\n console.warn(\"AG Charts - no available axis for direction [\" + direction + \"]; check series and axes configuration.\");\n return;\n }\n var seriesKeys = series.getKeys(direction);\n var newAxis = _this.findMatchingAxis(directionAxes, series.getKeys(direction));\n if (!newAxis) {\n console.warn(\"AG Charts - no matching axis for direction [\" + direction + \"] and keys [\" + seriesKeys + \"]; check series and axes configuration.\");\n return;\n }\n if (direction === ChartAxisDirection.X) {\n series.xAxis = newAxis;\n } else {\n series.yAxis = newAxis;\n }\n });\n });\n };\n Chart.prototype.findMatchingAxis = function (directionAxes, directionKeys) {\n var e_3, _a, e_4, _b;\n try {\n for (var directionAxes_1 = __values$g(directionAxes), directionAxes_1_1 = directionAxes_1.next(); !directionAxes_1_1.done; directionAxes_1_1 = directionAxes_1.next()) {\n var axis = directionAxes_1_1.value;\n var axisKeys = axis.keys;\n if (!axisKeys.length) {\n return axis;\n }\n if (!directionKeys) {\n continue;\n }\n try {\n for (var directionKeys_1 = (e_4 = void 0, __values$g(directionKeys)), directionKeys_1_1 = directionKeys_1.next(); !directionKeys_1_1.done; directionKeys_1_1 = directionKeys_1.next()) {\n var directionKey = directionKeys_1_1.value;\n if (axisKeys.indexOf(directionKey) >= 0) {\n return axis;\n }\n }\n } catch (e_4_1) {\n e_4 = {\n error: e_4_1\n };\n } finally {\n try {\n if (directionKeys_1_1 && !directionKeys_1_1.done && (_b = directionKeys_1.return)) _b.call(directionKeys_1);\n } finally {\n if (e_4) throw e_4.error;\n }\n }\n }\n } catch (e_3_1) {\n e_3 = {\n error: e_3_1\n };\n } finally {\n try {\n if (directionAxes_1_1 && !directionAxes_1_1.done && (_a = directionAxes_1.return)) _a.call(directionAxes_1);\n } finally {\n if (e_3) throw e_3.error;\n }\n }\n };\n Chart.prototype.resize = function (width, height) {\n if (this.scene.resize(width, height)) {\n this.background.width = this.width;\n this.background.height = this.height;\n this.update(ChartUpdateType.PERFORM_LAYOUT, {\n forceNodeDataRefresh: true\n });\n }\n };\n Chart.prototype.processData = function () {\n return __awaiter$b(this, void 0, void 0, function () {\n return __generator$b(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.axes.length > 0 || this.series.some(function (s) {\n return s instanceof CartesianSeries;\n })) {\n this.assignAxesToSeries(true);\n this.assignSeriesToAxes();\n }\n return [4 /*yield*/, Promise.all(this.series.map(function (s) {\n return s.processData();\n }))];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.updateLegend()];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n Chart.prototype.placeLabels = function () {\n var e_5, _a;\n var visibleSeries = [];\n var data = [];\n try {\n for (var _b = __values$g(this.series), _c = _b.next(); !_c.done; _c = _b.next()) {\n var series = _c.value;\n if (!series.visible) {\n continue;\n }\n var labelData = series.getLabelData();\n if (!(labelData && isPointLabelDatum(labelData[0]))) {\n continue;\n }\n data.push(labelData);\n visibleSeries.push(series);\n }\n } catch (e_5_1) {\n e_5 = {\n error: e_5_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_5) throw e_5.error;\n }\n }\n var seriesRect = this.seriesRect;\n var labels = seriesRect && data.length > 0 ? placeLabels(data, {\n x: 0,\n y: 0,\n width: seriesRect.width,\n height: seriesRect.height\n }) : [];\n return new Map(labels.map(function (l, i) {\n return [visibleSeries[i], l];\n }));\n };\n Chart.prototype.updateLegend = function () {\n return __awaiter$b(this, void 0, void 0, function () {\n var legendData, formatter;\n return __generator$b(this, function (_a) {\n legendData = [];\n this.series.filter(function (s) {\n return s.showInLegend;\n }).forEach(function (series) {\n legendData.push.apply(legendData, __spread$e(series.getLegendData()));\n });\n formatter = this.legend.item.label.formatter;\n if (formatter) {\n legendData.forEach(function (datum) {\n return datum.label.text = formatter({\n get id() {\n doOnce$1(function () {\n return console.warn(\"AG Charts - LegendLabelFormatterParams.id is deprecated, use seriesId instead\", datum);\n }, \"LegendLabelFormatterParams.id deprecated\");\n return datum.seriesId;\n },\n itemId: datum.itemId,\n value: datum.label.text,\n seriesId: datum.seriesId\n });\n });\n }\n this.legend.data = legendData;\n return [2 /*return*/];\n });\n });\n };\n Chart.prototype.positionCaptions = function () {\n var _a = this,\n title = _a._title,\n subtitle = _a._subtitle;\n var spacing = 10;\n var paddingTop = spacing;\n if (!title) {\n return {};\n }\n title.node.visible = title.enabled;\n if (title.enabled) {\n title.node.x = this.width / 2;\n title.node.y = paddingTop;\n var titleBBox = title.node.computeBBox(); // make sure to set node's x/y, then computeBBox\n if (titleBBox) {\n paddingTop = titleBBox.y + titleBBox.height;\n }\n }\n if (!subtitle) {\n return {};\n }\n subtitle.node.visible = title.enabled && subtitle.enabled;\n if (title.enabled && subtitle.enabled) {\n subtitle.node.x = this.width / 2;\n subtitle.node.y = paddingTop + spacing;\n var subtitleBBox = subtitle.node.computeBBox();\n if (subtitleBBox) {\n paddingTop = subtitleBBox.y + subtitleBBox.height;\n }\n }\n return {\n captionAutoPadding: Math.floor(paddingTop)\n };\n };\n Chart.prototype.positionLegend = function (captionAutoPadding) {\n var _a = this,\n legend = _a.legend,\n legendAutoPadding = _a.legendAutoPadding;\n legendAutoPadding.clear();\n if (!legend.enabled || !legend.data.length) {\n return;\n }\n var width = this.width;\n var height = this.height - captionAutoPadding;\n var legendGroup = legend.group;\n var legendSpacing = legend.spacing;\n var translationX = 0;\n var translationY = 0;\n var legendBBox;\n switch (legend.position) {\n case 'bottom':\n legend.performLayout(width - legendSpacing * 2, 0);\n legendBBox = legendGroup.computeBBox();\n legendGroup.visible = legendBBox.height < Math.floor(height * 0.5); // Remove legend if it takes up more than 50% of the chart height.\n if (legendGroup.visible) {\n translationX = (width - legendBBox.width) / 2 - legendBBox.x;\n translationY = captionAutoPadding + height - legendBBox.height - legendBBox.y - legendSpacing;\n legendAutoPadding.bottom = legendBBox.height;\n } else {\n legendAutoPadding.bottom = 0;\n }\n break;\n case 'top':\n legend.performLayout(width - legendSpacing * 2, 0);\n legendBBox = legendGroup.computeBBox();\n legendGroup.visible = legendBBox.height < Math.floor(height * 0.5);\n if (legendGroup.visible) {\n translationX = (width - legendBBox.width) / 2 - legendBBox.x;\n translationY = captionAutoPadding + legendSpacing - legendBBox.y;\n legendAutoPadding.top = legendBBox.height;\n } else {\n legendAutoPadding.top = 0;\n }\n break;\n case 'left':\n legend.performLayout(width, height - legendSpacing * 2);\n legendBBox = legendGroup.computeBBox();\n legendGroup.visible = legendBBox.width < Math.floor(width * 0.5); // Remove legend if it takes up more than 50% of the chart width.\n if (legendGroup.visible) {\n translationX = legendSpacing - legendBBox.x;\n translationY = captionAutoPadding + (height - legendBBox.height) / 2 - legendBBox.y;\n legendAutoPadding.left = legendBBox.width;\n } else {\n legendAutoPadding.left = 0;\n }\n break;\n default:\n // case 'right':\n legend.performLayout(width, height - legendSpacing * 2);\n legendBBox = legendGroup.computeBBox();\n legendGroup.visible = legendBBox.width < Math.floor(width * 0.5);\n if (legendGroup.visible) {\n translationX = width - legendBBox.width - legendBBox.x - legendSpacing;\n translationY = captionAutoPadding + (height - legendBBox.height) / 2 - legendBBox.y;\n legendAutoPadding.right = legendBBox.width;\n } else {\n legendAutoPadding.right = 0;\n }\n break;\n }\n if (legendGroup.visible) {\n // Round off for pixel grid alignment to work properly.\n legendGroup.translationX = Math.floor(translationX + legendGroup.translationX);\n legendGroup.translationY = Math.floor(translationY + legendGroup.translationY);\n this.legendBBox = legendGroup.computeBBox();\n }\n };\n Chart.prototype.setupDomListeners = function (chartElement) {\n chartElement.addEventListener('mousedown', this._onMouseDown);\n chartElement.addEventListener('mousemove', this._onMouseMove);\n chartElement.addEventListener('mouseup', this._onMouseUp);\n chartElement.addEventListener('mouseout', this._onMouseOut);\n chartElement.addEventListener('click', this._onClick);\n };\n Chart.prototype.cleanupDomListeners = function (chartElement) {\n chartElement.removeEventListener('mousedown', this._onMouseDown);\n chartElement.removeEventListener('mousemove', this._onMouseMove);\n chartElement.removeEventListener('mouseup', this._onMouseUp);\n chartElement.removeEventListener('mouseout', this._onMouseOut);\n chartElement.removeEventListener('click', this._onClick);\n };\n Chart.prototype.getSeriesRect = function () {\n return this.seriesRect;\n };\n // x/y are local canvas coordinates in CSS pixels, not actual pixels\n Chart.prototype.pickSeriesNode = function (point) {\n var e_6, _a;\n var _b, _c;\n var tracking = this.tooltip.tracking;\n var start = performance.now();\n // Disable 'nearest match' options if tooltip.tracking is enabled.\n var pickModes = tracking ? undefined : [SeriesNodePickMode.EXACT_SHAPE_MATCH];\n // Iterate through series in reverse, as later declared series appears on top of earlier\n // declared series.\n var reverseSeries = __spread$e(this.series).reverse();\n var result = undefined;\n try {\n for (var reverseSeries_1 = __values$g(reverseSeries), reverseSeries_1_1 = reverseSeries_1.next(); !reverseSeries_1_1.done; reverseSeries_1_1 = reverseSeries_1.next()) {\n var series = reverseSeries_1_1.value;\n if (!series.visible || !series.group.visible) {\n continue;\n }\n var _d = (_b = series.pickNode(point, pickModes), _b !== null && _b !== void 0 ? _b : {}),\n match = _d.match,\n distance = _d.distance;\n if (!match || distance == null) {\n continue;\n }\n if (!result || result.distance > distance) {\n result = {\n series: series,\n distance: distance,\n datum: match\n };\n }\n if (distance === 0) {\n break;\n }\n }\n } catch (e_6_1) {\n e_6 = {\n error: e_6_1\n };\n } finally {\n try {\n if (reverseSeries_1_1 && !reverseSeries_1_1.done && (_a = reverseSeries_1.return)) _a.call(reverseSeries_1);\n } finally {\n if (e_6) throw e_6.error;\n }\n }\n this.extraDebugStats['pickSeriesNode'] = Math.round((_c = this.extraDebugStats['pickSeriesNode'], _c !== null && _c !== void 0 ? _c : 0) + (performance.now() - start));\n return result;\n };\n Chart.prototype.onMouseMove = function (event) {\n this.handleLegendMouseMove(event);\n if (this.tooltip.enabled) {\n if (this.tooltip.delay > 0) {\n this.togglePointer(false);\n }\n }\n this.lastPointerMeta = {\n pageX: event.pageX,\n pageY: event.pageY,\n offsetX: event.offsetX,\n offsetY: event.offsetY,\n event: event\n };\n this.pointerScheduler.schedule();\n this.extraDebugStats['mouseX'] = event.offsetX;\n this.extraDebugStats['mouseY'] = event.offsetY;\n this.update(ChartUpdateType.SCENE_RENDER);\n };\n Chart.prototype.disablePointer = function (_a) {\n var _b = (_a === void 0 ? {} : _a).updateProcessing,\n updateProcessing = _b === void 0 ? true : _b;\n this.changeHighlightDatum(undefined, {\n updateProcessing: updateProcessing\n });\n this.togglePointer(false);\n };\n Chart.prototype.handlePointer = function (meta) {\n var _this = this;\n var lastPick = this.lastPick;\n var offsetX = meta.offsetX,\n offsetY = meta.offsetY;\n var disablePointer = function () {\n if (lastPick) {\n // Cursor moved from a non-marker node to empty space.\n _this.disablePointer();\n }\n };\n if (!(this.seriesRect && this.seriesRect.containsPoint(offsetX, offsetY))) {\n disablePointer();\n return;\n }\n var pick = this.pickSeriesNode({\n x: offsetX,\n y: offsetY\n });\n if (!pick) {\n disablePointer();\n return;\n }\n if (!lastPick || lastPick.datum !== pick.datum) {\n this.onSeriesDatumPick(meta, pick.datum);\n return;\n }\n lastPick.event = meta.event;\n if (this.tooltip.enabled && pick.series.tooltip.enabled) {\n this.tooltip.show(this.mergePointerDatum(meta, pick.datum));\n }\n };\n Chart.prototype.onMouseDown = function (_event) {\n // Override point for subclasses.\n };\n Chart.prototype.onMouseUp = function (_event) {\n // Override point for subclasses.\n };\n Chart.prototype.onMouseOut = function (_event) {\n this.togglePointer(false);\n };\n Chart.prototype.onClick = function (event) {\n if (this.checkSeriesNodeClick()) {\n this.update(ChartUpdateType.SERIES_UPDATE);\n return;\n }\n if (this.checkLegendClick(event)) {\n this.update(ChartUpdateType.PROCESS_DATA, {\n forceNodeDataRefresh: true\n });\n return;\n }\n this.fireEvent({\n type: 'click',\n event: event\n });\n };\n Chart.prototype.checkSeriesNodeClick = function () {\n var lastPick = this.lastPick;\n if (lastPick && lastPick.event) {\n var event_1 = lastPick.event,\n datum = lastPick.datum;\n datum.series.fireNodeClickEvent(event_1, datum);\n return true;\n }\n return false;\n };\n Chart.prototype.onSeriesNodeClick = function (event) {\n var seriesNodeClickEvent = __assign$y(__assign$y({}, event), {\n type: 'seriesNodeClick'\n });\n Object.defineProperty(seriesNodeClickEvent, 'series', {\n enumerable: false,\n // Should display the deprecation warning\n get: function () {\n return event.series;\n }\n });\n this.fireEvent(seriesNodeClickEvent);\n };\n Chart.prototype.checkLegendClick = function (event) {\n var _a;\n var _b = this,\n legend = _b.legend,\n legendItemClick = _b.legend.listeners.legendItemClick;\n var datum = legend.getDatumForPoint(event.offsetX, event.offsetY);\n if (!datum) {\n return false;\n }\n var id = datum.id,\n itemId = datum.itemId,\n enabled = datum.enabled;\n var series = find(this.series, function (s) {\n return s.id === id;\n });\n if (!series) {\n return false;\n }\n series.toggleSeriesItem(itemId, !enabled);\n if (enabled) {\n this.togglePointer(false);\n }\n if (enabled && ((_a = this.highlightedDatum) === null || _a === void 0 ? void 0 : _a.series) === series) {\n this.highlightedDatum = undefined;\n }\n if (!enabled) {\n this.highlightedDatum = {\n series: series,\n itemId: itemId,\n datum: undefined\n };\n }\n legendItemClick({\n enabled: !enabled,\n itemId: itemId,\n seriesId: series.id\n });\n return true;\n };\n Chart.prototype.handleLegendMouseMove = function (event) {\n if (!this.legend.enabled) {\n return;\n }\n var offsetX = event.offsetX,\n offsetY = event.offsetY;\n var datum = this.legend.getDatumForPoint(offsetX, offsetY);\n var pointerInsideLegend = this.legendBBox.containsPoint(offsetX, offsetY);\n var pointerOverLegendDatum = pointerInsideLegend && datum !== undefined;\n if (!pointerInsideLegend && this.pointerInsideLegend) {\n this.pointerInsideLegend = false;\n this.element.style.cursor = 'default';\n // Dehighlight if the pointer was inside the legend and is now leaving it.\n this.changeHighlightDatum();\n return;\n }\n if (pointerOverLegendDatum && !this.pointerOverLegendDatum) {\n this.element.style.cursor = 'pointer';\n if (datum && this.legend.truncatedItems.has(datum.itemId || datum.id)) {\n this.element.title = datum.label.text;\n } else {\n this.element.title = '';\n }\n }\n if (!pointerOverLegendDatum && this.pointerOverLegendDatum) {\n this.element.style.cursor = 'default';\n }\n this.pointerInsideLegend = pointerInsideLegend;\n this.pointerOverLegendDatum = pointerOverLegendDatum;\n var oldHighlightedDatum = this.highlightedDatum;\n if (datum) {\n var id_1 = datum.id,\n itemId = datum.itemId,\n enabled = datum.enabled;\n if (enabled) {\n var series = find(this.series, function (series) {\n return series.id === id_1;\n });\n if (series) {\n this.highlightedDatum = {\n series: series,\n itemId: itemId,\n datum: undefined\n };\n }\n } else {\n this.highlightedDatum = undefined;\n }\n }\n // Careful to only schedule updates when necessary.\n if (this.highlightedDatum && !oldHighlightedDatum || !this.highlightedDatum && oldHighlightedDatum || this.highlightedDatum && oldHighlightedDatum && (this.highlightedDatum.series !== oldHighlightedDatum.series || this.highlightedDatum.itemId !== oldHighlightedDatum.itemId)) {\n this.update(ChartUpdateType.SERIES_UPDATE);\n }\n };\n Chart.prototype.onSeriesDatumPick = function (meta, datum) {\n var lastPick = this.lastPick;\n if (lastPick) {\n if (lastPick.datum === datum) {\n return;\n }\n }\n this.changeHighlightDatum({\n datum: datum,\n event: meta.event\n });\n if (datum) {\n meta = this.mergePointerDatum(meta, datum);\n }\n var tooltipEnabled = this.tooltip.enabled && datum.series.tooltip.enabled;\n var html = tooltipEnabled && datum.series.getTooltipHtml(datum);\n if (html) {\n this.tooltip.show(meta, html);\n }\n };\n Chart.prototype.mergePointerDatum = function (meta, datum) {\n if (datum.point) {\n var _a = datum.point,\n x = _a.x,\n y = _a.y;\n var canvas = this.scene.canvas;\n var point = datum.series.group.inverseTransformPoint(x, y);\n var canvasRect = canvas.element.getBoundingClientRect();\n return __assign$y(__assign$y({}, meta), {\n pageX: Math.round(canvasRect.left + window.scrollX + point.x),\n pageY: Math.round(canvasRect.top + window.scrollY + point.y),\n offsetX: Math.round(canvasRect.left + point.y),\n offsetY: Math.round(canvasRect.top + point.y)\n });\n }\n return meta;\n };\n Chart.prototype.changeHighlightDatum = function (newPick, opts) {\n var _a = (opts !== null && opts !== void 0 ? opts : {}).updateProcessing,\n updateProcessing = _a === void 0 ? true : _a;\n var seriesToUpdate = new Set();\n var _b = newPick || {},\n _c = _b.datum,\n _d = (_c === void 0 ? {} : _c).series,\n newSeries = _d === void 0 ? undefined : _d,\n _e = _b.datum,\n datum = _e === void 0 ? undefined : _e;\n var _f = this.lastPick,\n _g = (_f === void 0 ? {} : _f).datum,\n _h = (_g === void 0 ? {} : _g).series,\n lastSeries = _h === void 0 ? undefined : _h;\n if (lastSeries) {\n seriesToUpdate.add(lastSeries);\n }\n if (newSeries) {\n seriesToUpdate.add(newSeries);\n this.element.style.cursor = newSeries.cursor;\n }\n this.lastPick = newPick;\n this.highlightedDatum = datum;\n if (!updateProcessing) {\n return;\n }\n var updateAll = newSeries == null || lastSeries == null;\n if (updateAll) {\n this.update(ChartUpdateType.SERIES_UPDATE);\n } else {\n this.update(ChartUpdateType.SERIES_UPDATE, {\n seriesToUpdate: seriesToUpdate\n });\n }\n };\n Chart.prototype.waitForUpdate = function (timeoutMs) {\n if (timeoutMs === void 0) {\n timeoutMs = 5000;\n }\n return __awaiter$b(this, void 0, void 0, function () {\n var start;\n return __generator$b(this, function (_a) {\n switch (_a.label) {\n case 0:\n start = performance.now();\n _a.label = 1;\n case 1:\n if (!(this._pendingFactoryUpdates.length > 0 || this.updatePending)) return [3 /*break*/, 3];\n if (performance.now() - start > timeoutMs) {\n throw new Error('waitForUpdate() timeout reached.');\n }\n return [4 /*yield*/, sleep(5)];\n case 2:\n _a.sent();\n return [3 /*break*/, 1];\n case 3:\n return [4 /*yield*/, this.awaitUpdateCompletion()];\n case 4:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n __decorate$1m([Validate(BOOLEAN)], Chart.prototype, \"_autoSize\", void 0);\n return Chart;\n}(Observable$1);\nvar __extends$2h = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign$x = undefined && undefined.__assign || function () {\n __assign$x = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$x.apply(this, arguments);\n};\nvar __decorate$1l = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __values$f = undefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\n/**\n * Acts as `Group` node but with specified bounds that form a rectangle.\n * Any parts of the child nodes outside that rectangle will not be visible.\n * Unlike the `Group` node, the `ClipRect` node cannot be transformed.\n */\nvar ClipRect = /** @class */function (_super) {\n __extends$2h(ClipRect, _super);\n function ClipRect() {\n var _this = _super.call(this) || this;\n _this.path = new Path2D$1();\n _this.enabled = true;\n _this._dirtyPath = true;\n _this.x = 0;\n _this.y = 0;\n _this.width = 10;\n _this.height = 10;\n _this.isContainerNode = true;\n return _this;\n }\n ClipRect.prototype.containsPoint = function (x, y) {\n var point = this.transformPoint(x, y);\n return point.x >= this.x && point.x <= this.x + this.width && point.y >= this.y && point.y <= this.y + this.height;\n };\n ClipRect.prototype.updatePath = function () {\n var _a = this,\n x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height,\n path = _a.path;\n path.clear();\n path.rect(x, y, width, height);\n this._dirtyPath = false;\n };\n ClipRect.prototype.computeBBox = function () {\n var _a = this,\n x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height;\n return new BBox$1(x, y, width, height);\n };\n ClipRect.prototype.render = function (renderCtx) {\n var e_1, _a;\n var _b = this,\n enabled = _b.enabled,\n dirty = _b.dirty,\n _dirtyPath = _b._dirtyPath,\n children = _b.children;\n var ctx = renderCtx.ctx,\n forceRender = renderCtx.forceRender,\n stats = renderCtx.stats;\n if (dirty === RedrawType.NONE && !forceRender) {\n if (stats) stats.nodesSkipped += this.nodeCount.count;\n return;\n }\n if (_dirtyPath) {\n this.updatePath();\n }\n if (enabled) {\n ctx.save();\n this.path.draw(ctx);\n ctx.clip();\n }\n var clipBBox = enabled ? this.computeBBox() : undefined;\n var childRenderContext = __assign$x(__assign$x({}, renderCtx), {\n clipBBox: clipBBox\n });\n try {\n for (var children_1 = __values$f(children), children_1_1 = children_1.next(); !children_1_1.done; children_1_1 = children_1.next()) {\n var child = children_1_1.value;\n if (child.visible && (forceRender || child.dirty > RedrawType.NONE)) {\n ctx.save();\n child.render(childRenderContext);\n ctx.restore();\n } else if (!child.visible) {\n child.markClean();\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (children_1_1 && !children_1_1.done && (_a = children_1.return)) _a.call(children_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n _super.prototype.render.call(this, renderCtx);\n if (enabled) {\n ctx.restore();\n }\n };\n ClipRect.className = 'ClipRect';\n __decorate$1l([SceneChangeDetection({\n redraw: RedrawType.MAJOR\n })], ClipRect.prototype, \"enabled\", void 0);\n __decorate$1l([ScenePathChangeDetection()], ClipRect.prototype, \"x\", void 0);\n __decorate$1l([ScenePathChangeDetection()], ClipRect.prototype, \"y\", void 0);\n __decorate$1l([ScenePathChangeDetection()], ClipRect.prototype, \"width\", void 0);\n __decorate$1l([ScenePathChangeDetection()], ClipRect.prototype, \"height\", void 0);\n return ClipRect;\n}(Node$1);\nvar __extends$2g = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1k = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar RangeHandle$1 = /** @class */function (_super) {\n __extends$2g(RangeHandle, _super);\n function RangeHandle() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._fill = '#f2f2f2';\n _this._stroke = '#999999';\n _this._strokeWidth = 1;\n _this._lineCap = 'square';\n _this._centerX = 0;\n _this._centerY = 0;\n // Use an even number for better looking results.\n _this._width = 8;\n // Use an even number for better looking results.\n _this._gripLineGap = 2;\n // Use an even number for better looking results.\n _this._gripLineLength = 8;\n _this._height = 16;\n return _this;\n }\n Object.defineProperty(RangeHandle.prototype, \"centerX\", {\n get: function () {\n return this._centerX;\n },\n set: function (value) {\n if (this._centerX !== value) {\n this._centerX = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RangeHandle.prototype, \"centerY\", {\n get: function () {\n return this._centerY;\n },\n set: function (value) {\n if (this._centerY !== value) {\n this._centerY = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RangeHandle.prototype, \"width\", {\n get: function () {\n return this._width;\n },\n set: function (value) {\n if (this._width !== value) {\n this._width = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RangeHandle.prototype, \"gripLineGap\", {\n get: function () {\n return this._gripLineGap;\n },\n set: function (value) {\n if (this._gripLineGap !== value) {\n this._gripLineGap = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RangeHandle.prototype, \"gripLineLength\", {\n get: function () {\n return this._gripLineLength;\n },\n set: function (value) {\n if (this._gripLineLength !== value) {\n this._gripLineLength = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RangeHandle.prototype, \"height\", {\n get: function () {\n return this._height;\n },\n set: function (value) {\n if (this._height !== value) {\n this._height = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n RangeHandle.prototype.computeBBox = function () {\n var _a = this,\n centerX = _a.centerX,\n centerY = _a.centerY,\n width = _a.width,\n height = _a.height;\n var x = centerX - width / 2;\n var y = centerY - height / 2;\n return new BBox$1(x, y, width, height);\n };\n RangeHandle.prototype.isPointInPath = function (x, y) {\n var point = this.transformPoint(x, y);\n var bbox = this.computeBBox();\n return bbox.containsPoint(point.x, point.y);\n };\n RangeHandle.prototype.updatePath = function () {\n var _a = this,\n path = _a.path,\n centerX = _a.centerX,\n centerY = _a.centerY,\n width = _a.width,\n height = _a.height;\n path.clear();\n var x = centerX - width / 2;\n var y = centerY - height / 2;\n var ax = this.align(x);\n var ay = this.align(y);\n var axw = ax + this.align(x, width);\n var ayh = ay + this.align(y, height);\n // Handle.\n path.moveTo(ax, ay);\n path.lineTo(axw, ay);\n path.lineTo(axw, ayh);\n path.lineTo(ax, ayh);\n path.lineTo(ax, ay);\n // Grip lines.\n var dx = this.gripLineGap / 2;\n var dy = this.gripLineLength / 2;\n path.moveTo(this.align(centerX - dx), this.align(centerY - dy));\n path.lineTo(this.align(centerX - dx), this.align(centerY + dy));\n path.moveTo(this.align(centerX + dx), this.align(centerY - dy));\n path.lineTo(this.align(centerX + dx), this.align(centerY + dy));\n };\n RangeHandle.className = 'RangeHandle';\n __decorate$1k([Validate(COLOR_STRING)], RangeHandle.prototype, \"_fill\", void 0);\n __decorate$1k([Validate(COLOR_STRING)], RangeHandle.prototype, \"_stroke\", void 0);\n __decorate$1k([Validate(NUMBER(0))], RangeHandle.prototype, \"_strokeWidth\", void 0);\n __decorate$1k([Validate(LINE_CAP)], RangeHandle.prototype, \"_lineCap\", void 0);\n __decorate$1k([Validate(NUMBER(0))], RangeHandle.prototype, \"_width\", void 0);\n __decorate$1k([Validate(NUMBER(0))], RangeHandle.prototype, \"_gripLineGap\", void 0);\n __decorate$1k([Validate(NUMBER(0))], RangeHandle.prototype, \"_gripLineLength\", void 0);\n __decorate$1k([Validate(NUMBER(0))], RangeHandle.prototype, \"_height\", void 0);\n return RangeHandle;\n}(Path$1);\nvar __extends$2f = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1j = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar RangeMask = /** @class */function (_super) {\n __extends$2f(RangeMask, _super);\n function RangeMask() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._stroke = '#999999';\n _this._strokeWidth = 1;\n _this._fill = '#999999';\n _this._fillOpacity = 0.2;\n _this._lineCap = 'square';\n _this._x = 0;\n _this._y = 0;\n _this._width = 200;\n _this._height = 30;\n _this.minRange = 0.05;\n _this._min = 0;\n _this._max = 1;\n return _this;\n }\n Object.defineProperty(RangeMask.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (value) {\n if (this._x !== value) {\n this._x = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RangeMask.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (value) {\n if (this._y !== value) {\n this._y = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RangeMask.prototype, \"width\", {\n get: function () {\n return this._width;\n },\n set: function (value) {\n if (this._width !== value) {\n this._width = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RangeMask.prototype, \"height\", {\n get: function () {\n return this._height;\n },\n set: function (value) {\n if (this._height !== value) {\n this._height = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RangeMask.prototype, \"min\", {\n get: function () {\n return this._min;\n },\n set: function (value) {\n var _a, _b;\n value = Math.min(Math.max(value, 0), this.max - this.minRange);\n if (isNaN(value)) {\n return;\n }\n if (this._min !== value) {\n this._min = value;\n this.dirtyPath = true;\n (_b = (_a = this).onRangeChange) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RangeMask.prototype, \"max\", {\n get: function () {\n return this._max;\n },\n set: function (value) {\n var _a, _b;\n value = Math.max(Math.min(value, 1), this.min + this.minRange);\n if (isNaN(value)) {\n return;\n }\n if (this._max !== value) {\n this._max = value;\n this.dirtyPath = true;\n (_b = (_a = this).onRangeChange) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n },\n enumerable: true,\n configurable: true\n });\n RangeMask.prototype.computeBBox = function () {\n var _a = this,\n x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height;\n return new BBox$1(x, y, width, height);\n };\n RangeMask.prototype.computeVisibleRangeBBox = function () {\n var _a = this,\n x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height,\n min = _a.min,\n max = _a.max;\n var minX = x + width * min;\n var maxX = x + width * max;\n return new BBox$1(minX, y, maxX - minX, height);\n };\n RangeMask.prototype.updatePath = function () {\n var _a = this,\n path = _a.path,\n x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height,\n min = _a.min,\n max = _a.max;\n path.clear();\n var ax = this.align(x);\n var ay = this.align(y);\n var axw = ax + this.align(x, width);\n var ayh = ay + this.align(y, height);\n // Whole range.\n path.moveTo(ax, ay);\n path.lineTo(axw, ay);\n path.lineTo(axw, ayh);\n path.lineTo(ax, ayh);\n path.lineTo(ax, ay);\n var minX = this.align(x + width * min);\n var maxX = this.align(x + width * max);\n // Visible range.\n path.moveTo(minX, ay);\n path.lineTo(minX, ayh);\n path.lineTo(maxX, ayh);\n path.lineTo(maxX, ay);\n path.lineTo(minX, ay);\n };\n RangeMask.className = 'RangeMask';\n __decorate$1j([Validate(COLOR_STRING)], RangeMask.prototype, \"_stroke\", void 0);\n __decorate$1j([Validate(NUMBER(0))], RangeMask.prototype, \"_strokeWidth\", void 0);\n __decorate$1j([Validate(COLOR_STRING)], RangeMask.prototype, \"_fill\", void 0);\n __decorate$1j([Validate(NUMBER(0, 1))], RangeMask.prototype, \"_fillOpacity\", void 0);\n __decorate$1j([Validate(LINE_CAP)], RangeMask.prototype, \"_lineCap\", void 0);\n __decorate$1j([Validate(NUMBER(0))], RangeMask.prototype, \"_width\", void 0);\n __decorate$1j([Validate(NUMBER(0))], RangeMask.prototype, \"_height\", void 0);\n __decorate$1j([Validate(NUMBER())], RangeMask.prototype, \"_min\", void 0);\n __decorate$1j([Validate(NUMBER())], RangeMask.prototype, \"_max\", void 0);\n return RangeMask;\n}(Path$1);\nvar __extends$2e = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign$w = undefined && undefined.__assign || function () {\n __assign$w = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$w.apply(this, arguments);\n};\nvar RangeSelector = /** @class */function (_super) {\n __extends$2e(RangeSelector, _super);\n function RangeSelector() {\n var _this = _super.call(this) || this;\n _this.minHandle = new RangeHandle$1();\n _this.maxHandle = new RangeHandle$1();\n _this.mask = function () {\n var _a = RangeSelector.defaults,\n x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height,\n min = _a.min,\n max = _a.max;\n var mask = new RangeMask();\n mask.x = x;\n mask.y = y;\n mask.width = width;\n mask.height = height;\n mask.min = min;\n mask.max = max;\n var _b = _this,\n minHandle = _b.minHandle,\n maxHandle = _b.maxHandle;\n minHandle.centerX = x;\n maxHandle.centerX = x + width;\n minHandle.centerY = maxHandle.centerY = y + height / 2;\n _this.append([mask, minHandle, maxHandle]);\n mask.onRangeChange = function () {\n var _a, _b;\n _this.updateHandles();\n (_b = (_a = _this).onRangeChange) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n return mask;\n }();\n _this._x = RangeSelector.defaults.x;\n _this._y = RangeSelector.defaults.y;\n _this._width = RangeSelector.defaults.width;\n _this._height = RangeSelector.defaults.height;\n _this._min = RangeSelector.defaults.min;\n _this._max = RangeSelector.defaults.max;\n _this.isContainerNode = true;\n return _this;\n }\n Object.defineProperty(RangeSelector.prototype, \"x\", {\n get: function () {\n return this.mask.x;\n },\n set: function (value) {\n this.mask.x = value;\n this.updateHandles();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RangeSelector.prototype, \"y\", {\n get: function () {\n return this.mask.y;\n },\n set: function (value) {\n this.mask.y = value;\n this.updateHandles();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RangeSelector.prototype, \"width\", {\n get: function () {\n return this.mask.width;\n },\n set: function (value) {\n this.mask.width = value;\n this.updateHandles();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RangeSelector.prototype, \"height\", {\n get: function () {\n return this.mask.height;\n },\n set: function (value) {\n this.mask.height = value;\n this.updateHandles();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RangeSelector.prototype, \"min\", {\n get: function () {\n return this.mask.min;\n },\n set: function (value) {\n this.mask.min = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RangeSelector.prototype, \"max\", {\n get: function () {\n return this.mask.max;\n },\n set: function (value) {\n this.mask.max = value;\n },\n enumerable: true,\n configurable: true\n });\n RangeSelector.prototype.updateHandles = function () {\n var _a = this,\n minHandle = _a.minHandle,\n maxHandle = _a.maxHandle,\n x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height,\n mask = _a.mask;\n minHandle.centerX = x + width * mask.min;\n maxHandle.centerX = x + width * mask.max;\n minHandle.centerY = maxHandle.centerY = y + height / 2;\n };\n RangeSelector.prototype.computeBBox = function () {\n return this.mask.computeBBox();\n };\n RangeSelector.prototype.computeVisibleRangeBBox = function () {\n return this.mask.computeVisibleRangeBBox();\n };\n RangeSelector.prototype.render = function (renderCtx) {\n var ctx = renderCtx.ctx,\n forceRender = renderCtx.forceRender,\n stats = renderCtx.stats;\n if (this.dirty === RedrawType.NONE && !forceRender) {\n if (stats) stats.nodesSkipped++;\n return;\n }\n this.computeTransformMatrix();\n this.matrix.toContext(ctx);\n var _a = this,\n mask = _a.mask,\n minHandle = _a.minHandle,\n maxHandle = _a.maxHandle;\n [mask, minHandle, maxHandle].forEach(function (child) {\n if (child.visible && (forceRender || child.dirty > RedrawType.NONE)) {\n ctx.save();\n child.render(__assign$w(__assign$w({}, renderCtx), {\n ctx: ctx,\n forceRender: forceRender\n }));\n ctx.restore();\n }\n });\n this.markClean({\n force: true\n });\n if (stats) stats.nodesRendered++;\n };\n RangeSelector.className = 'Range';\n RangeSelector.defaults = {\n x: 0,\n y: 0,\n width: 200,\n height: 30,\n min: 0,\n max: 1\n };\n return RangeSelector;\n}(Group$1);\nvar NavigatorMask = /** @class */function () {\n function NavigatorMask(rangeMask) {\n this.rm = rangeMask;\n }\n Object.defineProperty(NavigatorMask.prototype, \"fill\", {\n get: function () {\n return this.rm.fill;\n },\n set: function (value) {\n this.rm.fill = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NavigatorMask.prototype, \"stroke\", {\n get: function () {\n return this.rm.stroke;\n },\n set: function (value) {\n this.rm.stroke = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NavigatorMask.prototype, \"strokeWidth\", {\n get: function () {\n return this.rm.strokeWidth;\n },\n set: function (value) {\n this.rm.strokeWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NavigatorMask.prototype, \"fillOpacity\", {\n get: function () {\n return this.rm.fillOpacity;\n },\n set: function (value) {\n this.rm.fillOpacity = value;\n },\n enumerable: true,\n configurable: true\n });\n return NavigatorMask;\n}();\nvar NavigatorHandle = /** @class */function () {\n function NavigatorHandle(rangeHandle) {\n this.rh = rangeHandle;\n }\n Object.defineProperty(NavigatorHandle.prototype, \"fill\", {\n get: function () {\n return this.rh.fill;\n },\n set: function (value) {\n this.rh.fill = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NavigatorHandle.prototype, \"stroke\", {\n get: function () {\n return this.rh.stroke;\n },\n set: function (value) {\n this.rh.stroke = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NavigatorHandle.prototype, \"strokeWidth\", {\n get: function () {\n return this.rh.strokeWidth;\n },\n set: function (value) {\n this.rh.strokeWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NavigatorHandle.prototype, \"width\", {\n get: function () {\n return this.rh.width;\n },\n set: function (value) {\n this.rh.width = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NavigatorHandle.prototype, \"height\", {\n get: function () {\n return this.rh.height;\n },\n set: function (value) {\n this.rh.height = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NavigatorHandle.prototype, \"gripLineGap\", {\n get: function () {\n return this.rh.gripLineGap;\n },\n set: function (value) {\n this.rh.gripLineGap = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NavigatorHandle.prototype, \"gripLineLength\", {\n get: function () {\n return this.rh.gripLineLength;\n },\n set: function (value) {\n this.rh.gripLineLength = value;\n },\n enumerable: true,\n configurable: true\n });\n return NavigatorHandle;\n}();\nvar __decorate$1i = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar Navigator = /** @class */function () {\n function Navigator(chart) {\n this.rs = new RangeSelector();\n this.mask = new NavigatorMask(this.rs.mask);\n this.minHandle = new NavigatorHandle(this.rs.minHandle);\n this.maxHandle = new NavigatorHandle(this.rs.maxHandle);\n this.minHandleDragging = false;\n this.maxHandleDragging = false;\n this.panHandleOffset = NaN;\n this.changedCursor = false;\n this._margin = 10;\n this.chart = chart;\n chart.scene.root.append(this.rs);\n this.rs.onRangeChange = function () {\n return chart.update(ChartUpdateType.PERFORM_LAYOUT, {\n forceNodeDataRefresh: true\n });\n };\n }\n Object.defineProperty(Navigator.prototype, \"enabled\", {\n get: function () {\n return this.rs.visible;\n },\n set: function (value) {\n this.rs.visible = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Navigator.prototype, \"x\", {\n get: function () {\n return this.rs.x;\n },\n set: function (value) {\n this.rs.x = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Navigator.prototype, \"y\", {\n get: function () {\n return this.rs.y;\n },\n set: function (value) {\n this.rs.y = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Navigator.prototype, \"width\", {\n get: function () {\n return this.rs.width;\n },\n set: function (value) {\n this.rs.width = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Navigator.prototype, \"height\", {\n get: function () {\n return this.rs.height;\n },\n set: function (value) {\n this.rs.height = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Navigator.prototype, \"margin\", {\n get: function () {\n return this._margin;\n },\n set: function (value) {\n this._margin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Navigator.prototype, \"min\", {\n get: function () {\n return this.rs.min;\n },\n set: function (value) {\n this.rs.min = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Navigator.prototype, \"max\", {\n get: function () {\n return this.rs.max;\n },\n set: function (value) {\n this.rs.max = value;\n },\n enumerable: true,\n configurable: true\n });\n Navigator.prototype.onDragStart = function (offset) {\n if (!this.enabled) {\n return;\n }\n var offsetX = offset.offsetX,\n offsetY = offset.offsetY;\n var rs = this.rs;\n var minHandle = rs.minHandle,\n maxHandle = rs.maxHandle,\n x = rs.x,\n width = rs.width,\n min = rs.min;\n var visibleRange = rs.computeVisibleRangeBBox();\n if (!(this.minHandleDragging || this.maxHandleDragging)) {\n if (minHandle.containsPoint(offsetX, offsetY)) {\n this.minHandleDragging = true;\n } else if (maxHandle.containsPoint(offsetX, offsetY)) {\n this.maxHandleDragging = true;\n } else if (visibleRange.containsPoint(offsetX, offsetY)) {\n this.panHandleOffset = (offsetX - x) / width - min;\n }\n }\n };\n Navigator.prototype.onDrag = function (offset) {\n if (!this.enabled) {\n return;\n }\n var _a = this,\n rs = _a.rs,\n panHandleOffset = _a.panHandleOffset;\n var x = rs.x,\n y = rs.y,\n width = rs.width,\n height = rs.height,\n minHandle = rs.minHandle,\n maxHandle = rs.maxHandle;\n var style = this.chart.element.style;\n var offsetX = offset.offsetX,\n offsetY = offset.offsetY;\n var minX = x + width * rs.min;\n var maxX = x + width * rs.max;\n var visibleRange = new BBox$1(minX, y, maxX - minX, height);\n function getRatio() {\n return Math.min(Math.max((offsetX - x) / width, 0), 1);\n }\n if (minHandle.containsPoint(offsetX, offsetY) || maxHandle.containsPoint(offsetX, offsetY)) {\n this.changedCursor = true;\n style.cursor = 'ew-resize';\n } else if (visibleRange.containsPoint(offsetX, offsetY)) {\n this.changedCursor = true;\n style.cursor = 'grab';\n } else if (this.changedCursor) {\n this.changedCursor = false;\n style.cursor = 'default';\n }\n if (this.minHandleDragging) {\n rs.min = getRatio();\n } else if (this.maxHandleDragging) {\n rs.max = getRatio();\n } else if (!isNaN(panHandleOffset)) {\n var span = rs.max - rs.min;\n var min = Math.min(getRatio() - panHandleOffset, 1 - span);\n if (min <= rs.min) {\n // pan left\n rs.min = min;\n rs.max = rs.min + span;\n } else {\n // pan right\n rs.max = min + span;\n rs.min = rs.max - span;\n }\n }\n };\n Navigator.prototype.onDragStop = function () {\n this.stopHandleDragging();\n };\n Navigator.prototype.stopHandleDragging = function () {\n this.minHandleDragging = this.maxHandleDragging = false;\n this.panHandleOffset = NaN;\n };\n __decorate$1i([Validate(NUMBER(0))], Navigator.prototype, \"_margin\", void 0);\n return Navigator;\n}();\nvar __extends$2d = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign$v = undefined && undefined.__assign || function () {\n __assign$v = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$v.apply(this, arguments);\n};\nvar __awaiter$a = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$a = undefined && undefined.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __values$e = undefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$u = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar CartesianChart = /** @class */function (_super) {\n __extends$2d(CartesianChart, _super);\n function CartesianChart(document, overrideDevicePixelRatio) {\n var _a;\n if (document === void 0) {\n document = window.document;\n }\n var _this = _super.call(this, document, overrideDevicePixelRatio) || this;\n _this.seriesRoot = new ClipRect();\n _this.navigator = new Navigator(_this);\n _this._lastAxisWidths = (_a = {}, _a[ChartAxisPosition.Top] = 0, _a[ChartAxisPosition.Bottom] = 0, _a[ChartAxisPosition.Left] = 0, _a[ChartAxisPosition.Right] = 0, _a);\n // Prevent the scene from rendering chart components in an invalid state\n // (before first layout is performed).\n _this.scene.root.visible = false;\n var root = _this.scene.root;\n root.append(_this.seriesRoot);\n root.append(_this.legend.group);\n _this.navigator.enabled = false;\n return _this;\n }\n CartesianChart.prototype.performLayout = function () {\n return __awaiter$a(this, void 0, void 0, function () {\n var _a, width, height, legend, navigator, shrinkRect, _b, captionAutoPadding, legendAutoPadding, legendPadding, padding, navigatorTotalHeight, seriesRect, seriesRoot;\n return __generator$a(this, function (_c) {\n this.scene.root.visible = true;\n _a = this, width = _a.width, height = _a.height, legend = _a.legend, navigator = _a.navigator;\n shrinkRect = new BBox$1(0, 0, width, height);\n _b = this.positionCaptions().captionAutoPadding, captionAutoPadding = _b === void 0 ? 0 : _b;\n this.positionLegend(captionAutoPadding);\n if (legend.enabled && legend.data.length) {\n legendAutoPadding = this.legendAutoPadding;\n legendPadding = this.legend.spacing;\n shrinkRect.x += legendAutoPadding.left;\n shrinkRect.y += legendAutoPadding.top;\n shrinkRect.width -= legendAutoPadding.left + legendAutoPadding.right;\n shrinkRect.height -= legendAutoPadding.top + legendAutoPadding.bottom;\n switch (this.legend.position) {\n case 'right':\n shrinkRect.width -= legendPadding;\n break;\n case 'bottom':\n shrinkRect.height -= legendPadding;\n break;\n case 'left':\n shrinkRect.x += legendPadding;\n shrinkRect.width -= legendPadding;\n break;\n case 'top':\n shrinkRect.y += legendPadding;\n shrinkRect.height -= legendPadding;\n break;\n }\n }\n padding = this.padding;\n shrinkRect.x += padding.left;\n shrinkRect.width -= padding.left + padding.right;\n shrinkRect.y += padding.top + captionAutoPadding;\n shrinkRect.height -= padding.top + captionAutoPadding + padding.bottom;\n if (navigator.enabled) {\n navigatorTotalHeight = navigator.height + navigator.margin;\n shrinkRect.height -= navigatorTotalHeight;\n navigator.x = shrinkRect.x;\n navigator.y = shrinkRect.y + shrinkRect.height + navigator.margin;\n navigator.width = shrinkRect.width;\n }\n seriesRect = this.updateAxes(shrinkRect).seriesRect;\n this.seriesRect = seriesRect;\n this.series.forEach(function (series) {\n series.group.translationX = Math.floor(seriesRect.x);\n series.group.translationY = Math.floor(seriesRect.y);\n });\n seriesRoot = this.seriesRoot;\n seriesRoot.x = seriesRect.x;\n seriesRoot.y = seriesRect.y;\n seriesRoot.width = seriesRect.width;\n seriesRoot.height = seriesRect.height;\n return [2 /*return*/];\n });\n });\n };\n CartesianChart.prototype.setupDomListeners = function (chartElement) {\n _super.prototype.setupDomListeners.call(this, chartElement);\n this._onTouchStart = this.onTouchStart.bind(this);\n this._onTouchMove = this.onTouchMove.bind(this);\n this._onTouchEnd = this.onTouchEnd.bind(this);\n this._onTouchCancel = this.onTouchCancel.bind(this);\n chartElement.addEventListener('touchstart', this._onTouchStart, {\n passive: true\n });\n chartElement.addEventListener('touchmove', this._onTouchMove, {\n passive: true\n });\n chartElement.addEventListener('touchend', this._onTouchEnd, {\n passive: true\n });\n chartElement.addEventListener('touchcancel', this._onTouchCancel, {\n passive: true\n });\n };\n CartesianChart.prototype.cleanupDomListeners = function (chartElement) {\n _super.prototype.cleanupDomListeners.call(this, chartElement);\n chartElement.removeEventListener('touchstart', this._onTouchStart);\n chartElement.removeEventListener('touchmove', this._onTouchMove);\n chartElement.removeEventListener('touchend', this._onTouchEnd);\n chartElement.removeEventListener('touchcancel', this._onTouchCancel);\n };\n CartesianChart.prototype.getTouchOffset = function (event) {\n var rect = this.scene.canvas.element.getBoundingClientRect();\n var touch = event.touches[0];\n return touch ? {\n offsetX: touch.clientX - rect.left,\n offsetY: touch.clientY - rect.top\n } : undefined;\n };\n CartesianChart.prototype.onTouchStart = function (event) {\n var offset = this.getTouchOffset(event);\n if (offset) {\n this.navigator.onDragStart(offset);\n }\n };\n CartesianChart.prototype.onTouchMove = function (event) {\n var offset = this.getTouchOffset(event);\n if (offset) {\n this.navigator.onDrag(offset);\n }\n };\n CartesianChart.prototype.onTouchEnd = function (_event) {\n this.navigator.onDragStop();\n };\n CartesianChart.prototype.onTouchCancel = function (_event) {\n this.navigator.onDragStop();\n };\n CartesianChart.prototype.onMouseDown = function (event) {\n _super.prototype.onMouseDown.call(this, event);\n this.navigator.onDragStart(event);\n };\n CartesianChart.prototype.onMouseMove = function (event) {\n _super.prototype.onMouseMove.call(this, event);\n this.navigator.onDrag(event);\n };\n CartesianChart.prototype.onMouseUp = function (event) {\n _super.prototype.onMouseUp.call(this, event);\n this.navigator.onDragStop();\n };\n CartesianChart.prototype.onMouseOut = function (event) {\n _super.prototype.onMouseOut.call(this, event);\n this.navigator.onDragStop();\n };\n CartesianChart.prototype.updateAxes = function (inputShrinkRect) {\n var e_1, _a;\n var _b;\n // Start with a good approximation from the last update - this should mean that in many resize\n // cases that only a single pass is needed \\o/.\n var axisWidths = __assign$v({}, this._lastAxisWidths);\n // Clean any positions which aren't valid with the current axis status (otherwise we end up\n // never being able to find a stable result).\n var liveAxisWidths = this._axes.map(function (a) {\n return a.position;\n }).reduce(function (r, n) {\n return r.add(n);\n }, new Set());\n try {\n for (var _c = __values$e(Object.keys(axisWidths)), _d = _c.next(); !_d.done; _d = _c.next()) {\n var position = _d.value;\n if (!liveAxisWidths.has(position)) {\n delete axisWidths[position];\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n var stableWidths = function (other) {\n return Object.entries(axisWidths).every(function (_a) {\n var _b = __read$u(_a, 2),\n p = _b[0],\n w = _b[1];\n var otherW = other[p];\n if (w != null || otherW != null) {\n return w === otherW;\n }\n return true;\n });\n };\n var ceilValues = function (records) {\n return Object.entries(records).reduce(function (out, _a) {\n var _b = __read$u(_a, 2),\n key = _b[0],\n value = _b[1];\n if (value && Math.abs(value) === Infinity) {\n value = 0;\n }\n out[key] = value != null ? Math.ceil(value) : value;\n return out;\n }, {});\n };\n // Iteratively try to resolve axis widths - since X axis width affects Y axis range,\n // and vice-versa, we need to iteratively try and find a fit for the axes and their\n // ticks/labels.\n var lastPass = {};\n var clipSeries = false;\n var seriesRect = (_b = this.seriesRect) === null || _b === void 0 ? void 0 : _b.clone();\n var count = 0;\n do {\n Object.assign(axisWidths, lastPass);\n var result = this.updateAxesPass(axisWidths, inputShrinkRect.clone(), seriesRect);\n lastPass = ceilValues(result.axisWidths);\n clipSeries = result.clipSeries;\n seriesRect = result.seriesRect;\n if (count++ > 10) {\n console.warn('AG Charts - unable to find stable axis layout.');\n break;\n }\n } while (!stableWidths(lastPass));\n this.seriesRoot.enabled = clipSeries;\n this._lastAxisWidths = axisWidths;\n return {\n seriesRect: seriesRect\n };\n };\n CartesianChart.prototype.updateAxesPass = function (axisWidths, bounds, lastPassSeriesRect) {\n var _this = this;\n var axes = this.axes;\n var visited = {};\n var newAxisWidths = {};\n var clipSeries = false;\n var primaryTickCounts = {};\n var crossLinePadding = lastPassSeriesRect ? this.buildCrossLinePadding(lastPassSeriesRect, axisWidths) : {};\n var axisBound = this.buildAxisBound(bounds, crossLinePadding);\n var seriesRect = this.buildSeriesRect(axisBound, axisWidths);\n // Set the number of ticks for continuous axes based on the available range\n // before updating the axis domain via `this.updateAxes()` as the tick count has an effect on the calculated `nice` domain extent\n axes.forEach(function (axis) {\n var _a, _b;\n var position = axis.position;\n var _c = _this.calculateAxisDimensions({\n axis: axis,\n seriesRect: seriesRect,\n axisWidths: axisWidths,\n newAxisWidths: newAxisWidths,\n primaryTickCounts: primaryTickCounts,\n clipSeries: clipSeries,\n addInterAxisPadding: (_a = visited[position], _a !== null && _a !== void 0 ? _a : 0) > 0\n }),\n newClipSeries = _c.clipSeries,\n axisThickness = _c.axisThickness,\n axisOffset = _c.axisOffset;\n visited[position] = (_b = visited[position], _b !== null && _b !== void 0 ? _b : 0) + 1;\n clipSeries = clipSeries || newClipSeries;\n _this.positionAxis({\n axis: axis,\n axisBound: axisBound,\n axisOffset: axisOffset,\n axisThickness: axisThickness,\n axisWidths: axisWidths,\n primaryTickCounts: primaryTickCounts,\n seriesRect: seriesRect\n });\n });\n return {\n clipSeries: clipSeries,\n seriesRect: seriesRect,\n axisWidths: newAxisWidths\n };\n };\n CartesianChart.prototype.buildCrossLinePadding = function (lastPassSeriesRect, axisWidths) {\n var e_2, _a;\n var _b;\n var crossLinePadding = {};\n this.axes.forEach(function (axis) {\n if (axis.crossLines) {\n axis.crossLines.forEach(function (crossLine) {\n crossLine.calculatePadding(crossLinePadding, lastPassSeriesRect);\n });\n }\n });\n try {\n // Reduce cross-line padding to account for overlap with axes.\n for (var _c = __values$e(Object.entries(crossLinePadding)), _d = _c.next(); !_d.done; _d = _c.next()) {\n var _e = __read$u(_d.value, 2),\n side = _e[0],\n _f = _e[1],\n padding = _f === void 0 ? 0 : _f;\n crossLinePadding[side] = Math.max(padding - (_b = axisWidths[side], _b !== null && _b !== void 0 ? _b : 0), 0);\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n return crossLinePadding;\n };\n CartesianChart.prototype.buildAxisBound = function (bounds, crossLinePadding) {\n var result = bounds.clone();\n var _a = crossLinePadding.top,\n top = _a === void 0 ? 0 : _a,\n _b = crossLinePadding.right,\n right = _b === void 0 ? 0 : _b,\n _c = crossLinePadding.bottom,\n bottom = _c === void 0 ? 0 : _c,\n _d = crossLinePadding.left,\n left = _d === void 0 ? 0 : _d;\n result.x += left;\n result.y += top;\n result.width -= left + right;\n result.height -= top + bottom;\n return result;\n };\n CartesianChart.prototype.buildSeriesRect = function (axisBound, axisWidths) {\n var result = axisBound.clone();\n var top = axisWidths.top,\n bottom = axisWidths.bottom,\n left = axisWidths.left,\n right = axisWidths.right;\n result.x += left !== null && left !== void 0 ? left : 0;\n result.y += top !== null && top !== void 0 ? top : 0;\n result.width -= (left !== null && left !== void 0 ? left : 0) + (right !== null && right !== void 0 ? right : 0);\n result.height -= (top !== null && top !== void 0 ? top : 0) + (bottom !== null && bottom !== void 0 ? bottom : 0);\n // Width and height should not be negative.\n result.width = Math.max(0, result.width);\n result.height = Math.max(0, result.height);\n return result;\n };\n CartesianChart.prototype.clampToOutsideSeriesRect = function (seriesRect, value, dimension, direction) {\n var x = seriesRect.x,\n y = seriesRect.y,\n width = seriesRect.width,\n height = seriesRect.height;\n var clampBounds = [x, y, x + width, y + height];\n var fn = direction === 1 ? Math.min : Math.max;\n var compareTo = clampBounds[(dimension === 'x' ? 0 : 1) + (direction === 1 ? 0 : 2)];\n return fn(value, compareTo);\n };\n CartesianChart.prototype.calculateAxisDimensions = function (opts) {\n var _a, _b, _c, _d, _e;\n var axis = opts.axis,\n seriesRect = opts.seriesRect,\n axisWidths = opts.axisWidths,\n newAxisWidths = opts.newAxisWidths,\n primaryTickCounts = opts.primaryTickCounts,\n addInterAxisPadding = opts.addInterAxisPadding;\n var clipSeries = opts.clipSeries;\n var navigator = this.navigator;\n var position = axis.position,\n direction = axis.direction;\n var axisLeftRightRange = function (axis) {\n if (axis instanceof CategoryAxis || axis instanceof GroupedCategoryAxis) {\n return [0, seriesRect.height];\n }\n return [seriesRect.height, 0];\n };\n axis.label.mirrored = ['top', 'right'].includes(position);\n var axisOffset = (_a = newAxisWidths[position], _a !== null && _a !== void 0 ? _a : 0);\n switch (position) {\n case ChartAxisPosition.Top:\n case ChartAxisPosition.Bottom:\n axis.range = [0, seriesRect.width];\n axis.gridLength = seriesRect.height;\n break;\n case ChartAxisPosition.Right:\n case ChartAxisPosition.Left:\n axis.range = axisLeftRightRange(axis);\n axis.gridLength = seriesRect.width;\n break;\n }\n if (axis.direction === ChartAxisDirection.X) {\n var min = navigator.min,\n max = navigator.max,\n enabled = navigator.enabled;\n if (enabled) {\n axis.visibleRange = [min, max];\n } else {\n axis.visibleRange = [0, 1];\n }\n }\n if (!clipSeries && (axis.visibleRange[0] > 0 || axis.visibleRange[1] < 1)) {\n clipSeries = true;\n }\n var primaryTickCount = axis.nice ? primaryTickCounts[direction] : undefined;\n primaryTickCount = axis.update(primaryTickCount);\n primaryTickCounts[direction] = (_b = primaryTickCounts[direction], _b !== null && _b !== void 0 ? _b : primaryTickCount);\n var axisThickness = 0;\n if (axis.thickness) {\n axisThickness = axis.thickness;\n } else {\n var bbox = axis.computeBBox();\n axisThickness = direction === ChartAxisDirection.X ? bbox.height : bbox.width;\n }\n // for multiple axes in the same direction and position, apply padding at the top of each inner axis (i.e. between axes).\n var axisPadding = 15;\n if (addInterAxisPadding) {\n axisThickness += axisPadding;\n }\n axisThickness = Math.ceil(axisThickness);\n newAxisWidths[position] = (_c = newAxisWidths[position], _c !== null && _c !== void 0 ? _c : 0) + axisThickness;\n axis.gridPadding = (_d = axisWidths[position], _d !== null && _d !== void 0 ? _d : 0) - (_e = newAxisWidths[position], _e !== null && _e !== void 0 ? _e : 0);\n return {\n clipSeries: clipSeries,\n axisThickness: axisThickness,\n axisOffset: axisOffset\n };\n };\n CartesianChart.prototype.positionAxis = function (opts) {\n var _a, _b, _c, _d;\n var axis = opts.axis,\n axisBound = opts.axisBound,\n axisWidths = opts.axisWidths,\n seriesRect = opts.seriesRect,\n axisOffset = opts.axisOffset,\n axisThickness = opts.axisThickness;\n var position = axis.position;\n switch (position) {\n case ChartAxisPosition.Top:\n axis.translation.x = axisBound.x + (_a = axisWidths.left, _a !== null && _a !== void 0 ? _a : 0);\n axis.translation.y = this.clampToOutsideSeriesRect(seriesRect, axisBound.y + 1 + axisOffset + axisThickness, 'y', 1);\n break;\n case ChartAxisPosition.Bottom:\n axis.translation.x = axisBound.x + (_b = axisWidths.left, _b !== null && _b !== void 0 ? _b : 0);\n axis.translation.y = this.clampToOutsideSeriesRect(seriesRect, axisBound.y + axisBound.height + 1 - axisThickness - axisOffset, 'y', -1);\n break;\n case ChartAxisPosition.Left:\n axis.translation.y = axisBound.y + (_c = axisWidths.top, _c !== null && _c !== void 0 ? _c : 0);\n axis.translation.x = this.clampToOutsideSeriesRect(seriesRect, axisBound.x + axisOffset + axisThickness, 'x', 1);\n break;\n case ChartAxisPosition.Right:\n axis.translation.y = axisBound.y + (_d = axisWidths.top, _d !== null && _d !== void 0 ? _d : 0);\n axis.translation.x = this.clampToOutsideSeriesRect(seriesRect, axisBound.x + axisBound.width - axisThickness - axisOffset, 'x', -1);\n break;\n }\n axis.updatePosition();\n };\n CartesianChart.className = 'CartesianChart';\n CartesianChart.type = 'cartesian';\n return CartesianChart;\n}(Chart);\nvar __extends$2c = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __awaiter$9 = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$9 = undefined && undefined.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar HierarchyChart = /** @class */function (_super) {\n __extends$2c(HierarchyChart, _super);\n function HierarchyChart(document, overrideDevicePixelRatio) {\n if (document === void 0) {\n document = window.document;\n }\n var _this = _super.call(this, document, overrideDevicePixelRatio) || this;\n _this._data = {};\n _this._seriesRoot = new ClipRect();\n // Prevent the scene from rendering chart components in an invalid state\n // (before first layout is performed).\n _this.scene.root.visible = false;\n var root = _this.scene.root;\n root.append(_this.seriesRoot);\n root.append(_this.legend.group);\n return _this;\n }\n Object.defineProperty(HierarchyChart.prototype, \"seriesRoot\", {\n get: function () {\n return this._seriesRoot;\n },\n enumerable: true,\n configurable: true\n });\n HierarchyChart.prototype.performLayout = function () {\n return __awaiter$9(this, void 0, void 0, function () {\n var _a, width, height, legend, shrinkRect, _b, captionAutoPadding, legendAutoPadding, legendPadding, padding, seriesRoot;\n return __generator$9(this, function (_c) {\n this.scene.root.visible = true;\n _a = this, width = _a.width, height = _a.height, legend = _a.legend;\n shrinkRect = new BBox$1(0, 0, width, height);\n _b = this.positionCaptions().captionAutoPadding, captionAutoPadding = _b === void 0 ? 0 : _b;\n this.positionLegend(captionAutoPadding);\n if (legend.enabled && legend.data.length) {\n legendAutoPadding = this.legendAutoPadding;\n legendPadding = this.legend.spacing;\n shrinkRect.x += legendAutoPadding.left;\n shrinkRect.y += legendAutoPadding.top;\n shrinkRect.width -= legendAutoPadding.left + legendAutoPadding.right;\n shrinkRect.height -= legendAutoPadding.top + legendAutoPadding.bottom;\n switch (this.legend.position) {\n case 'right':\n shrinkRect.width -= legendPadding;\n break;\n case 'bottom':\n shrinkRect.height -= legendPadding;\n break;\n case 'left':\n shrinkRect.x += legendPadding;\n shrinkRect.width -= legendPadding;\n break;\n case 'top':\n shrinkRect.y += legendPadding;\n shrinkRect.height -= legendPadding;\n break;\n }\n }\n padding = this.padding;\n shrinkRect.x += padding.left;\n shrinkRect.width -= padding.left + padding.right;\n shrinkRect.y += padding.top + captionAutoPadding;\n shrinkRect.height -= padding.top + captionAutoPadding + padding.bottom;\n this.seriesRect = shrinkRect;\n this.series.forEach(function (series) {\n series.group.translationX = Math.floor(shrinkRect.x);\n series.group.translationY = Math.floor(shrinkRect.y);\n series.update({\n seriesRect: shrinkRect\n }); // this has to happen after the `updateAxes` call\n });\n seriesRoot = this.seriesRoot;\n seriesRoot.x = shrinkRect.x;\n seriesRoot.y = shrinkRect.y;\n seriesRoot.width = shrinkRect.width;\n seriesRoot.height = shrinkRect.height;\n return [2 /*return*/];\n });\n });\n };\n HierarchyChart.className = 'HierarchyChart';\n HierarchyChart.type = 'hierarchy';\n return HierarchyChart;\n}(Chart);\nvar __extends$2b = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar GroupedCategoryChart = /** @class */function (_super) {\n __extends$2b(GroupedCategoryChart, _super);\n function GroupedCategoryChart() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GroupedCategoryChart.className = 'GroupedCategoryChart';\n GroupedCategoryChart.type = 'groupedCategory';\n return GroupedCategoryChart;\n}(CartesianChart);\nvar __extends$2a = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar PolarSeries = /** @class */function (_super) {\n __extends$2a(PolarSeries, _super);\n function PolarSeries(_a) {\n var _b;\n var _c = _a.useLabelLayer,\n useLabelLayer = _c === void 0 ? false : _c;\n var _this = _super.call(this, {\n useLabelLayer: useLabelLayer,\n pickModes: [SeriesNodePickMode.EXACT_SHAPE_MATCH]\n }) || this;\n _this.directionKeys = (_b = {}, _b[ChartAxisDirection.X] = ['angleKey'], _b[ChartAxisDirection.Y] = ['radiusKey'], _b);\n /**\n * The center of the polar series (for example, the center of a pie).\n * If the polar chart has multiple series, all of them will have their\n * center set to the same value as a result of the polar chart layout.\n * The center coordinates are not supposed to be set by the user.\n */\n _this.centerX = 0;\n _this.centerY = 0;\n /**\n * The maximum radius the series can use.\n * This value is set automatically as a result of the polar chart layout\n * and is not supposed to be set by the user.\n */\n _this.radius = 0;\n return _this;\n }\n PolarSeries.prototype.getLabelData = function () {\n return [];\n };\n return PolarSeries;\n}(Series);\nvar __extends$29 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __awaiter$8 = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$8 = undefined && undefined.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar PolarChart = /** @class */function (_super) {\n __extends$29(PolarChart, _super);\n function PolarChart(document, overrideDevicePixelRatio) {\n if (document === void 0) {\n document = window.document;\n }\n var _this = _super.call(this, document, overrideDevicePixelRatio) || this;\n _this.padding = new Padding$1(40);\n _this.scene.root.append(_this.legend.group);\n return _this;\n }\n Object.defineProperty(PolarChart.prototype, \"seriesRoot\", {\n get: function () {\n return this.scene.root;\n },\n enumerable: true,\n configurable: true\n });\n PolarChart.prototype.performLayout = function () {\n return __awaiter$8(this, void 0, void 0, function () {\n var shrinkRect, _a, captionAutoPadding, legendAutoPadding, legendPadding, padding, centerX, centerY, radius;\n return __generator$8(this, function (_b) {\n shrinkRect = new BBox$1(0, 0, this.width, this.height);\n _a = this.positionCaptions().captionAutoPadding, captionAutoPadding = _a === void 0 ? 0 : _a;\n this.positionLegend(captionAutoPadding);\n shrinkRect.y += captionAutoPadding;\n shrinkRect.height -= captionAutoPadding;\n if (this.legend.enabled && this.legend.data.length) {\n legendAutoPadding = this.legendAutoPadding;\n shrinkRect.x += legendAutoPadding.left;\n shrinkRect.y += legendAutoPadding.top;\n shrinkRect.width -= legendAutoPadding.left + legendAutoPadding.right;\n shrinkRect.height -= legendAutoPadding.top + legendAutoPadding.bottom;\n legendPadding = this.legend.spacing;\n switch (this.legend.position) {\n case 'right':\n shrinkRect.width -= legendPadding;\n break;\n case 'bottom':\n shrinkRect.height -= legendPadding;\n break;\n case 'left':\n shrinkRect.x += legendPadding;\n shrinkRect.width -= legendPadding;\n break;\n case 'top':\n shrinkRect.y += legendPadding;\n shrinkRect.height -= legendPadding;\n break;\n }\n }\n padding = this.padding;\n shrinkRect.x += padding.left;\n shrinkRect.y += padding.top;\n shrinkRect.width -= padding.left + padding.right;\n shrinkRect.height -= padding.top + padding.bottom;\n this.seriesRect = shrinkRect;\n centerX = shrinkRect.x + shrinkRect.width / 2;\n centerY = shrinkRect.y + shrinkRect.height / 2;\n radius = Math.max(0, Math.min(shrinkRect.width, shrinkRect.height) / 2);\n this.series.forEach(function (series) {\n if (series instanceof PolarSeries) {\n series.centerX = centerX;\n series.centerY = centerY;\n series.radius = radius;\n }\n });\n return [2 /*return*/];\n });\n });\n };\n PolarChart.className = 'PolarChart';\n PolarChart.type = 'polar';\n return PolarChart;\n}(Chart);\nfunction equal(a, b) {\n if (a === b) return true;\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n var length_1,\n i = void 0;\n if (Array.isArray(a)) {\n length_1 = a.length;\n if (length_1 != b.length) return false;\n for (i = length_1; i-- !== 0;) if (!equal(a[i], b[i])) return false;\n return true;\n }\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n var keys = Object.keys(a);\n length_1 = keys.length;\n if (length_1 !== Object.keys(b).length) return false;\n for (i = length_1; i-- !== 0;) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n for (i = length_1; i-- !== 0;) {\n var key = keys[i];\n if (!equal(a[key], b[key])) return false;\n }\n return true;\n }\n // true if both NaN, false otherwise\n return a !== a && b !== b;\n}\nvar __read$t = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar interpolatePattern = /(#\\{(.*?)\\})/g;\nfunction interpolate(input, values, formats) {\n return input.replace(interpolatePattern, function () {\n var name = arguments[2];\n var _a = __read$t(name.split(':'), 2),\n valueName = _a[0],\n formatName = _a[1];\n var value = values[valueName];\n if (typeof value === 'number') {\n var format = formatName && formats && formats[formatName];\n if (format) {\n var _b = format,\n locales = _b.locales,\n options = _b.options;\n return value.toLocaleString(locales, options);\n }\n return String(value);\n }\n if (value instanceof Date) {\n var format = formatName && formats && formats[formatName];\n if (typeof format === 'string') {\n var formatter = locale$1.format(format);\n return formatter(value);\n }\n return value.toDateString();\n }\n if (typeof value === 'string' || value && value.toString) {\n return String(value);\n }\n return '';\n });\n}\nvar __decorate$1h = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar Label$1 = /** @class */function () {\n function Label() {\n this.enabled = true;\n this.fontSize = 12;\n this.fontFamily = 'Verdana, sans-serif';\n this.fontStyle = undefined;\n this.fontWeight = undefined;\n this.color = 'rgba(70, 70, 70, 1)';\n }\n Label.prototype.getFont = function () {\n return getFont$2(this.fontSize, this.fontFamily, this.fontStyle, this.fontWeight);\n };\n __decorate$1h([Validate(BOOLEAN)], Label.prototype, \"enabled\", void 0);\n __decorate$1h([Validate(NUMBER(0))], Label.prototype, \"fontSize\", void 0);\n __decorate$1h([Validate(STRING)], Label.prototype, \"fontFamily\", void 0);\n __decorate$1h([Validate(OPT_FONT_STYLE)], Label.prototype, \"fontStyle\", void 0);\n __decorate$1h([Validate(OPT_FONT_WEIGHT)], Label.prototype, \"fontWeight\", void 0);\n __decorate$1h([Validate(COLOR_STRING)], Label.prototype, \"color\", void 0);\n return Label;\n}();\nvar element = null;\nfunction sanitizeHtml(text) {\n element = element || document.createElement('div');\n if (!text) {\n return '';\n }\n element.textContent = text;\n return element.innerHTML;\n}\nvar __extends$28 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1g = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __awaiter$7 = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$7 = undefined && undefined.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __values$d = undefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$s = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread$d = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$s(arguments[i]));\n return ar;\n};\nvar AreaSeriesLabel = /** @class */function (_super) {\n __extends$28(AreaSeriesLabel, _super);\n function AreaSeriesLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.formatter = undefined;\n return _this;\n }\n __decorate$1g([Validate(OPT_FUNCTION)], AreaSeriesLabel.prototype, \"formatter\", void 0);\n return AreaSeriesLabel;\n}(Label$1);\nvar AreaSeriesTooltip = /** @class */function (_super) {\n __extends$28(AreaSeriesTooltip, _super);\n function AreaSeriesTooltip() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.renderer = undefined;\n _this.format = undefined;\n return _this;\n }\n __decorate$1g([Validate(OPT_FUNCTION)], AreaSeriesTooltip.prototype, \"renderer\", void 0);\n __decorate$1g([Validate(OPT_STRING)], AreaSeriesTooltip.prototype, \"format\", void 0);\n return AreaSeriesTooltip;\n}(SeriesTooltip);\nvar AreaSeriesTag = /*#__PURE__*/function (AreaSeriesTag) {\n AreaSeriesTag[AreaSeriesTag[\"Fill\"] = 0] = \"Fill\";\n AreaSeriesTag[AreaSeriesTag[\"Stroke\"] = 1] = \"Stroke\";\n AreaSeriesTag[AreaSeriesTag[\"Marker\"] = 2] = \"Marker\";\n AreaSeriesTag[AreaSeriesTag[\"Label\"] = 3] = \"Label\";\n return AreaSeriesTag;\n}(AreaSeriesTag || {});\nvar AreaSeries = /** @class */function (_super) {\n __extends$28(AreaSeries, _super);\n function AreaSeries() {\n var _this = _super.call(this, {\n pathsPerSeries: 2,\n pathsZIndexSubOrderOffset: [0, 1000],\n pickGroupIncludes: ['markers'],\n features: ['markers'],\n renderLayerPerSubSeries: false\n }) || this;\n _this.tooltip = new AreaSeriesTooltip();\n _this.xData = [];\n _this.yData = [];\n _this.yDomain = [];\n _this.xDomain = [];\n _this.directionKeys = {\n x: ['xKey'],\n y: ['yKeys']\n };\n _this.marker = new CartesianSeriesMarker();\n _this.label = new AreaSeriesLabel();\n _this.fills = ['#c16068', '#a2bf8a', '#ebcc87', '#80a0c3', '#b58dae', '#85c0d1'];\n _this.strokes = ['#874349', '#718661', '#a48f5f', '#5a7088', '#7f637a', '#5d8692'];\n _this.fillOpacity = 1;\n _this.strokeOpacity = 1;\n _this.lineDash = [0];\n _this.lineDashOffset = 0;\n _this._xKey = '';\n _this.xName = '';\n _this._yKeys = [];\n _this._visibles = [];\n _this.yNames = [];\n _this.strokeWidth = 2;\n _this.shadow = undefined;\n var _a = _this,\n marker = _a.marker,\n label = _a.label;\n marker.enabled = false;\n label.enabled = false;\n return _this;\n }\n Object.defineProperty(AreaSeries.prototype, \"xKey\", {\n get: function () {\n return this._xKey;\n },\n set: function (value) {\n this._xKey = value;\n this.xData = [];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AreaSeries.prototype, \"yKeys\", {\n get: function () {\n return this._yKeys;\n },\n set: function (values) {\n if (!equal(this._yKeys, values)) {\n this._yKeys = values;\n this.yData = [];\n this.processSeriesItemEnabled();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AreaSeries.prototype, \"visibles\", {\n get: function () {\n return this._visibles;\n },\n set: function (visibles) {\n this._visibles = visibles;\n this.processSeriesItemEnabled();\n },\n enumerable: true,\n configurable: true\n });\n AreaSeries.prototype.processSeriesItemEnabled = function () {\n var _a = this,\n seriesItemEnabled = _a.seriesItemEnabled,\n _b = _a._visibles,\n visibles = _b === void 0 ? [] : _b;\n seriesItemEnabled.clear();\n this._yKeys.forEach(function (key, idx) {\n var _a;\n return seriesItemEnabled.set(key, (_a = visibles[idx], _a !== null && _a !== void 0 ? _a : true));\n });\n };\n AreaSeries.prototype.setColors = function (fills, strokes) {\n this.fills = fills;\n this.strokes = strokes;\n };\n Object.defineProperty(AreaSeries.prototype, \"normalizedTo\", {\n get: function () {\n return this._normalizedTo;\n },\n set: function (value) {\n var absValue = value ? Math.abs(value) : undefined;\n if (this._normalizedTo !== absValue) {\n this._normalizedTo = absValue;\n }\n },\n enumerable: true,\n configurable: true\n });\n AreaSeries.prototype.processData = function () {\n return __awaiter$7(this, void 0, void 0, function () {\n var _a, xKey, yKeys, seriesItemEnabled, xAxis, yAxis, normalizedTo, data, isContinuousX, isContinuousY, normalized, yData, xData, xValues, missingYKeys, _loop_1, data_1, data_1_1, datum, missingYKeysString_1, yMin, yMax, i, total, yData_1, yData_1_1, seriesYs, y, normalizedTotal, yData_2, yData_2_1, seriesYs, normalizedY, domainWhitespaceAdjustment;\n var e_1, _b, e_2, _c, e_3, _d;\n return __generator$7(this, function (_e) {\n _a = this, xKey = _a.xKey, yKeys = _a.yKeys, seriesItemEnabled = _a.seriesItemEnabled, xAxis = _a.xAxis, yAxis = _a.yAxis, normalizedTo = _a.normalizedTo;\n data = xKey && yKeys.length && this.data ? this.data : [];\n if (!xAxis || !yAxis) {\n return [2 /*return*/];\n }\n isContinuousX = xAxis.scale instanceof ContinuousScale$1;\n isContinuousY = yAxis.scale instanceof ContinuousScale$1;\n normalized = normalizedTo && isFinite(normalizedTo);\n yData = [];\n xData = [];\n xValues = [];\n missingYKeys = new Set(yKeys);\n _loop_1 = function (datum) {\n // X datum\n if (!(xKey in datum)) {\n doOnce$1(function () {\n return console.warn(\"AG Charts - The key '\" + xKey + \"' was not found in the data: \", datum);\n }, xKey + \" not found in data\");\n return \"continue\";\n }\n var xDatum = checkDatum(datum[xKey], isContinuousX);\n if (isContinuousX && xDatum === undefined) {\n return \"continue\";\n } else {\n xValues.push(xDatum);\n xData.push({\n xDatum: xDatum,\n seriesDatum: datum\n });\n }\n // Y datum\n yKeys.forEach(function (yKey, i) {\n var seriesYs = yData[i] || (yData[i] = []);\n if (!(yKey in datum)) {\n seriesYs.push(NaN);\n return;\n }\n missingYKeys.delete(yKey);\n var value = datum[yKey];\n if (!seriesItemEnabled.get(yKey)) {\n seriesYs.push(NaN);\n } else {\n var yDatum = checkDatum(value, isContinuousY);\n seriesYs.push(yDatum);\n }\n });\n };\n try {\n for (data_1 = __values$d(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) {\n datum = data_1_1.value;\n _loop_1(datum);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (data_1_1 && !data_1_1.done && (_b = data_1.return)) _b.call(data_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n if (missingYKeys.size > 0) {\n missingYKeysString_1 = JSON.stringify(__spread$d(missingYKeys));\n doOnce$1(function () {\n return console.log(\"AG Charts - yKeys \" + missingYKeysString_1 + \" were not found in the data.\");\n }, missingYKeysString_1 + \" not found in data.\");\n }\n this.yData = yData;\n this.xData = xData;\n this.xDomain = isContinuousX ? this.fixNumericExtent(extent$1(xValues, isContinuous$1), xAxis) : xValues;\n yMin = undefined;\n yMax = undefined;\n for (i = 0; i < xData.length; i++) {\n total = {\n sum: 0,\n absSum: 0\n };\n try {\n for (yData_1 = (e_2 = void 0, __values$d(yData)), yData_1_1 = yData_1.next(); !yData_1_1.done; yData_1_1 = yData_1.next()) {\n seriesYs = yData_1_1.value;\n if (seriesYs[i] === undefined || isNaN(seriesYs[i])) {\n continue;\n }\n y = +seriesYs[i];\n total.absSum += Math.abs(y);\n total.sum += y;\n if (total.sum >= (yMax !== null && yMax !== void 0 ? yMax : 0)) {\n yMax = total.sum;\n } else if (total.sum <= (yMin !== null && yMin !== void 0 ? yMin : 0)) {\n yMin = total.sum;\n }\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (yData_1_1 && !yData_1_1.done && (_c = yData_1.return)) _c.call(yData_1);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n if (!(normalized && normalizedTo)) {\n continue;\n }\n normalizedTotal = undefined;\n try {\n // normalize y values using the absolute sum of y values in the stack\n for (yData_2 = (e_3 = void 0, __values$d(yData)), yData_2_1 = yData_2.next(); !yData_2_1.done; yData_2_1 = yData_2.next()) {\n seriesYs = yData_2_1.value;\n normalizedY = +seriesYs[i] / total.absSum * normalizedTo;\n seriesYs[i] = normalizedY;\n if (!isNaN(normalizedY)) {\n // sum normalized values to get updated yMin and yMax of normalized area\n normalizedTotal = (normalizedTotal !== null && normalizedTotal !== void 0 ? normalizedTotal : 0) + normalizedY;\n } else {\n continue;\n }\n if (normalizedTotal >= (yMax !== null && yMax !== void 0 ? yMax : 0)) {\n yMax = normalizedTotal;\n } else if (normalizedTotal <= (yMin !== null && yMin !== void 0 ? yMin : 0)) {\n yMin = normalizedTotal;\n }\n }\n } catch (e_3_1) {\n e_3 = {\n error: e_3_1\n };\n } finally {\n try {\n if (yData_2_1 && !yData_2_1.done && (_d = yData_2.return)) _d.call(yData_2);\n } finally {\n if (e_3) throw e_3.error;\n }\n }\n }\n if (normalized && normalizedTo) {\n domainWhitespaceAdjustment = 0.5;\n // set the yMin and yMax based on cumulative sum of normalized values\n yMin = (yMin !== null && yMin !== void 0 ? yMin : 0) < -normalizedTo * domainWhitespaceAdjustment ? -normalizedTo : yMin;\n yMax = (yMax !== null && yMax !== void 0 ? yMax : 0) > normalizedTo * domainWhitespaceAdjustment ? normalizedTo : yMax;\n }\n this.yDomain = this.fixNumericExtent(yMin === undefined && yMax === undefined ? undefined : [yMin !== null && yMin !== void 0 ? yMin : 0, yMax !== null && yMax !== void 0 ? yMax : 0], yAxis);\n return [2 /*return*/];\n });\n });\n };\n AreaSeries.prototype.getDomain = function (direction) {\n if (direction === ChartAxisDirection.X) {\n return this.xDomain;\n } else {\n return this.yDomain;\n }\n };\n AreaSeries.prototype.createNodeData = function () {\n return __awaiter$7(this, void 0, void 0, function () {\n var _a, data, xAxis, yAxis, xData, yData, contexts, _b, yKeys, marker, label, fills, strokes, seriesId, xScale, yScale, continuousY, xOffset, cumulativePathValues, cumulativeMarkerValues, createPathCoordinates, createMarkerCoordinate;\n var _this = this;\n return __generator$7(this, function (_c) {\n _a = this, data = _a.data, xAxis = _a.xAxis, yAxis = _a.yAxis, xData = _a.xData, yData = _a.yData;\n if (!data || !xAxis || !yAxis || !xData.length || !yData.length) {\n return [2 /*return*/, []];\n }\n contexts = [];\n _b = this, yKeys = _b.yKeys, marker = _b.marker, label = _b.label, fills = _b.fills, strokes = _b.strokes, seriesId = _b.id;\n xScale = xAxis.scale;\n yScale = yAxis.scale;\n continuousY = yScale instanceof ContinuousScale$1;\n xOffset = (xScale.bandwidth || 0) / 2;\n cumulativePathValues = new Array(xData.length).fill(null).map(function () {\n return {\n left: 0,\n right: 0\n };\n });\n cumulativeMarkerValues = new Array(xData.length).fill(0);\n createPathCoordinates = function (xDatum, yDatum, idx, side) {\n var x = xScale.convert(xDatum) + xOffset;\n var prevY = cumulativePathValues[idx][side];\n var currY = cumulativePathValues[idx][side] + yDatum;\n var prevYCoordinate = yScale.convert(prevY, continuousY ? clamper$1 : undefined);\n var currYCoordinate = yScale.convert(currY, continuousY ? clamper$1 : undefined);\n cumulativePathValues[idx][side] = currY;\n return [{\n x: x,\n y: currYCoordinate,\n size: marker.size\n }, {\n x: x,\n y: prevYCoordinate,\n size: marker.size\n }];\n };\n createMarkerCoordinate = function (xDatum, yDatum, idx, rawYDatum) {\n var currY;\n // if not normalized, the invalid data points will be processed as `undefined` in processData()\n // if normalized, the invalid data points will be processed as 0 rather than `undefined`\n // check if unprocessed datum is valid as we only want to show markers for valid points\n var normalized = _this.normalizedTo && isFinite(_this.normalizedTo);\n var normalizedAndValid = normalized && continuousY && isContinuous$1(rawYDatum);\n var valid = !normalized && !isNaN(rawYDatum) || normalizedAndValid;\n if (valid) {\n currY = cumulativeMarkerValues[idx] += yDatum;\n }\n var x = xScale.convert(xDatum) + xOffset;\n var y = yScale.convert(currY, continuousY ? clamper$1 : undefined);\n return {\n x: x,\n y: y,\n size: marker.size\n };\n };\n yData.forEach(function (seriesYs, seriesIdx) {\n var yKey = yKeys[seriesIdx];\n var labelSelectionData = [];\n var markerSelectionData = [];\n var strokeSelectionData = {\n itemId: yKey,\n points: [],\n yValues: []\n };\n var fillSelectionData = {\n itemId: yKey,\n points: []\n };\n contexts[seriesIdx] = {\n itemId: yKey,\n fillSelectionData: fillSelectionData,\n labelData: labelSelectionData,\n nodeData: markerSelectionData,\n strokeSelectionData: strokeSelectionData\n };\n if (!_this.seriesItemEnabled.get(yKey)) {\n return;\n }\n var fillPoints = fillSelectionData.points;\n var fillPhantomPoints = [];\n var strokePoints = strokeSelectionData.points;\n var yValues = strokeSelectionData.yValues;\n seriesYs.forEach(function (rawYDatum, datumIdx) {\n var _a;\n var yDatum = isNaN(rawYDatum) ? undefined : rawYDatum;\n var _b = xData[datumIdx],\n xDatum = _b.xDatum,\n seriesDatum = _b.seriesDatum;\n var nextXDatum = (_a = xData[datumIdx + 1]) === null || _a === void 0 ? void 0 : _a.xDatum;\n var rawNextYDatum = seriesYs[datumIdx + 1];\n var nextYDatum = isNaN(rawNextYDatum) ? undefined : rawNextYDatum;\n // marker data\n var point = createMarkerCoordinate(xDatum, +yDatum, datumIdx, seriesDatum[yKey]);\n if (marker) {\n markerSelectionData.push({\n index: datumIdx,\n series: _this,\n itemId: yKey,\n datum: seriesDatum,\n yValue: yDatum,\n yKey: yKey,\n point: point,\n fill: fills[seriesIdx % fills.length],\n stroke: strokes[seriesIdx % strokes.length]\n });\n }\n // label data\n var labelText;\n if (label.formatter) {\n labelText = label.formatter({\n value: yDatum,\n seriesId: seriesId\n });\n } else {\n labelText = isNumber$1(yDatum) ? Number(yDatum).toFixed(2) : String(yDatum);\n }\n if (label) {\n labelSelectionData.push({\n index: datumIdx,\n itemId: yKey,\n point: point,\n label: _this.seriesItemEnabled.get(yKey) && labelText ? {\n text: labelText,\n fontStyle: label.fontStyle,\n fontWeight: label.fontWeight,\n fontSize: label.fontSize,\n fontFamily: label.fontFamily,\n textAlign: 'center',\n textBaseline: 'bottom',\n fill: label.color\n } : undefined\n });\n }\n // fill data\n // Handle data in pairs of current and next x and y values\n var windowX = [xDatum, nextXDatum];\n var windowY = [yDatum, nextYDatum];\n if (windowX.some(function (v) {\n return v == undefined;\n })) {\n return;\n }\n if (windowY.some(function (v) {\n return v == undefined;\n })) {\n windowY[0] = 0;\n windowY[1] = 0;\n }\n var currCoordinates = createPathCoordinates(windowX[0], +windowY[0], datumIdx, 'right');\n fillPoints.push(currCoordinates[0]);\n fillPhantomPoints.push(currCoordinates[1]);\n var nextCoordinates = createPathCoordinates(windowX[1], +windowY[1], datumIdx, 'left');\n fillPoints.push(nextCoordinates[0]);\n fillPhantomPoints.push(nextCoordinates[1]);\n // stroke data\n strokePoints.push({\n x: NaN,\n y: NaN\n }); // moveTo\n yValues.push(undefined);\n strokePoints.push(currCoordinates[0]);\n yValues.push(yDatum);\n if (nextYDatum !== undefined) {\n strokePoints.push(nextCoordinates[0]);\n yValues.push(yDatum);\n }\n });\n for (var i = fillPhantomPoints.length - 1; i >= 0; i--) {\n fillPoints.push(fillPhantomPoints[i]);\n }\n });\n return [2 /*return*/, contexts];\n });\n });\n };\n AreaSeries.prototype.isPathOrSelectionDirty = function () {\n return this.marker.isDirty();\n };\n AreaSeries.prototype.updatePaths = function (opts) {\n return __awaiter$7(this, void 0, void 0, function () {\n var _a, fillSelectionData, strokeSelectionData, _b, fill, stroke;\n return __generator$7(this, function (_c) {\n _a = opts.contextData, fillSelectionData = _a.fillSelectionData, strokeSelectionData = _a.strokeSelectionData, _b = __read$s(opts.paths, 2), fill = _b[0], stroke = _b[1];\n fill.datum = fillSelectionData;\n fill.tag = AreaSeriesTag.Fill;\n fill.lineJoin = 'round';\n fill.stroke = undefined;\n fill.pointerEvents = PointerEvents$1.None;\n stroke.datum = strokeSelectionData;\n stroke.tag = AreaSeriesTag.Stroke;\n stroke.fill = undefined;\n stroke.lineJoin = stroke.lineCap = 'round';\n stroke.pointerEvents = PointerEvents$1.None;\n return [2 /*return*/];\n });\n });\n };\n AreaSeries.prototype.updatePathNodes = function (opts) {\n return __awaiter$7(this, void 0, void 0, function () {\n var _a, fill, stroke, seriesIdx, itemId, _b, strokes, fills, fillOpacity, strokeOpacity, strokeWidth, shadow, points, path, i, points_1, points_1_1, p, _c, points, yValues, moveTo_1, path, i, points_2, points_2_1, p;\n var e_4, _d, e_5, _e;\n return __generator$7(this, function (_f) {\n _a = __read$s(opts.paths, 2), fill = _a[0], stroke = _a[1], seriesIdx = opts.seriesIdx, itemId = opts.itemId;\n _b = this, strokes = _b.strokes, fills = _b.fills, fillOpacity = _b.fillOpacity, strokeOpacity = _b.strokeOpacity, strokeWidth = _b.strokeWidth, shadow = _b.shadow;\n {\n points = fill.datum.points;\n fill.fill = fills[seriesIdx % fills.length];\n fill.fillOpacity = fillOpacity;\n fill.strokeOpacity = strokeOpacity;\n fill.strokeWidth = strokeWidth;\n fill.lineDash = this.lineDash;\n fill.lineDashOffset = this.lineDashOffset;\n fill.fillShadow = shadow;\n path = fill.path;\n path.clear({\n trackChanges: true\n });\n i = 0;\n try {\n for (points_1 = __values$d(points), points_1_1 = points_1.next(); !points_1_1.done; points_1_1 = points_1.next()) {\n p = points_1_1.value;\n if (i++ > 0) {\n path.lineTo(p.x, p.y);\n } else {\n path.moveTo(p.x, p.y);\n }\n }\n } catch (e_4_1) {\n e_4 = {\n error: e_4_1\n };\n } finally {\n try {\n if (points_1_1 && !points_1_1.done && (_d = points_1.return)) _d.call(points_1);\n } finally {\n if (e_4) throw e_4.error;\n }\n }\n path.closePath();\n fill.checkPathDirty();\n }\n {\n _c = stroke.datum, points = _c.points, yValues = _c.yValues;\n moveTo_1 = true;\n stroke.stroke = strokes[seriesIdx % strokes.length];\n stroke.strokeWidth = this.getStrokeWidth(this.strokeWidth, {\n itemId: itemId\n });\n stroke.strokeOpacity = strokeOpacity;\n stroke.lineDash = this.lineDash;\n stroke.lineDashOffset = this.lineDashOffset;\n path = stroke.path;\n path.clear({\n trackChanges: true\n });\n i = 0;\n try {\n for (points_2 = __values$d(points), points_2_1 = points_2.next(); !points_2_1.done; points_2_1 = points_2.next()) {\n p = points_2_1.value;\n if (yValues[i++] === undefined) {\n moveTo_1 = true;\n } else if (moveTo_1) {\n path.moveTo(p.x, p.y);\n moveTo_1 = false;\n } else {\n path.lineTo(p.x, p.y);\n }\n }\n } catch (e_5_1) {\n e_5 = {\n error: e_5_1\n };\n } finally {\n try {\n if (points_2_1 && !points_2_1.done && (_e = points_2.return)) _e.call(points_2);\n } finally {\n if (e_5) throw e_5.error;\n }\n }\n stroke.checkPathDirty();\n }\n return [2 /*return*/];\n });\n });\n };\n AreaSeries.prototype.updateMarkerSelection = function (opts) {\n return __awaiter$7(this, void 0, void 0, function () {\n var nodeData, markerSelection, _a, enabled, shape, data, MarkerShape, updateMarkerSelection, enterMarkers;\n return __generator$7(this, function (_b) {\n nodeData = opts.nodeData, markerSelection = opts.markerSelection;\n _a = this.marker, enabled = _a.enabled, shape = _a.shape;\n data = enabled && nodeData ? nodeData : [];\n MarkerShape = getMarker$1(shape);\n if (this.marker.isDirty()) {\n markerSelection = markerSelection.setData([]);\n markerSelection.exit.remove();\n }\n updateMarkerSelection = markerSelection.setData(data);\n updateMarkerSelection.exit.remove();\n enterMarkers = updateMarkerSelection.enter.append(MarkerShape).each(function (marker) {\n marker.tag = AreaSeriesTag.Marker;\n });\n return [2 /*return*/, updateMarkerSelection.merge(enterMarkers)];\n });\n });\n };\n AreaSeries.prototype.updateMarkerNodes = function (opts) {\n return __awaiter$7(this, void 0, void 0, function () {\n var markerSelection, isDatumHighlighted, _a, seriesId, xKey, marker, seriesItemEnabled, yKeys, fills, strokes, seriesFillOpacity, _b, markerFillOpacity, strokeOpacity, _c, deprecatedFill, deprecatedStroke, deprecatedStrokeWidth, _d, _e, highlightedFill, _f, highlightFillOpacity, _g, highlightedStroke, _h, highlightedDatumStrokeWidth, size, formatter, markerStrokeWidth;\n return __generator$7(this, function (_j) {\n markerSelection = opts.markerSelection, isDatumHighlighted = opts.isHighlight;\n _a = this, seriesId = _a.id, xKey = _a.xKey, marker = _a.marker, seriesItemEnabled = _a.seriesItemEnabled, yKeys = _a.yKeys, fills = _a.fills, strokes = _a.strokes, seriesFillOpacity = _a.fillOpacity, _b = _a.marker.fillOpacity, markerFillOpacity = _b === void 0 ? seriesFillOpacity : _b, strokeOpacity = _a.strokeOpacity, _c = _a.highlightStyle, deprecatedFill = _c.fill, deprecatedStroke = _c.stroke, deprecatedStrokeWidth = _c.strokeWidth, _d = _c.item, _e = _d.fill, highlightedFill = _e === void 0 ? deprecatedFill : _e, _f = _d.fillOpacity, highlightFillOpacity = _f === void 0 ? markerFillOpacity : _f, _g = _d.stroke, highlightedStroke = _g === void 0 ? deprecatedStroke : _g, _h = _d.strokeWidth, highlightedDatumStrokeWidth = _h === void 0 ? deprecatedStrokeWidth : _h;\n size = marker.size, formatter = marker.formatter;\n markerStrokeWidth = marker.strokeWidth !== undefined ? marker.strokeWidth : this.strokeWidth;\n markerSelection.each(function (node, datum) {\n var _a, _b;\n var yKeyIndex = yKeys.indexOf(datum.yKey);\n var fill = isDatumHighlighted && highlightedFill !== undefined ? highlightedFill : marker.fill || fills[yKeyIndex % fills.length];\n var fillOpacity = isDatumHighlighted ? highlightFillOpacity : markerFillOpacity;\n var stroke = isDatumHighlighted && highlightedStroke !== undefined ? highlightedStroke : marker.stroke || strokes[yKeyIndex % fills.length];\n var strokeWidth = isDatumHighlighted && highlightedDatumStrokeWidth !== undefined ? highlightedDatumStrokeWidth : markerStrokeWidth;\n var format = undefined;\n if (formatter) {\n format = formatter({\n datum: datum.datum,\n xKey: xKey,\n yKey: datum.yKey,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n size: size,\n highlighted: isDatumHighlighted,\n seriesId: seriesId\n });\n }\n node.fill = format && format.fill || fill;\n node.stroke = format && format.stroke || stroke;\n node.strokeWidth = format && format.strokeWidth !== undefined ? format.strokeWidth : strokeWidth;\n node.fillOpacity = fillOpacity !== null && fillOpacity !== void 0 ? fillOpacity : 1;\n node.strokeOpacity = (_b = (_a = marker.strokeOpacity, _a !== null && _a !== void 0 ? _a : strokeOpacity), _b !== null && _b !== void 0 ? _b : 1);\n node.size = format && format.size !== undefined ? format.size : size;\n node.translationX = datum.point.x;\n node.translationY = datum.point.y;\n node.visible = node.size > 0 && !!seriesItemEnabled.get(datum.yKey) && !isNaN(datum.point.x) && !isNaN(datum.point.y);\n });\n if (!isDatumHighlighted) {\n this.marker.markClean();\n }\n return [2 /*return*/];\n });\n });\n };\n AreaSeries.prototype.updateLabelSelection = function (opts) {\n return __awaiter$7(this, void 0, void 0, function () {\n var labelData, labelSelection, updateLabels, enterLabels;\n return __generator$7(this, function (_a) {\n labelData = opts.labelData, labelSelection = opts.labelSelection;\n updateLabels = labelSelection.setData(labelData);\n updateLabels.exit.remove();\n enterLabels = updateLabels.enter.append(Text$1).each(function (text) {\n text.tag = AreaSeriesTag.Label;\n });\n return [2 /*return*/, updateLabels.merge(enterLabels)];\n });\n });\n };\n AreaSeries.prototype.updateLabelNodes = function (opts) {\n return __awaiter$7(this, void 0, void 0, function () {\n var labelSelection, _a, labelEnabled, fontStyle, fontWeight, fontSize, fontFamily, color;\n return __generator$7(this, function (_b) {\n labelSelection = opts.labelSelection;\n _a = this.label, labelEnabled = _a.enabled, fontStyle = _a.fontStyle, fontWeight = _a.fontWeight, fontSize = _a.fontSize, fontFamily = _a.fontFamily, color = _a.color;\n labelSelection.each(function (text, datum) {\n var point = datum.point,\n label = datum.label;\n if (label && labelEnabled) {\n text.fontStyle = fontStyle;\n text.fontWeight = fontWeight;\n text.fontSize = fontSize;\n text.fontFamily = fontFamily;\n text.textAlign = label.textAlign;\n text.textBaseline = label.textBaseline;\n text.text = label.text;\n text.x = point.x;\n text.y = point.y - 10;\n text.fill = color;\n text.visible = true;\n } else {\n text.visible = false;\n }\n });\n return [2 /*return*/];\n });\n });\n };\n AreaSeries.prototype.getNodeClickEvent = function (event, datum) {\n return new CartesianSeriesNodeClickEvent(this.xKey, datum.yKey, event, datum, this);\n };\n AreaSeries.prototype.getTooltipHtml = function (nodeDatum) {\n var _a = this,\n xKey = _a.xKey,\n seriesId = _a.id;\n var yKey = nodeDatum.yKey;\n if (!(xKey && yKey) || !this.seriesItemEnabled.get(yKey)) {\n return '';\n }\n var datum = nodeDatum.datum;\n var xValue = datum[xKey];\n var yValue = datum[yKey];\n var _b = this,\n xAxis = _b.xAxis,\n yAxis = _b.yAxis;\n if (!(xAxis && yAxis && isNumber$1(yValue))) {\n return '';\n }\n var _c = this,\n xName = _c.xName,\n yKeys = _c.yKeys,\n yNames = _c.yNames,\n yData = _c.yData,\n fills = _c.fills,\n strokes = _c.strokes,\n tooltip = _c.tooltip,\n marker = _c.marker;\n var size = marker.size,\n markerFormatter = marker.formatter,\n markerStrokeWidth = marker.strokeWidth,\n markerFill = marker.fill,\n markerStroke = marker.stroke;\n var xString = xAxis.formatDatum(xValue);\n var yString = yAxis.formatDatum(yValue);\n var yKeyIndex = yKeys.indexOf(yKey);\n var seriesYs = yData[yKeyIndex];\n var processedYValue = seriesYs[nodeDatum.index];\n var yName = yNames[yKeyIndex];\n var title = sanitizeHtml(yName);\n var content = sanitizeHtml(xString + ': ' + yString);\n var strokeWidth = markerStrokeWidth !== undefined ? markerStrokeWidth : this.strokeWidth;\n var fill = markerFill || fills[yKeyIndex % fills.length];\n var stroke = markerStroke || strokes[yKeyIndex % fills.length];\n var format = undefined;\n if (markerFormatter) {\n format = markerFormatter({\n datum: datum,\n xKey: xKey,\n yKey: yKey,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n size: size,\n highlighted: false,\n seriesId: seriesId\n });\n }\n var color = format && format.fill || fill;\n var defaults = {\n title: title,\n backgroundColor: color,\n content: content\n };\n var tooltipRenderer = tooltip.renderer,\n tooltipFormat = tooltip.format;\n if (tooltipFormat || tooltipRenderer) {\n var params = {\n datum: datum,\n xKey: xKey,\n xName: xName,\n xValue: xValue,\n yKey: yKey,\n yValue: yValue,\n processedYValue: processedYValue,\n yName: yName,\n color: color,\n title: title,\n seriesId: seriesId\n };\n if (tooltipFormat) {\n return toTooltipHtml$1({\n content: interpolate(tooltipFormat, params)\n }, defaults);\n }\n if (tooltipRenderer) {\n return toTooltipHtml$1(tooltipRenderer(params), defaults);\n }\n }\n return toTooltipHtml$1(defaults);\n };\n AreaSeries.prototype.getLegendData = function () {\n var _a, _b;\n var _c = this,\n data = _c.data,\n id = _c.id,\n xKey = _c.xKey,\n yKeys = _c.yKeys,\n yNames = _c.yNames,\n seriesItemEnabled = _c.seriesItemEnabled,\n marker = _c.marker,\n fills = _c.fills,\n strokes = _c.strokes,\n fillOpacity = _c.fillOpacity,\n strokeOpacity = _c.strokeOpacity;\n if (!data || !data.length || !xKey || !yKeys.length) {\n return [];\n }\n var legendData = [];\n // Area stacks should be listed in the legend in reverse order, for symmetry with the\n // vertical stack display order.\n for (var index = yKeys.length - 1; index >= 0; index--) {\n var yKey = yKeys[index];\n legendData.push({\n id: id,\n itemId: yKey,\n seriesId: id,\n enabled: seriesItemEnabled.get(yKey) || false,\n label: {\n text: yNames[index] || yKeys[index]\n },\n marker: {\n shape: marker.shape,\n fill: marker.fill || fills[index % fills.length],\n stroke: marker.stroke || strokes[index % strokes.length],\n fillOpacity: (_a = marker.fillOpacity, _a !== null && _a !== void 0 ? _a : fillOpacity),\n strokeOpacity: (_b = marker.strokeOpacity, _b !== null && _b !== void 0 ? _b : strokeOpacity)\n }\n });\n }\n return legendData;\n };\n AreaSeries.prototype.isLabelEnabled = function () {\n return this.label.enabled;\n };\n AreaSeries.className = 'AreaSeries';\n AreaSeries.type = 'area';\n __decorate$1g([Validate(COLOR_STRING_ARRAY)], AreaSeries.prototype, \"fills\", void 0);\n __decorate$1g([Validate(COLOR_STRING_ARRAY)], AreaSeries.prototype, \"strokes\", void 0);\n __decorate$1g([Validate(NUMBER(0, 1))], AreaSeries.prototype, \"fillOpacity\", void 0);\n __decorate$1g([Validate(NUMBER(0, 1))], AreaSeries.prototype, \"strokeOpacity\", void 0);\n __decorate$1g([Validate(OPT_LINE_DASH)], AreaSeries.prototype, \"lineDash\", void 0);\n __decorate$1g([Validate(NUMBER(0))], AreaSeries.prototype, \"lineDashOffset\", void 0);\n __decorate$1g([Validate(STRING)], AreaSeries.prototype, \"_xKey\", void 0);\n __decorate$1g([Validate(STRING)], AreaSeries.prototype, \"xName\", void 0);\n __decorate$1g([Validate(STRING_ARRAY)], AreaSeries.prototype, \"_yKeys\", void 0);\n __decorate$1g([Validate(BOOLEAN_ARRAY)], AreaSeries.prototype, \"_visibles\", void 0);\n __decorate$1g([Validate(STRING_ARRAY)], AreaSeries.prototype, \"yNames\", void 0);\n __decorate$1g([Validate(NUMBER())], AreaSeries.prototype, \"_normalizedTo\", void 0);\n __decorate$1g([Validate(NUMBER(0))], AreaSeries.prototype, \"strokeWidth\", void 0);\n return AreaSeries;\n}(CartesianSeries);\nvar __extends$27 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1f = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __awaiter$6 = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$6 = undefined && undefined.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __read$r = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread$c = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$r(arguments[i]));\n return ar;\n};\nvar __values$c = undefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar BAR_LABEL_PLACEMENTS = ['inside', 'outside'];\nvar OPT_BAR_LABEL_PLACEMENT = function (v, ctx) {\n return OPTIONAL(v, ctx, function (v) {\n return BAR_LABEL_PLACEMENTS.includes(v);\n });\n};\nvar BarSeriesNodeTag = /*#__PURE__*/function (BarSeriesNodeTag) {\n BarSeriesNodeTag[BarSeriesNodeTag[\"Bar\"] = 0] = \"Bar\";\n BarSeriesNodeTag[BarSeriesNodeTag[\"Label\"] = 1] = \"Label\";\n return BarSeriesNodeTag;\n}(BarSeriesNodeTag || {});\nvar BarLabelPlacement = /*#__PURE__*/function (BarLabelPlacement) {\n BarLabelPlacement[\"Inside\"] = \"inside\";\n BarLabelPlacement[\"Outside\"] = \"outside\";\n return BarLabelPlacement;\n}(BarLabelPlacement || {});\nvar BarSeriesLabel = /** @class */function (_super) {\n __extends$27(BarSeriesLabel, _super);\n function BarSeriesLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.formatter = undefined;\n _this.placement = BarLabelPlacement.Inside;\n return _this;\n }\n __decorate$1f([Validate(OPT_FUNCTION)], BarSeriesLabel.prototype, \"formatter\", void 0);\n __decorate$1f([Validate(OPT_BAR_LABEL_PLACEMENT)], BarSeriesLabel.prototype, \"placement\", void 0);\n return BarSeriesLabel;\n}(Label$1);\nvar BarSeriesTooltip = /** @class */function (_super) {\n __extends$27(BarSeriesTooltip, _super);\n function BarSeriesTooltip() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.renderer = undefined;\n return _this;\n }\n __decorate$1f([Validate(OPT_FUNCTION)], BarSeriesTooltip.prototype, \"renderer\", void 0);\n return BarSeriesTooltip;\n}(SeriesTooltip);\nfunction flat(arr, target) {\n if (target === void 0) {\n target = [];\n }\n arr.forEach(function (v) {\n if (Array.isArray(v)) {\n flat(v, target);\n } else {\n target.push(v);\n }\n });\n return target;\n}\nfunction is2dArray$1(array) {\n return array.length > 0 && Array.isArray(array[0]);\n}\nvar BarSeries = /** @class */function (_super) {\n __extends$27(BarSeries, _super);\n function BarSeries() {\n var _a;\n var _this = _super.call(this, {\n pickGroupIncludes: ['datumNodes'],\n pickModes: [SeriesNodePickMode.EXACT_SHAPE_MATCH],\n pathsPerSeries: 0\n }) || this;\n _this.xData = [];\n _this.yData = [];\n _this.yDomain = [];\n _this.label = new BarSeriesLabel();\n _this.tooltip = new BarSeriesTooltip();\n _this.flipXY = false;\n _this.fills = ['#c16068', '#a2bf8a', '#ebcc87', '#80a0c3', '#b58dae', '#85c0d1'];\n _this.strokes = ['#874349', '#718661', '#a48f5f', '#5a7088', '#7f637a', '#5d8692'];\n _this.fillOpacity = 1;\n _this.strokeOpacity = 1;\n _this.lineDash = [0];\n _this.lineDashOffset = 0;\n _this.formatter = undefined;\n /**\n * Used to get the position of bars within each group.\n */\n _this.groupScale = new BandScale$1();\n _this.directionKeys = (_a = {}, _a[ChartAxisDirection.X] = ['xKey'], _a[ChartAxisDirection.Y] = ['yKeys'], _a);\n _this._xKey = '';\n _this.xName = '';\n _this.cumYKeyCount = [];\n _this.flatYKeys = undefined; // only set when a user used a flat array for yKeys\n _this.hideInLegend = [];\n /**\n * yKeys: [['coffee']] - regular bars, each category has a single bar that shows a value for coffee\n * yKeys: [['coffee'], ['tea'], ['milk']] - each category has three bars that show values for coffee, tea and milk\n * yKeys: [['coffee', 'tea', 'milk']] - each category has a single bar with three stacks that show values for coffee, tea and milk\n * yKeys: [['coffee', 'tea', 'milk'], ['paper', 'ink']] - each category has 2 stacked bars,\n * first showing values for coffee, tea and milk and second values for paper and ink\n */\n _this._yKeys = [];\n _this._visibles = [];\n _this._grouped = false;\n /**\n * A map of `yKeys` to their names (used in legends and tooltips).\n * For example, if a key is `product_name` it's name can be a more presentable `Product Name`.\n */\n _this._yNames = {};\n _this.strokeWidth = 1;\n _this.shadow = undefined;\n _this.smallestDataInterval = undefined;\n _this.label.enabled = false;\n return _this;\n }\n BarSeries.prototype.getKeys = function (direction) {\n var _this = this;\n var directionKeys = this.directionKeys;\n var keys = directionKeys && directionKeys[this.flipXY ? flipChartAxisDirection(direction) : direction];\n var values = [];\n if (keys) {\n keys.forEach(function (key) {\n var value = _this[key];\n if (value) {\n if (Array.isArray(value)) {\n values = values.concat(flat(value));\n } else {\n values.push(value);\n }\n }\n });\n }\n return values;\n };\n Object.defineProperty(BarSeries.prototype, \"xKey\", {\n get: function () {\n return this._xKey;\n },\n set: function (value) {\n this._xKey = value;\n this.xData = [];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BarSeries.prototype, \"yKeys\", {\n get: function () {\n return this._yKeys;\n },\n set: function (yKeys) {\n var _this = this;\n var flatYKeys = undefined;\n // Convert from flat y-keys to grouped y-keys.\n if (!is2dArray$1(yKeys)) {\n flatYKeys = yKeys;\n yKeys = this.grouped ? flatYKeys.map(function (k) {\n return [k];\n }) : [flatYKeys];\n }\n if (!equal(this._yKeys, yKeys)) {\n this.flatYKeys = flatYKeys ? flatYKeys : undefined;\n this._yKeys = yKeys;\n var prevYKeyCount_1 = 0;\n this.cumYKeyCount = [];\n var visibleStacks_1 = [];\n yKeys.forEach(function (stack, index) {\n if (stack.length > 0) {\n visibleStacks_1.push(String(index));\n }\n _this.cumYKeyCount.push(prevYKeyCount_1);\n prevYKeyCount_1 += stack.length;\n });\n this.yData = [];\n this.processSeriesItemEnabled();\n var groupScale = this.groupScale;\n groupScale.domain = visibleStacks_1;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BarSeries.prototype, \"visibles\", {\n get: function () {\n return this._visibles;\n },\n set: function (visibles) {\n var flattenFn = function (r, n) {\n return r.concat.apply(r, __spread$c(Array.isArray(n) ? n : [n]));\n };\n this._visibles = visibles.reduce(flattenFn, []);\n this.processSeriesItemEnabled();\n },\n enumerable: true,\n configurable: true\n });\n BarSeries.prototype.processSeriesItemEnabled = function () {\n var _a = this,\n seriesItemEnabled = _a.seriesItemEnabled,\n _b = _a._visibles,\n visibles = _b === void 0 ? [] : _b;\n seriesItemEnabled.clear();\n var visiblesIdx = 0;\n this._yKeys.forEach(function (stack) {\n stack.forEach(function (yKey) {\n var _a, _b;\n return seriesItemEnabled.set(yKey, (_b = (_a = visibles) === null || _a === void 0 ? void 0 : _a[visiblesIdx++], _b !== null && _b !== void 0 ? _b : true));\n });\n });\n };\n Object.defineProperty(BarSeries.prototype, \"grouped\", {\n get: function () {\n return this._grouped;\n },\n set: function (value) {\n if (this._grouped !== value) {\n this._grouped = value;\n if (this.flatYKeys) {\n this.yKeys = this.flatYKeys;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BarSeries.prototype, \"yNames\", {\n get: function () {\n return this._yNames;\n },\n set: function (values) {\n if (Array.isArray(values) && this.flatYKeys) {\n var map_1 = {};\n this.flatYKeys.forEach(function (k, i) {\n map_1[k] = values[i];\n });\n values = map_1;\n }\n this._yNames = values;\n },\n enumerable: true,\n configurable: true\n });\n BarSeries.prototype.setColors = function (fills, strokes) {\n this.fills = fills;\n this.strokes = strokes;\n };\n Object.defineProperty(BarSeries.prototype, \"normalizedTo\", {\n get: function () {\n return this._normalizedTo;\n },\n set: function (value) {\n var absValue = value ? Math.abs(value) : undefined;\n this._normalizedTo = absValue;\n },\n enumerable: true,\n configurable: true\n });\n BarSeries.prototype.processData = function () {\n return __awaiter$6(this, void 0, void 0, function () {\n var _a, xKey, yKeys, seriesItemEnabled, data, xAxis, yAxis, setSmallestXInterval, isContinuousX, isContinuousY, keysFound, prevX, yMinMax, _b, yData, normalizedTo, yAbsTotal, _c, yMin, yMax;\n var _this = this;\n return __generator$6(this, function (_d) {\n _a = this, xKey = _a.xKey, yKeys = _a.yKeys, seriesItemEnabled = _a.seriesItemEnabled;\n data = xKey && yKeys.length && this.data ? this.data : [];\n xAxis = this.getCategoryAxis();\n yAxis = this.getValueAxis();\n if (!(xAxis && yAxis)) {\n return [2 /*return*/];\n }\n setSmallestXInterval = function (curr, prev) {\n if (_this.smallestDataInterval === undefined) {\n _this.smallestDataInterval = {\n x: Infinity,\n y: Infinity\n };\n }\n var x = _this.smallestDataInterval.x;\n var interval = Math.abs(curr - prev);\n if (interval > 0 && interval < x) {\n _this.smallestDataInterval.x = interval;\n }\n };\n isContinuousX = xAxis.scale instanceof ContinuousScale$1;\n isContinuousY = yAxis.scale instanceof ContinuousScale$1;\n keysFound = true;\n prevX = Infinity;\n this.xData = data.map(function (datum) {\n if (keysFound && !(xKey in datum)) {\n keysFound = false;\n console.warn(\"The key '\" + xKey + \"' was not found in the data: \", datum);\n }\n var x = checkDatum(datum[xKey], isContinuousX);\n if (isContinuousX) {\n setSmallestXInterval(x, prevX);\n }\n prevX = x;\n return x;\n });\n this.yData = data.map(function (datum) {\n return yKeys.map(function (stack) {\n return stack.map(function (yKey) {\n if (keysFound && !(yKey in datum)) {\n keysFound = false;\n console.warn(\"The key '\" + yKey + \"' was not found in the data: \", datum);\n }\n var yDatum = checkDatum(datum[yKey], isContinuousY);\n if (!seriesItemEnabled.get(yKey) || yDatum === undefined) {\n return NaN;\n }\n return yDatum;\n });\n });\n });\n yMinMax = this.yData.map(function (group) {\n return group.map(function (stack) {\n return findMinMax(stack);\n });\n });\n _b = this, yData = _b.yData, normalizedTo = _b.normalizedTo;\n yAbsTotal = this.yData.map(function (group) {\n return group.map(function (stack) {\n return stack.reduce(function (acc, stack) {\n acc += isNaN(stack) ? 0 : Math.abs(stack);\n return acc;\n }, 0);\n });\n });\n _c = this.findLargestMinMax(yMinMax), yMin = _c.min, yMax = _c.max;\n if (yMin === Infinity && yMax === -Infinity) {\n // There's no data in the domain.\n this.yDomain = [];\n return [2 /*return*/];\n }\n if (normalizedTo && isFinite(normalizedTo)) {\n yMin = yMin < 0 ? -normalizedTo : 0;\n yMax = yMax > 0 ? normalizedTo : 0;\n yData.forEach(function (group, i) {\n group.forEach(function (stack, j) {\n stack.forEach(function (y, k) {\n stack[k] = y / yAbsTotal[i][j] * normalizedTo;\n });\n });\n });\n }\n this.yDomain = this.fixNumericExtent([yMin, yMax], this.yAxis);\n return [2 /*return*/];\n });\n });\n };\n BarSeries.prototype.findLargestMinMax = function (groups) {\n var e_1, _a, e_2, _b;\n var tallestStackMin = Infinity;\n var tallestStackMax = -Infinity;\n try {\n for (var groups_1 = __values$c(groups), groups_1_1 = groups_1.next(); !groups_1_1.done; groups_1_1 = groups_1.next()) {\n var group = groups_1_1.value;\n try {\n for (var group_1 = (e_2 = void 0, __values$c(group)), group_1_1 = group_1.next(); !group_1_1.done; group_1_1 = group_1.next()) {\n var stack = group_1_1.value;\n var _c = stack.min,\n min = _c === void 0 ? Infinity : _c,\n _d = stack.max,\n max = _d === void 0 ? -Infinity : _d;\n if (min < tallestStackMin) {\n tallestStackMin = min;\n }\n if (max > tallestStackMax) {\n tallestStackMax = max;\n }\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (group_1_1 && !group_1_1.done && (_b = group_1.return)) _b.call(group_1);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (groups_1_1 && !groups_1_1.done && (_a = groups_1.return)) _a.call(groups_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n return {\n min: tallestStackMin,\n max: tallestStackMax\n };\n };\n BarSeries.prototype.getDomain = function (direction) {\n var _a, _b, _c, _d, _e;\n var flipXY = this.flipXY;\n if (this.flipXY) {\n direction = flipChartAxisDirection(direction);\n }\n if (direction === ChartAxisDirection.X) {\n if (!(((_a = this.getCategoryAxis()) === null || _a === void 0 ? void 0 : _a.scale) instanceof ContinuousScale$1)) {\n return this.xData;\n }\n // The last node will be clipped if the scale is not a band scale\n // Extend the domain by the smallest data interval so that the last band is not clipped\n var xDomain = extent$1(this.xData, isContinuous$1, Number) || [NaN, NaN];\n if (flipXY) {\n xDomain[0] = xDomain[0] - (_c = (_b = this.smallestDataInterval) === null || _b === void 0 ? void 0 : _b.x, _c !== null && _c !== void 0 ? _c : 0);\n } else {\n xDomain[1] = xDomain[1] + (_e = (_d = this.smallestDataInterval) === null || _d === void 0 ? void 0 : _d.x, _e !== null && _e !== void 0 ? _e : 0);\n }\n return xDomain;\n } else {\n return this.yDomain;\n }\n };\n BarSeries.prototype.getNodeClickEvent = function (event, datum) {\n return new CartesianSeriesNodeClickEvent(this.xKey, datum.yKey, event, datum, this);\n };\n BarSeries.prototype.getCategoryAxis = function () {\n return this.flipXY ? this.yAxis : this.xAxis;\n };\n BarSeries.prototype.getValueAxis = function () {\n return this.flipXY ? this.xAxis : this.yAxis;\n };\n BarSeries.prototype.calculateStep = function (range) {\n var _a, _b;\n var smallestInterval = this.smallestDataInterval;\n var xAxis = this.getCategoryAxis();\n if (!xAxis) {\n return;\n }\n // calculate step\n var domainLength = xAxis.dataDomain[1] - xAxis.dataDomain[0];\n var intervals = domainLength / (_b = (_a = smallestInterval) === null || _a === void 0 ? void 0 : _a.x, _b !== null && _b !== void 0 ? _b : 1) + 1;\n // The number of intervals/bands is used to determine the width of individual bands by dividing the available range.\n // Allow a maximum number of bands to ensure the step does not fall below 1 pixel.\n // This means there could be some overlap of the bands in the chart.\n var maxBands = Math.floor(range); // A minimum of 1px per bar/column means the maximum number of bands will equal the available range\n var bands = Math.min(intervals, maxBands);\n var step = range / Math.max(1, bands);\n return step;\n };\n BarSeries.prototype.createNodeData = function () {\n return __awaiter$6(this, void 0, void 0, function () {\n var _a, chart, data, visible, xAxis, yAxis, xScale, yScale, _b, groupScale, yKeys, cumYKeyCount, fills, strokes, strokeWidth, seriesItemEnabled, xData, yData, label, flipXY, seriesId, labelFontStyle, labelFontWeight, labelFontSize, labelFontFamily, labelColor, labelFormatter, labelPlacement, xBandWidth, availableRange, step, barWidth, contexts;\n var _this = this;\n return __generator$6(this, function (_c) {\n _a = this, chart = _a.chart, data = _a.data, visible = _a.visible;\n xAxis = this.getCategoryAxis();\n yAxis = this.getValueAxis();\n if (!(chart && data && visible && xAxis && yAxis)) {\n return [2 /*return*/, []];\n }\n xScale = xAxis.scale;\n yScale = yAxis.scale;\n _b = this, groupScale = _b.groupScale, yKeys = _b.yKeys, cumYKeyCount = _b.cumYKeyCount, fills = _b.fills, strokes = _b.strokes, strokeWidth = _b.strokeWidth, seriesItemEnabled = _b.seriesItemEnabled, xData = _b.xData, yData = _b.yData, label = _b.label, flipXY = _b.flipXY, seriesId = _b.id;\n labelFontStyle = label.fontStyle, labelFontWeight = label.fontWeight, labelFontSize = label.fontSize, labelFontFamily = label.fontFamily, labelColor = label.color, labelFormatter = label.formatter, labelPlacement = label.placement;\n xBandWidth = xScale.bandwidth;\n if (xScale instanceof ContinuousScale$1) {\n availableRange = Math.max(xAxis.range[0], xAxis.range[1]);\n step = this.calculateStep(availableRange);\n xBandWidth = step;\n }\n groupScale.range = [0, xBandWidth];\n if (xAxis instanceof CategoryAxis) {\n groupScale.padding = xAxis.groupPaddingInner;\n } else if (xAxis instanceof GroupedCategoryAxis) {\n groupScale.padding = 0.1;\n } else {\n // Number or Time axis\n groupScale.padding = 0;\n }\n // To get exactly `0` padding we need to turn off rounding\n if (groupScale.padding === 0) {\n groupScale.round = false;\n } else {\n groupScale.round = true;\n }\n barWidth = groupScale.bandwidth >= 1 ?\n // Pixel-rounded value for low-volume bar charts.\n groupScale.bandwidth :\n // Handle high-volume bar charts gracefully.\n groupScale.rawBandwidth;\n contexts = [];\n xData.forEach(function (group, groupIndex) {\n var _a, _b;\n var seriesDatum = data[groupIndex];\n var x = xScale.convert(group);\n var groupYs = yData[groupIndex]; // y-data for groups of stacks\n for (var stackIndex = 0; stackIndex < groupYs.length; stackIndex++) {\n var stackYs = groupYs[stackIndex]; // y-data for a stack within a group\n contexts[stackIndex] = (_a = contexts[stackIndex], _a !== null && _a !== void 0 ? _a : []);\n var prevMinY = 0;\n var prevMaxY = 0;\n for (var levelIndex = 0; levelIndex < stackYs.length; levelIndex++) {\n var currY = +stackYs[levelIndex];\n var yKey = yKeys[stackIndex][levelIndex];\n var barX = x + groupScale.convert(String(stackIndex));\n contexts[stackIndex][levelIndex] = (_b = contexts[stackIndex][levelIndex], _b !== null && _b !== void 0 ? _b : {\n itemId: yKey,\n nodeData: [],\n labelData: []\n });\n // Bars outside of visible range are not rendered, so we create node data\n // only for the visible subset of user data.\n if (!xAxis.inRange(barX, barWidth)) {\n continue;\n }\n if (isNaN(currY)) {\n continue;\n }\n var prevY = currY < 0 ? prevMinY : prevMaxY;\n var continuousY = yScale instanceof ContinuousScale$1;\n var y = yScale.convert(prevY + currY, continuousY ? clamper$1 : undefined);\n var bottomY = yScale.convert(prevY, continuousY ? clamper$1 : undefined);\n var yValue = seriesDatum[yKey]; // unprocessed y-value\n var labelText = void 0;\n if (labelFormatter) {\n labelText = labelFormatter({\n value: isNumber$1(yValue) ? yValue : undefined,\n seriesId: seriesId\n });\n } else {\n labelText = isNumber$1(yValue) ? yValue.toFixed(2) : '';\n }\n var labelX = void 0;\n var labelY = void 0;\n if (flipXY) {\n labelY = barX + barWidth / 2;\n if (labelPlacement === BarLabelPlacement.Inside) {\n labelX = y + (yValue >= 0 ? -1 : 1) * Math.abs(bottomY - y) / 2;\n } else {\n labelX = y + (yValue >= 0 ? 1 : -1) * 4;\n }\n } else {\n labelX = barX + barWidth / 2;\n if (labelPlacement === BarLabelPlacement.Inside) {\n labelY = y + (yValue >= 0 ? 1 : -1) * Math.abs(bottomY - y) / 2;\n } else {\n labelY = y + (yValue >= 0 ? -3 : 4);\n }\n }\n var labelTextAlign = void 0;\n var labelTextBaseline = void 0;\n if (labelPlacement === BarLabelPlacement.Inside) {\n labelTextAlign = 'center';\n labelTextBaseline = 'middle';\n } else {\n labelTextAlign = flipXY ? yValue >= 0 ? 'start' : 'end' : 'center';\n labelTextBaseline = flipXY ? 'middle' : yValue >= 0 ? 'bottom' : 'top';\n }\n var colorIndex = cumYKeyCount[stackIndex] + levelIndex;\n var nodeData = {\n index: groupIndex,\n series: _this,\n itemId: yKey,\n datum: seriesDatum,\n yValue: yValue,\n yKey: yKey,\n x: flipXY ? Math.min(y, bottomY) : barX,\n y: flipXY ? barX : Math.min(y, bottomY),\n width: flipXY ? Math.abs(bottomY - y) : barWidth,\n height: flipXY ? barWidth : Math.abs(bottomY - y),\n colorIndex: colorIndex,\n fill: fills[colorIndex % fills.length],\n stroke: strokes[colorIndex % strokes.length],\n strokeWidth: strokeWidth,\n label: seriesItemEnabled.get(yKey) && labelText ? {\n text: labelText,\n fontStyle: labelFontStyle,\n fontWeight: labelFontWeight,\n fontSize: labelFontSize,\n fontFamily: labelFontFamily,\n textAlign: labelTextAlign,\n textBaseline: labelTextBaseline,\n fill: labelColor,\n x: labelX,\n y: labelY\n } : undefined\n };\n contexts[stackIndex][levelIndex].nodeData.push(nodeData);\n contexts[stackIndex][levelIndex].labelData.push(nodeData);\n if (currY < 0) {\n prevMinY += currY;\n } else {\n prevMaxY += currY;\n }\n }\n }\n });\n return [2 /*return*/, contexts.reduce(function (r, n) {\n return r.concat.apply(r, __spread$c(n));\n }, [])];\n });\n });\n };\n BarSeries.prototype.updateDatumSelection = function (opts) {\n return __awaiter$6(this, void 0, void 0, function () {\n var nodeData, datumSelection, updateRects, enterRects;\n return __generator$6(this, function (_a) {\n nodeData = opts.nodeData, datumSelection = opts.datumSelection;\n updateRects = datumSelection.setData(nodeData);\n updateRects.exit.remove();\n enterRects = updateRects.enter.append(Rect).each(function (rect) {\n rect.tag = BarSeriesNodeTag.Bar;\n });\n return [2 /*return*/, updateRects.merge(enterRects)];\n });\n });\n };\n BarSeries.prototype.updateDatumNodes = function (opts) {\n var _a, _b;\n return __awaiter$6(this, void 0, void 0, function () {\n var datumSelection, isDatumHighlighted, _c, fills, strokes, seriesFillOpacity, strokeOpacity, shadow, formatter, xKey, flipXY, _d, deprecatedFill, deprecatedStroke, deprecatedStrokeWidth, _e, _f, highlightedFill, _g, highlightFillOpacity, _h, highlightedStroke, _j, highlightedDatumStrokeWidth, seriesId, _k, visibleMin, visibleMax, isZoomed, crisp;\n var _this = this;\n return __generator$6(this, function (_l) {\n datumSelection = opts.datumSelection, isDatumHighlighted = opts.isHighlight;\n _c = this, fills = _c.fills, strokes = _c.strokes, seriesFillOpacity = _c.fillOpacity, strokeOpacity = _c.strokeOpacity, shadow = _c.shadow, formatter = _c.formatter, xKey = _c.xKey, flipXY = _c.flipXY, _d = _c.highlightStyle, deprecatedFill = _d.fill, deprecatedStroke = _d.stroke, deprecatedStrokeWidth = _d.strokeWidth, _e = _d.item, _f = _e.fill, highlightedFill = _f === void 0 ? deprecatedFill : _f, _g = _e.fillOpacity, highlightFillOpacity = _g === void 0 ? seriesFillOpacity : _g, _h = _e.stroke, highlightedStroke = _h === void 0 ? deprecatedStroke : _h, _j = _e.strokeWidth, highlightedDatumStrokeWidth = _j === void 0 ? deprecatedStrokeWidth : _j, seriesId = _c.id;\n _k = __read$r((_b = (_a = this.xAxis) === null || _a === void 0 ? void 0 : _a.visibleRange, _b !== null && _b !== void 0 ? _b : []), 2), visibleMin = _k[0], visibleMax = _k[1];\n isZoomed = visibleMin !== 0 || visibleMax !== 1;\n crisp = !isZoomed;\n datumSelection.each(function (rect, datum) {\n var colorIndex = datum.colorIndex;\n var fill = isDatumHighlighted && highlightedFill !== undefined ? highlightedFill : fills[colorIndex % fills.length];\n var stroke = isDatumHighlighted && highlightedStroke !== undefined ? highlightedStroke : strokes[colorIndex % fills.length];\n var strokeWidth = isDatumHighlighted && highlightedDatumStrokeWidth !== undefined ? highlightedDatumStrokeWidth : _this.getStrokeWidth(_this.strokeWidth, datum);\n var fillOpacity = isDatumHighlighted ? highlightFillOpacity : seriesFillOpacity;\n var format = undefined;\n if (formatter) {\n format = formatter({\n datum: datum.datum,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n highlighted: isDatumHighlighted,\n xKey: xKey,\n yKey: datum.yKey,\n seriesId: seriesId\n });\n }\n rect.crisp = crisp;\n rect.x = datum.x;\n rect.y = datum.y;\n rect.width = datum.width;\n rect.height = datum.height;\n rect.fill = format && format.fill || fill;\n rect.stroke = format && format.stroke || stroke;\n rect.strokeWidth = format && format.strokeWidth !== undefined ? format.strokeWidth : strokeWidth;\n rect.fillOpacity = fillOpacity;\n rect.strokeOpacity = strokeOpacity;\n rect.lineDash = _this.lineDash;\n rect.lineDashOffset = _this.lineDashOffset;\n rect.fillShadow = shadow;\n // Prevent stroke from rendering for zero height columns and zero width bars.\n rect.visible = flipXY ? datum.width > 0 : datum.height > 0;\n });\n return [2 /*return*/];\n });\n });\n };\n BarSeries.prototype.updateLabelSelection = function (opts) {\n return __awaiter$6(this, void 0, void 0, function () {\n var labelData, labelSelection, enabled, data, updateLabels, enterLabels;\n return __generator$6(this, function (_a) {\n labelData = opts.labelData, labelSelection = opts.labelSelection;\n enabled = this.label.enabled;\n data = enabled ? labelData : [];\n updateLabels = labelSelection.setData(data);\n updateLabels.exit.remove();\n enterLabels = updateLabels.enter.append(Text$1).each(function (text) {\n text.tag = BarSeriesNodeTag.Label;\n text.pointerEvents = PointerEvents$1.None;\n });\n return [2 /*return*/, updateLabels.merge(enterLabels)];\n });\n });\n };\n BarSeries.prototype.updateLabelNodes = function (opts) {\n return __awaiter$6(this, void 0, void 0, function () {\n var labelSelection, _a, labelEnabled, fontStyle, fontWeight, fontSize, fontFamily, color;\n return __generator$6(this, function (_b) {\n labelSelection = opts.labelSelection;\n _a = this.label, labelEnabled = _a.enabled, fontStyle = _a.fontStyle, fontWeight = _a.fontWeight, fontSize = _a.fontSize, fontFamily = _a.fontFamily, color = _a.color;\n labelSelection.each(function (text, datum) {\n var label = datum.label;\n if (label && labelEnabled) {\n text.fontStyle = fontStyle;\n text.fontWeight = fontWeight;\n text.fontSize = fontSize;\n text.fontFamily = fontFamily;\n text.textAlign = label.textAlign;\n text.textBaseline = label.textBaseline;\n text.text = label.text;\n text.x = label.x;\n text.y = label.y;\n text.fill = color;\n text.visible = true;\n } else {\n text.visible = false;\n }\n });\n return [2 /*return*/];\n });\n });\n };\n BarSeries.prototype.getTooltipHtml = function (nodeDatum) {\n var _a = this,\n xKey = _a.xKey,\n yKeys = _a.yKeys,\n yData = _a.yData;\n var xAxis = this.getCategoryAxis();\n var yAxis = this.getValueAxis();\n var yKey = nodeDatum.yKey;\n if (!yData.length || !xKey || !yKey || !xAxis || !yAxis) {\n return '';\n }\n var yGroup = yData[nodeDatum.index];\n var fillIndex = 0;\n var i = 0;\n var j = 0;\n for (; j < yKeys.length; j++) {\n var stack = yKeys[j];\n i = stack.indexOf(yKey);\n if (i >= 0) {\n fillIndex += i;\n break;\n }\n fillIndex += stack.length;\n }\n var _b = this,\n xName = _b.xName,\n yNames = _b.yNames,\n fills = _b.fills,\n strokes = _b.strokes,\n tooltip = _b.tooltip,\n formatter = _b.formatter,\n seriesId = _b.id;\n var tooltipRenderer = tooltip.renderer;\n var datum = nodeDatum.datum;\n var yName = yNames[yKey];\n var fill = fills[fillIndex % fills.length];\n var stroke = strokes[fillIndex % fills.length];\n var strokeWidth = this.getStrokeWidth(this.strokeWidth);\n var xValue = datum[xKey];\n var yValue = datum[yKey];\n var processedYValue = yGroup[j][i];\n var xString = sanitizeHtml(xAxis.formatDatum(xValue));\n var yString = sanitizeHtml(yAxis.formatDatum(yValue));\n var title = sanitizeHtml(yName);\n var content = xString + ': ' + yString;\n var format = undefined;\n if (formatter) {\n format = formatter({\n datum: datum,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n highlighted: false,\n xKey: xKey,\n yKey: yKey,\n seriesId: seriesId\n });\n }\n var color = format && format.fill || fill;\n var defaults = {\n title: title,\n backgroundColor: color,\n content: content\n };\n if (tooltipRenderer) {\n return toTooltipHtml$1(tooltipRenderer({\n datum: datum,\n xKey: xKey,\n xValue: xValue,\n xName: xName,\n yKey: yKey,\n yValue: yValue,\n processedYValue: processedYValue,\n yName: yName,\n color: color,\n title: title,\n seriesId: seriesId\n }), defaults);\n }\n return toTooltipHtml$1(defaults);\n };\n BarSeries.prototype.getLegendData = function () {\n var _a = this,\n id = _a.id,\n data = _a.data,\n xKey = _a.xKey,\n yKeys = _a.yKeys,\n yNames = _a.yNames,\n cumYKeyCount = _a.cumYKeyCount,\n seriesItemEnabled = _a.seriesItemEnabled,\n hideInLegend = _a.hideInLegend,\n fills = _a.fills,\n strokes = _a.strokes,\n fillOpacity = _a.fillOpacity,\n strokeOpacity = _a.strokeOpacity,\n flipXY = _a.flipXY;\n if (!data || !data.length || !xKey || !yKeys.length) {\n return [];\n }\n var legendData = [];\n this.yKeys.forEach(function (stack, stackIndex) {\n // Column stacks should be listed in the legend in reverse order, for symmetry with the\n // vertical stack display order. Bar stacks are already consistent left-to-right with\n // the legend.\n var startLevel = flipXY ? 0 : stack.length - 1;\n var direction = flipXY ? 1 : -1;\n for (var levelIndex = startLevel, step = 0; step < stack.length; levelIndex += direction, step++) {\n var yKey = stack[levelIndex];\n if (hideInLegend.indexOf(yKey) >= 0) {\n return;\n }\n var colorIndex = cumYKeyCount[stackIndex] + levelIndex;\n legendData.push({\n id: id,\n itemId: yKey,\n seriesId: id,\n enabled: seriesItemEnabled.get(yKey) || false,\n label: {\n text: yNames[yKey] || yKey\n },\n marker: {\n fill: fills[colorIndex % fills.length],\n stroke: strokes[colorIndex % strokes.length],\n fillOpacity: fillOpacity,\n strokeOpacity: strokeOpacity\n }\n });\n }\n });\n return legendData;\n };\n BarSeries.prototype.toggleSeriesItem = function (itemId, enabled) {\n _super.prototype.toggleSeriesItem.call(this, itemId, enabled);\n var yKeys = this.yKeys.map(function (stack) {\n return stack.slice();\n }); // deep clone\n this.seriesItemEnabled.forEach(function (enabled, yKey) {\n if (!enabled) {\n yKeys.forEach(function (stack) {\n var index = stack.indexOf(yKey);\n if (index >= 0) {\n stack.splice(index, 1);\n }\n });\n }\n });\n var visibleStacks = [];\n yKeys.forEach(function (stack, index) {\n if (stack.length > 0) {\n visibleStacks.push(String(index));\n }\n });\n this.groupScale.domain = visibleStacks;\n this.nodeDataRefresh = true;\n };\n BarSeries.prototype.isLabelEnabled = function () {\n return this.label.enabled;\n };\n BarSeries.className = 'BarSeries';\n BarSeries.type = 'bar';\n __decorate$1f([Validate(BOOLEAN)], BarSeries.prototype, \"flipXY\", void 0);\n __decorate$1f([Validate(COLOR_STRING_ARRAY)], BarSeries.prototype, \"fills\", void 0);\n __decorate$1f([Validate(COLOR_STRING_ARRAY)], BarSeries.prototype, \"strokes\", void 0);\n __decorate$1f([Validate(NUMBER(0, 1))], BarSeries.prototype, \"fillOpacity\", void 0);\n __decorate$1f([Validate(NUMBER(0, 1))], BarSeries.prototype, \"strokeOpacity\", void 0);\n __decorate$1f([Validate(OPT_LINE_DASH)], BarSeries.prototype, \"lineDash\", void 0);\n __decorate$1f([Validate(NUMBER(0))], BarSeries.prototype, \"lineDashOffset\", void 0);\n __decorate$1f([Validate(OPT_FUNCTION)], BarSeries.prototype, \"formatter\", void 0);\n __decorate$1f([Validate(STRING)], BarSeries.prototype, \"_xKey\", void 0);\n __decorate$1f([Validate(STRING)], BarSeries.prototype, \"xName\", void 0);\n __decorate$1f([Validate(STRING_ARRAY)], BarSeries.prototype, \"hideInLegend\", void 0);\n __decorate$1f([Validate(BOOLEAN_ARRAY)], BarSeries.prototype, \"_visibles\", void 0);\n __decorate$1f([Validate(BOOLEAN)], BarSeries.prototype, \"_grouped\", void 0);\n __decorate$1f([Validate(OPT_NUMBER())], BarSeries.prototype, \"_normalizedTo\", void 0);\n __decorate$1f([Validate(NUMBER(0))], BarSeries.prototype, \"strokeWidth\", void 0);\n return BarSeries;\n}(CartesianSeries);\nvar __extends$26 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1e = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __awaiter$5 = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$5 = undefined && undefined.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __values$b = undefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$q = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar LineSeriesLabel = /** @class */function (_super) {\n __extends$26(LineSeriesLabel, _super);\n function LineSeriesLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.formatter = undefined;\n return _this;\n }\n __decorate$1e([Validate(OPT_FUNCTION)], LineSeriesLabel.prototype, \"formatter\", void 0);\n return LineSeriesLabel;\n}(Label$1);\nvar LineSeriesTooltip = /** @class */function (_super) {\n __extends$26(LineSeriesTooltip, _super);\n function LineSeriesTooltip() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.renderer = undefined;\n _this.format = undefined;\n return _this;\n }\n __decorate$1e([Validate(OPT_FUNCTION)], LineSeriesTooltip.prototype, \"renderer\", void 0);\n __decorate$1e([Validate(OPT_STRING)], LineSeriesTooltip.prototype, \"format\", void 0);\n return LineSeriesTooltip;\n}(SeriesTooltip);\nvar LineSeries = /** @class */function (_super) {\n __extends$26(LineSeries, _super);\n function LineSeries() {\n var _this = _super.call(this, {\n pickGroupIncludes: ['markers'],\n features: ['markers'],\n pickModes: [SeriesNodePickMode.NEAREST_BY_MAIN_CATEGORY_AXIS_FIRST, SeriesNodePickMode.NEAREST_NODE, SeriesNodePickMode.EXACT_SHAPE_MATCH]\n }) || this;\n _this.xDomain = [];\n _this.yDomain = [];\n _this.pointsData = [];\n _this.marker = new CartesianSeriesMarker();\n _this.label = new LineSeriesLabel();\n _this.title = undefined;\n _this.stroke = '#874349';\n _this.lineDash = [0];\n _this.lineDashOffset = 0;\n _this.strokeWidth = 2;\n _this.strokeOpacity = 1;\n _this.tooltip = new LineSeriesTooltip();\n _this._xKey = '';\n _this.xName = '';\n _this._yKey = '';\n _this.yName = '';\n var _a = _this,\n marker = _a.marker,\n label = _a.label;\n marker.fill = '#c16068';\n marker.stroke = '#874349';\n label.enabled = false;\n return _this;\n }\n LineSeries.prototype.setColors = function (fills, strokes) {\n this.stroke = fills[0];\n this.marker.stroke = strokes[0];\n this.marker.fill = fills[0];\n };\n Object.defineProperty(LineSeries.prototype, \"xKey\", {\n get: function () {\n return this._xKey;\n },\n set: function (value) {\n this._xKey = value;\n this.pointsData.splice(0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LineSeries.prototype, \"yKey\", {\n get: function () {\n return this._yKey;\n },\n set: function (value) {\n this._yKey = value;\n this.pointsData.splice(0);\n },\n enumerable: true,\n configurable: true\n });\n LineSeries.prototype.getDomain = function (direction) {\n if (direction === ChartAxisDirection.X) {\n return this.xDomain;\n }\n return this.yDomain;\n };\n LineSeries.prototype.processData = function () {\n return __awaiter$5(this, void 0, void 0, function () {\n var _a, xAxis, yAxis, xKey, yKey, pointsData, data, isContinuousX, isContinuousY, xData, yData, data_1, data_1_1, datum, x, y, xDatum, yDatum;\n var e_1, _b;\n return __generator$5(this, function (_c) {\n _a = this, xAxis = _a.xAxis, yAxis = _a.yAxis, xKey = _a.xKey, yKey = _a.yKey, pointsData = _a.pointsData;\n data = xKey && yKey && this.data ? this.data : [];\n if (!xAxis || !yAxis) {\n return [2 /*return*/];\n }\n isContinuousX = xAxis.scale instanceof ContinuousScale$1;\n isContinuousY = yAxis.scale instanceof ContinuousScale$1;\n xData = [];\n yData = [];\n pointsData.splice(0);\n try {\n for (data_1 = __values$b(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) {\n datum = data_1_1.value;\n x = datum[xKey];\n y = datum[yKey];\n xDatum = checkDatum(x, isContinuousX);\n if (isContinuousX && xDatum === undefined) {\n continue;\n }\n yDatum = checkDatum(y, isContinuousY);\n xData.push(xDatum);\n yData.push(yDatum);\n pointsData.push({\n xDatum: xDatum,\n yDatum: yDatum,\n datum: datum\n });\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (data_1_1 && !data_1_1.done && (_b = data_1.return)) _b.call(data_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n this.xDomain = isContinuousX ? this.fixNumericExtent(extent$1(xData, isContinuous$1), xAxis) : xData;\n this.yDomain = isContinuousY ? this.fixNumericExtent(extent$1(yData, isContinuous$1), yAxis) : yData;\n return [2 /*return*/];\n });\n });\n };\n LineSeries.prototype.createNodeData = function () {\n var _a;\n return __awaiter$5(this, void 0, void 0, function () {\n var _b, data, xAxis, yAxis, _c, markerEnabled, markerSize, strokeWidth, _d, pointsData, label, yKey, seriesId, xScale, yScale, xOffset, yOffset, nodeData, size, moveTo, prevXInRange, nextPoint, actualLength, i, point, xDatum, yDatum, datum, x, tolerance, xInRange, nextXInRange, y, labelText;\n return __generator$5(this, function (_e) {\n _b = this, data = _b.data, xAxis = _b.xAxis, yAxis = _b.yAxis, _c = _b.marker, markerEnabled = _c.enabled, markerSize = _c.size, strokeWidth = _c.strokeWidth;\n if (!data || !xAxis || !yAxis) {\n return [2 /*return*/, []];\n }\n _d = this, pointsData = _d.pointsData, label = _d.label, yKey = _d.yKey, seriesId = _d.id;\n xScale = xAxis.scale;\n yScale = yAxis.scale;\n xOffset = (xScale.bandwidth || 0) / 2;\n yOffset = (yScale.bandwidth || 0) / 2;\n nodeData = new Array(data.length);\n size = markerEnabled ? markerSize : 0;\n moveTo = true;\n prevXInRange = undefined;\n nextPoint = undefined;\n actualLength = 0;\n for (i = 0; i < pointsData.length; i++) {\n point = nextPoint || pointsData[i];\n if (point.yDatum === undefined) {\n prevXInRange = undefined;\n moveTo = true;\n } else {\n xDatum = point.xDatum, yDatum = point.yDatum, datum = point.datum;\n x = xScale.convert(xDatum) + xOffset;\n if (isNaN(x)) {\n prevXInRange = undefined;\n moveTo = true;\n continue;\n }\n tolerance = (xScale.bandwidth || markerSize * 0.5 + (strokeWidth || 0)) + 1;\n nextPoint = ((_a = pointsData[i + 1]) === null || _a === void 0 ? void 0 : _a.yDatum) === undefined ? undefined : pointsData[i + 1];\n xInRange = xAxis.inRangeEx(x, 0, tolerance);\n nextXInRange = nextPoint && xAxis.inRangeEx(xScale.convert(nextPoint.xDatum) + xOffset, 0, tolerance);\n if (xInRange === -1 && nextXInRange === -1) {\n moveTo = true;\n continue;\n }\n if (xInRange === 1 && prevXInRange === 1) {\n moveTo = true;\n continue;\n }\n prevXInRange = xInRange;\n y = yScale.convert(yDatum) + yOffset;\n labelText = void 0;\n if (label.formatter) {\n labelText = label.formatter({\n value: yDatum,\n seriesId: seriesId\n });\n } else {\n labelText = typeof yDatum === 'number' && isFinite(yDatum) ? yDatum.toFixed(2) : yDatum ? String(yDatum) : '';\n }\n nodeData[actualLength++] = {\n series: this,\n datum: datum,\n point: {\n x: x,\n y: y,\n moveTo: moveTo,\n size: size\n },\n label: labelText ? {\n text: labelText,\n fontStyle: label.fontStyle,\n fontWeight: label.fontWeight,\n fontSize: label.fontSize,\n fontFamily: label.fontFamily,\n textAlign: 'center',\n textBaseline: 'bottom',\n fill: label.color\n } : undefined\n };\n moveTo = false;\n }\n }\n nodeData.length = actualLength;\n return [2 /*return*/, [{\n itemId: yKey,\n nodeData: nodeData,\n labelData: nodeData\n }]];\n });\n });\n };\n LineSeries.prototype.isPathOrSelectionDirty = function () {\n return this.marker.isDirty();\n };\n LineSeries.prototype.updatePaths = function (opts) {\n return __awaiter$5(this, void 0, void 0, function () {\n var nodeData, _a, lineNode, linePath, nodeData_1, nodeData_1_1, data;\n var e_2, _b;\n return __generator$5(this, function (_c) {\n nodeData = opts.contextData.nodeData, _a = __read$q(opts.paths, 1), lineNode = _a[0];\n linePath = lineNode.path;\n lineNode.fill = undefined;\n lineNode.lineJoin = 'round';\n lineNode.pointerEvents = PointerEvents$1.None;\n linePath.clear({\n trackChanges: true\n });\n try {\n for (nodeData_1 = __values$b(nodeData), nodeData_1_1 = nodeData_1.next(); !nodeData_1_1.done; nodeData_1_1 = nodeData_1.next()) {\n data = nodeData_1_1.value;\n if (data.point.moveTo) {\n linePath.moveTo(data.point.x, data.point.y);\n } else {\n linePath.lineTo(data.point.x, data.point.y);\n }\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (nodeData_1_1 && !nodeData_1_1.done && (_b = nodeData_1.return)) _b.call(nodeData_1);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n lineNode.checkPathDirty();\n return [2 /*return*/];\n });\n });\n };\n LineSeries.prototype.updatePathNodes = function (opts) {\n return __awaiter$5(this, void 0, void 0, function () {\n var _a, lineNode;\n return __generator$5(this, function (_b) {\n _a = __read$q(opts.paths, 1), lineNode = _a[0];\n lineNode.stroke = this.stroke;\n lineNode.strokeWidth = this.getStrokeWidth(this.strokeWidth);\n lineNode.strokeOpacity = this.strokeOpacity;\n lineNode.lineDash = this.lineDash;\n lineNode.lineDashOffset = this.lineDashOffset;\n return [2 /*return*/];\n });\n });\n };\n LineSeries.prototype.updateMarkerSelection = function (opts) {\n return __awaiter$5(this, void 0, void 0, function () {\n var nodeData, markerSelection, _a, shape, enabled, MarkerShape, updateMarkerSelection, enterDatumSelection;\n return __generator$5(this, function (_b) {\n nodeData = opts.nodeData, markerSelection = opts.markerSelection;\n _a = this.marker, shape = _a.shape, enabled = _a.enabled;\n nodeData = shape && enabled ? nodeData : [];\n MarkerShape = getMarker$1(shape);\n if (this.marker.isDirty()) {\n markerSelection = markerSelection.setData([]);\n markerSelection.exit.remove();\n }\n updateMarkerSelection = markerSelection.setData(nodeData);\n updateMarkerSelection.exit.remove();\n enterDatumSelection = updateMarkerSelection.enter.append(MarkerShape);\n return [2 /*return*/, updateMarkerSelection.merge(enterDatumSelection)];\n });\n });\n };\n LineSeries.prototype.updateMarkerNodes = function (opts) {\n return __awaiter$5(this, void 0, void 0, function () {\n var markerSelection, isDatumHighlighted, _a, marker, markerFillOpacity, xKey, yKey, lineStroke, strokeOpacity, _b, deprecatedFill, deprecatedStroke, deprecatedStrokeWidth, _c, _d, highlightedFill, _e, highlightFillOpacity, _f, highlightedStroke, _g, highlightedDatumStrokeWidth, seriesId, size, formatter, markerStrokeWidth;\n return __generator$5(this, function (_h) {\n markerSelection = opts.markerSelection, isDatumHighlighted = opts.isHighlight;\n _a = this, marker = _a.marker, markerFillOpacity = _a.marker.fillOpacity, xKey = _a.xKey, yKey = _a.yKey, lineStroke = _a.stroke, strokeOpacity = _a.strokeOpacity, _b = _a.highlightStyle, deprecatedFill = _b.fill, deprecatedStroke = _b.stroke, deprecatedStrokeWidth = _b.strokeWidth, _c = _b.item, _d = _c.fill, highlightedFill = _d === void 0 ? deprecatedFill : _d, _e = _c.fillOpacity, highlightFillOpacity = _e === void 0 ? markerFillOpacity : _e, _f = _c.stroke, highlightedStroke = _f === void 0 ? deprecatedStroke : _f, _g = _c.strokeWidth, highlightedDatumStrokeWidth = _g === void 0 ? deprecatedStrokeWidth : _g, seriesId = _a.id;\n size = marker.size, formatter = marker.formatter;\n markerStrokeWidth = marker.strokeWidth !== undefined ? marker.strokeWidth : this.strokeWidth;\n markerSelection.each(function (node, datum) {\n var _a, _b;\n var fill = isDatumHighlighted && highlightedFill !== undefined ? highlightedFill : marker.fill;\n var fillOpacity = isDatumHighlighted ? highlightFillOpacity : markerFillOpacity;\n var stroke = isDatumHighlighted && highlightedStroke !== undefined ? highlightedStroke : marker.stroke || lineStroke;\n var strokeWidth = isDatumHighlighted && highlightedDatumStrokeWidth !== undefined ? highlightedDatumStrokeWidth : markerStrokeWidth;\n var format = undefined;\n if (formatter) {\n format = formatter({\n datum: datum.datum,\n xKey: xKey,\n yKey: yKey,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n size: size,\n highlighted: isDatumHighlighted,\n seriesId: seriesId\n });\n }\n node.fill = format && format.fill || fill;\n node.stroke = format && format.stroke || stroke;\n node.strokeWidth = format && format.strokeWidth !== undefined ? format.strokeWidth : strokeWidth;\n node.fillOpacity = fillOpacity !== null && fillOpacity !== void 0 ? fillOpacity : 1;\n node.strokeOpacity = (_b = (_a = marker.strokeOpacity, _a !== null && _a !== void 0 ? _a : strokeOpacity), _b !== null && _b !== void 0 ? _b : 1);\n node.size = format && format.size !== undefined ? format.size : size;\n node.translationX = datum.point.x;\n node.translationY = datum.point.y;\n node.visible = node.size > 0 && !isNaN(datum.point.x) && !isNaN(datum.point.y);\n });\n if (!isDatumHighlighted) {\n this.marker.markClean();\n }\n return [2 /*return*/];\n });\n });\n };\n LineSeries.prototype.updateLabelSelection = function (opts) {\n return __awaiter$5(this, void 0, void 0, function () {\n var labelData, labelSelection, _a, shape, enabled, updateTextSelection, enterTextSelection;\n return __generator$5(this, function (_b) {\n labelData = opts.labelData, labelSelection = opts.labelSelection;\n _a = this.marker, shape = _a.shape, enabled = _a.enabled;\n labelData = shape && enabled ? labelData : [];\n updateTextSelection = labelSelection.setData(labelData);\n updateTextSelection.exit.remove();\n enterTextSelection = updateTextSelection.enter.append(Text$1);\n return [2 /*return*/, updateTextSelection.merge(enterTextSelection)];\n });\n });\n };\n LineSeries.prototype.updateLabelNodes = function (opts) {\n return __awaiter$5(this, void 0, void 0, function () {\n var labelSelection, _a, labelEnabled, fontStyle, fontWeight, fontSize, fontFamily, color;\n return __generator$5(this, function (_b) {\n labelSelection = opts.labelSelection;\n _a = this.label, labelEnabled = _a.enabled, fontStyle = _a.fontStyle, fontWeight = _a.fontWeight, fontSize = _a.fontSize, fontFamily = _a.fontFamily, color = _a.color;\n labelSelection.each(function (text, datum) {\n var point = datum.point,\n label = datum.label;\n if (datum && label && labelEnabled) {\n text.fontStyle = fontStyle;\n text.fontWeight = fontWeight;\n text.fontSize = fontSize;\n text.fontFamily = fontFamily;\n text.textAlign = label.textAlign;\n text.textBaseline = label.textBaseline;\n text.text = label.text;\n text.x = point.x;\n text.y = point.y - 10;\n text.fill = color;\n text.visible = true;\n } else {\n text.visible = false;\n }\n });\n return [2 /*return*/];\n });\n });\n };\n LineSeries.prototype.getNodeClickEvent = function (event, datum) {\n return new CartesianSeriesNodeClickEvent(this.xKey, this.yKey, event, datum, this);\n };\n LineSeries.prototype.getTooltipHtml = function (nodeDatum) {\n var _a = this,\n xKey = _a.xKey,\n yKey = _a.yKey,\n xAxis = _a.xAxis,\n yAxis = _a.yAxis;\n if (!xKey || !yKey || !xAxis || !yAxis) {\n return '';\n }\n var _b = this,\n xName = _b.xName,\n yName = _b.yName,\n tooltip = _b.tooltip,\n marker = _b.marker,\n seriesId = _b.id;\n var tooltipRenderer = tooltip.renderer,\n tooltipFormat = tooltip.format;\n var datum = nodeDatum.datum;\n var xValue = datum[xKey];\n var yValue = datum[yKey];\n var xString = xAxis.formatDatum(xValue);\n var yString = yAxis.formatDatum(yValue);\n var title = sanitizeHtml(this.title || yName);\n var content = sanitizeHtml(xString + ': ' + yString);\n var markerFormatter = marker.formatter,\n fill = marker.fill,\n stroke = marker.stroke,\n markerStrokeWidth = marker.strokeWidth,\n size = marker.size;\n var strokeWidth = markerStrokeWidth !== undefined ? markerStrokeWidth : this.strokeWidth;\n var format = undefined;\n if (markerFormatter) {\n format = markerFormatter({\n datum: datum,\n xKey: xKey,\n yKey: yKey,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n size: size,\n highlighted: false,\n seriesId: seriesId\n });\n }\n var color = format && format.fill || fill;\n var defaults = {\n title: title,\n backgroundColor: color,\n content: content\n };\n if (tooltipFormat || tooltipRenderer) {\n var params = {\n datum: datum,\n xKey: xKey,\n xValue: xValue,\n xName: xName,\n yKey: yKey,\n yValue: yValue,\n yName: yName,\n title: title,\n color: color,\n seriesId: seriesId\n };\n if (tooltipFormat) {\n return toTooltipHtml$1({\n content: interpolate(tooltipFormat, params)\n }, defaults);\n }\n if (tooltipRenderer) {\n return toTooltipHtml$1(tooltipRenderer(params), defaults);\n }\n }\n return toTooltipHtml$1(defaults);\n };\n LineSeries.prototype.getLegendData = function () {\n var _a, _b, _c;\n var _d = this,\n id = _d.id,\n data = _d.data,\n xKey = _d.xKey,\n yKey = _d.yKey,\n yName = _d.yName,\n visible = _d.visible,\n title = _d.title,\n marker = _d.marker,\n stroke = _d.stroke,\n strokeOpacity = _d.strokeOpacity;\n if (!(data && data.length && xKey && yKey)) {\n return [];\n }\n return [{\n id: id,\n itemId: yKey,\n seriesId: id,\n enabled: visible,\n label: {\n text: title || yName || yKey\n },\n marker: {\n shape: marker.shape,\n fill: marker.fill || 'rgba(0, 0, 0, 0)',\n stroke: marker.stroke || stroke || 'rgba(0, 0, 0, 0)',\n fillOpacity: (_a = marker.fillOpacity, _a !== null && _a !== void 0 ? _a : 1),\n strokeOpacity: (_c = (_b = marker.strokeOpacity, _b !== null && _b !== void 0 ? _b : strokeOpacity), _c !== null && _c !== void 0 ? _c : 1)\n }\n }];\n };\n LineSeries.prototype.isLabelEnabled = function () {\n return this.label.enabled;\n };\n LineSeries.className = 'LineSeries';\n LineSeries.type = 'line';\n __decorate$1e([Validate(OPT_STRING)], LineSeries.prototype, \"title\", void 0);\n __decorate$1e([Validate(OPT_COLOR_STRING)], LineSeries.prototype, \"stroke\", void 0);\n __decorate$1e([Validate(OPT_LINE_DASH)], LineSeries.prototype, \"lineDash\", void 0);\n __decorate$1e([Validate(NUMBER(0))], LineSeries.prototype, \"lineDashOffset\", void 0);\n __decorate$1e([Validate(NUMBER(0))], LineSeries.prototype, \"strokeWidth\", void 0);\n __decorate$1e([Validate(NUMBER(0, 1))], LineSeries.prototype, \"strokeOpacity\", void 0);\n __decorate$1e([Validate(STRING)], LineSeries.prototype, \"_xKey\", void 0);\n __decorate$1e([Validate(STRING)], LineSeries.prototype, \"xName\", void 0);\n __decorate$1e([Validate(STRING)], LineSeries.prototype, \"_yKey\", void 0);\n __decorate$1e([Validate(STRING)], LineSeries.prototype, \"yName\", void 0);\n return LineSeries;\n}(CartesianSeries);\nvar __extends$25 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign$u = undefined && undefined.__assign || function () {\n __assign$u = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$u.apply(this, arguments);\n};\nvar __decorate$1d = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __awaiter$4 = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$4 = undefined && undefined.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar ScatterSeriesNodeClickEvent = /** @class */function (_super) {\n __extends$25(ScatterSeriesNodeClickEvent, _super);\n function ScatterSeriesNodeClickEvent(sizeKey, xKey, yKey, nativeEvent, datum, series) {\n var _this = _super.call(this, xKey, yKey, nativeEvent, datum, series) || this;\n _this.sizeKey = sizeKey;\n return _this;\n }\n return ScatterSeriesNodeClickEvent;\n}(CartesianSeriesNodeClickEvent);\nvar ScatterSeriesTooltip = /** @class */function (_super) {\n __extends$25(ScatterSeriesTooltip, _super);\n function ScatterSeriesTooltip() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.renderer = undefined;\n return _this;\n }\n __decorate$1d([Validate(OPT_FUNCTION)], ScatterSeriesTooltip.prototype, \"renderer\", void 0);\n return ScatterSeriesTooltip;\n}(SeriesTooltip);\nvar ScatterSeries = /** @class */function (_super) {\n __extends$25(ScatterSeries, _super);\n function ScatterSeries() {\n var _this = _super.call(this, {\n pickGroupIncludes: ['markers'],\n pickModes: [SeriesNodePickMode.NEAREST_BY_MAIN_CATEGORY_AXIS_FIRST, SeriesNodePickMode.NEAREST_NODE, SeriesNodePickMode.EXACT_SHAPE_MATCH],\n pathsPerSeries: 0,\n features: ['markers']\n }) || this;\n _this.xDomain = [];\n _this.yDomain = [];\n _this.xData = [];\n _this.yData = [];\n _this.validData = [];\n _this.sizeData = [];\n _this.sizeScale = new LinearScale$1();\n _this.marker = new CartesianSeriesMarker();\n _this.label = new Label$1();\n /**\n * @deprecated Use {@link marker.fill} instead.\n */\n _this.fill = '#c16068';\n /**\n * @deprecated Use {@link marker.stroke} instead.\n */\n _this.stroke = '#874349';\n /**\n * @deprecated Use {@link marker.strokeWidth} instead.\n */\n _this.strokeWidth = 2;\n /**\n * @deprecated Use {@link marker.fillOpacity} instead.\n */\n _this.fillOpacity = 1;\n /**\n * @deprecated Use {@link marker.strokeOpacity} instead.\n */\n _this.strokeOpacity = 1;\n _this.title = undefined;\n _this.labelKey = undefined;\n _this.xName = '';\n _this.yName = '';\n _this.sizeName = 'Size';\n _this.labelName = 'Label';\n _this._xKey = '';\n _this._yKey = '';\n _this._sizeKey = undefined;\n _this.tooltip = new ScatterSeriesTooltip();\n var label = _this.label;\n label.enabled = false;\n return _this;\n }\n Object.defineProperty(ScatterSeries.prototype, \"xKey\", {\n get: function () {\n return this._xKey;\n },\n set: function (value) {\n this._xKey = value;\n this.xData = [];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ScatterSeries.prototype, \"yKey\", {\n get: function () {\n return this._yKey;\n },\n set: function (value) {\n this._yKey = value;\n this.yData = [];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ScatterSeries.prototype, \"sizeKey\", {\n get: function () {\n return this._sizeKey;\n },\n set: function (value) {\n this._sizeKey = value;\n this.sizeData = [];\n },\n enumerable: true,\n configurable: true\n });\n ScatterSeries.prototype.setColors = function (fills, strokes) {\n this.marker.fill = fills[0];\n this.marker.stroke = strokes[0];\n };\n ScatterSeries.prototype.processData = function () {\n return __awaiter$4(this, void 0, void 0, function () {\n var _a, xKey, yKey, sizeKey, xAxis, yAxis, marker, data, xScale, yScale, isContinuousX, isContinuousY;\n return __generator$4(this, function (_b) {\n _a = this, xKey = _a.xKey, yKey = _a.yKey, sizeKey = _a.sizeKey, xAxis = _a.xAxis, yAxis = _a.yAxis, marker = _a.marker;\n if (!xAxis || !yAxis) {\n return [2 /*return*/];\n }\n data = xKey && yKey && this.data ? this.data : [];\n xScale = xAxis.scale;\n yScale = yAxis.scale;\n isContinuousX = xScale instanceof ContinuousScale$1;\n isContinuousY = yScale instanceof ContinuousScale$1;\n this.validData = data.filter(function (d) {\n return checkDatum(d[xKey], isContinuousX) !== undefined && checkDatum(d[yKey], isContinuousY) !== undefined;\n });\n this.xData = this.validData.map(function (d) {\n return d[xKey];\n });\n this.yData = this.validData.map(function (d) {\n return d[yKey];\n });\n this.sizeData = sizeKey ? this.validData.map(function (d) {\n return d[sizeKey];\n }) : [];\n this.sizeScale.domain = marker.domain ? marker.domain : extent$1(this.sizeData, isContinuous$1) || [1, 1];\n if (xAxis.scale instanceof ContinuousScale$1) {\n this.xDomain = this.fixNumericExtent(extent$1(this.xData, isContinuous$1), xAxis);\n } else {\n this.xDomain = this.xData;\n }\n if (yAxis.scale instanceof ContinuousScale$1) {\n this.yDomain = this.fixNumericExtent(extent$1(this.yData, isContinuous$1), yAxis);\n } else {\n this.yDomain = this.yData;\n }\n return [2 /*return*/];\n });\n });\n };\n ScatterSeries.prototype.getDomain = function (direction) {\n if (direction === ChartAxisDirection.X) {\n return this.xDomain;\n } else {\n return this.yDomain;\n }\n };\n ScatterSeries.prototype.getNodeClickEvent = function (event, datum) {\n return new ScatterSeriesNodeClickEvent(this.sizeKey, this.xKey, this.yKey, event, datum, this);\n };\n ScatterSeries.prototype.createNodeData = function () {\n return __awaiter$4(this, void 0, void 0, function () {\n var _a, chart, data, visible, xAxis, yAxis, yKey, label, labelKey, xScale, yScale, isContinuousX, isContinuousY, xOffset, yOffset, _b, xData, yData, validData, sizeData, sizeScale, marker, nodeData, font, actualLength, i, xy, x, y, text, size, markerSize;\n return __generator$4(this, function (_c) {\n _a = this, chart = _a.chart, data = _a.data, visible = _a.visible, xAxis = _a.xAxis, yAxis = _a.yAxis, yKey = _a.yKey, label = _a.label, labelKey = _a.labelKey;\n if (!(chart && data && visible && xAxis && yAxis)) {\n return [2 /*return*/, []];\n }\n xScale = xAxis.scale;\n yScale = yAxis.scale;\n isContinuousX = xScale instanceof ContinuousScale$1;\n isContinuousY = yScale instanceof ContinuousScale$1;\n xOffset = (xScale.bandwidth || 0) / 2;\n yOffset = (yScale.bandwidth || 0) / 2;\n _b = this, xData = _b.xData, yData = _b.yData, validData = _b.validData, sizeData = _b.sizeData, sizeScale = _b.sizeScale, marker = _b.marker;\n nodeData = new Array(xData.length);\n sizeScale.range = [marker.size, marker.maxSize];\n font = label.getFont();\n actualLength = 0;\n for (i = 0; i < xData.length; i++) {\n xy = this.checkDomainXY(xData[i], yData[i], isContinuousX, isContinuousY);\n if (!xy) {\n continue;\n }\n x = xScale.convert(xy[0]) + xOffset;\n y = yScale.convert(xy[1]) + yOffset;\n if (!this.checkRangeXY(x, y, xAxis, yAxis)) {\n continue;\n }\n text = labelKey ? String(validData[i][labelKey]) : '';\n size = HdpiCanvas$1.getTextSize(text, font);\n markerSize = sizeData.length ? sizeScale.convert(sizeData[i]) : marker.size;\n nodeData[actualLength++] = {\n series: this,\n itemId: yKey,\n datum: validData[i],\n point: {\n x: x,\n y: y,\n size: markerSize\n },\n label: __assign$u({\n text: text\n }, size)\n };\n }\n nodeData.length = actualLength;\n return [2 /*return*/, [{\n itemId: this.yKey,\n nodeData: nodeData,\n labelData: nodeData\n }]];\n });\n });\n };\n ScatterSeries.prototype.isPathOrSelectionDirty = function () {\n return this.marker.isDirty();\n };\n ScatterSeries.prototype.getLabelData = function () {\n var _a;\n return (_a = this.contextNodeData) === null || _a === void 0 ? void 0 : _a.reduce(function (r, n) {\n return r.concat(n.labelData);\n }, []);\n };\n ScatterSeries.prototype.updateMarkerSelection = function (opts) {\n return __awaiter$4(this, void 0, void 0, function () {\n var nodeData, markerSelection, _a, enabled, shape, MarkerShape, data, updateMarkers, enterMarkers;\n return __generator$4(this, function (_b) {\n nodeData = opts.nodeData, markerSelection = opts.markerSelection;\n _a = this.marker, enabled = _a.enabled, shape = _a.shape;\n MarkerShape = getMarker$1(shape);\n if (this.marker.isDirty()) {\n markerSelection = markerSelection.setData([]);\n markerSelection.exit.remove();\n }\n data = enabled ? nodeData : [];\n updateMarkers = markerSelection.setData(data);\n updateMarkers.exit.remove();\n enterMarkers = updateMarkers.enter.append(MarkerShape);\n return [2 /*return*/, updateMarkers.merge(enterMarkers)];\n });\n });\n };\n ScatterSeries.prototype.updateMarkerNodes = function (opts) {\n return __awaiter$4(this, void 0, void 0, function () {\n var markerSelection, isDatumHighlighted, _a, marker, xKey, yKey, strokeWidth, seriesFillOpacity, seriesStrokeOpacity, seriesFill, seriesStroke, sizeScale, _b, _c, markerFillOpacity, _d, markerStrokeOpacity, _e, deprecatedFill, deprecatedStroke, deprecatedStrokeWidth, _f, _g, highlightedFill, _h, highlightFillOpacity, _j, highlightedStroke, _k, highlightedDatumStrokeWidth, seriesId, markerStrokeWidth, formatter;\n return __generator$4(this, function (_l) {\n markerSelection = opts.markerSelection, isDatumHighlighted = opts.isHighlight;\n _a = this, marker = _a.marker, xKey = _a.xKey, yKey = _a.yKey, strokeWidth = _a.strokeWidth, seriesFillOpacity = _a.fillOpacity, seriesStrokeOpacity = _a.strokeOpacity, seriesFill = _a.fill, seriesStroke = _a.stroke, sizeScale = _a.sizeScale, _b = _a.marker, _c = _b.fillOpacity, markerFillOpacity = _c === void 0 ? seriesFillOpacity : _c, _d = _b.strokeOpacity, markerStrokeOpacity = _d === void 0 ? seriesStrokeOpacity : _d, _e = _a.highlightStyle, deprecatedFill = _e.fill, deprecatedStroke = _e.stroke, deprecatedStrokeWidth = _e.strokeWidth, _f = _e.item, _g = _f.fill, highlightedFill = _g === void 0 ? deprecatedFill : _g, _h = _f.fillOpacity, highlightFillOpacity = _h === void 0 ? markerFillOpacity : _h, _j = _f.stroke, highlightedStroke = _j === void 0 ? deprecatedStroke : _j, _k = _f.strokeWidth, highlightedDatumStrokeWidth = _k === void 0 ? deprecatedStrokeWidth : _k, seriesId = _a.id;\n markerStrokeWidth = marker.strokeWidth !== undefined ? marker.strokeWidth : strokeWidth;\n formatter = marker.formatter;\n sizeScale.range = [marker.size, marker.maxSize];\n markerSelection.each(function (node, datum) {\n var _a, _b, _c, _d, _e, _f;\n var fill = isDatumHighlighted && highlightedFill !== undefined ? highlightedFill : marker.fill || seriesFill;\n var fillOpacity = isDatumHighlighted ? highlightFillOpacity : markerFillOpacity;\n var stroke = isDatumHighlighted && highlightedStroke !== undefined ? highlightedStroke : marker.stroke || seriesStroke;\n var strokeOpacity = markerStrokeOpacity;\n var strokeWidth = isDatumHighlighted && highlightedDatumStrokeWidth !== undefined ? highlightedDatumStrokeWidth : markerStrokeWidth;\n var size = (_b = (_a = datum.point) === null || _a === void 0 ? void 0 : _a.size, _b !== null && _b !== void 0 ? _b : 0);\n var format = undefined;\n if (formatter) {\n format = formatter({\n datum: datum.datum,\n xKey: xKey,\n yKey: yKey,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n size: size,\n highlighted: isDatumHighlighted,\n seriesId: seriesId\n });\n }\n node.fill = format && format.fill || fill;\n node.stroke = format && format.stroke || stroke;\n node.strokeWidth = format && format.strokeWidth !== undefined ? format.strokeWidth : strokeWidth;\n node.size = format && format.size !== undefined ? format.size : size;\n node.fillOpacity = fillOpacity !== null && fillOpacity !== void 0 ? fillOpacity : 1;\n node.strokeOpacity = strokeOpacity !== null && strokeOpacity !== void 0 ? strokeOpacity : 1;\n node.translationX = (_d = (_c = datum.point) === null || _c === void 0 ? void 0 : _c.x, _d !== null && _d !== void 0 ? _d : 0);\n node.translationY = (_f = (_e = datum.point) === null || _e === void 0 ? void 0 : _e.y, _f !== null && _f !== void 0 ? _f : 0);\n node.visible = node.size > 0;\n });\n if (!isDatumHighlighted) {\n this.marker.markClean();\n }\n return [2 /*return*/];\n });\n });\n };\n ScatterSeries.prototype.updateLabelSelection = function (opts) {\n var _a, _b;\n return __awaiter$4(this, void 0, void 0, function () {\n var labelSelection, enabled, placedLabels, placedNodeDatum, updateLabels, enterLabels;\n return __generator$4(this, function (_c) {\n labelSelection = opts.labelSelection;\n enabled = this.label.enabled;\n placedLabels = enabled ? (_b = (_a = this.chart) === null || _a === void 0 ? void 0 : _a.placeLabels().get(this), _b !== null && _b !== void 0 ? _b : []) : [];\n placedNodeDatum = placedLabels.map(function (v) {\n return __assign$u(__assign$u({}, v.datum), {\n point: {\n x: v.x,\n y: v.y,\n size: v.datum.point.size\n }\n });\n });\n updateLabels = labelSelection.setData(placedNodeDatum);\n updateLabels.exit.remove();\n enterLabels = updateLabels.enter.append(Text$1);\n return [2 /*return*/, updateLabels.merge(enterLabels)];\n });\n });\n };\n ScatterSeries.prototype.updateLabelNodes = function (opts) {\n return __awaiter$4(this, void 0, void 0, function () {\n var labelSelection, label;\n return __generator$4(this, function (_a) {\n labelSelection = opts.labelSelection;\n label = this.label;\n labelSelection.each(function (text, datum) {\n var _a, _b, _c, _d;\n text.text = datum.label.text;\n text.fill = label.color;\n text.x = (_b = (_a = datum.point) === null || _a === void 0 ? void 0 : _a.x, _b !== null && _b !== void 0 ? _b : 0);\n text.y = (_d = (_c = datum.point) === null || _c === void 0 ? void 0 : _c.y, _d !== null && _d !== void 0 ? _d : 0);\n text.fontStyle = label.fontStyle;\n text.fontWeight = label.fontWeight;\n text.fontSize = label.fontSize;\n text.fontFamily = label.fontFamily;\n text.textAlign = 'left';\n text.textBaseline = 'top';\n });\n return [2 /*return*/];\n });\n });\n };\n ScatterSeries.prototype.getTooltipHtml = function (nodeDatum) {\n var _a, _b, _c, _d;\n var _e = this,\n xKey = _e.xKey,\n yKey = _e.yKey,\n xAxis = _e.xAxis,\n yAxis = _e.yAxis;\n if (!xKey || !yKey || !xAxis || !yAxis) {\n return '';\n }\n var _f = this,\n seriesFill = _f.fill,\n seriesStroke = _f.stroke,\n marker = _f.marker,\n tooltip = _f.tooltip,\n xName = _f.xName,\n yName = _f.yName,\n sizeKey = _f.sizeKey,\n sizeName = _f.sizeName,\n labelKey = _f.labelKey,\n labelName = _f.labelName,\n seriesId = _f.id;\n var fill = (_a = marker.fill, _a !== null && _a !== void 0 ? _a : seriesFill);\n var stroke = (_b = marker.stroke, _b !== null && _b !== void 0 ? _b : seriesStroke);\n var strokeWidth = this.getStrokeWidth(marker.strokeWidth || this.strokeWidth);\n var formatter = this.marker.formatter;\n var format = undefined;\n if (formatter) {\n format = formatter({\n datum: nodeDatum,\n xKey: xKey,\n yKey: yKey,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n size: (_d = (_c = nodeDatum.point) === null || _c === void 0 ? void 0 : _c.size, _d !== null && _d !== void 0 ? _d : 0),\n highlighted: false,\n seriesId: seriesId\n });\n }\n var color = format && format.fill || fill || 'gray';\n var title = this.title || yName;\n var datum = nodeDatum.datum;\n var xValue = datum[xKey];\n var yValue = datum[yKey];\n var xString = sanitizeHtml(xAxis.formatDatum(xValue));\n var yString = sanitizeHtml(yAxis.formatDatum(yValue));\n var content = \"\" + sanitizeHtml(xName || xKey) + \": \" + xString + \"
\" + (\"\" + sanitizeHtml(yName || yKey) + \": \" + yString);\n if (sizeKey) {\n content += \"
\" + sanitizeHtml(sizeName || sizeKey) + \": \" + sanitizeHtml(datum[sizeKey]);\n }\n if (labelKey) {\n content = \"\" + sanitizeHtml(labelName || labelKey) + \": \" + sanitizeHtml(datum[labelKey]) + \"
\" + content;\n }\n var defaults = {\n title: title,\n backgroundColor: color,\n content: content\n };\n var tooltipRenderer = tooltip.renderer;\n if (tooltipRenderer) {\n return toTooltipHtml$1(tooltipRenderer({\n datum: datum,\n xKey: xKey,\n xValue: xValue,\n xName: xName,\n yKey: yKey,\n yValue: yValue,\n yName: yName,\n sizeKey: sizeKey,\n sizeName: sizeName,\n labelKey: labelKey,\n labelName: labelName,\n title: title,\n color: color,\n seriesId: seriesId\n }), defaults);\n }\n return toTooltipHtml$1(defaults);\n };\n ScatterSeries.prototype.getLegendData = function () {\n var _a = this,\n id = _a.id,\n data = _a.data,\n xKey = _a.xKey,\n yKey = _a.yKey,\n yName = _a.yName,\n title = _a.title,\n visible = _a.visible,\n marker = _a.marker,\n fill = _a.fill,\n stroke = _a.stroke,\n fillOpacity = _a.fillOpacity,\n strokeOpacity = _a.strokeOpacity;\n if (!(data && data.length && xKey && yKey)) {\n return [];\n }\n return [{\n id: id,\n itemId: yKey,\n seriesId: id,\n enabled: visible,\n label: {\n text: title || yName || yKey\n },\n marker: {\n shape: marker.shape,\n fill: marker.fill || fill || 'rgba(0, 0, 0, 0)',\n stroke: marker.stroke || stroke || 'rgba(0, 0, 0, 0)',\n fillOpacity: marker.fillOpacity !== undefined ? marker.fillOpacity : fillOpacity,\n strokeOpacity: marker.strokeOpacity !== undefined ? marker.strokeOpacity : strokeOpacity\n }\n }];\n };\n ScatterSeries.prototype.isLabelEnabled = function () {\n return this.label.enabled;\n };\n ScatterSeries.className = 'ScatterSeries';\n ScatterSeries.type = 'scatter';\n __decorate$1d([Deprecated('Use marker.fill instead.', {\n default: '#c16068'\n })], ScatterSeries.prototype, \"fill\", void 0);\n __decorate$1d([Deprecated('Use marker.stroke instead.', {\n default: '#874349'\n })], ScatterSeries.prototype, \"stroke\", void 0);\n __decorate$1d([Deprecated('Use marker.strokeWidth instead.', {\n default: 2\n })], ScatterSeries.prototype, \"strokeWidth\", void 0);\n __decorate$1d([Deprecated('Use marker.fillOpacity instead.', {\n default: 1\n })], ScatterSeries.prototype, \"fillOpacity\", void 0);\n __decorate$1d([Deprecated('Use marker.strokeOpacity instead.', {\n default: 1\n })], ScatterSeries.prototype, \"strokeOpacity\", void 0);\n __decorate$1d([Validate(OPT_STRING)], ScatterSeries.prototype, \"title\", void 0);\n __decorate$1d([Validate(OPT_STRING)], ScatterSeries.prototype, \"labelKey\", void 0);\n __decorate$1d([Validate(STRING)], ScatterSeries.prototype, \"xName\", void 0);\n __decorate$1d([Validate(STRING)], ScatterSeries.prototype, \"yName\", void 0);\n __decorate$1d([Validate(OPT_STRING)], ScatterSeries.prototype, \"sizeName\", void 0);\n __decorate$1d([Validate(OPT_STRING)], ScatterSeries.prototype, \"labelName\", void 0);\n __decorate$1d([Validate(STRING)], ScatterSeries.prototype, \"_xKey\", void 0);\n __decorate$1d([Validate(STRING)], ScatterSeries.prototype, \"_yKey\", void 0);\n __decorate$1d([Validate(OPT_STRING)], ScatterSeries.prototype, \"_sizeKey\", void 0);\n return ScatterSeries;\n}(CartesianSeries);\nvar __extends$24 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1c = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __awaiter$3 = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$3 = undefined && undefined.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __read$p = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread$b = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$p(arguments[i]));\n return ar;\n};\nvar HISTOGRAM_AGGREGATIONS = ['count', 'sum', 'mean'];\nvar HISTOGRAM_AGGREGATION = predicateWithMessage(function (v) {\n return HISTOGRAM_AGGREGATIONS.includes(v);\n}, \"expecting a histogram aggregation keyword such as 'count', 'sum' or 'mean\");\nvar HistogramSeriesNodeTag = /*#__PURE__*/function (HistogramSeriesNodeTag) {\n HistogramSeriesNodeTag[HistogramSeriesNodeTag[\"Bin\"] = 0] = \"Bin\";\n HistogramSeriesNodeTag[HistogramSeriesNodeTag[\"Label\"] = 1] = \"Label\";\n return HistogramSeriesNodeTag;\n}(HistogramSeriesNodeTag || {});\nvar HistogramSeriesLabel = /** @class */function (_super) {\n __extends$24(HistogramSeriesLabel, _super);\n function HistogramSeriesLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.formatter = undefined;\n return _this;\n }\n __decorate$1c([Validate(OPT_FUNCTION)], HistogramSeriesLabel.prototype, \"formatter\", void 0);\n return HistogramSeriesLabel;\n}(Label$1);\nvar defaultBinCount = 10;\nvar aggregationFunctions = {\n count: function (bin) {\n return bin.data.length;\n },\n sum: function (bin, yKey) {\n return bin.data.reduce(function (acc, datum) {\n return acc + datum[yKey];\n }, 0);\n },\n mean: function (bin, yKey) {\n return aggregationFunctions.sum(bin, yKey) / aggregationFunctions.count(bin, yKey);\n }\n};\nvar HistogramBin = /** @class */function () {\n function HistogramBin(_a) {\n var _b = __read$p(_a, 2),\n domainMin = _b[0],\n domainMax = _b[1];\n this.data = [];\n this.aggregatedValue = 0;\n this.frequency = 0;\n this.domain = [domainMin, domainMax];\n }\n HistogramBin.prototype.addDatum = function (datum) {\n this.data.push(datum);\n this.frequency++;\n };\n Object.defineProperty(HistogramBin.prototype, \"domainWidth\", {\n get: function () {\n var _a = __read$p(this.domain, 2),\n domainMin = _a[0],\n domainMax = _a[1];\n return domainMax - domainMin;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HistogramBin.prototype, \"relativeHeight\", {\n get: function () {\n return this.aggregatedValue / this.domainWidth;\n },\n enumerable: true,\n configurable: true\n });\n HistogramBin.prototype.calculateAggregatedValue = function (aggregationName, yKey) {\n if (!yKey) {\n // not having a yKey forces us into a frequency plot\n aggregationName = 'count';\n }\n var aggregationFunction = aggregationFunctions[aggregationName];\n this.aggregatedValue = aggregationFunction(this, yKey);\n };\n HistogramBin.prototype.getY = function (areaPlot) {\n return areaPlot ? this.relativeHeight : this.aggregatedValue;\n };\n return HistogramBin;\n}();\nvar HistogramSeriesTooltip = /** @class */function (_super) {\n __extends$24(HistogramSeriesTooltip, _super);\n function HistogramSeriesTooltip() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.renderer = undefined;\n return _this;\n }\n __decorate$1c([Validate(OPT_FUNCTION)], HistogramSeriesTooltip.prototype, \"renderer\", void 0);\n return HistogramSeriesTooltip;\n}(SeriesTooltip);\nvar HistogramSeries = /** @class */function (_super) {\n __extends$24(HistogramSeries, _super);\n function HistogramSeries() {\n var _a;\n var _this = _super.call(this, {\n pickModes: [SeriesNodePickMode.EXACT_SHAPE_MATCH]\n }) || this;\n _this.binnedData = [];\n _this.xDomain = [];\n _this.yDomain = [];\n _this.label = new HistogramSeriesLabel();\n _this.tooltip = new HistogramSeriesTooltip();\n _this.fill = undefined;\n _this.stroke = undefined;\n _this.fillOpacity = 1;\n _this.strokeOpacity = 1;\n _this.lineDash = [0];\n _this.lineDashOffset = 0;\n _this.directionKeys = (_a = {}, _a[ChartAxisDirection.X] = ['xKey'], _a[ChartAxisDirection.Y] = ['yKey'], _a);\n _this.xKey = '';\n _this.areaPlot = false;\n _this.bins = undefined;\n _this.aggregation = 'count';\n _this.binCount = undefined;\n _this.xName = '';\n _this.yKey = '';\n _this.yName = '';\n _this.strokeWidth = 1;\n _this.shadow = undefined;\n _this.label.enabled = false;\n return _this;\n }\n HistogramSeries.prototype.getKeys = function (direction) {\n var _this = this;\n var directionKeys = this.directionKeys;\n var keys = directionKeys && directionKeys[direction];\n var values = [];\n if (keys) {\n keys.forEach(function (key) {\n var value = _this[key];\n if (value) {\n if (Array.isArray(value)) {\n values.push.apply(values, __spread$b(value));\n } else {\n values.push(value);\n }\n }\n });\n }\n return values;\n };\n HistogramSeries.prototype.setColors = function (fills, strokes) {\n this.fill = fills[0];\n this.stroke = strokes[0];\n };\n // During processData phase, used to unify different ways of the user specifying\n // the bins. Returns bins in format[[min1, max1], [min2, max2], ... ].\n HistogramSeries.prototype.deriveBins = function () {\n var _this = this;\n var bins = this.bins;\n if (!this.data) {\n return [];\n }\n var xData = this.data.map(function (datum) {\n return datum[_this.xKey];\n });\n var xDomain = this.fixNumericExtent(extent$1(xData, isContinuous$1));\n if (this.binCount === undefined) {\n if (bins) {\n return bins;\n }\n var binStarts = ticks$1(xDomain[0], xDomain[1], defaultBinCount);\n var binSize_1 = tickStep$1(xDomain[0], xDomain[1], defaultBinCount);\n var firstBinEnd = binStarts[0];\n var expandStartToBin = function (n) {\n return [n, n + binSize_1];\n };\n return __spread$b([[firstBinEnd - binSize_1, firstBinEnd]], binStarts.map(expandStartToBin));\n } else {\n return this.calculateNiceBins(xDomain, this.binCount);\n }\n };\n HistogramSeries.prototype.calculateNiceBins = function (domain, binCount) {\n var _a;\n var start = Math.floor(domain[0]);\n var stop = domain[1];\n var binSize;\n var segments = binCount || 1;\n _a = this.calculateNiceStart(start, stop, segments), start = _a.start, binSize = _a.binSize;\n return this.getBins(start, stop, binSize, segments);\n };\n HistogramSeries.prototype.getBins = function (start, stop, step, count) {\n var bins = [];\n for (var i = 0; i < count; i++) {\n var a = Math.round((start + i * step) * 10) / 10;\n var b = Math.round((start + (i + 1) * step) * 10) / 10;\n if (i === count - 1) {\n b = Math.max(b, stop);\n }\n bins[i] = [a, b];\n }\n return bins;\n };\n HistogramSeries.prototype.calculateNiceStart = function (a, b, segments) {\n var binSize = Math.abs(b - a) / segments;\n var order = Math.floor(Math.log10(binSize));\n var magnitude = Math.pow(10, order);\n var start = Math.floor(a / magnitude) * magnitude;\n return {\n start: start,\n binSize: binSize\n };\n };\n HistogramSeries.prototype.placeDataInBins = function (data) {\n var _this = this;\n var xKey = this.xKey;\n var derivedBins = this.deriveBins();\n this.bins = derivedBins;\n // creating a sorted copy allows binning in O(n) rather than O(n²)\n // but at the expense of more temporary memory\n var sortedData = data.slice().sort(function (a, b) {\n if (a[xKey] < b[xKey]) {\n return -1;\n }\n if (a[xKey] > b[xKey]) {\n return 1;\n }\n return 0;\n });\n var bins = [new HistogramBin(derivedBins[0])];\n var currentBin = 0;\n for (var i = 0; i < sortedData.length && currentBin < derivedBins.length; i++) {\n var datum = sortedData[i];\n while (datum[xKey] > derivedBins[currentBin][1] && currentBin < derivedBins.length) {\n currentBin++;\n bins.push(new HistogramBin(derivedBins[currentBin]));\n }\n if (currentBin < derivedBins.length) {\n bins[currentBin].addDatum(datum);\n }\n }\n bins.forEach(function (b) {\n return b.calculateAggregatedValue(_this.aggregation, _this.yKey);\n });\n return bins;\n };\n Object.defineProperty(HistogramSeries.prototype, \"xMax\", {\n get: function () {\n var _this = this;\n return this.data && this.data.reduce(function (acc, datum) {\n return Math.max(acc, datum[_this.xKey]);\n }, Number.NEGATIVE_INFINITY);\n },\n enumerable: true,\n configurable: true\n });\n HistogramSeries.prototype.processData = function () {\n return __awaiter$3(this, void 0, void 0, function () {\n var _a, xKey, data, yData, yMinMax, firstBin, lastBin, xMin, xMax;\n var _this = this;\n return __generator$3(this, function (_b) {\n _a = this, xKey = _a.xKey, data = _a.data;\n this.binnedData = this.placeDataInBins(xKey && data ? data : []);\n yData = this.binnedData.map(function (b) {\n return b.getY(_this.areaPlot);\n });\n yMinMax = extent$1(yData, isContinuous$1);\n this.yDomain = this.fixNumericExtent([0, yMinMax ? yMinMax[1] : 1]);\n firstBin = this.binnedData[0];\n lastBin = this.binnedData[this.binnedData.length - 1];\n xMin = firstBin.domain[0];\n xMax = lastBin.domain[1];\n this.xDomain = [xMin, xMax];\n return [2 /*return*/];\n });\n });\n };\n HistogramSeries.prototype.getDomain = function (direction) {\n if (direction === ChartAxisDirection.X) {\n return this.xDomain;\n } else {\n return this.yDomain;\n }\n };\n HistogramSeries.prototype.getNodeClickEvent = function (event, datum) {\n return new CartesianSeriesNodeClickEvent(this.xKey, this.yKey, event, datum, this);\n };\n HistogramSeries.prototype.createNodeData = function () {\n return __awaiter$3(this, void 0, void 0, function () {\n var _a, xAxis, yAxis, xScale, yScale, _b, fill, stroke, strokeWidth, seriesId, nodeData, defaultLabelFormatter, _c, _d, labelFormatter, labelFontStyle, labelFontWeight, labelFontSize, labelFontFamily, labelColor;\n var _this = this;\n return __generator$3(this, function (_e) {\n _a = this, xAxis = _a.xAxis, yAxis = _a.yAxis;\n if (!this.seriesItemEnabled || !xAxis || !yAxis) {\n return [2 /*return*/, []];\n }\n xScale = xAxis.scale;\n yScale = yAxis.scale;\n _b = this, fill = _b.fill, stroke = _b.stroke, strokeWidth = _b.strokeWidth, seriesId = _b.id;\n nodeData = [];\n defaultLabelFormatter = function (params) {\n return String(params.value);\n };\n _c = this.label, _d = _c.formatter, labelFormatter = _d === void 0 ? defaultLabelFormatter : _d, labelFontStyle = _c.fontStyle, labelFontWeight = _c.fontWeight, labelFontSize = _c.fontSize, labelFontFamily = _c.fontFamily, labelColor = _c.color;\n this.binnedData.forEach(function (binOfData) {\n var total = binOfData.aggregatedValue,\n frequency = binOfData.frequency,\n _a = __read$p(binOfData.domain, 2),\n xDomainMin = _a[0],\n xDomainMax = _a[1],\n relativeHeight = binOfData.relativeHeight;\n var xMinPx = xScale.convert(xDomainMin),\n xMaxPx = xScale.convert(xDomainMax),\n // note: assuming can't be negative:\n y = _this.areaPlot ? relativeHeight : _this.yKey ? total : frequency,\n yZeroPx = yScale.convert(0),\n yMaxPx = yScale.convert(y),\n w = xMaxPx - xMinPx,\n h = Math.abs(yMaxPx - yZeroPx);\n var selectionDatumLabel = y !== 0 ? {\n text: labelFormatter({\n value: binOfData.aggregatedValue,\n seriesId: seriesId\n }),\n fontStyle: labelFontStyle,\n fontWeight: labelFontWeight,\n fontSize: labelFontSize,\n fontFamily: labelFontFamily,\n fill: labelColor,\n x: xMinPx + w / 2,\n y: yMaxPx + h / 2\n } : undefined;\n nodeData.push({\n series: _this,\n datum: binOfData,\n // since each selection is an aggregation of multiple data.\n x: xMinPx,\n y: yMaxPx,\n width: w,\n height: h,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n label: selectionDatumLabel\n });\n });\n return [2 /*return*/, [{\n itemId: this.yKey,\n nodeData: nodeData,\n labelData: nodeData\n }]];\n });\n });\n };\n HistogramSeries.prototype.updateDatumSelection = function (opts) {\n return __awaiter$3(this, void 0, void 0, function () {\n var nodeData, datumSelection, updateRects, enterRects;\n return __generator$3(this, function (_a) {\n nodeData = opts.nodeData, datumSelection = opts.datumSelection;\n updateRects = datumSelection.setData(nodeData);\n updateRects.exit.remove();\n enterRects = updateRects.enter.append(Rect).each(function (rect) {\n rect.tag = HistogramSeriesNodeTag.Bin;\n rect.crisp = true;\n });\n return [2 /*return*/, updateRects.merge(enterRects)];\n });\n });\n };\n HistogramSeries.prototype.updateDatumNodes = function (opts) {\n return __awaiter$3(this, void 0, void 0, function () {\n var datumSelection, isDatumHighlighted, _a, seriesFillOpacity, strokeOpacity, shadow, _b, deprecatedFill, deprecatedStroke, deprecatedStrokeWidth, _c, _d, highlightedFill, _e, highlightFillOpacity, _f, highlightedStroke, _g, highlightedDatumStrokeWidth;\n var _this = this;\n return __generator$3(this, function (_h) {\n datumSelection = opts.datumSelection, isDatumHighlighted = opts.isHighlight;\n _a = this, seriesFillOpacity = _a.fillOpacity, strokeOpacity = _a.strokeOpacity, shadow = _a.shadow, _b = _a.highlightStyle, deprecatedFill = _b.fill, deprecatedStroke = _b.stroke, deprecatedStrokeWidth = _b.strokeWidth, _c = _b.item, _d = _c.fill, highlightedFill = _d === void 0 ? deprecatedFill : _d, _e = _c.fillOpacity, highlightFillOpacity = _e === void 0 ? seriesFillOpacity : _e, _f = _c.stroke, highlightedStroke = _f === void 0 ? deprecatedStroke : _f, _g = _c.strokeWidth, highlightedDatumStrokeWidth = _g === void 0 ? deprecatedStrokeWidth : _g;\n datumSelection.each(function (rect, datum, index) {\n var strokeWidth = isDatumHighlighted && highlightedDatumStrokeWidth !== undefined ? highlightedDatumStrokeWidth : datum.strokeWidth;\n var fillOpacity = isDatumHighlighted ? highlightFillOpacity : seriesFillOpacity;\n rect.x = datum.x;\n rect.y = datum.y;\n rect.width = datum.width;\n rect.height = datum.height;\n rect.fill = isDatumHighlighted && highlightedFill !== undefined ? highlightedFill : datum.fill;\n rect.stroke = isDatumHighlighted && highlightedStroke !== undefined ? highlightedStroke : datum.stroke;\n rect.fillOpacity = fillOpacity;\n rect.strokeOpacity = strokeOpacity;\n rect.strokeWidth = strokeWidth;\n rect.lineDash = _this.lineDash;\n rect.lineDashOffset = _this.lineDashOffset;\n rect.fillShadow = shadow;\n rect.zIndex = isDatumHighlighted ? Series.highlightedZIndex : index;\n rect.visible = datum.height > 0; // prevent stroke from rendering for zero height columns\n });\n return [2 /*return*/];\n });\n });\n };\n HistogramSeries.prototype.updateLabelSelection = function (opts) {\n return __awaiter$3(this, void 0, void 0, function () {\n var labelData, labelSelection, updateTexts, enterTexts;\n return __generator$3(this, function (_a) {\n labelData = opts.labelData, labelSelection = opts.labelSelection;\n updateTexts = labelSelection.setData(labelData);\n updateTexts.exit.remove();\n enterTexts = updateTexts.enter.append(Text$1).each(function (text) {\n text.tag = HistogramSeriesNodeTag.Label;\n text.pointerEvents = PointerEvents$1.None;\n text.textAlign = 'center';\n text.textBaseline = 'middle';\n });\n return [2 /*return*/, updateTexts.merge(enterTexts)];\n });\n });\n };\n HistogramSeries.prototype.updateLabelNodes = function (opts) {\n return __awaiter$3(this, void 0, void 0, function () {\n var labelSelection, labelEnabled;\n return __generator$3(this, function (_a) {\n labelSelection = opts.labelSelection;\n labelEnabled = this.label.enabled;\n labelSelection.each(function (text, datum) {\n var label = datum.label;\n if (label && labelEnabled) {\n text.text = label.text;\n text.x = label.x;\n text.y = label.y;\n text.fontStyle = label.fontStyle;\n text.fontWeight = label.fontWeight;\n text.fontSize = label.fontSize;\n text.fontFamily = label.fontFamily;\n text.fill = label.fill;\n text.visible = true;\n } else {\n text.visible = false;\n }\n });\n return [2 /*return*/];\n });\n });\n };\n HistogramSeries.prototype.getTooltipHtml = function (nodeDatum) {\n var _a = this,\n xKey = _a.xKey,\n yKey = _a.yKey,\n xAxis = _a.xAxis,\n yAxis = _a.yAxis;\n if (!xKey || !xAxis || !yAxis) {\n return '';\n }\n var _b = this,\n xName = _b.xName,\n yName = _b.yName,\n color = _b.fill,\n tooltip = _b.tooltip,\n aggregation = _b.aggregation,\n seriesId = _b.id;\n var tooltipRenderer = tooltip.renderer;\n var bin = nodeDatum.datum;\n var aggregatedValue = bin.aggregatedValue,\n frequency = bin.frequency,\n _c = __read$p(bin.domain, 2),\n rangeMin = _c[0],\n rangeMax = _c[1];\n var title = sanitizeHtml(xName || xKey) + \": \" + xAxis.formatDatum(rangeMin) + \" - \" + xAxis.formatDatum(rangeMax);\n var content = yKey ? \"\" + sanitizeHtml(yName || yKey) + \" (\" + aggregation + \"): \" + yAxis.formatDatum(aggregatedValue) + \"
\" : '';\n content += \"Frequency: \" + frequency;\n var defaults = {\n title: title,\n backgroundColor: color,\n content: content\n };\n if (tooltipRenderer) {\n return toTooltipHtml$1(tooltipRenderer({\n datum: bin,\n xKey: xKey,\n xValue: bin.domain,\n xName: xName,\n yKey: yKey,\n yValue: bin.aggregatedValue,\n yName: yName,\n color: color,\n title: title,\n seriesId: seriesId\n }), defaults);\n }\n return toTooltipHtml$1(defaults);\n };\n HistogramSeries.prototype.getLegendData = function () {\n var _a = this,\n id = _a.id,\n data = _a.data,\n xKey = _a.xKey,\n yName = _a.yName,\n visible = _a.visible,\n fill = _a.fill,\n stroke = _a.stroke,\n fillOpacity = _a.fillOpacity,\n strokeOpacity = _a.strokeOpacity;\n if (!data || data.length === 0) {\n return [];\n }\n return [{\n id: id,\n itemId: xKey,\n seriesId: id,\n enabled: visible,\n label: {\n text: yName || xKey || 'Frequency'\n },\n marker: {\n fill: fill || 'rgba(0, 0, 0, 0)',\n stroke: stroke || 'rgba(0, 0, 0, 0)',\n fillOpacity: fillOpacity,\n strokeOpacity: strokeOpacity\n }\n }];\n };\n HistogramSeries.prototype.isLabelEnabled = function () {\n return this.label.enabled;\n };\n HistogramSeries.className = 'HistogramSeries';\n HistogramSeries.type = 'histogram';\n __decorate$1c([Validate(OPT_COLOR_STRING)], HistogramSeries.prototype, \"fill\", void 0);\n __decorate$1c([Validate(OPT_COLOR_STRING)], HistogramSeries.prototype, \"stroke\", void 0);\n __decorate$1c([Validate(NUMBER(0, 1))], HistogramSeries.prototype, \"fillOpacity\", void 0);\n __decorate$1c([Validate(NUMBER(0, 1))], HistogramSeries.prototype, \"strokeOpacity\", void 0);\n __decorate$1c([Validate(OPT_LINE_DASH)], HistogramSeries.prototype, \"lineDash\", void 0);\n __decorate$1c([Validate(NUMBER(0))], HistogramSeries.prototype, \"lineDashOffset\", void 0);\n __decorate$1c([Validate(STRING)], HistogramSeries.prototype, \"xKey\", void 0);\n __decorate$1c([Validate(BOOLEAN)], HistogramSeries.prototype, \"areaPlot\", void 0);\n __decorate$1c([Validate(OPT_ARRAY())], HistogramSeries.prototype, \"bins\", void 0);\n __decorate$1c([Validate(HISTOGRAM_AGGREGATION)], HistogramSeries.prototype, \"aggregation\", void 0);\n __decorate$1c([Validate(OPT_NUMBER(0))], HistogramSeries.prototype, \"binCount\", void 0);\n __decorate$1c([Validate(STRING)], HistogramSeries.prototype, \"xName\", void 0);\n __decorate$1c([Validate(STRING)], HistogramSeries.prototype, \"yKey\", void 0);\n __decorate$1c([Validate(STRING)], HistogramSeries.prototype, \"yName\", void 0);\n __decorate$1c([Validate(NUMBER(0))], HistogramSeries.prototype, \"strokeWidth\", void 0);\n return HistogramSeries;\n}(CartesianSeries);\nvar __extends$23 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar HierarchySeries = /** @class */function (_super) {\n __extends$23(HierarchySeries, _super);\n function HierarchySeries() {\n return _super.call(this, {\n pickModes: [SeriesNodePickMode.EXACT_SHAPE_MATCH]\n }) || this;\n }\n HierarchySeries.prototype.getLabelData = function () {\n return [];\n };\n return HierarchySeries;\n}(Series);\nvar __extends$22 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1b = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar DropShadow = /** @class */function (_super) {\n __extends$22(DropShadow, _super);\n function DropShadow() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.enabled = true;\n _this.color = 'rgba(0, 0, 0, 0.5)';\n _this.xOffset = 0;\n _this.yOffset = 0;\n _this.blur = 5;\n return _this;\n }\n __decorate$1b([ValidateAndChangeDetection({\n validatePredicate: BOOLEAN,\n sceneChangeDetectionOpts: {\n redraw: RedrawType.MAJOR\n }\n })], DropShadow.prototype, \"enabled\", void 0);\n __decorate$1b([ValidateAndChangeDetection({\n validatePredicate: COLOR_STRING,\n sceneChangeDetectionOpts: {\n redraw: RedrawType.MAJOR\n }\n })], DropShadow.prototype, \"color\", void 0);\n __decorate$1b([ValidateAndChangeDetection({\n validatePredicate: NUMBER(),\n sceneChangeDetectionOpts: {\n redraw: RedrawType.MAJOR\n }\n })], DropShadow.prototype, \"xOffset\", void 0);\n __decorate$1b([ValidateAndChangeDetection({\n validatePredicate: NUMBER(),\n sceneChangeDetectionOpts: {\n redraw: RedrawType.MAJOR\n }\n })], DropShadow.prototype, \"yOffset\", void 0);\n __decorate$1b([ValidateAndChangeDetection({\n validatePredicate: NUMBER(0),\n sceneChangeDetectionOpts: {\n redraw: RedrawType.MAJOR\n }\n })], DropShadow.prototype, \"blur\", void 0);\n return DropShadow;\n}(ChangeDetectable);\nfunction slice(parent, x0, y0, x1, y1) {\n var nodes = parent.children;\n var k = parent.value && (y1 - y0) / parent.value;\n nodes.forEach(function (node) {\n node.x0 = x0;\n node.x1 = x1;\n node.y0 = y0;\n node.y1 = y0 += node.value * k;\n });\n}\nfunction dice(parent, x0, y0, x1, y1) {\n var nodes = parent.children;\n var k = parent.value && (x1 - x0) / parent.value;\n nodes.forEach(function (node) {\n node.x0 = x0;\n node.x1 = x0 += node.value * k;\n node.y0 = y0;\n node.y1 = y1;\n });\n}\nfunction roundNode(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\nfunction squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [];\n var nodes = parent.children;\n var n = nodes.length;\n var value = parent.value;\n var i0 = 0;\n var i1 = 0;\n var dx;\n var dy;\n var nodeValue;\n var sumValue;\n var minValue;\n var maxValue;\n var newRatio;\n var minRatio;\n var alpha;\n var beta;\n while (i0 < n) {\n dx = x1 - x0;\n dy = y1 - y0;\n // Find the next non-empty node.\n do {\n sumValue = nodes[i1++].value;\n } while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n nodeValue = nodes[i1].value;\n sumValue += nodeValue;\n if (nodeValue < minValue) {\n minValue = nodeValue;\n }\n if (nodeValue > maxValue) {\n maxValue = nodeValue;\n }\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) {\n sumValue -= nodeValue;\n break;\n }\n minRatio = newRatio;\n }\n // Position and record the row orientation.\n var row = {\n value: sumValue,\n dice: dx < dy,\n children: nodes.slice(i0, i1)\n };\n rows.push(row);\n if (row.dice) {\n var oldy0 = y0;\n var newy1 = y1;\n if (value) {\n y0 += dy * sumValue / value;\n newy1 = y0;\n }\n dice(row, x0, oldy0, x1, newy1);\n } else {\n var oldx0 = x0;\n var newx1 = x1;\n if (value) {\n x0 += dx * sumValue / value;\n newx1 = x0;\n }\n slice(row, oldx0, y0, newx1, y1);\n }\n value -= sumValue;\n i0 = i1;\n }\n return rows;\n}\nvar phi = (1 + Math.sqrt(5)) / 2;\nvar squarify = function custom(ratio) {\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n squarify.ratio = function (x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n return squarify;\n}(phi);\nvar Treemap = /** @class */function () {\n function Treemap() {\n this.paddingStack = [0];\n this.dx = 1;\n this.dy = 1;\n this.round = true;\n this.tile = squarify;\n this.paddingInner = function (_) {\n return 0;\n };\n this.paddingTop = function (_) {\n return 0;\n };\n this.paddingRight = function (_) {\n return 0;\n };\n this.paddingBottom = function (_) {\n return 0;\n };\n this.paddingLeft = function (_) {\n return 0;\n };\n }\n Object.defineProperty(Treemap.prototype, \"size\", {\n get: function () {\n return [this.dx, this.dy];\n },\n set: function (size) {\n this.dx = size[0];\n this.dy = size[1];\n },\n enumerable: true,\n configurable: true\n });\n Treemap.prototype.processData = function (root) {\n root.x0 = 0;\n root.y0 = 0;\n root.x1 = this.dx;\n root.y1 = this.dy;\n root.eachBefore(this.positionNode.bind(this));\n this.paddingStack = [0];\n if (this.round) {\n root.eachBefore(roundNode);\n }\n return root;\n };\n Treemap.prototype.positionNode = function (node) {\n var p = this.paddingStack[node.depth];\n var x0 = node.x0 + p;\n var y0 = node.y0 + p;\n var x1 = node.x1 - p;\n var y1 = node.y1 - p;\n if (x1 < x0) {\n x0 = x1 = (x0 + x1) / 2;\n }\n if (y1 < y0) {\n y0 = y1 = (y0 + y1) / 2;\n }\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = this.paddingStack[node.depth + 1] = this.paddingInner(node) / 2;\n x0 += this.paddingLeft(node) - p;\n y0 += this.paddingTop(node) - p;\n x1 -= this.paddingRight(node) - p;\n y1 -= this.paddingBottom(node) - p;\n if (x1 < x0) {\n x0 = x1 = (x0 + x1) / 2;\n }\n if (y1 < y0) {\n y0 = y1 = (y0 + y1) / 2;\n }\n this.tile(node, x0, y0, x1, y1);\n }\n };\n return Treemap;\n}();\nvar __values$a = undefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$o = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread$a = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$o(arguments[i]));\n return ar;\n};\nvar HierarchyNode = /** @class */function () {\n function HierarchyNode(datum) {\n this.value = 0;\n this.depth = 0;\n this.height = 0;\n this.parent = undefined;\n this.children = undefined;\n this.datum = datum;\n }\n HierarchyNode.prototype.countFn = function (node) {\n var sum = 0,\n children = node.children;\n if (!children || !children.length) {\n sum = 1;\n } else {\n var i = children.length;\n while (--i >= 0) {\n sum += children[i].value;\n }\n }\n node.value = sum;\n };\n HierarchyNode.prototype.count = function () {\n return this.eachAfter(this.countFn);\n };\n HierarchyNode.prototype.each = function (callback, scope) {\n var _this = this;\n var index = -1;\n this.iterator(function (node) {\n callback.call(scope, node, ++index, _this);\n });\n return this;\n };\n /**\n * Invokes the given callback for each node in post-order traversal.\n * @param callback\n * @param scope\n */\n HierarchyNode.prototype.eachAfter = function (callback, scope) {\n var node = this;\n var nodes = [node];\n var next = [];\n while (node = nodes.pop()) {\n next.push(node);\n var children = node.children;\n if (children) {\n for (var i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n }\n var index = -1;\n while (node = next.pop()) {\n callback.call(scope, node, ++index, this);\n }\n return this;\n };\n /**\n * Invokes the given callback for each node in pre-order traversal.\n * @param callback\n * @param scope\n */\n HierarchyNode.prototype.eachBefore = function (callback, scope) {\n var node = this;\n var nodes = [node];\n var index = -1;\n while (node = nodes.pop()) {\n callback.call(scope, node, ++index, this);\n var children = node.children;\n if (children) {\n for (var i = children.length - 1; i >= 0; --i) {\n var child = children[i];\n nodes.push(child);\n }\n }\n }\n return this;\n };\n HierarchyNode.prototype.find = function (callback, scope) {\n var _this = this;\n var index = -1;\n var result;\n this.iterator(function (node) {\n if (callback.call(scope, node, ++index, _this)) {\n result = node;\n return false;\n }\n });\n return result;\n };\n HierarchyNode.prototype.sum = function (value) {\n return this.eachAfter(function (node) {\n var sum = +value(node.datum) || 0;\n var children = node.children;\n if (children) {\n var i = children.length;\n while (--i >= 0) {\n sum += children[i].value;\n }\n }\n node.value = sum;\n });\n };\n HierarchyNode.prototype.sort = function (compare) {\n return this.eachBefore(function (node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n };\n HierarchyNode.prototype.path = function (end) {\n var start = this;\n var ancestor = leastCommonAncestor(start, end);\n var nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n };\n HierarchyNode.prototype.ancestors = function () {\n var node = this;\n var nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n };\n HierarchyNode.prototype.descendants = function () {\n var nodes = [];\n this.iterator(function (node) {\n return nodes.push(node);\n });\n return nodes;\n };\n HierarchyNode.prototype.leaves = function () {\n var leaves = [];\n this.eachBefore(function (node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n };\n HierarchyNode.prototype.links = function () {\n var root = this;\n var links = [];\n root.each(function (node) {\n if (node !== root) {\n // Don’t include the root’s parent, if any.\n links.push({\n source: node.parent,\n target: node\n });\n }\n });\n return links;\n };\n HierarchyNode.prototype.iterator = function (callback) {\n var e_1, _a;\n var _b = this.children,\n children = _b === void 0 ? [] : _b;\n if (callback(this) === false) {\n return false;\n }\n try {\n for (var children_1 = __values$a(children), children_1_1 = children_1.next(); !children_1_1.done; children_1_1 = children_1.next()) {\n var child = children_1_1.value;\n if (child.iterator(callback) === false) {\n return false;\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (children_1_1 && !children_1_1.done && (_a = children_1.return)) _a.call(children_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n return true;\n };\n return HierarchyNode;\n}();\nfunction hierarchy(data, children) {\n if (data instanceof Map) {\n data = [undefined, data];\n if (children === undefined) {\n children = mapChildren;\n }\n } else if (children === undefined) {\n children = objectChildren;\n }\n var root = new HierarchyNode(data);\n var nodes = [root];\n var _loop_1 = function () {\n var node = nodes.pop();\n var datumChildren = children(node.datum);\n if (!datumChildren) {\n return \"continue\";\n }\n var newNodes = Array.from(datumChildren).map(function (dc) {\n return new HierarchyNode(dc);\n });\n newNodes.forEach(function (child) {\n child.parent = node;\n child.depth = node.depth + 1;\n });\n node.children = newNodes;\n nodes.push.apply(nodes, __spread$a(newNodes));\n };\n while (nodes.length > 0) {\n _loop_1();\n }\n return root.eachBefore(computeHeight);\n}\nfunction computeHeight(node) {\n var height = 0;\n do {\n node.height = height;\n node = node.parent;\n } while (node && node.height < ++height);\n}\nfunction mapChildren(d) {\n return Array.isArray(d) ? d[1] : undefined;\n}\nfunction objectChildren(d) {\n return d.children;\n}\nfunction leastCommonAncestor(a, b) {\n if (!(a && b)) {\n return undefined;\n }\n if (a === b) {\n return a;\n }\n var aNodes = a.ancestors();\n var bNodes = b.ancestors();\n var c = undefined;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\nvar __extends$21 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$1a = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __awaiter$2 = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$2 = undefined && undefined.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __values$9 = undefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar TreemapSeriesTooltip = /** @class */function (_super) {\n __extends$21(TreemapSeriesTooltip, _super);\n function TreemapSeriesTooltip() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.renderer = undefined;\n return _this;\n }\n __decorate$1a([Validate(OPT_FUNCTION)], TreemapSeriesTooltip.prototype, \"renderer\", void 0);\n return TreemapSeriesTooltip;\n}(SeriesTooltip);\nvar TreemapSeriesNodeClickEvent = /** @class */function (_super) {\n __extends$21(TreemapSeriesNodeClickEvent, _super);\n function TreemapSeriesNodeClickEvent(labelKey, sizeKey, colorKey, nativeEvent, datum, series) {\n var _this = _super.call(this, nativeEvent, datum, series) || this;\n _this.labelKey = labelKey;\n _this.sizeKey = sizeKey;\n _this.colorKey = colorKey;\n return _this;\n }\n return TreemapSeriesNodeClickEvent;\n}(SeriesNodeClickEvent);\nvar TreemapSeriesLabel = /** @class */function (_super) {\n __extends$21(TreemapSeriesLabel, _super);\n function TreemapSeriesLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.padding = 10;\n return _this;\n }\n __decorate$1a([Validate(NUMBER(0))], TreemapSeriesLabel.prototype, \"padding\", void 0);\n return TreemapSeriesLabel;\n}(Label$1);\nvar TextNodeTag = /*#__PURE__*/function (TextNodeTag) {\n TextNodeTag[TextNodeTag[\"Name\"] = 0] = \"Name\";\n TextNodeTag[TextNodeTag[\"Value\"] = 1] = \"Value\";\n return TextNodeTag;\n}(TextNodeTag || {});\nvar TreemapSeries = /** @class */function (_super) {\n __extends$21(TreemapSeries, _super);\n function TreemapSeries() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.groupSelection = Selection$1.select(_this.pickGroup).selectAll();\n _this.highlightSelection = Selection$1.select(_this.highlightGroup).selectAll();\n _this.layout = new Treemap();\n _this.title = function () {\n var label = new TreemapSeriesLabel();\n label.color = 'white';\n label.fontWeight = 'bold';\n label.fontSize = 12;\n label.fontFamily = 'Verdana, sans-serif';\n label.padding = 15;\n return label;\n }();\n _this.subtitle = function () {\n var label = new TreemapSeriesLabel();\n label.color = 'white';\n label.fontSize = 9;\n label.fontFamily = 'Verdana, sans-serif';\n label.padding = 13;\n return label;\n }();\n _this.labels = {\n large: function () {\n var label = new Label$1();\n label.color = 'white';\n label.fontWeight = 'bold';\n label.fontSize = 18;\n return label;\n }(),\n medium: function () {\n var label = new Label$1();\n label.color = 'white';\n label.fontWeight = 'bold';\n label.fontSize = 14;\n return label;\n }(),\n small: function () {\n var label = new Label$1();\n label.color = 'white';\n label.fontWeight = 'bold';\n label.fontSize = 10;\n return label;\n }(),\n color: function () {\n var label = new Label$1();\n label.color = 'white';\n return label;\n }()\n };\n _this._nodePadding = 2;\n _this.labelKey = 'label';\n _this.sizeKey = 'size';\n _this.colorKey = 'color';\n _this.colorDomain = [-5, 5];\n _this.colorRange = ['#cb4b3f', '#6acb64'];\n _this.colorParents = false;\n _this.gradient = true;\n _this.formatter = undefined;\n _this.colorName = 'Change';\n _this.rootName = 'Root';\n _this.shadow = function () {\n var shadow = new DropShadow();\n shadow.color = 'rgba(0, 0, 0, 0.4)';\n shadow.xOffset = 1.5;\n shadow.yOffset = 1.5;\n return shadow;\n }();\n _this.tooltip = new TreemapSeriesTooltip();\n return _this;\n }\n Object.defineProperty(TreemapSeries.prototype, \"nodePadding\", {\n get: function () {\n return this._nodePadding;\n },\n set: function (value) {\n if (this._nodePadding !== value) {\n this._nodePadding = value;\n this.updateLayoutPadding();\n }\n },\n enumerable: true,\n configurable: true\n });\n TreemapSeries.prototype.updateLayoutPadding = function () {\n var _a = this,\n title = _a.title,\n subtitle = _a.subtitle,\n nodePadding = _a.nodePadding,\n labelKey = _a.labelKey;\n this.layout.paddingRight = function (_) {\n return nodePadding;\n };\n this.layout.paddingBottom = function (_) {\n return nodePadding;\n };\n this.layout.paddingLeft = function (_) {\n return nodePadding;\n };\n this.layout.paddingTop = function (node) {\n var name = node.datum[labelKey] || '';\n if (node.children) {\n name = name.toUpperCase();\n }\n var font = node.depth > 1 ? subtitle : title;\n var textSize = HdpiCanvas$1.getTextSize(name, [font.fontWeight, font.fontSize + 'px', font.fontFamily].join(' ').trim());\n var innerNodeWidth = node.x1 - node.x0 - nodePadding * 2;\n var hasTitle = node.depth > 0 && node.children && textSize.width <= innerNodeWidth;\n node.hasTitle = !!hasTitle;\n return hasTitle ? textSize.height + nodePadding * 2 : nodePadding;\n };\n };\n TreemapSeries.prototype.processData = function () {\n return __awaiter$2(this, void 0, void 0, function () {\n function traverse(root, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n var children = root.children,\n datum = root.datum;\n var label = datum[labelKey];\n var colorValue = colorKey ? datum[colorKey] : depth;\n Object.assign(root, {\n series: series\n });\n root.fill = !children || colorParents ? colorScale.convert(colorValue) : '#272931';\n root.colorValue = colorValue;\n if (label) {\n root.label = children ? label.toUpperCase() : label;\n } else {\n root.label = '';\n }\n if (children) {\n children.forEach(function (child) {\n return traverse(child, depth + 1);\n });\n }\n }\n var _a, data, sizeKey, labelKey, colorKey, colorDomain, colorRange, colorParents, dataRoot, colorScale, series;\n return __generator$2(this, function (_b) {\n if (!this.data) {\n return [2 /*return*/];\n }\n _a = this, data = _a.data, sizeKey = _a.sizeKey, labelKey = _a.labelKey, colorKey = _a.colorKey, colorDomain = _a.colorDomain, colorRange = _a.colorRange, colorParents = _a.colorParents;\n if (sizeKey) {\n dataRoot = hierarchy(data).sum(function (datum) {\n return datum.children ? 1 : datum[sizeKey];\n });\n } else {\n dataRoot = hierarchy(data).sum(function (datum) {\n return datum.children ? 0 : 1;\n });\n }\n this.dataRoot = dataRoot;\n colorScale = new LinearScale$1();\n colorScale.domain = colorDomain;\n colorScale.range = colorRange;\n series = this;\n traverse(this.dataRoot);\n return [2 /*return*/];\n });\n });\n };\n TreemapSeries.prototype.getLabelCenterX = function (datum) {\n return (datum.x0 + datum.x1) / 2;\n };\n TreemapSeries.prototype.getLabelCenterY = function (datum) {\n return (datum.y0 + datum.y1) / 2 + 2;\n };\n TreemapSeries.prototype.createNodeData = function () {\n return __awaiter$2(this, void 0, void 0, function () {\n return __generator$2(this, function (_a) {\n return [2 /*return*/, []];\n });\n });\n };\n TreemapSeries.prototype.update = function () {\n return __awaiter$2(this, void 0, void 0, function () {\n return __generator$2(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4 /*yield*/, this.updateSelections()];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.updateNodes()];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n TreemapSeries.prototype.updateSelections = function () {\n return __awaiter$2(this, void 0, void 0, function () {\n var _a, chart, dataRoot, seriesRect, descendants, _b, groupSelection, highlightSelection, update;\n return __generator$2(this, function (_c) {\n if (!this.nodeDataRefresh) {\n return [2 /*return*/];\n }\n this.nodeDataRefresh = false;\n _a = this, chart = _a.chart, dataRoot = _a.dataRoot;\n if (!chart || !dataRoot) {\n return [2 /*return*/];\n }\n seriesRect = chart.getSeriesRect();\n if (!seriesRect) {\n return [2 /*return*/];\n }\n this.layout.size = [seriesRect.width, seriesRect.height];\n this.updateLayoutPadding();\n descendants = this.layout.processData(dataRoot).descendants();\n _b = this, groupSelection = _b.groupSelection, highlightSelection = _b.highlightSelection;\n update = function (selection) {\n var updateGroups = selection.setData(descendants);\n updateGroups.exit.remove();\n var enterGroups = updateGroups.enter.append(Group$1);\n enterGroups.append(Rect);\n enterGroups.append(Text$1).each(function (node) {\n return node.tag = TextNodeTag.Name;\n });\n enterGroups.append(Text$1).each(function (node) {\n return node.tag = TextNodeTag.Value;\n });\n return updateGroups.merge(enterGroups);\n };\n this.groupSelection = update(groupSelection);\n this.highlightSelection = update(highlightSelection);\n return [2 /*return*/];\n });\n });\n };\n TreemapSeries.prototype.updateNodes = function () {\n return __awaiter$2(this, void 0, void 0, function () {\n var _a, nodePadding, labels, shadow, gradient, highlightedDatum, _b, deprecatedFill, deprecatedStroke, deprecatedStrokeWidth, _c, _d, highlightedFill, highlightedFillOpacity, _e, highlightedStroke, _f, highlightedDatumStrokeWidth, formatter, colorKey, labelKey, sizeKey, labelMeta, updateRectFn, updateNodeFn, updateValueFn;\n var _this = this;\n return __generator$2(this, function (_g) {\n if (!this.chart) {\n return [2 /*return*/];\n }\n _a = this, nodePadding = _a.nodePadding, labels = _a.labels, shadow = _a.shadow, gradient = _a.gradient, highlightedDatum = _a.chart.highlightedDatum, _b = _a.highlightStyle, deprecatedFill = _b.fill, deprecatedStroke = _b.stroke, deprecatedStrokeWidth = _b.strokeWidth, _c = _b.item, _d = _c.fill, highlightedFill = _d === void 0 ? deprecatedFill : _d, highlightedFillOpacity = _c.fillOpacity, _e = _c.stroke, highlightedStroke = _e === void 0 ? deprecatedStroke : _e, _f = _c.strokeWidth, highlightedDatumStrokeWidth = _f === void 0 ? deprecatedStrokeWidth : _f, formatter = _a.formatter, colorKey = _a.colorKey, labelKey = _a.labelKey, sizeKey = _a.sizeKey;\n labelMeta = this.buildLabelMeta(this.groupSelection.data);\n updateRectFn = function (rect, datum, isDatumHighlighted) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;\n var fill = isDatumHighlighted && highlightedFill !== undefined ? highlightedFill : datum.fill;\n var fillOpacity = (_a = isDatumHighlighted ? highlightedFillOpacity : 1, _a !== null && _a !== void 0 ? _a : 1);\n var stroke = isDatumHighlighted && highlightedStroke !== undefined ? highlightedStroke : datum.depth < 2 ? undefined : 'black';\n var strokeWidth = isDatumHighlighted && highlightedDatumStrokeWidth !== undefined ? highlightedDatumStrokeWidth : 1;\n var format;\n if (formatter) {\n format = formatter({\n datum: datum.datum,\n colorKey: colorKey,\n sizeKey: sizeKey,\n labelKey: labelKey,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n gradient: gradient,\n highlighted: isDatumHighlighted\n });\n }\n rect.fill = (_c = (_b = format) === null || _b === void 0 ? void 0 : _b.fill, _c !== null && _c !== void 0 ? _c : fill);\n rect.fillOpacity = (_e = (_d = format) === null || _d === void 0 ? void 0 : _d.fillOpacity, _e !== null && _e !== void 0 ? _e : fillOpacity);\n rect.stroke = (_g = (_f = format) === null || _f === void 0 ? void 0 : _f.stroke, _g !== null && _g !== void 0 ? _g : stroke);\n rect.strokeWidth = (_j = (_h = format) === null || _h === void 0 ? void 0 : _h.strokeWidth, _j !== null && _j !== void 0 ? _j : strokeWidth);\n rect.gradient = (_l = (_k = format) === null || _k === void 0 ? void 0 : _k.gradient, _l !== null && _l !== void 0 ? _l : gradient);\n rect.crisp = true;\n rect.x = datum.x0;\n rect.y = datum.y0;\n rect.width = datum.x1 - datum.x0;\n rect.height = datum.y1 - datum.y0;\n if (isDatumHighlighted && datum.children) {\n var x0 = datum.x0,\n x1 = datum.x1,\n y0 = datum.y0,\n y1 = datum.y1;\n var pLeft = _this.layout.paddingLeft(datum);\n var pRight = _this.layout.paddingRight(datum);\n var pTop = _this.layout.paddingTop(datum);\n var pBottom = _this.layout.paddingBottom(datum);\n if (rect.clipPath) {\n rect.clipPath.clear();\n } else {\n rect.clipPath = new Path2D$1();\n }\n rect.clipMode = 'punch-out';\n rect.clipPath.moveTo(x0 + pLeft, y0 + pTop);\n rect.clipPath.lineTo(x1 - pRight, y0 + pTop);\n rect.clipPath.lineTo(x1 - pRight, y1 - pBottom);\n rect.clipPath.lineTo(x0 + pLeft, y1 - pBottom);\n rect.clipPath.lineTo(x0 + pLeft, y0 + pTop);\n rect.clipPath.closePath();\n }\n };\n this.groupSelection.selectByClass(Rect).each(function (rect, datum) {\n return updateRectFn(rect, datum, false);\n });\n this.highlightSelection.selectByClass(Rect).each(function (rect, datum) {\n var isDatumHighlighted = datum === highlightedDatum;\n rect.visible = isDatumHighlighted;\n if (rect.visible) {\n updateRectFn(rect, datum, isDatumHighlighted);\n }\n });\n updateNodeFn = function (text, datum, index, highlighted) {\n var _a;\n var hasTitle = datum.hasTitle;\n var _b = (_a = labelMeta[index], _a !== null && _a !== void 0 ? _a : {}),\n label = _b.label,\n textBaseline = _b.nodeBaseline;\n if (label != null && textBaseline != null) {\n text.textBaseline = textBaseline;\n text.fontWeight = label.fontWeight;\n text.fontSize = label.fontSize;\n text.fontFamily = label.fontFamily;\n text.textAlign = hasTitle ? 'left' : 'center';\n text.text = datum.label;\n text.fill = highlighted ? 'black' : label.color;\n text.fillShadow = !highlighted ? shadow : undefined;\n text.visible = true;\n } else {\n text.visible = false;\n }\n if (hasTitle) {\n text.x = datum.x0 + nodePadding;\n text.y = datum.y0 + nodePadding;\n } else {\n text.x = _this.getLabelCenterX(datum);\n text.y = _this.getLabelCenterY(datum);\n }\n };\n this.groupSelection.selectByTag(TextNodeTag.Name).each(function (text, datum, index) {\n return updateNodeFn(text, datum, index, false);\n });\n this.highlightSelection.selectByTag(TextNodeTag.Name).each(function (text, datum, index) {\n var isDatumHighlighted = datum === highlightedDatum;\n text.visible = isDatumHighlighted;\n if (text.visible) {\n updateNodeFn(text, datum, index, isDatumHighlighted);\n }\n });\n updateValueFn = function (text, datum, index, highlighted) {\n var _a;\n var _b = (_a = labelMeta[index], _a !== null && _a !== void 0 ? _a : {}),\n textBaseline = _b.valueBaseline,\n valueText = _b.valueText;\n var label = labels.color;\n if (label.enabled && textBaseline != null && valueText) {\n text.fontSize = label.fontSize;\n text.fontFamily = label.fontFamily;\n text.fontStyle = label.fontStyle;\n text.fontWeight = label.fontWeight;\n text.textBaseline = textBaseline;\n text.textAlign = 'center';\n text.text = valueText;\n text.fill = highlighted ? 'black' : label.color;\n text.fillShadow = highlighted ? undefined : shadow;\n text.visible = true;\n text.x = _this.getLabelCenterX(datum);\n text.y = _this.getLabelCenterY(datum);\n } else {\n text.visible = false;\n }\n };\n this.groupSelection.selectByTag(TextNodeTag.Value).each(function (text, datum, index) {\n return updateValueFn(text, datum, index, false);\n });\n this.highlightSelection.selectByTag(TextNodeTag.Value).each(function (text, datum, index) {\n var isDatumHighlighted = datum === highlightedDatum;\n text.visible = isDatumHighlighted;\n if (text.visible) {\n updateValueFn(text, datum, index, isDatumHighlighted);\n }\n });\n return [2 /*return*/];\n });\n });\n };\n TreemapSeries.prototype.buildLabelMeta = function (data) {\n var e_1, _a;\n var _b = this,\n labels = _b.labels,\n title = _b.title,\n subtitle = _b.subtitle,\n nodePadding = _b.nodePadding,\n colorKey = _b.colorKey;\n var labelMeta = [];\n labelMeta.length = this.groupSelection.data.length;\n var text = new Text$1();\n var index = 0;\n try {\n for (var data_1 = __values$9(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) {\n var datum = data_1_1.value;\n var value = datum.value;\n var isLeaf = !datum.children;\n var innerNodeWidth = datum.x1 - datum.x0 - nodePadding * 2;\n var innerNodeHeight = datum.y1 - datum.y0 - nodePadding * 2;\n var hasTitle = datum.hasTitle;\n var label = void 0;\n if (isLeaf) {\n if (innerNodeWidth > 40 && innerNodeHeight > 40) {\n label = labels.large;\n } else if (innerNodeWidth > 20 && innerNodeHeight > 20) {\n label = labels.medium;\n } else {\n label = labels.small;\n }\n } else if (datum.depth > 1) {\n label = subtitle;\n } else {\n label = title;\n }\n if (!label.enabled) {\n labelMeta[index++] = undefined;\n continue;\n }\n text.fontWeight = label.fontWeight;\n text.fontSize = label.fontSize;\n text.fontFamily = label.fontFamily;\n text.textAlign = hasTitle ? 'left' : 'center';\n text.text = datum.label;\n var nodeBBox = text.computeBBox();\n var hasNode = isLeaf && !!nodeBBox && nodeBBox.width <= innerNodeWidth && nodeBBox.height * 2 + 8 <= innerNodeHeight;\n var valueText = typeof value === 'number' && isFinite(value) ? String(toFixed(datum.colorValue)) + '%' : '';\n text.fontSize = labels.color.fontSize;\n text.fontFamily = labels.color.fontFamily;\n text.fontStyle = labels.color.fontStyle;\n text.fontWeight = labels.color.fontWeight;\n text.text = valueText;\n var valueBBox = text.computeBBox();\n var hasValue = isLeaf && !!colorKey && hasNode && !!valueBBox && valueBBox.width < innerNodeWidth;\n var nodeBaseline = hasValue ? 'bottom' : isLeaf ? 'middle' : hasTitle ? 'top' : 'middle';\n labelMeta[index++] = {\n label: label,\n nodeBaseline: hasTitle || hasNode ? nodeBaseline : undefined,\n valueBaseline: hasValue ? 'top' : undefined,\n valueText: valueText\n };\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (data_1_1 && !data_1_1.done && (_a = data_1.return)) _a.call(data_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n return labelMeta;\n };\n TreemapSeries.prototype.getDomain = function (_direction) {\n return [0, 1];\n };\n TreemapSeries.prototype.getNodeClickEvent = function (event, datum) {\n return new TreemapSeriesNodeClickEvent(this.labelKey, this.sizeKey, this.colorKey, event, datum, this);\n };\n TreemapSeries.prototype.getTooltipHtml = function (nodeDatum) {\n var _a = this,\n tooltip = _a.tooltip,\n sizeKey = _a.sizeKey,\n labelKey = _a.labelKey,\n colorKey = _a.colorKey,\n colorName = _a.colorName,\n rootName = _a.rootName,\n seriesId = _a.id;\n var datum = nodeDatum.datum;\n var tooltipRenderer = tooltip.renderer;\n var title = nodeDatum.depth ? datum[labelKey] : rootName || datum[labelKey];\n var content = undefined;\n var color = nodeDatum.fill || 'gray';\n if (colorKey && colorName) {\n var colorValue = datum[colorKey];\n if (typeof colorValue === 'number' && isFinite(colorValue)) {\n content = \"\" + colorName + \": \" + toFixed(datum[colorKey]);\n }\n }\n var defaults = {\n title: title,\n backgroundColor: color,\n content: content\n };\n if (tooltipRenderer) {\n return toTooltipHtml$1(tooltipRenderer({\n datum: nodeDatum,\n sizeKey: sizeKey,\n labelKey: labelKey,\n colorKey: colorKey,\n title: title,\n color: color,\n seriesId: seriesId\n }), defaults);\n }\n return toTooltipHtml$1(defaults);\n };\n TreemapSeries.prototype.getLegendData = function () {\n // Override point for subclasses.\n return [];\n };\n TreemapSeries.className = 'TreemapSeries';\n TreemapSeries.type = 'treemap';\n __decorate$1a([Validate(STRING)], TreemapSeries.prototype, \"labelKey\", void 0);\n __decorate$1a([Validate(OPT_STRING)], TreemapSeries.prototype, \"sizeKey\", void 0);\n __decorate$1a([Validate(OPT_STRING)], TreemapSeries.prototype, \"colorKey\", void 0);\n __decorate$1a([Validate(NUMBER_ARRAY)], TreemapSeries.prototype, \"colorDomain\", void 0);\n __decorate$1a([Validate(COLOR_STRING_ARRAY)], TreemapSeries.prototype, \"colorRange\", void 0);\n __decorate$1a([Validate(BOOLEAN)], TreemapSeries.prototype, \"colorParents\", void 0);\n __decorate$1a([Validate(BOOLEAN)], TreemapSeries.prototype, \"gradient\", void 0);\n __decorate$1a([Validate(OPT_FUNCTION)], TreemapSeries.prototype, \"formatter\", void 0);\n __decorate$1a([Validate(STRING)], TreemapSeries.prototype, \"colorName\", void 0);\n __decorate$1a([Validate(STRING)], TreemapSeries.prototype, \"rootName\", void 0);\n return TreemapSeries;\n}(HierarchySeries);\nvar __extends$20 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$19 = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar Sector = /** @class */function (_super) {\n __extends$20(Sector, _super);\n function Sector() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.centerX = 0;\n _this.centerY = 0;\n _this.centerOffset = 0;\n _this.innerRadius = 10;\n _this.outerRadius = 20;\n _this.startAngle = 0;\n _this.endAngle = Math.PI * 2;\n _this.angleOffset = 0;\n return _this;\n }\n Sector.prototype.computeBBox = function () {\n var radius = this.outerRadius;\n return new BBox$1(this.centerX - radius, this.centerY - radius, radius * 2, radius * 2);\n };\n Sector.prototype.isFullPie = function () {\n return isEqual(normalizeAngle360(this.startAngle), normalizeAngle360(this.endAngle));\n };\n Sector.prototype.updatePath = function () {\n var path = this.path;\n var angleOffset = this.angleOffset;\n var startAngle = Math.min(this.startAngle, this.endAngle) + angleOffset;\n var endAngle = Math.max(this.startAngle, this.endAngle) + angleOffset;\n var midAngle = (startAngle + endAngle) * 0.5;\n var innerRadius = Math.min(this.innerRadius, this.outerRadius);\n var outerRadius = Math.max(this.innerRadius, this.outerRadius);\n var centerOffset = this.centerOffset;\n var fullPie = this.isFullPie();\n var centerX = this.centerX;\n var centerY = this.centerY;\n path.clear();\n if (centerOffset) {\n centerX += centerOffset * Math.cos(midAngle);\n centerY += centerOffset * Math.sin(midAngle);\n }\n if (!fullPie) {\n path.moveTo(centerX + innerRadius * Math.cos(startAngle), centerY + innerRadius * Math.sin(startAngle));\n path.lineTo(centerX + outerRadius * Math.cos(startAngle), centerY + outerRadius * Math.sin(startAngle));\n }\n path.cubicArc(centerX, centerY, outerRadius, outerRadius, 0, startAngle, endAngle, 0);\n if (fullPie) {\n path.moveTo(centerX + innerRadius * Math.cos(endAngle), centerY + innerRadius * Math.sin(endAngle));\n } else {\n // Temp workaround for https://bugs.chromium.org/p/chromium/issues/detail?id=993330\n // Revert this commit when fixed ^^.\n var x = centerX + innerRadius * Math.cos(endAngle);\n path.lineTo(Math.abs(x) < 1e-8 ? 0 : x, centerY + innerRadius * Math.sin(endAngle));\n }\n path.cubicArc(centerX, centerY, innerRadius, innerRadius, 0, endAngle, startAngle, 1);\n path.closePath();\n this.dirtyPath = false;\n };\n Sector.className = 'Sector';\n __decorate$19([ScenePathChangeDetection()], Sector.prototype, \"centerX\", void 0);\n __decorate$19([ScenePathChangeDetection()], Sector.prototype, \"centerY\", void 0);\n __decorate$19([ScenePathChangeDetection()], Sector.prototype, \"centerOffset\", void 0);\n __decorate$19([ScenePathChangeDetection()], Sector.prototype, \"innerRadius\", void 0);\n __decorate$19([ScenePathChangeDetection()], Sector.prototype, \"outerRadius\", void 0);\n __decorate$19([ScenePathChangeDetection()], Sector.prototype, \"startAngle\", void 0);\n __decorate$19([ScenePathChangeDetection()], Sector.prototype, \"endAngle\", void 0);\n __decorate$19([ScenePathChangeDetection()], Sector.prototype, \"angleOffset\", void 0);\n return Sector;\n}(Path$1);\nvar __extends$1$ = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign$t = undefined && undefined.__assign || function () {\n __assign$t = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$t.apply(this, arguments);\n};\nvar __decorate$18 = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __awaiter$1 = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator$1 = undefined && undefined.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __read$n = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread$9 = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$n(arguments[i]));\n return ar;\n};\nvar PieSeriesNodeClickEvent = /** @class */function (_super) {\n __extends$1$(PieSeriesNodeClickEvent, _super);\n function PieSeriesNodeClickEvent(angleKey, calloutLabelKey, sectorLabelKey, radiusKey, nativeEvent, datum, series) {\n var _this = _super.call(this, nativeEvent, datum, series) || this;\n _this.angleKey = angleKey;\n _this.calloutLabelKey = calloutLabelKey;\n _this.sectorLabelKey = sectorLabelKey;\n _this.radiusKey = radiusKey;\n return _this;\n }\n __decorate$18([DeprecatedAndRenamedTo('calloutLabelKey')], PieSeriesNodeClickEvent.prototype, \"labelKey\", void 0);\n return PieSeriesNodeClickEvent;\n}(SeriesNodeClickEvent);\nvar PieHighlightStyle = /** @class */function (_super) {\n __extends$1$(PieHighlightStyle, _super);\n function PieHighlightStyle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$18([Validate(OPT_NUMBER(0))], PieHighlightStyle.prototype, \"centerOffset\", void 0);\n return PieHighlightStyle;\n}(HighlightStyle);\nvar PieNodeTag = /*#__PURE__*/function (PieNodeTag) {\n PieNodeTag[PieNodeTag[\"Sector\"] = 0] = \"Sector\";\n PieNodeTag[PieNodeTag[\"Callout\"] = 1] = \"Callout\";\n PieNodeTag[PieNodeTag[\"Label\"] = 2] = \"Label\";\n return PieNodeTag;\n}(PieNodeTag || {});\nvar PieSeriesCalloutLabel = /** @class */function (_super) {\n __extends$1$(PieSeriesCalloutLabel, _super);\n function PieSeriesCalloutLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.offset = 3; // from the callout line\n _this.minAngle = 20; // in degrees\n _this.formatter = undefined;\n return _this;\n }\n __decorate$18([Validate(NUMBER(0))], PieSeriesCalloutLabel.prototype, \"offset\", void 0);\n __decorate$18([Validate(NUMBER(0))], PieSeriesCalloutLabel.prototype, \"minAngle\", void 0);\n __decorate$18([Validate(OPT_FUNCTION)], PieSeriesCalloutLabel.prototype, \"formatter\", void 0);\n return PieSeriesCalloutLabel;\n}(Label$1);\nvar PieSeriesSectorLabel = /** @class */function (_super) {\n __extends$1$(PieSeriesSectorLabel, _super);\n function PieSeriesSectorLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.positionOffset = 0;\n _this.positionRatio = 0.5;\n _this.formatter = undefined;\n return _this;\n }\n __decorate$18([Validate(NUMBER())], PieSeriesSectorLabel.prototype, \"positionOffset\", void 0);\n __decorate$18([Validate(NUMBER(0, 1))], PieSeriesSectorLabel.prototype, \"positionRatio\", void 0);\n __decorate$18([Validate(OPT_FUNCTION)], PieSeriesSectorLabel.prototype, \"formatter\", void 0);\n return PieSeriesSectorLabel;\n}(Label$1);\nvar PieSeriesCalloutLine = /** @class */function (_super) {\n __extends$1$(PieSeriesCalloutLine, _super);\n function PieSeriesCalloutLine() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.colors = ['#874349', '#718661', '#a48f5f', '#5a7088', '#7f637a', '#5d8692'];\n _this.length = 10;\n _this.strokeWidth = 1;\n return _this;\n }\n __decorate$18([Validate(COLOR_STRING_ARRAY)], PieSeriesCalloutLine.prototype, \"colors\", void 0);\n __decorate$18([Validate(NUMBER(0))], PieSeriesCalloutLine.prototype, \"length\", void 0);\n __decorate$18([Validate(NUMBER(0))], PieSeriesCalloutLine.prototype, \"strokeWidth\", void 0);\n return PieSeriesCalloutLine;\n}(Observable$1);\nvar PieSeriesTooltip = /** @class */function (_super) {\n __extends$1$(PieSeriesTooltip, _super);\n function PieSeriesTooltip() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.renderer = undefined;\n return _this;\n }\n __decorate$18([Validate(OPT_FUNCTION)], PieSeriesTooltip.prototype, \"renderer\", void 0);\n return PieSeriesTooltip;\n}(SeriesTooltip);\nvar PieTitle = /** @class */function (_super) {\n __extends$1$(PieTitle, _super);\n function PieTitle() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.showInLegend = false;\n return _this;\n }\n __decorate$18([Validate(BOOLEAN)], PieTitle.prototype, \"showInLegend\", void 0);\n return PieTitle;\n}(Caption);\nvar DoughnutInnerLabel = /** @class */function (_super) {\n __extends$1$(DoughnutInnerLabel, _super);\n function DoughnutInnerLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.text = '';\n _this.margin = 2;\n return _this;\n }\n __decorate$18([Validate(STRING)], DoughnutInnerLabel.prototype, \"text\", void 0);\n __decorate$18([Validate(NUMBER())], DoughnutInnerLabel.prototype, \"margin\", void 0);\n return DoughnutInnerLabel;\n}(Label$1);\nvar DoughnutInnerCircle = /** @class */function () {\n function DoughnutInnerCircle() {\n this.fill = 'transparent';\n this.fillOpacity = 1;\n }\n __decorate$18([Validate(COLOR_STRING)], DoughnutInnerCircle.prototype, \"fill\", void 0);\n __decorate$18([Validate(OPT_NUMBER(0, 1))], DoughnutInnerCircle.prototype, \"fillOpacity\", void 0);\n return DoughnutInnerCircle;\n}();\nfunction isPointInArc(x, y, sector) {\n var radius = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\n var innerRadius = sector.innerRadius,\n outerRadius = sector.outerRadius;\n if (radius < Math.min(innerRadius, outerRadius) || radius > Math.max(innerRadius, outerRadius)) {\n return false;\n }\n // Start and End angles are expected to be [-90, 270]\n // while Math.atan2 returns [-180, 180]\n var angle = Math.atan2(y, x);\n if (angle < -Math.PI / 2) {\n angle += 2 * Math.PI;\n }\n // Start is actually bigger than End clock-wise\n var startAngle = sector.startAngle,\n endAngle = sector.endAngle;\n if (endAngle === -Math.PI / 2) {\n return angle < startAngle;\n }\n if (startAngle === 3 * Math.PI / 2) {\n return angle > endAngle;\n }\n return angle >= endAngle && angle <= startAngle;\n}\nvar PieSeries = /** @class */function (_super) {\n __extends$1$(PieSeries, _super);\n function PieSeries() {\n var _this = _super.call(this, {\n useLabelLayer: true\n }) || this;\n _this.radiusScale = new LinearScale$1();\n _this.groupSelection = Selection$1.select(_this.pickGroup).selectAll();\n _this.highlightSelection = Selection$1.select(_this.highlightGroup).selectAll();\n /**\n * The processed data that gets visualized.\n */\n _this.groupSelectionData = [];\n _this.sectorFormatData = [];\n _this.angleScale = function () {\n var scale = new LinearScale$1();\n // Each sector is a ratio of the whole, where all ratios add up to 1.\n scale.domain = [0, 1];\n // Add 90 deg to start the first pie at 12 o'clock.\n scale.range = [-Math.PI, Math.PI].map(function (angle) {\n return angle + Math.PI / 2;\n });\n return scale;\n }();\n // When a user toggles a series item (e.g. from the legend), its boolean state is recorded here.\n _this.seriesItemEnabled = [];\n _this.calloutLabel = new PieSeriesCalloutLabel();\n _this.label = _this.calloutLabel;\n _this.sectorLabel = new PieSeriesSectorLabel();\n _this.calloutLine = new PieSeriesCalloutLine();\n _this.callout = _this.calloutLine;\n _this.tooltip = new PieSeriesTooltip();\n /**\n * The key of the numeric field to use to determine the angle (for example,\n * a pie sector angle).\n */\n _this.angleKey = '';\n _this.angleName = '';\n _this.innerLabels = [];\n /**\n * The key of the numeric field to use to determine the radii of pie sectors.\n * The largest value will correspond to the full radius and smaller values to\n * proportionally smaller radii.\n */\n _this.radiusKey = undefined;\n _this.radiusName = undefined;\n _this.radiusMin = undefined;\n _this.radiusMax = undefined;\n _this.calloutLabelKey = undefined;\n _this.calloutLabelName = undefined;\n _this.labelKey = undefined;\n _this.labelName = undefined;\n _this.sectorLabelKey = undefined;\n _this.sectorLabelName = undefined;\n _this.fills = ['#c16068', '#a2bf8a', '#ebcc87', '#80a0c3', '#b58dae', '#85c0d1'];\n _this.strokes = ['#874349', '#718661', '#a48f5f', '#5a7088', '#7f637a', '#5d8692'];\n _this.fillOpacity = 1;\n _this.strokeOpacity = 1;\n _this.lineDash = [0];\n _this.lineDashOffset = 0;\n _this.formatter = undefined;\n /**\n * The series rotation in degrees.\n */\n _this.rotation = 0;\n _this.outerRadiusOffset = 0;\n _this.outerRadiusRatio = 1;\n _this.innerRadiusOffset = 0;\n _this.innerRadiusRatio = 1;\n _this.strokeWidth = 1;\n _this.shadow = undefined;\n _this.highlightStyle = new PieHighlightStyle();\n _this.datumSectorRefs = new WeakMap();\n var pieLabels = new Group$1();\n var pieSectorLabels = new Group$1();\n var innerLabels = new Group$1();\n _this.labelGroup.append(pieLabels);\n _this.labelGroup.append(pieSectorLabels);\n _this.labelGroup.append(innerLabels);\n _this.calloutSelection = Selection$1.select(pieLabels).selectAll();\n _this.sectorLabelSelection = Selection$1.select(pieSectorLabels).selectAll();\n _this.innerLabelsSelection = Selection$1.select(innerLabels).selectAll();\n return _this;\n }\n Object.defineProperty(PieSeries.prototype, \"title\", {\n get: function () {\n return this._title;\n },\n set: function (value) {\n var _a, _b;\n var oldTitle = this._title;\n if (oldTitle !== value) {\n if (oldTitle) {\n (_a = this.labelGroup) === null || _a === void 0 ? void 0 : _a.removeChild(oldTitle.node);\n }\n if (value) {\n value.node.textBaseline = 'bottom';\n (_b = this.labelGroup) === null || _b === void 0 ? void 0 : _b.appendChild(value.node);\n }\n this._title = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"data\", {\n get: function () {\n return this._data;\n },\n set: function (input) {\n this._data = input;\n this.processSeriesItemEnabled();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"innerCircle\", {\n get: function () {\n return this._innerCircleConfig;\n },\n set: function (value) {\n var _a;\n var oldCircleCfg = this._innerCircleConfig;\n if (oldCircleCfg !== value) {\n var oldNode = this._innerCircleNode;\n var circle = void 0;\n if (oldNode) {\n this.backgroundGroup.removeChild(oldNode);\n }\n if (value) {\n circle = new Circle$1();\n circle.fill = value.fill;\n circle.fillOpacity = (_a = value.fillOpacity, _a !== null && _a !== void 0 ? _a : 1);\n this.backgroundGroup.appendChild(circle);\n }\n this._innerCircleConfig = value;\n this._innerCircleNode = circle;\n }\n },\n enumerable: true,\n configurable: true\n });\n PieSeries.prototype.visibleChanged = function () {\n this.processSeriesItemEnabled();\n };\n PieSeries.prototype.processSeriesItemEnabled = function () {\n var _a;\n var _b = this,\n data = _b.data,\n visible = _b.visible;\n this.seriesItemEnabled = ((_a = data) === null || _a === void 0 ? void 0 : _a.map(function () {\n return visible;\n })) || [];\n };\n PieSeries.prototype.setColors = function (fills, strokes) {\n this.fills = fills;\n this.strokes = strokes;\n this.calloutLine.colors = strokes;\n };\n PieSeries.prototype.getDomain = function (direction) {\n if (direction === ChartAxisDirection.X) {\n return this.angleScale.domain;\n } else {\n return this.radiusScale.domain;\n }\n };\n PieSeries.prototype.processData = function () {\n return __awaiter$1(this, void 0, void 0, function () {\n var _a, angleKey, radiusKey, seriesItemEnabled, angleScale, groupSelectionData, sectorFormatData, calloutLabel, sectorLabel, seriesId, data, angleData, angleDataTotal, angleDataRatios, labelFormatter, labelKey, sectorLabelKey, labelData, sectorLabelData, radiusData, getLabelFormatterParams, showValueDeprecationWarning_1, sectorLabelFormatter, _b, radiusMin, radiusMax, radii, min_1, max, delta_1, rotation, halfPi, datumIndex, quadrantTextOpts, end;\n var _this = this;\n return __generator$1(this, function (_c) {\n _a = this, angleKey = _a.angleKey, radiusKey = _a.radiusKey, seriesItemEnabled = _a.seriesItemEnabled, angleScale = _a.angleScale, groupSelectionData = _a.groupSelectionData, sectorFormatData = _a.sectorFormatData, calloutLabel = _a.calloutLabel, sectorLabel = _a.sectorLabel, seriesId = _a.id;\n data = angleKey && this.data ? this.data : [];\n angleData = data.map(function (datum, index) {\n return seriesItemEnabled[index] && Math.abs(+datum[angleKey]) || 0;\n });\n angleDataTotal = angleData.reduce(function (a, b) {\n return a + b;\n }, 0);\n angleDataRatios = function () {\n var sum = 0;\n return angleData.map(function (datum) {\n return sum += datum / angleDataTotal;\n });\n }();\n labelFormatter = calloutLabel.formatter;\n labelKey = calloutLabel.enabled ? this.calloutLabelKey : undefined;\n sectorLabelKey = sectorLabel.enabled ? this.sectorLabelKey : undefined;\n labelData = [];\n sectorLabelData = [];\n radiusData = [];\n getLabelFormatterParams = function (datum) {\n return {\n datum: datum,\n angleKey: angleKey,\n angleValue: datum[angleKey],\n angleName: _this.angleName,\n radiusKey: radiusKey,\n radiusValue: radiusKey ? datum[radiusKey] : undefined,\n radiusName: _this.radiusName,\n labelKey: labelKey,\n labelValue: labelKey ? datum[labelKey] : undefined,\n labelName: _this.calloutLabelName,\n calloutLabelKey: labelKey,\n calloutLabelValue: labelKey ? datum[labelKey] : undefined,\n calloutLabelName: _this.calloutLabelName,\n sectorLabelKey: sectorLabelKey,\n sectorLabelValue: sectorLabelKey ? datum[sectorLabelKey] : undefined,\n sectorLabelName: _this.sectorLabelName,\n seriesId: seriesId\n };\n };\n if (labelKey) {\n if (labelFormatter) {\n showValueDeprecationWarning_1 = function () {\n return doOnce$1(function () {\n return console.warn('AG Charts - the use of { value } in the pie chart label formatter function is deprecated. Please use { datum, labelKey, ... } instead.');\n }, 'deprecated use of \"value\" property in pie chart label formatter');\n };\n labelData = data.map(function (datum) {\n var deprecatedValue = datum[labelKey];\n var formatterParams = __assign$t(__assign$t({}, getLabelFormatterParams(datum)), {\n get value() {\n showValueDeprecationWarning_1();\n return deprecatedValue;\n },\n set value(v) {\n showValueDeprecationWarning_1();\n deprecatedValue = v;\n }\n });\n return labelFormatter(formatterParams);\n });\n } else {\n labelData = data.map(function (datum) {\n return String(datum[labelKey]);\n });\n }\n }\n sectorLabelFormatter = sectorLabel.formatter;\n if (sectorLabelKey) {\n if (sectorLabelFormatter) {\n sectorLabelData = data.map(function (datum) {\n var formatterParams = getLabelFormatterParams(datum);\n return sectorLabelFormatter(formatterParams);\n });\n } else {\n sectorLabelData = data.map(function (datum) {\n return String(datum[sectorLabelKey]);\n });\n }\n }\n if (radiusKey) {\n _b = this, radiusMin = _b.radiusMin, radiusMax = _b.radiusMax;\n radii = data.map(function (datum) {\n return Math.abs(datum[radiusKey]);\n });\n min_1 = radiusMin !== null && radiusMin !== void 0 ? radiusMin : 0;\n max = radiusMax ? radiusMax : Math.max.apply(Math, __spread$9(radii));\n delta_1 = max - min_1;\n radiusData = radii.map(function (value) {\n return delta_1 ? (value - min_1) / delta_1 : 1;\n });\n }\n groupSelectionData.length = 0;\n sectorFormatData.length = 0;\n sectorFormatData.push.apply(sectorFormatData, __spread$9(data.map(function (datum, datumIdx) {\n return _this.getSectorFormat(datum, datumIdx, datumIdx, false);\n })));\n rotation = toRadians(this.rotation);\n halfPi = Math.PI / 2;\n datumIndex = 0;\n quadrantTextOpts = [{\n textAlign: 'center',\n textBaseline: 'bottom'\n }, {\n textAlign: 'left',\n textBaseline: 'middle'\n }, {\n textAlign: 'center',\n textBaseline: 'hanging'\n }, {\n textAlign: 'right',\n textBaseline: 'middle'\n }];\n end = 0;\n angleDataRatios.forEach(function (start) {\n if (isNaN(start)) {\n return;\n } // No sectors displayed - nothing to do.\n var radius = radiusKey ? radiusData[datumIndex] : 1;\n var startAngle = angleScale.convert(start) + rotation;\n var endAngle = angleScale.convert(end) + rotation;\n var midAngle = (startAngle + endAngle) / 2;\n var span = Math.abs(endAngle - startAngle);\n var midCos = Math.cos(midAngle);\n var midSin = Math.sin(midAngle);\n var labelMinAngle = toRadians(calloutLabel.minAngle);\n var labelVisible = labelKey && span > labelMinAngle;\n var midAngle180 = normalizeAngle180(midAngle);\n // Split the circle into quadrants like so: ⊗\n var quadrantStart = -3 * Math.PI / 4; // same as `normalizeAngle180(toRadians(-135))`\n var quadrantOffset = midAngle180 - quadrantStart;\n var quadrant = Math.floor(quadrantOffset / halfPi);\n var quadrantIndex = mod(quadrant, quadrantTextOpts.length);\n var _a = quadrantTextOpts[quadrantIndex],\n textAlign = _a.textAlign,\n textBaseline = _a.textBaseline;\n var datum = data[datumIndex];\n var itemId = datumIndex;\n groupSelectionData.push({\n series: _this,\n datum: datum,\n itemId: itemId,\n index: datumIndex,\n radius: radius,\n startAngle: startAngle,\n endAngle: endAngle,\n midAngle: midAngle,\n midCos: midCos,\n midSin: midSin,\n calloutLabel: labelVisible ? {\n text: labelData[datumIndex],\n textAlign: textAlign,\n textBaseline: textBaseline\n } : undefined,\n sectorLabel: sectorLabelKey ? {\n text: sectorLabelData[datumIndex]\n } : undefined,\n sectorFormat: sectorFormatData[datumIndex]\n });\n datumIndex++;\n end = start; // Update for next iteration.\n });\n return [2 /*return*/];\n });\n });\n };\n PieSeries.prototype.getSectorFormat = function (datum, itemId, index, highlight) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;\n var _p = this,\n angleKey = _p.angleKey,\n radiusKey = _p.radiusKey,\n fills = _p.fills,\n strokes = _p.strokes,\n seriesFillOpacity = _p.fillOpacity,\n formatter = _p.formatter,\n seriesId = _p.id;\n var highlightedDatum = this.chart.highlightedDatum;\n var isDatumHighlighted = highlight && ((_a = highlightedDatum) === null || _a === void 0 ? void 0 : _a.series) === this && itemId === highlightedDatum.itemId;\n var highlightedStyle = isDatumHighlighted ? this.highlightStyle.item : null;\n var fill = ((_b = highlightedStyle) === null || _b === void 0 ? void 0 : _b.fill) || fills[index % fills.length];\n var fillOpacity = (_d = (_c = highlightedStyle) === null || _c === void 0 ? void 0 : _c.fillOpacity, _d !== null && _d !== void 0 ? _d : seriesFillOpacity);\n var stroke = ((_e = highlightedStyle) === null || _e === void 0 ? void 0 : _e.stroke) || strokes[index % strokes.length];\n var strokeWidth = (_g = (_f = highlightedStyle) === null || _f === void 0 ? void 0 : _f.strokeWidth, _g !== null && _g !== void 0 ? _g : this.getStrokeWidth(this.strokeWidth));\n var format;\n if (formatter) {\n format = formatter({\n datum: datum,\n angleKey: angleKey,\n radiusKey: radiusKey,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n highlighted: isDatumHighlighted,\n seriesId: seriesId\n });\n }\n return {\n fill: ((_h = format) === null || _h === void 0 ? void 0 : _h.fill) || fill,\n fillOpacity: (_k = (_j = format) === null || _j === void 0 ? void 0 : _j.fillOpacity, _k !== null && _k !== void 0 ? _k : fillOpacity),\n stroke: ((_l = format) === null || _l === void 0 ? void 0 : _l.stroke) || stroke,\n strokeWidth: (_o = (_m = format) === null || _m === void 0 ? void 0 : _m.strokeWidth, _o !== null && _o !== void 0 ? _o : strokeWidth)\n };\n };\n PieSeries.prototype.createNodeData = function () {\n return __awaiter$1(this, void 0, void 0, function () {\n return __generator$1(this, function (_a) {\n return [2 /*return*/, []];\n });\n });\n };\n PieSeries.prototype.getInnerRadius = function () {\n var _a = this,\n radius = _a.radius,\n innerRadiusRatio = _a.innerRadiusRatio,\n innerRadiusOffset = _a.innerRadiusOffset;\n var innerRadius = radius * (innerRadiusRatio !== null && innerRadiusRatio !== void 0 ? innerRadiusRatio : 1) + (innerRadiusOffset ? innerRadiusOffset : 0);\n if (innerRadius === radius || innerRadius < 0) {\n return 0;\n }\n return innerRadius;\n };\n PieSeries.prototype.getOuterRadius = function () {\n var _a = this,\n radius = _a.radius,\n outerRadiusRatio = _a.outerRadiusRatio,\n outerRadiusOffset = _a.outerRadiusOffset;\n var outerRadius = radius * (outerRadiusRatio !== null && outerRadiusRatio !== void 0 ? outerRadiusRatio : 1) + (outerRadiusOffset ? outerRadiusOffset : 0);\n if (outerRadius < 0) {\n return 0;\n }\n return outerRadius;\n };\n PieSeries.prototype.update = function () {\n return __awaiter$1(this, void 0, void 0, function () {\n var title, innerRadius, outerRadius, outerRadius_1, titleOffset;\n return __generator$1(this, function (_a) {\n switch (_a.label) {\n case 0:\n title = this.title;\n innerRadius = this.getInnerRadius();\n outerRadius = this.getOuterRadius();\n this.radiusScale.range = [innerRadius, outerRadius];\n this.group.translationX = this.centerX;\n this.group.translationY = this.centerY;\n if (title) {\n outerRadius_1 = Math.max(0, this.radiusScale.range[1]);\n if (outerRadius_1 === 0) {\n title.node.visible = false;\n } else {\n titleOffset = 2;\n title.node.translationY = -outerRadius_1 - titleOffset;\n title.node.visible = title.enabled;\n }\n }\n return [4 /*yield*/, this.updateSelections()];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.updateNodes()];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n PieSeries.prototype.updateSelections = function () {\n return __awaiter$1(this, void 0, void 0, function () {\n return __generator$1(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4 /*yield*/, this.updateGroupSelection()];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n PieSeries.prototype.updateGroupSelection = function () {\n return __awaiter$1(this, void 0, void 0, function () {\n var _a, groupSelection, highlightSelection, calloutSelection, sectorLabelSelection, innerLabelsSelection, update, updateLabels, enterLabels, updateSectorLabels, enterSectorLabels, updateInnerLabels, enterInnerLabels;\n var _this = this;\n return __generator$1(this, function (_b) {\n _a = this, groupSelection = _a.groupSelection, highlightSelection = _a.highlightSelection, calloutSelection = _a.calloutSelection, sectorLabelSelection = _a.sectorLabelSelection, innerLabelsSelection = _a.innerLabelsSelection;\n update = function (selection) {\n var updateGroups = selection.setData(_this.groupSelectionData);\n updateGroups.exit.remove();\n var enterGroups = updateGroups.enter.append(Group$1);\n enterGroups.append(Sector).each(function (node) {\n return node.tag = PieNodeTag.Sector;\n });\n return updateGroups.merge(enterGroups);\n };\n this.groupSelection = update(groupSelection);\n this.highlightSelection = update(highlightSelection);\n updateLabels = calloutSelection.setData(this.groupSelectionData);\n updateLabels.exit.remove();\n enterLabels = updateLabels.enter.append(Group$1);\n enterLabels.append(Line$1).each(function (node) {\n node.tag = PieNodeTag.Callout;\n node.pointerEvents = PointerEvents$1.None;\n });\n enterLabels.append(Text$1).each(function (node) {\n node.tag = PieNodeTag.Label;\n node.pointerEvents = PointerEvents$1.None;\n });\n this.calloutSelection = updateLabels.merge(enterLabels);\n updateSectorLabels = sectorLabelSelection.setData(this.groupSelectionData);\n updateSectorLabels.exit.remove();\n enterSectorLabels = updateSectorLabels.enter.append(Text$1);\n enterSectorLabels.each(function (node) {\n node.pointerEvents = PointerEvents$1.None;\n });\n this.sectorLabelSelection = updateSectorLabels.merge(enterSectorLabels);\n updateInnerLabels = innerLabelsSelection.setData(this.innerLabels);\n updateInnerLabels.exit.remove();\n enterInnerLabels = updateInnerLabels.enter.append(Text$1);\n enterInnerLabels.each(function (node) {\n node.pointerEvents = PointerEvents$1.None;\n });\n this.innerLabelsSelection = updateInnerLabels.merge(enterInnerLabels);\n return [2 /*return*/];\n });\n });\n };\n PieSeries.prototype.updateNodes = function () {\n var _a, _b;\n return __awaiter$1(this, void 0, void 0, function () {\n var isVisible, _c, radiusScale, calloutLine, highlightedDatum, centerOffsets, innerRadius, updateSectorFn, calloutColors, calloutLength, calloutStrokeWidth, _d, offset_1, fontStyle_1, fontWeight_1, fontSize_1, fontFamily_1, color_1;\n var _this = this;\n return __generator$1(this, function (_e) {\n if (!this.chart) {\n return [2 /*return*/];\n }\n isVisible = this.seriesItemEnabled.indexOf(true) >= 0;\n this.group.visible = isVisible;\n this.backgroundGroup.visible = isVisible;\n this.seriesGroup.visible = isVisible;\n this.highlightGroup.visible = isVisible && ((_b = (_a = this.chart) === null || _a === void 0 ? void 0 : _a.highlightedDatum) === null || _b === void 0 ? void 0 : _b.series) === this;\n this.labelGroup.visible = isVisible;\n this.seriesGroup.opacity = this.getOpacity();\n this.updateInnerCircle();\n _c = this, radiusScale = _c.radiusScale, calloutLine = _c.calloutLine, highlightedDatum = _c.chart.highlightedDatum;\n centerOffsets = [];\n innerRadius = radiusScale.convert(0);\n updateSectorFn = function (sector, datum, index, isDatumHighlighted) {\n var _a;\n var radius = radiusScale.convert(datum.radius, clamper$1);\n // Bring highlighted sector's parent group to front.\n var sectorParent = sector.parent;\n var sectorGrandParent = (_a = sectorParent) === null || _a === void 0 ? void 0 : _a.parent;\n if (isDatumHighlighted && sectorParent && sectorGrandParent) {\n sectorGrandParent.removeChild(sectorParent);\n sectorGrandParent.appendChild(sectorParent);\n }\n sector.innerRadius = Math.max(0, innerRadius);\n sector.outerRadius = Math.max(0, radius);\n sector.startAngle = datum.startAngle;\n sector.endAngle = datum.endAngle;\n var format = _this.getSectorFormat(datum.datum, datum.itemId, index, isDatumHighlighted);\n sector.fill = format.fill;\n sector.stroke = format.stroke;\n sector.strokeWidth = format.strokeWidth;\n sector.fillOpacity = format.fillOpacity;\n sector.strokeOpacity = _this.strokeOpacity;\n sector.lineDash = _this.lineDash;\n sector.lineDashOffset = _this.lineDashOffset;\n sector.fillShadow = _this.shadow;\n sector.lineJoin = 'round';\n centerOffsets.push(sector.centerOffset);\n _this.datumSectorRefs.set(datum, sector);\n };\n this.groupSelection.selectByTag(PieNodeTag.Sector).each(function (node, datum, index) {\n return updateSectorFn(node, datum, index, false);\n });\n this.highlightSelection.selectByTag(PieNodeTag.Sector).each(function (node, datum, index) {\n var _a;\n var isDatumHighlighted = ((_a = highlightedDatum) === null || _a === void 0 ? void 0 : _a.series) === _this && datum.itemId === highlightedDatum.itemId;\n node.visible = isDatumHighlighted;\n if (node.visible) {\n updateSectorFn(node, datum, index, isDatumHighlighted);\n }\n });\n calloutColors = calloutLine.colors, calloutLength = calloutLine.length, calloutStrokeWidth = calloutLine.strokeWidth;\n this.calloutSelection.selectByTag(PieNodeTag.Callout).each(function (line, datum, index) {\n var radius = radiusScale.convert(datum.radius, clamper$1);\n var outerRadius = Math.max(0, radius);\n if (datum.calloutLabel && outerRadius !== 0) {\n line.strokeWidth = calloutStrokeWidth;\n line.stroke = calloutColors[index % calloutColors.length];\n line.x1 = datum.midCos * outerRadius;\n line.y1 = datum.midSin * outerRadius;\n line.x2 = datum.midCos * (outerRadius + calloutLength);\n line.y2 = datum.midSin * (outerRadius + calloutLength);\n } else {\n line.stroke = undefined;\n }\n });\n {\n _d = this.calloutLabel, offset_1 = _d.offset, fontStyle_1 = _d.fontStyle, fontWeight_1 = _d.fontWeight, fontSize_1 = _d.fontSize, fontFamily_1 = _d.fontFamily, color_1 = _d.color;\n this.calloutSelection.selectByTag(PieNodeTag.Label).each(function (text, datum, index) {\n var label = datum.calloutLabel;\n var radius = radiusScale.convert(datum.radius, clamper$1);\n var outerRadius = Math.max(0, radius);\n if (label && outerRadius !== 0) {\n var labelRadius = centerOffsets[index] + outerRadius + calloutLength + offset_1;\n text.fontStyle = fontStyle_1;\n text.fontWeight = fontWeight_1;\n text.fontSize = fontSize_1;\n text.fontFamily = fontFamily_1;\n text.text = label.text;\n text.x = datum.midCos * labelRadius;\n text.y = datum.midSin * labelRadius;\n text.fill = color_1;\n text.textAlign = label.textAlign;\n text.textBaseline = label.textBaseline;\n } else {\n text.fill = undefined;\n }\n });\n }\n this.updateSectorLabelNodes();\n this.updateInnerLabelNodes();\n return [2 /*return*/];\n });\n });\n };\n PieSeries.prototype.updateSectorLabelNodes = function () {\n var _this = this;\n var radiusScale = this.radiusScale;\n var innerRadius = radiusScale.convert(0);\n var _a = this.sectorLabel,\n fontSize = _a.fontSize,\n fontStyle = _a.fontStyle,\n fontWeight = _a.fontWeight,\n fontFamily = _a.fontFamily,\n positionOffset = _a.positionOffset,\n positionRatio = _a.positionRatio,\n color = _a.color;\n var isDoughnut = innerRadius > 0;\n var singleVisibleSector = this.seriesItemEnabled.filter(Boolean).length === 1;\n this.sectorLabelSelection.each(function (text, datum) {\n var sectorLabel = datum.sectorLabel;\n var radius = radiusScale.convert(datum.radius, clamper$1);\n var outerRadius = Math.max(0, radius);\n var isTextVisible = false;\n if (sectorLabel && outerRadius !== 0) {\n var labelRadius = innerRadius * (1 - positionRatio) + radius * positionRatio + positionOffset;\n text.fill = color;\n text.fontStyle = fontStyle;\n text.fontWeight = fontWeight;\n text.fontSize = fontSize;\n text.fontFamily = fontFamily;\n text.text = sectorLabel.text;\n var shouldPutTextInCenter = !isDoughnut && singleVisibleSector;\n if (shouldPutTextInCenter) {\n text.x = 0;\n text.y = 0;\n } else {\n text.x = datum.midCos * labelRadius;\n text.y = datum.midSin * labelRadius;\n }\n text.textAlign = 'center';\n text.textBaseline = 'middle';\n var sector = _this.datumSectorRefs.get(datum);\n if (sector) {\n var bbox = text.computeBBox();\n var corners = [[bbox.x, bbox.y], [bbox.x + bbox.width, bbox.y], [bbox.x + bbox.width, bbox.y + bbox.height], [bbox.x, bbox.y + bbox.height]];\n var startAngle = datum.startAngle,\n endAngle = datum.endAngle;\n var sectorBounds_1 = {\n startAngle: startAngle,\n endAngle: endAngle,\n innerRadius: innerRadius,\n outerRadius: outerRadius\n };\n if (corners.every(function (_a) {\n var _b = __read$n(_a, 2),\n x = _b[0],\n y = _b[1];\n return isPointInArc(x, y, sectorBounds_1);\n })) {\n isTextVisible = true;\n }\n }\n }\n text.visible = isTextVisible;\n });\n };\n PieSeries.prototype.updateInnerCircle = function () {\n var circle = this._innerCircleNode;\n if (!circle) {\n return;\n }\n var innerRadius = this.getInnerRadius();\n if (innerRadius === 0) {\n circle.size = 0;\n } else {\n var circleRadius = Math.min(innerRadius, this.getOuterRadius());\n var antiAliasingPadding = 1;\n circle.size = Math.ceil(circleRadius * 2 + antiAliasingPadding);\n }\n };\n PieSeries.prototype.updateInnerLabelNodes = function () {\n var textBBoxes = [];\n var margins = [];\n this.innerLabelsSelection.each(function (text, datum) {\n var fontStyle = datum.fontStyle,\n fontWeight = datum.fontWeight,\n fontSize = datum.fontSize,\n fontFamily = datum.fontFamily,\n color = datum.color;\n text.fontStyle = fontStyle;\n text.fontWeight = fontWeight;\n text.fontSize = fontSize;\n text.fontFamily = fontFamily;\n text.text = datum.text;\n text.x = 0;\n text.y = 0;\n text.fill = color;\n text.textAlign = 'center';\n text.textBaseline = 'alphabetic';\n textBBoxes.push(text.computeBBox());\n margins.push(datum.margin);\n });\n var getMarginTop = function (index) {\n return index === 0 ? 0 : margins[index];\n };\n var getMarginBottom = function (index) {\n return index === margins.length - 1 ? 0 : margins[index];\n };\n var totalHeight = textBBoxes.reduce(function (sum, bbox, i) {\n return sum + bbox.height + getMarginTop(i) + getMarginBottom(i);\n }, 0);\n var totalWidth = Math.max.apply(Math, __spread$9(textBBoxes.map(function (bbox) {\n return bbox.width;\n })));\n var innerRadius = this.getInnerRadius();\n var labelRadius = Math.sqrt(Math.pow(totalWidth / 2, 2) + Math.pow(totalHeight / 2, 2));\n var labelsVisible = labelRadius <= (innerRadius > 0 ? innerRadius : this.getOuterRadius());\n var textBottoms = [];\n for (var i = 0, prev = -totalHeight / 2; i < textBBoxes.length; i++) {\n var bbox = textBBoxes[i];\n var bottom = bbox.height + prev + getMarginTop(i);\n textBottoms.push(bottom);\n prev = bottom + getMarginBottom(i);\n }\n this.innerLabelsSelection.each(function (text, _datum, index) {\n text.y = textBottoms[index];\n text.visible = labelsVisible;\n });\n };\n PieSeries.prototype.getNodeClickEvent = function (event, datum) {\n return new PieSeriesNodeClickEvent(this.angleKey, this.calloutLabelKey, this.sectorLabelKey, this.radiusKey, event, datum, this);\n };\n PieSeries.prototype.getTooltipHtml = function (nodeDatum) {\n var angleKey = this.angleKey;\n if (!angleKey) {\n return '';\n }\n var _a = this,\n tooltip = _a.tooltip,\n angleName = _a.angleName,\n radiusKey = _a.radiusKey,\n radiusName = _a.radiusName,\n calloutLabelKey = _a.calloutLabelKey,\n sectorLabelKey = _a.sectorLabelKey,\n calloutLabelName = _a.calloutLabelName,\n sectorLabelName = _a.sectorLabelName,\n seriesId = _a.id;\n var tooltipRenderer = tooltip.renderer;\n var color = nodeDatum.sectorFormat.fill;\n var datum = nodeDatum.datum;\n var label = calloutLabelKey ? datum[calloutLabelKey] + \": \" : '';\n var angleValue = datum[angleKey];\n var formattedAngleValue = typeof angleValue === 'number' ? toFixed(angleValue) : angleValue.toString();\n var title = this.title ? this.title.text : undefined;\n var content = label + formattedAngleValue;\n var defaults = {\n title: title,\n backgroundColor: color,\n content: content\n };\n if (tooltipRenderer) {\n return toTooltipHtml$1(tooltipRenderer({\n datum: datum,\n angleKey: angleKey,\n angleValue: angleValue,\n angleName: angleName,\n radiusKey: radiusKey,\n radiusValue: radiusKey ? datum[radiusKey] : undefined,\n radiusName: radiusName,\n labelKey: calloutLabelKey,\n labelName: calloutLabelName,\n calloutLabelKey: calloutLabelKey,\n calloutLabelName: calloutLabelName,\n sectorLabelKey: sectorLabelKey,\n sectorLabelName: sectorLabelName,\n title: title,\n color: color,\n seriesId: seriesId\n }), defaults);\n }\n return toTooltipHtml$1(defaults);\n };\n PieSeries.prototype.getLegendData = function () {\n var _this = this;\n var _a = this,\n calloutLabelKey = _a.calloutLabelKey,\n data = _a.data,\n sectorFormatData = _a.sectorFormatData;\n if (data && data.length && calloutLabelKey) {\n var id_1 = this.id;\n var legendData_1 = [];\n var titleText_1 = this.title && this.title.showInLegend && this.title.text;\n data.forEach(function (datum, index) {\n var labelParts = [];\n titleText_1 && labelParts.push(titleText_1);\n labelParts.push(String(datum[calloutLabelKey]));\n legendData_1.push({\n id: id_1,\n itemId: index,\n seriesId: id_1,\n enabled: _this.seriesItemEnabled[index],\n label: {\n text: labelParts.join(' - ')\n },\n marker: {\n fill: sectorFormatData[index].fill,\n stroke: sectorFormatData[index].stroke,\n fillOpacity: _this.fillOpacity,\n strokeOpacity: _this.strokeOpacity\n }\n });\n });\n return legendData_1;\n }\n return [];\n };\n PieSeries.prototype.toggleSeriesItem = function (itemId, enabled) {\n this.seriesItemEnabled[itemId] = enabled;\n this.nodeDataRefresh = true;\n };\n PieSeries.className = 'PieSeries';\n PieSeries.type = 'pie';\n __decorate$18([DeprecatedAndRenamedTo('calloutLabel')], PieSeries.prototype, \"label\", void 0);\n __decorate$18([DeprecatedAndRenamedTo('calloutLine')], PieSeries.prototype, \"callout\", void 0);\n __decorate$18([Validate(STRING)], PieSeries.prototype, \"angleKey\", void 0);\n __decorate$18([Validate(STRING)], PieSeries.prototype, \"angleName\", void 0);\n __decorate$18([Validate(OPT_STRING)], PieSeries.prototype, \"radiusKey\", void 0);\n __decorate$18([Validate(OPT_STRING)], PieSeries.prototype, \"radiusName\", void 0);\n __decorate$18([Validate(OPT_NUMBER(0))], PieSeries.prototype, \"radiusMin\", void 0);\n __decorate$18([Validate(OPT_NUMBER(0))], PieSeries.prototype, \"radiusMax\", void 0);\n __decorate$18([Validate(OPT_STRING)], PieSeries.prototype, \"calloutLabelKey\", void 0);\n __decorate$18([Validate(OPT_STRING)], PieSeries.prototype, \"calloutLabelName\", void 0);\n __decorate$18([DeprecatedAndRenamedTo('calloutLabelKey')], PieSeries.prototype, \"labelKey\", void 0);\n __decorate$18([DeprecatedAndRenamedTo('calloutLabelName')], PieSeries.prototype, \"labelName\", void 0);\n __decorate$18([Validate(OPT_STRING)], PieSeries.prototype, \"sectorLabelKey\", void 0);\n __decorate$18([Validate(OPT_STRING)], PieSeries.prototype, \"sectorLabelName\", void 0);\n __decorate$18([Validate(COLOR_STRING_ARRAY)], PieSeries.prototype, \"fills\", void 0);\n __decorate$18([Validate(COLOR_STRING_ARRAY)], PieSeries.prototype, \"strokes\", void 0);\n __decorate$18([Validate(NUMBER(0, 1))], PieSeries.prototype, \"fillOpacity\", void 0);\n __decorate$18([Validate(NUMBER(0, 1))], PieSeries.prototype, \"strokeOpacity\", void 0);\n __decorate$18([Validate(OPT_LINE_DASH)], PieSeries.prototype, \"lineDash\", void 0);\n __decorate$18([Validate(NUMBER(0))], PieSeries.prototype, \"lineDashOffset\", void 0);\n __decorate$18([Validate(OPT_FUNCTION)], PieSeries.prototype, \"formatter\", void 0);\n __decorate$18([Validate(NUMBER(-360, 360))], PieSeries.prototype, \"rotation\", void 0);\n __decorate$18([Validate(NUMBER())], PieSeries.prototype, \"outerRadiusOffset\", void 0);\n __decorate$18([Validate(NUMBER(0))], PieSeries.prototype, \"outerRadiusRatio\", void 0);\n __decorate$18([Validate(NUMBER())], PieSeries.prototype, \"innerRadiusOffset\", void 0);\n __decorate$18([Validate(NUMBER(0))], PieSeries.prototype, \"innerRadiusRatio\", void 0);\n __decorate$18([Validate(NUMBER(0))], PieSeries.prototype, \"strokeWidth\", void 0);\n return PieSeries;\n}(PolarSeries);\nfunction floor$b(date) {\n date.setUTCSeconds(0, 0);\n}\nfunction offset$b(date, minutes) {\n date.setTime(date.getTime() + minutes * durationMinute$1);\n}\nfunction count$b(start, end) {\n return (end.getTime() - start.getTime()) / durationMinute$1;\n}\nfunction field$9(date) {\n return date.getUTCMinutes();\n}\nvar utcMinute = new CountableTimeInterval$1(floor$b, offset$b, count$b, field$9);\nfunction floor$a(date) {\n date.setUTCMinutes(0, 0, 0);\n}\nfunction offset$a(date, hours) {\n date.setTime(date.getTime() + hours * durationHour$1);\n}\nfunction count$a(start, end) {\n return (end.getTime() - start.getTime()) / durationHour$1;\n}\nfunction field$8(date) {\n return date.getUTCHours();\n}\nvar utcHour = new CountableTimeInterval$1(floor$a, offset$a, count$a, field$8);\nfunction floor$9(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}\nfunction offset$9(date, months) {\n date.setUTCMonth(date.getUTCMonth() + months);\n}\nfunction count$9(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}\nfunction field$7(date) {\n return date.getUTCMonth();\n}\nvar utcMonth = new CountableTimeInterval$1(floor$9, offset$9, count$9, field$7);\nvar __assign$s = undefined && undefined.__assign || function () {\n __assign$s = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$s.apply(this, arguments);\n};\nvar __read$m = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar palette$8 = {\n fills: ['#f3622d', '#fba71b', '#57b757', '#41a9c9', '#4258c9', '#9a42c8', '#c84164', '#888888'],\n strokes: ['#aa4520', '#b07513', '#3d803d', '#2d768d', '#2e3e8d', '#6c2e8c', '#8c2d46', '#5f5f5f']\n};\nfunction arrayMerge(_target, source, _options) {\n return source;\n}\nfunction isMergeableObject(value) {\n return defaultIsMergeableObject$1(value) && !(value instanceof TimeInterval$1);\n}\nvar mergeOptions = {\n arrayMerge: arrayMerge,\n isMergeableObject: isMergeableObject\n};\nvar BOLD = 'bold';\nvar INSIDE = 'inside';\nvar RIGHT = 'right';\nvar ChartTheme = /** @class */function () {\n function ChartTheme(options) {\n options = deepMerge$1({}, options || {}, mergeOptions);\n var _a = options.overrides,\n overrides = _a === void 0 ? null : _a,\n _b = options.palette,\n palette = _b === void 0 ? null : _b;\n var defaults = this.createChartConfigPerSeries(this.getDefaults());\n if (overrides) {\n var common = overrides.common,\n cartesian = overrides.cartesian,\n polar = overrides.polar,\n hierarchy = overrides.hierarchy;\n var applyOverrides = function (type, seriesTypes, overrideOpts) {\n if (overrideOpts) {\n defaults[type] = deepMerge$1(defaults[type], overrideOpts, mergeOptions);\n seriesTypes.forEach(function (seriesType) {\n defaults[seriesType] = deepMerge$1(defaults[seriesType], overrideOpts, mergeOptions);\n });\n }\n };\n applyOverrides('common', Object.keys(defaults), common);\n applyOverrides('cartesian', ChartTheme.cartesianSeriesTypes, cartesian);\n applyOverrides('polar', ChartTheme.polarSeriesTypes, polar);\n applyOverrides('hierarchy', ChartTheme.hierarchySeriesTypes, hierarchy);\n var seriesOverridesMap_1 = {};\n ChartTheme.seriesTypes.forEach(function (seriesType) {\n var chartConfig = overrides[seriesType];\n if (chartConfig) {\n if (chartConfig.series) {\n seriesOverridesMap_1[seriesType] = chartConfig.series;\n chartConfig.series = seriesOverridesMap_1;\n }\n defaults[seriesType] = deepMerge$1(defaults[seriesType], chartConfig, mergeOptions);\n }\n });\n }\n this.palette = palette !== null && palette !== void 0 ? palette : this.getPalette();\n this.config = Object.freeze(defaults);\n }\n ChartTheme.prototype.getPalette = function () {\n return palette$8;\n };\n ChartTheme.getAxisDefaults = function () {\n return {\n top: {},\n right: {},\n bottom: {},\n left: {},\n thickness: 0,\n title: {\n enabled: false,\n text: 'Axis Title',\n fontStyle: undefined,\n fontWeight: BOLD,\n fontSize: 12,\n fontFamily: this.fontFamily,\n color: 'rgb(70, 70, 70)'\n },\n label: {\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: this.fontFamily,\n padding: 5,\n rotation: undefined,\n color: 'rgb(87, 87, 87)',\n formatter: undefined,\n autoRotate: false\n },\n line: {\n width: 1,\n color: 'rgb(195, 195, 195)'\n },\n tick: {\n width: 1,\n size: 6,\n color: 'rgb(195, 195, 195)'\n },\n gridStyle: [{\n stroke: 'rgb(219, 219, 219)',\n lineDash: [4, 2]\n }],\n crossLines: {\n enabled: false,\n fill: 'rgb(187,221,232)',\n stroke: 'rgb(70,162,192)',\n strokeWidth: 1,\n label: {\n enabled: false,\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: this.fontFamily,\n padding: 5,\n color: 'rgb(87, 87, 87)',\n rotation: undefined\n }\n }\n };\n };\n ChartTheme.getSeriesDefaults = function () {\n return {\n tooltip: {\n enabled: true,\n renderer: undefined\n },\n visible: true,\n showInLegend: true,\n cursor: 'default',\n highlightStyle: {\n item: {\n fill: 'yellow',\n fillOpacity: 1\n },\n series: {\n dimOpacity: 1\n }\n }\n };\n };\n ChartTheme.getBarSeriesDefaults = function () {\n return __assign$s(__assign$s({}, this.getSeriesDefaults()), {\n flipXY: false,\n fillOpacity: 1,\n strokeOpacity: 1,\n xKey: '',\n xName: '',\n normalizedTo: undefined,\n strokeWidth: 1,\n lineDash: [0],\n lineDashOffset: 0,\n label: {\n enabled: false,\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: this.fontFamily,\n color: 'rgb(70, 70, 70)',\n formatter: undefined,\n placement: INSIDE\n },\n shadow: {\n enabled: false,\n color: 'rgba(0, 0, 0, 0.5)',\n xOffset: 3,\n yOffset: 3,\n blur: 5\n }\n });\n };\n ChartTheme.getLineSeriesDefaults = function () {\n var seriesDefaults = this.getSeriesDefaults();\n return __assign$s(__assign$s({}, seriesDefaults), {\n tooltip: __assign$s(__assign$s({}, seriesDefaults.tooltip), {\n format: undefined\n })\n });\n };\n ChartTheme.getCartesianSeriesMarkerDefaults = function () {\n return {\n enabled: true,\n shape: 'circle',\n size: 6,\n maxSize: 30,\n strokeWidth: 1,\n formatter: undefined\n };\n };\n ChartTheme.getChartDefaults = function () {\n return {\n background: {\n visible: true,\n fill: 'white'\n },\n padding: {\n top: 20,\n right: 20,\n bottom: 20,\n left: 20\n },\n title: {\n enabled: false,\n text: 'Title',\n fontStyle: undefined,\n fontWeight: BOLD,\n fontSize: 16,\n fontFamily: this.fontFamily,\n color: 'rgb(70, 70, 70)'\n },\n subtitle: {\n enabled: false,\n text: 'Subtitle',\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: this.fontFamily,\n color: 'rgb(140, 140, 140)'\n },\n legend: {\n enabled: true,\n position: RIGHT,\n spacing: 20,\n item: {\n paddingX: 16,\n paddingY: 8,\n marker: {\n shape: undefined,\n size: 15,\n strokeWidth: 1,\n padding: 8\n },\n label: {\n color: 'black',\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: this.fontFamily,\n formatter: undefined\n }\n },\n reverseOrder: false\n },\n tooltip: {\n enabled: true,\n tracking: true,\n delay: 0,\n class: DEFAULT_TOOLTIP_CLASS\n }\n };\n };\n ChartTheme.prototype.createChartConfigPerSeries = function (config) {\n var typeToAliases = {\n cartesian: ChartTheme.cartesianSeriesTypes,\n polar: ChartTheme.polarSeriesTypes,\n hierarchy: ChartTheme.hierarchySeriesTypes,\n groupedCategory: []\n };\n Object.entries(typeToAliases).forEach(function (_a) {\n var _b = __read$m(_a, 2),\n type = _b[0],\n aliases = _b[1];\n aliases.forEach(function (alias) {\n if (!config[alias]) {\n config[alias] = deepMerge$1({}, config[type], mergeOptions);\n }\n });\n });\n return config;\n };\n ChartTheme.prototype.getConfig = function (path, defaultValue) {\n var value = getValue(this.config, path, defaultValue);\n if (Array.isArray(value)) {\n return deepMerge$1([], value, mergeOptions);\n }\n if (isObject(value)) {\n return deepMerge$1({}, value, mergeOptions);\n }\n return value;\n };\n /**\n * Meant to be overridden in subclasses. For example:\n * ```\n * getDefaults() {\n * const subclassDefaults = { ... };\n * return this.mergeWithParentDefaults(subclassDefaults);\n * }\n * ```\n */\n ChartTheme.prototype.getDefaults = function () {\n return deepMerge$1({}, ChartTheme.defaults, mergeOptions);\n };\n ChartTheme.prototype.mergeWithParentDefaults = function (parentDefaults, defaults) {\n return deepMerge$1(parentDefaults, defaults, mergeOptions);\n };\n ChartTheme.fontFamily = 'Verdana, sans-serif';\n ChartTheme.cartesianDefaults = __assign$s(__assign$s({}, ChartTheme.getChartDefaults()), {\n axes: {\n number: __assign$s({}, ChartTheme.getAxisDefaults()),\n log: __assign$s(__assign$s({}, ChartTheme.getAxisDefaults()), {\n base: 10\n }),\n category: __assign$s(__assign$s({}, ChartTheme.getAxisDefaults()), {\n groupPaddingInner: 0.1,\n label: __assign$s(__assign$s({}, ChartTheme.getAxisDefaults().label), {\n autoRotate: true\n })\n }),\n groupedCategory: __assign$s({}, ChartTheme.getAxisDefaults()),\n time: __assign$s({}, ChartTheme.getAxisDefaults())\n },\n series: {\n column: __assign$s(__assign$s({}, ChartTheme.getBarSeriesDefaults()), {\n flipXY: false\n }),\n bar: __assign$s(__assign$s({}, ChartTheme.getBarSeriesDefaults()), {\n flipXY: true\n }),\n line: __assign$s(__assign$s({}, ChartTheme.getLineSeriesDefaults()), {\n title: undefined,\n xKey: '',\n xName: '',\n yKey: '',\n yName: '',\n strokeWidth: 2,\n strokeOpacity: 1,\n lineDash: [0],\n lineDashOffset: 0,\n marker: __assign$s(__assign$s({}, ChartTheme.getCartesianSeriesMarkerDefaults()), {\n fillOpacity: 1,\n strokeOpacity: 1\n }),\n label: {\n enabled: false,\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: ChartTheme.fontFamily,\n color: 'rgb(70, 70, 70)',\n formatter: undefined\n }\n }),\n scatter: __assign$s(__assign$s({}, ChartTheme.getSeriesDefaults()), {\n title: undefined,\n xKey: '',\n yKey: '',\n sizeKey: undefined,\n labelKey: undefined,\n xName: '',\n yName: '',\n sizeName: 'Size',\n labelName: 'Label',\n strokeWidth: 2,\n fillOpacity: 1,\n strokeOpacity: 1,\n marker: __assign$s({}, ChartTheme.getCartesianSeriesMarkerDefaults()),\n label: {\n enabled: false,\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: ChartTheme.fontFamily,\n color: 'rgb(70, 70, 70)'\n }\n }),\n area: __assign$s(__assign$s({}, ChartTheme.getSeriesDefaults()), {\n xKey: '',\n xName: '',\n normalizedTo: undefined,\n fillOpacity: 0.8,\n strokeOpacity: 1,\n strokeWidth: 2,\n lineDash: [0],\n lineDashOffset: 0,\n shadow: {\n enabled: false,\n color: 'rgba(0, 0, 0, 0.5)',\n xOffset: 3,\n yOffset: 3,\n blur: 5\n },\n marker: __assign$s(__assign$s({}, ChartTheme.getCartesianSeriesMarkerDefaults()), {\n fillOpacity: 1,\n strokeOpacity: 1,\n enabled: false\n }),\n label: {\n enabled: false,\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: ChartTheme.fontFamily,\n color: 'rgb(70, 70, 70)',\n formatter: undefined\n }\n }),\n histogram: __assign$s(__assign$s({}, ChartTheme.getSeriesDefaults()), {\n xKey: '',\n yKey: '',\n xName: '',\n yName: '',\n strokeWidth: 1,\n fillOpacity: 1,\n strokeOpacity: 1,\n lineDash: [0],\n lineDashOffset: 0,\n areaPlot: false,\n bins: undefined,\n aggregation: 'sum',\n label: {\n enabled: false,\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: ChartTheme.fontFamily,\n color: 'rgb(70, 70, 70)',\n formatter: undefined\n },\n shadow: {\n enabled: true,\n color: 'rgba(0, 0, 0, 0.5)',\n xOffset: 0,\n yOffset: 0,\n blur: 5\n }\n })\n },\n navigator: {\n enabled: false,\n height: 30,\n mask: {\n fill: '#999999',\n stroke: '#999999',\n strokeWidth: 1,\n fillOpacity: 0.2\n },\n minHandle: {\n fill: '#f2f2f2',\n stroke: '#999999',\n strokeWidth: 1,\n width: 8,\n height: 16,\n gripLineGap: 2,\n gripLineLength: 8\n },\n maxHandle: {\n fill: '#f2f2f2',\n stroke: '#999999',\n strokeWidth: 1,\n width: 8,\n height: 16,\n gripLineGap: 2,\n gripLineLength: 8\n }\n }\n });\n ChartTheme.polarDefaults = __assign$s(__assign$s({}, ChartTheme.getChartDefaults()), {\n series: {\n pie: __assign$s(__assign$s({}, ChartTheme.getSeriesDefaults()), {\n title: {\n enabled: true,\n text: '',\n fontStyle: undefined,\n fontWeight: 'bold',\n fontSize: 14,\n fontFamily: ChartTheme.fontFamily,\n color: 'rgb(70, 70, 70)'\n },\n angleKey: '',\n angleName: '',\n radiusKey: undefined,\n radiusName: undefined,\n calloutLabelKey: undefined,\n calloutLabelName: undefined,\n sectorLabelKey: undefined,\n sectorLabelName: undefined,\n calloutLabel: {\n enabled: true,\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: ChartTheme.fontFamily,\n color: 'rgb(70, 70, 70)',\n offset: 3,\n minAngle: 20\n },\n sectorLabel: {\n enabled: true,\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: ChartTheme.fontFamily,\n color: 'rgb(70, 70, 70)',\n positionOffset: 0,\n positionRatio: 0.5\n },\n calloutLine: {\n length: 10,\n strokeWidth: 2\n },\n fillOpacity: 1,\n strokeOpacity: 1,\n strokeWidth: 1,\n lineDash: [0],\n lineDashOffset: 0,\n rotation: 0,\n outerRadiusOffset: 0,\n innerRadiusOffset: 0,\n shadow: {\n enabled: false,\n color: 'rgba(0, 0, 0, 0.5)',\n xOffset: 3,\n yOffset: 3,\n blur: 5\n },\n innerLabels: {\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: ChartTheme.fontFamily,\n color: 'rgb(70, 70, 70)',\n margin: 2\n }\n })\n }\n });\n ChartTheme.hierarchyDefaults = __assign$s(__assign$s({}, ChartTheme.getChartDefaults()), {\n series: {\n treemap: __assign$s(__assign$s({}, ChartTheme.getSeriesDefaults()), {\n showInLegend: false,\n labelKey: 'label',\n sizeKey: 'size',\n colorKey: 'color',\n colorDomain: [-5, 5],\n colorRange: ['#cb4b3f', '#6acb64'],\n colorParents: false,\n gradient: true,\n nodePadding: 2,\n title: {\n enabled: true,\n color: 'white',\n fontStyle: undefined,\n fontWeight: 'bold',\n fontSize: 12,\n fontFamily: 'Verdana, sans-serif',\n padding: 15\n },\n subtitle: {\n enabled: true,\n color: 'white',\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 9,\n fontFamily: 'Verdana, sans-serif',\n padding: 13\n },\n labels: {\n large: {\n enabled: true,\n fontStyle: undefined,\n fontWeight: 'bold',\n fontSize: 18,\n fontFamily: 'Verdana, sans-serif',\n color: 'white'\n },\n medium: {\n enabled: true,\n fontStyle: undefined,\n fontWeight: 'bold',\n fontSize: 14,\n fontFamily: 'Verdana, sans-serif',\n color: 'white'\n },\n small: {\n enabled: true,\n fontStyle: undefined,\n fontWeight: 'bold',\n fontSize: 10,\n fontFamily: 'Verdana, sans-serif',\n color: 'white'\n },\n color: {\n enabled: true,\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: 'Verdana, sans-serif',\n color: 'white'\n }\n }\n })\n }\n });\n ChartTheme.defaults = {\n cartesian: ChartTheme.cartesianDefaults,\n groupedCategory: ChartTheme.cartesianDefaults,\n polar: ChartTheme.polarDefaults,\n hierarchy: ChartTheme.hierarchyDefaults\n };\n ChartTheme.cartesianSeriesTypes = ['line', 'area', 'bar', 'column', 'scatter', 'histogram'];\n ChartTheme.polarSeriesTypes = ['pie'];\n ChartTheme.hierarchySeriesTypes = ['treemap'];\n ChartTheme.seriesTypes = ChartTheme.cartesianSeriesTypes.concat(ChartTheme.polarSeriesTypes).concat(ChartTheme.hierarchySeriesTypes);\n return ChartTheme;\n}();\nvar __extends$1_ = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign$r = undefined && undefined.__assign || function () {\n __assign$r = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$r.apply(this, arguments);\n};\nvar DarkTheme = /** @class */function (_super) {\n __extends$1_(DarkTheme, _super);\n function DarkTheme(options) {\n return _super.call(this, options) || this;\n }\n DarkTheme.prototype.getDefaults = function () {\n var fontColor = 'rgb(200, 200, 200)';\n var mutedFontColor = 'rgb(150, 150, 150)';\n var axisDefaults = {\n title: {\n color: fontColor\n },\n label: {\n color: fontColor\n },\n gridStyle: [{\n stroke: 'rgb(88, 88, 88)',\n lineDash: [4, 2]\n }]\n };\n var seriesLabelDefaults = {\n label: {\n color: fontColor\n }\n };\n var chartAxesDefaults = {\n axes: {\n number: __assign$r({}, axisDefaults),\n category: __assign$r({}, axisDefaults),\n time: __assign$r({}, axisDefaults)\n }\n };\n var chartDefaults = {\n background: {\n fill: 'rgb(34, 38, 41)'\n },\n title: {\n color: fontColor\n },\n subtitle: {\n color: mutedFontColor\n },\n legend: {\n item: {\n label: {\n color: fontColor\n }\n }\n }\n };\n return this.mergeWithParentDefaults(_super.prototype.getDefaults.call(this), {\n cartesian: __assign$r(__assign$r(__assign$r({}, chartDefaults), chartAxesDefaults), {\n series: {\n bar: __assign$r({}, seriesLabelDefaults),\n column: __assign$r({}, seriesLabelDefaults),\n histogram: __assign$r({}, seriesLabelDefaults)\n }\n }),\n groupedCategory: __assign$r(__assign$r(__assign$r({}, chartDefaults), chartAxesDefaults), {\n series: {\n bar: __assign$r({}, seriesLabelDefaults),\n column: __assign$r({}, seriesLabelDefaults),\n histogram: __assign$r({}, seriesLabelDefaults)\n }\n }),\n polar: __assign$r(__assign$r({}, chartDefaults), {\n series: {\n pie: {\n calloutLabel: {\n color: fontColor\n },\n sectorLabel: {\n color: fontColor\n },\n title: {\n color: fontColor\n },\n innerLabels: {\n color: fontColor\n }\n }\n }\n }),\n hierarchy: __assign$r(__assign$r({}, chartDefaults), {\n series: {\n treemap: {\n title: {\n color: fontColor\n },\n subtitle: {\n color: mutedFontColor\n },\n labels: {\n large: {\n color: fontColor\n },\n medium: {\n color: fontColor\n },\n small: {\n color: fontColor\n },\n color: {\n color: fontColor\n }\n }\n }\n }\n })\n });\n };\n return DarkTheme;\n}(ChartTheme);\nvar __extends$1Z = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar palette$7 = {\n fills: ['#f44336', '#e91e63', '#9c27b0', '#673ab7', '#3f51b5', '#2196f3', '#03a9f4', '#00bcd4', '#009688', '#4caf50', '#8bc34a', '#cddc39', '#ffeb3b', '#ffc107', '#ff9800', '#ff5722'],\n strokes: ['#ab2f26', '#a31545', '#6d1b7b', '#482980', '#2c397f', '#1769aa', '#0276ab', '#008494', '#00695f', '#357a38', '#618834', '#909a28', '#b3a429', '#b38705', '#b36a00', '#b33d18']\n};\nvar MaterialLight = /** @class */function (_super) {\n __extends$1Z(MaterialLight, _super);\n function MaterialLight() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MaterialLight.prototype.getPalette = function () {\n return palette$7;\n };\n return MaterialLight;\n}(ChartTheme);\nvar __extends$1Y = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar palette$6 = {\n fills: ['#f44336', '#e91e63', '#9c27b0', '#673ab7', '#3f51b5', '#2196f3', '#03a9f4', '#00bcd4', '#009688', '#4caf50', '#8bc34a', '#cddc39', '#ffeb3b', '#ffc107', '#ff9800', '#ff5722'],\n strokes: ['#ab2f26', '#a31545', '#6d1b7b', '#482980', '#2c397f', '#1769aa', '#0276ab', '#008494', '#00695f', '#357a38', '#618834', '#909a28', '#b3a429', '#b38705', '#b36a00', '#b33d18']\n};\nvar MaterialDark = /** @class */function (_super) {\n __extends$1Y(MaterialDark, _super);\n function MaterialDark() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MaterialDark.prototype.getPalette = function () {\n return palette$6;\n };\n return MaterialDark;\n}(DarkTheme);\nvar __extends$1X = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar palette$5 = {\n fills: ['#c16068', '#a2bf8a', '#ebcc87', '#80a0c3', '#b58dae', '#85c0d1'],\n strokes: ['#874349', '#718661', '#a48f5f', '#5a7088', '#7f637a', '#5d8692']\n};\nvar PastelLight = /** @class */function (_super) {\n __extends$1X(PastelLight, _super);\n function PastelLight() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PastelLight.prototype.getPalette = function () {\n return palette$5;\n };\n return PastelLight;\n}(ChartTheme);\nvar __extends$1W = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar palette$4 = {\n fills: ['#c16068', '#a2bf8a', '#ebcc87', '#80a0c3', '#b58dae', '#85c0d1'],\n strokes: ['#874349', '#718661', '#a48f5f', '#5a7088', '#7f637a', '#5d8692']\n};\nvar PastelDark = /** @class */function (_super) {\n __extends$1W(PastelDark, _super);\n function PastelDark() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PastelDark.prototype.getPalette = function () {\n return palette$4;\n };\n return PastelDark;\n}(DarkTheme);\nvar __extends$1V = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar palette$3 = {\n fills: ['#febe76', '#ff7979', '#badc58', '#f9ca23', '#f0932b', '#eb4c4b', '#6ab04c', '#7ed6df', '#e056fd', '#686de0'],\n strokes: ['#b28553', '#b35555', '#829a3e', '#ae8d19', '#a8671e', '#a43535', '#4a7b35', '#58969c', '#9d3cb1', '#494c9d']\n};\nvar SolarLight = /** @class */function (_super) {\n __extends$1V(SolarLight, _super);\n function SolarLight() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SolarLight.prototype.getPalette = function () {\n return palette$3;\n };\n return SolarLight;\n}(ChartTheme);\nvar __extends$1U = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar palette$2 = {\n fills: ['#febe76', '#ff7979', '#badc58', '#f9ca23', '#f0932b', '#eb4c4b', '#6ab04c', '#7ed6df', '#e056fd', '#686de0'],\n strokes: ['#b28553', '#b35555', '#829a3e', '#ae8d19', '#a8671e', '#a43535', '#4a7b35', '#58969c', '#9d3cb1', '#494c9d']\n};\nvar SolarDark = /** @class */function (_super) {\n __extends$1U(SolarDark, _super);\n function SolarDark() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SolarDark.prototype.getPalette = function () {\n return palette$2;\n };\n return SolarDark;\n}(DarkTheme);\nvar __extends$1T = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar palette$1 = {\n fills: ['#5BC0EB', '#FDE74C', '#9BC53D', '#E55934', '#FA7921', '#fa3081'],\n strokes: ['#4086a4', '#b1a235', '#6c8a2b', '#a03e24', '#af5517', '#af225a']\n};\nvar VividLight = /** @class */function (_super) {\n __extends$1T(VividLight, _super);\n function VividLight() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n VividLight.prototype.getPalette = function () {\n return palette$1;\n };\n return VividLight;\n}(ChartTheme);\nvar __extends$1S = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar palette = {\n fills: ['#5BC0EB', '#FDE74C', '#9BC53D', '#E55934', '#FA7921', '#fa3081'],\n strokes: ['#4086a4', '#b1a235', '#6c8a2b', '#a03e24', '#af5517', '#af225a']\n};\nvar VividDark = /** @class */function (_super) {\n __extends$1S(VividDark, _super);\n function VividDark() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n VividDark.prototype.getPalette = function () {\n return palette;\n };\n return VividDark;\n}(DarkTheme);\nvar __assign$q = undefined && undefined.__assign || function () {\n __assign$q = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$q.apply(this, arguments);\n};\nvar lightTheme = new ChartTheme();\nvar darkTheme = new DarkTheme();\nvar lightThemes = {\n undefined: lightTheme,\n null: lightTheme,\n 'ag-default': lightTheme,\n 'ag-material': new MaterialLight(),\n 'ag-pastel': new PastelLight(),\n 'ag-solar': new SolarLight(),\n 'ag-vivid': new VividLight()\n};\nvar darkThemes = {\n undefined: darkTheme,\n null: darkTheme,\n 'ag-default-dark': darkTheme,\n 'ag-material-dark': new MaterialDark(),\n 'ag-pastel-dark': new PastelDark(),\n 'ag-solar-dark': new SolarDark(),\n 'ag-vivid-dark': new VividDark()\n};\nvar themes = __assign$q(__assign$q({}, darkThemes), lightThemes);\nfunction getChartTheme(value) {\n if (value instanceof ChartTheme) {\n return value;\n }\n var stockTheme = themes[value];\n if (stockTheme) {\n return stockTheme;\n }\n value = value;\n if (value.baseTheme || value.overrides || value.palette) {\n var baseTheme = getChartTheme(value.baseTheme);\n return new baseTheme.constructor(value);\n }\n return lightTheme;\n}\nfunction getIntegratedChartTheme(value) {\n var theme = getChartTheme(value);\n var themeConfig = theme.config;\n for (var chartType in themeConfig) {\n var axes = themeConfig[chartType].axes;\n for (var axis in axes) {\n delete axes[axis].crossLines;\n }\n }\n return theme;\n}\nvar __extends$1R = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$17 = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __read$l = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar identity$3 = function (x) {\n return x;\n};\nvar LogScale = /** @class */function (_super) {\n __extends$1R(LogScale, _super);\n function LogScale() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'log';\n _this._domain = [1, 10];\n _this.baseLog = identity$3; // takes a log with base `base` of `x`\n _this.basePow = identity$3; // raises `base` to the power of `x`\n _this._base = 10;\n return _this;\n }\n LogScale.prototype.setDomain = function (values) {\n var df = values[0];\n var dl = values[values.length - 1];\n if (df === 0 || dl === 0 || df < 0 && dl > 0 || df > 0 && dl < 0) {\n console.warn('Log scale domain should not start at, end at or cross zero.');\n if (df === 0 && dl > 0) {\n df = Number.EPSILON;\n } else if (dl === 0 && df < 0) {\n dl = -Number.EPSILON;\n } else if (df < 0 && dl > 0) {\n if (Math.abs(dl) >= Math.abs(df)) {\n df = Number.EPSILON;\n } else {\n dl = -Number.EPSILON;\n }\n } else if (df > 0 && dl < 0) {\n if (Math.abs(dl) >= Math.abs(df)) {\n df = -Number.EPSILON;\n } else {\n dl = Number.EPSILON;\n }\n }\n values = values.slice();\n values[0] = df;\n values[values.length - 1] = dl;\n }\n _super.prototype.setDomain.call(this, values);\n };\n LogScale.prototype.getDomain = function () {\n return _super.prototype.getDomain.call(this);\n };\n Object.defineProperty(LogScale.prototype, \"base\", {\n get: function () {\n return this._base;\n },\n set: function (value) {\n if (this._base !== value) {\n this._base = value;\n this.rescale();\n }\n },\n enumerable: true,\n configurable: true\n });\n LogScale.prototype.rescale = function () {\n var base = this.base;\n var baseLog = LogScale.makeLogFn(base);\n var basePow = LogScale.makePowFn(base);\n if (this.domain[0] < 0) {\n baseLog = this.reflect(baseLog);\n basePow = this.reflect(basePow);\n this.transform = function (x) {\n return -Math.log(-x);\n };\n this.untransform = function (x) {\n return -Math.exp(-x);\n };\n } else {\n this.transform = function (x) {\n return Math.log(x);\n };\n this.untransform = function (x) {\n return Math.exp(x);\n };\n }\n this.baseLog = baseLog;\n this.basePow = basePow;\n _super.prototype.rescale.call(this);\n };\n /**\n * For example, if `f` is `Math.log10`, we have\n *\n * f(100) == 2\n * f(-100) == NaN\n * rf = reflect(f)\n * rf(-100) == -2\n *\n * @param f\n */\n LogScale.prototype.reflect = function (f) {\n return function (x) {\n return -f(-x);\n };\n };\n LogScale.prototype.nice = function () {\n var _a, _b;\n var domain = this.domain;\n var i0 = 0;\n var i1 = domain.length - 1;\n var x0 = domain[i0];\n var x1 = domain[i1];\n if (x1 < x0) {\n _a = __read$l([i1, i0], 2), i0 = _a[0], i1 = _a[1];\n _b = __read$l([x1, x0], 2), x0 = _b[0], x1 = _b[1];\n }\n // For example, for base == 10:\n // [ 50, 900] becomes [ 10, 1000 ]\n domain[i0] = this.basePow(Math.floor(this.baseLog(x0)));\n domain[i1] = this.basePow(Math.ceil(this.baseLog(x1)));\n this.domain = domain;\n };\n LogScale.pow10 = function (x) {\n return isFinite(x) ? +('1e' + x) // to avoid precision issues, e.g. Math.pow(10, -4) is not 0.0001\n : x < 0 ? 0 : x;\n };\n LogScale.makePowFn = function (base) {\n if (base === 10) {\n return LogScale.pow10;\n }\n if (base === Math.E) {\n return Math.exp;\n }\n return function (x) {\n return Math.pow(base, x);\n };\n };\n // Make a log function witn an arbitrary base or return a native function if exists.\n LogScale.makeLogFn = function (base) {\n if (base === Math.E) {\n return Math.log;\n }\n if (base === 10) {\n return Math.log10;\n }\n if (base === 2) {\n return Math.log2;\n }\n var logBase = Math.log(base);\n return function (x) {\n return Math.log(x) / logBase;\n };\n };\n LogScale.prototype.ticks = function (count) {\n var _a;\n if (count === void 0) {\n count = 10;\n }\n var n = count == null ? 10 : +count;\n var base = this.base;\n var domain = this.domain;\n var d0 = domain[0];\n var d1 = domain[domain.length - 1];\n var isReversed = d1 < d0;\n if (isReversed) {\n _a = __read$l([d1, d0], 2), d0 = _a[0], d1 = _a[1];\n }\n var p0 = this.baseLog(d0);\n var p1 = this.baseLog(d1);\n var z = [];\n // if `base` is an integer and delta in order of magnitudes is less than n\n if (!(base % 1) && p1 - p0 < n) {\n // For example, if n == 10, base == 10 and domain == [10^2, 10^6]\n // then p1 - p0 < n == true.\n p0 = Math.round(p0) - 1;\n p1 = Math.round(p1) + 1;\n if (d0 > 0) {\n for (; p0 < p1; ++p0) {\n for (var k = 1, p = this.basePow(p0); k < base; ++k) {\n var t = p * k;\n // The `t` checks are needed because we expanded the [p0, p1] by 1 in each direction.\n if (t < d0) continue;\n if (t > d1) break;\n z.push(t);\n }\n }\n } else {\n for (; p0 < p1; ++p0) {\n for (var k = base - 1, p = this.basePow(p0); k >= 1; --k) {\n var t = p * k;\n if (t < d0) continue;\n if (t > d1) break;\n z.push(t);\n }\n }\n }\n if (z.length * 2 < n) {\n z = ticks$1(d0, d1, n);\n }\n } else {\n // For example, if n == 4, base == 10 and domain == [10^2, 10^6]\n // then p1 - p0 < n == false.\n // `ticks` return [2, 3, 4, 5, 6], then mapped to [10^2, 10^3, 10^4, 10^5, 10^6].\n z = ticks$1(p0, p1, Math.min(p1 - p0, n)).map(this.basePow);\n }\n return isReversed ? z.reverse() : z;\n };\n LogScale.prototype.tickFormat = function (_a) {\n var _this = this;\n var count = _a.count,\n specifier = _a.specifier;\n var base = this.base;\n if (specifier == null) {\n specifier = base === 10 ? '.0e' : ',';\n }\n if (typeof specifier !== 'function') {\n specifier = format$1(specifier);\n }\n if (count === Infinity) {\n return specifier;\n }\n if (count == null) {\n count = 10;\n }\n var k = Math.max(1, base * count / this.ticks().length);\n return function (d) {\n var i = d / _this.basePow(Math.round(_this.baseLog(d)));\n if (i * base < base - 0.5) {\n i *= base;\n }\n return i <= k ? specifier(d) : '';\n };\n };\n __decorate$17([Validate(NUMBER(0))], LogScale.prototype, \"_base\", void 0);\n return LogScale;\n}(ContinuousScale$1);\nvar __extends$1Q = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar LogAxis = /** @class */function (_super) {\n __extends$1Q(LogAxis, _super);\n function LogAxis() {\n var _this = _super.call(this, new LogScale()) || this;\n _this.scale.clamper = filter;\n return _this;\n }\n Object.defineProperty(LogAxis.prototype, \"base\", {\n get: function () {\n return this.scale.base;\n },\n set: function (value) {\n this.scale.base = value;\n },\n enumerable: true,\n configurable: true\n });\n LogAxis.className = 'LogAxis';\n LogAxis.type = 'log';\n return LogAxis;\n}(NumberAxis);\nvar DEFAULT_CARTESIAN_CHART_OVERRIDES = {\n type: 'cartesian',\n axes: [{\n type: NumberAxis.type,\n position: ChartAxisPosition.Left\n }, {\n type: CategoryAxis.type,\n position: ChartAxisPosition.Bottom\n }]\n};\nvar DEFAULT_BAR_CHART_OVERRIDES = {\n axes: [{\n type: 'number',\n position: ChartAxisPosition.Bottom\n }, {\n type: 'category',\n position: ChartAxisPosition.Left\n }]\n};\nvar DEFAULT_SCATTER_HISTOGRAM_CHART_OVERRIDES = {\n axes: [{\n type: 'number',\n position: ChartAxisPosition.Bottom\n }, {\n type: 'number',\n position: ChartAxisPosition.Left\n }]\n};\nvar __assign$p = undefined && undefined.__assign || function () {\n __assign$p = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$p.apply(this, arguments);\n};\nfunction transform(input, transforms) {\n var result = {};\n for (var p in input) {\n var t = transforms[p] || function (x) {\n return x;\n };\n result[p] = t(input[p], input);\n }\n return result;\n}\nfunction is2dArray(input) {\n return input != null && input instanceof Array && input[0] instanceof Array;\n}\nfunction yNamesMapping(p, src) {\n if (p == null) {\n return {};\n }\n if (!(p instanceof Array)) {\n return p;\n }\n var yKeys = src.yKeys;\n if (yKeys == null || is2dArray(yKeys)) {\n throw new Error('AG Charts - yNames and yKeys mismatching configuration.');\n }\n var result = {};\n yKeys.forEach(function (k, i) {\n result[k] = p[i];\n });\n return result;\n}\nfunction yKeysMapping(p, src) {\n if (p == null) {\n return [[]];\n }\n if (is2dArray(p)) {\n return p;\n }\n return src.grouped ? p.map(function (v) {\n return [v];\n }) : [p];\n}\nfunction labelMapping(p) {\n if (p == null) {\n return undefined;\n }\n var placement = p.placement;\n return __assign$p(__assign$p({}, p), {\n placement: placement === 'inside' ? BarLabelPlacement.Inside : placement === 'outside' ? BarLabelPlacement.Outside : undefined\n });\n}\nfunction barSeriesTransform(options) {\n var result = __assign$p(__assign$p({}, options), {\n yKeys: options.yKeys || [options.yKey]\n });\n delete result['yKey'];\n return transform(result, {\n yNames: yNamesMapping,\n yKeys: yKeysMapping,\n label: labelMapping\n });\n}\nfunction identityTransform(input) {\n return input;\n}\nvar SERIES_TRANSFORMS = {\n area: identityTransform,\n bar: barSeriesTransform,\n column: barSeriesTransform,\n histogram: identityTransform,\n line: identityTransform,\n pie: identityTransform,\n scatter: identityTransform,\n treemap: identityTransform\n};\nfunction applySeriesTransform(options) {\n var type = options.type;\n var transform = SERIES_TRANSFORMS[type || 'line'];\n return transform(options);\n}\nvar __assign$o = undefined && undefined.__assign || function () {\n __assign$o = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$o.apply(this, arguments);\n};\nvar __values$8 = undefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$k = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread$8 = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$k(arguments[i]));\n return ar;\n};\n/**\n * Groups the series options objects if they are of type `column` or `bar` and places them in an array at the index where the first instance of this series type was found.\n * Returns an array of arrays containing the ordered and grouped series options objects.\n */\nfunction groupSeriesByType(seriesOptions) {\n var e_1, _a;\n var indexMap = {};\n var result = [];\n try {\n for (var seriesOptions_1 = __values$8(seriesOptions), seriesOptions_1_1 = seriesOptions_1.next(); !seriesOptions_1_1.done; seriesOptions_1_1 = seriesOptions_1.next()) {\n var s = seriesOptions_1_1.value;\n if (s.type !== 'column' && s.type !== 'bar' && (s.type !== 'area' || s.stacked !== true)) {\n // No need to use index for these cases.\n result.push([s]);\n continue;\n }\n var seriesType = s.type || 'line';\n var groupingKey = s.stacked ? 'stacked' : s.grouped ? 'grouped' : s.yKeys ? 'stacked' : 'grouped';\n var indexKey = seriesType + \"-\" + s.xKey + \"-\" + groupingKey;\n if (indexMap[indexKey] == null) {\n // Add indexed array to result on first addition.\n indexMap[indexKey] = [];\n result.push(indexMap[indexKey]);\n }\n indexMap[indexKey].push(s);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (seriesOptions_1_1 && !seriesOptions_1_1.done && (_a = seriesOptions_1.return)) _a.call(seriesOptions_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n return result;\n}\nvar FAIL = Symbol();\nvar SKIP = Symbol();\nvar ARRAY_REDUCER = function (prop) {\n return function (result, next) {\n var _a;\n return result.concat.apply(result, __spread$8((_a = next[prop], _a !== null && _a !== void 0 ? _a : [])));\n };\n};\nvar BOOLEAN_OR_REDUCER = function (prop, defaultValue) {\n return function (result, next) {\n if (typeof next[prop] === 'boolean') {\n return (result !== null && result !== void 0 ? result : false) || next[prop];\n }\n return result !== null && result !== void 0 ? result : defaultValue;\n };\n};\nvar DEFAULTING_ARRAY_REDUCER = function (prop, defaultValue) {\n return function (result, next, idx, length) {\n var _a;\n var sparse = defaultValue === SKIP || defaultValue === FAIL;\n var nextValue = (_a = next[prop], _a !== null && _a !== void 0 ? _a : defaultValue);\n if (nextValue === FAIL) {\n throw new Error(\"AG Charts - missing value for property [\" + prop + \"] on series config.\");\n } else if (nextValue === SKIP) {\n return result;\n }\n if (result.length === 0 && !sparse) {\n // Pre-populate values on first invocation as we will only be invoked for series with a\n // value specified.\n while (result.length < length) {\n result = result.concat(defaultValue);\n }\n }\n if (!sparse) {\n result[idx] = nextValue;\n return result;\n }\n return result.concat(nextValue);\n };\n};\nvar YKEYS_REDUCER = function (prop, activationValue) {\n return function (result, next) {\n if (next[prop] === activationValue) {\n return result.concat.apply(result, __spread$8(next.yKey ? [next.yKey] : next.yKeys));\n }\n return result;\n };\n};\nvar REDUCE_CONFIG = {\n yKeys: {\n outputProp: 'yKeys',\n reducer: ARRAY_REDUCER('yKeys'),\n start: []\n },\n fills: {\n outputProp: 'fills',\n reducer: ARRAY_REDUCER('fills'),\n start: []\n },\n strokes: {\n outputProp: 'strokes',\n reducer: ARRAY_REDUCER('strokes'),\n start: []\n },\n yNames: {\n outputProp: 'yNames',\n reducer: ARRAY_REDUCER('yNames'),\n start: []\n },\n hideInChart: {\n outputProp: 'hideInChart',\n reducer: ARRAY_REDUCER('hideInChart'),\n start: []\n },\n hideInLegend: {\n outputProp: 'hideInLegend',\n reducer: ARRAY_REDUCER('hideInLegend'),\n start: []\n },\n yKey: {\n outputProp: 'yKeys',\n reducer: DEFAULTING_ARRAY_REDUCER('yKey', SKIP),\n start: []\n },\n fill: {\n outputProp: 'fills',\n reducer: DEFAULTING_ARRAY_REDUCER('fill', SKIP),\n start: []\n },\n stroke: {\n outputProp: 'strokes',\n reducer: DEFAULTING_ARRAY_REDUCER('stroke', SKIP),\n start: []\n },\n yName: {\n outputProp: 'yNames',\n reducer: DEFAULTING_ARRAY_REDUCER('yName', SKIP),\n start: []\n },\n visible: {\n outputProp: 'visibles',\n reducer: DEFAULTING_ARRAY_REDUCER('visible', true),\n start: []\n },\n grouped: {\n outputProp: 'grouped',\n reducer: BOOLEAN_OR_REDUCER('grouped'),\n seriesType: ['bar', 'column'],\n start: undefined\n },\n showInLegend: {\n outputProp: 'hideInLegend',\n reducer: YKEYS_REDUCER('showInLegend', false),\n seriesType: ['bar', 'column'],\n start: []\n }\n};\n/**\n * Takes an array of bar or area series options objects and returns a single object with the combined area series options.\n */\nfunction reduceSeries(series) {\n var options = {};\n series.forEach(function (s, idx) {\n Object.keys(s).forEach(function (prop) {\n var _a;\n var reducerConfig = REDUCE_CONFIG[prop];\n var defaultReduce = function () {\n var _a, _b;\n options[prop] = (_b = (_a = s[prop], _a !== null && _a !== void 0 ? _a : options[prop]), _b !== null && _b !== void 0 ? _b : undefined);\n };\n if (!reducerConfig) {\n defaultReduce();\n return;\n }\n var outputProp = reducerConfig.outputProp,\n reducer = reducerConfig.reducer,\n _b = reducerConfig.start,\n start = _b === void 0 ? undefined : _b,\n _c = reducerConfig.seriesType,\n seriesType = _c === void 0 ? [s.type] : _c;\n if (!seriesType.includes(s.type)) {\n defaultReduce();\n return;\n }\n var result = reducer((_a = options[outputProp], _a !== null && _a !== void 0 ? _a : start), s, idx, series.length);\n if (result !== undefined) {\n options[outputProp] = result;\n }\n });\n });\n return options;\n}\n/**\n * Transforms provided series options array into an array containing series options which are compatible with standalone charts series options.\n */\nfunction processSeriesOptions(seriesOptions) {\n var e_2, _a;\n var result = [];\n var preprocessed = seriesOptions.map(function (series) {\n // Change the default for bar/columns when yKey is used to be grouped rather than stacked.\n if ((series.type === 'bar' || series.type === 'column') && series.yKey != null && !series.stacked) {\n return __assign$o(__assign$o({}, series), {\n grouped: series.grouped != null ? series.grouped : true\n });\n }\n return series;\n });\n try {\n for (var _b = __values$8(groupSeriesByType(preprocessed)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var series = _c.value;\n switch (series[0].type) {\n case 'column':\n case 'bar':\n case 'area':\n result.push(reduceSeries(series));\n break;\n case 'line':\n default:\n if (series.length > 1) {\n console.warn('AG Charts - unexpected grouping of series type: ' + series[0].type);\n }\n result.push(series[0]);\n break;\n }\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n return result;\n}\nvar __assign$n = undefined && undefined.__assign || function () {\n __assign$n = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$n.apply(this, arguments);\n};\nvar __values$7 = undefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$j = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread$7 = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$j(arguments[i]));\n return ar;\n};\nfunction optionsType(input) {\n var _a, _b, _c, _d;\n return _d = (_a = input.type, _a !== null && _a !== void 0 ? _a : (_c = (_b = input.series) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.type), _d !== null && _d !== void 0 ? _d : 'line';\n}\nfunction isAgCartesianChartOptions(input) {\n var specifiedType = optionsType(input);\n if (specifiedType == null) {\n return true;\n }\n switch (specifiedType) {\n case 'cartesian':\n case 'area':\n case 'bar':\n case 'column':\n case 'groupedCategory':\n case 'histogram':\n case 'line':\n case 'scatter':\n return true;\n default:\n return false;\n }\n}\nfunction isAgHierarchyChartOptions(input) {\n var specifiedType = optionsType(input);\n if (specifiedType == null) {\n return false;\n }\n switch (input.type) {\n case 'hierarchy':\n // fall-through - hierarchy and treemap are synonyms.\n case 'treemap':\n return true;\n default:\n return false;\n }\n}\nfunction isAgPolarChartOptions(input) {\n var specifiedType = optionsType(input);\n if (specifiedType == null) {\n return false;\n }\n switch (input.type) {\n case 'polar':\n // fall-through - polar and pie are synonyms.\n case 'pie':\n return true;\n default:\n return false;\n }\n}\nfunction isSeriesOptionType(input) {\n if (input == null) {\n return false;\n }\n return ['line', 'bar', 'column', 'histogram', 'scatter', 'area', 'pie', 'treemap'].indexOf(input) >= 0;\n}\nfunction countArrayElements(input) {\n var e_1, _a;\n var count = 0;\n try {\n for (var input_1 = __values$7(input), input_1_1 = input_1.next(); !input_1_1.done; input_1_1 = input_1.next()) {\n var next = input_1_1.value;\n if (next instanceof Array) {\n count += countArrayElements(next);\n }\n if (next != null) {\n count++;\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (input_1_1 && !input_1_1.done && (_a = input_1.return)) _a.call(input_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n return count;\n}\nfunction takeColours(context, colours, maxCount) {\n var result = [];\n for (var count = 0; count < maxCount; count++) {\n result.push(colours[(count + context.colourIndex) % colours.length]);\n }\n return result;\n}\nvar noDataCloneMergeOptions = {\n avoidDeepClone: ['data']\n};\nfunction prepareOptions(newOptions) {\n var fallbackOptions = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n fallbackOptions[_i - 1] = arguments[_i];\n }\n var _a;\n var options = jsonMerge(__spread$7(fallbackOptions, [newOptions]), noDataCloneMergeOptions);\n sanityCheckOptions(options);\n // Determine type and ensure it's explicit in the options config.\n var userSuppliedOptionsType = options.type;\n var type = optionsType(options);\n options = __assign$n(__assign$n({}, options), {\n type: type\n });\n var defaultSeriesType = isAgCartesianChartOptions(options) ? 'line' : isAgHierarchyChartOptions(options) ? 'treemap' : isAgPolarChartOptions(options) ? 'pie' : 'line';\n var defaultOverrides = type === 'bar' ? DEFAULT_BAR_CHART_OVERRIDES : type === 'scatter' ? DEFAULT_SCATTER_HISTOGRAM_CHART_OVERRIDES : type === 'histogram' ? DEFAULT_SCATTER_HISTOGRAM_CHART_OVERRIDES : isAgCartesianChartOptions(options) ? DEFAULT_CARTESIAN_CHART_OVERRIDES : {};\n var _b = prepareMainOptions(defaultOverrides, options),\n context = _b.context,\n mergedOptions = _b.mergedOptions,\n axesThemes = _b.axesThemes,\n seriesThemes = _b.seriesThemes;\n // Special cases where we have arrays of elements which need their own defaults.\n // Apply series themes before calling processSeriesOptions() as it reduces and renames some\n // properties, and in that case then cannot correctly have themes applied.\n mergedOptions.series = processSeriesOptions((mergedOptions.series || []).map(function (s) {\n var type = s.type ? s.type : isSeriesOptionType(userSuppliedOptionsType) ? userSuppliedOptionsType : defaultSeriesType;\n var mergedSeries = jsonMerge([seriesThemes[type] || {}, __assign$n(__assign$n({}, s), {\n type: type\n })], noDataCloneMergeOptions);\n if (type === 'pie') {\n preparePieOptions(seriesThemes.pie, s, mergedSeries);\n }\n return mergedSeries;\n })).map(function (s) {\n return prepareSeries(context, s);\n });\n if (isAgCartesianChartOptions(mergedOptions)) {\n mergedOptions.axes = (_a = mergedOptions.axes) === null || _a === void 0 ? void 0 : _a.map(function (a) {\n var _a;\n var type = (_a = a.type, _a !== null && _a !== void 0 ? _a : 'number');\n var axis = __assign$n(__assign$n({}, a), {\n type: type\n });\n var axesTheme = jsonMerge([axesThemes[type], axesThemes[type][a.position || 'unknown'] || {}]);\n return prepareAxis(axis, axesTheme);\n });\n }\n prepareEnabledOptions(options, mergedOptions);\n return mergedOptions;\n}\nfunction sanityCheckOptions(options) {\n var _a, _b;\n if ((_a = options.series) === null || _a === void 0 ? void 0 : _a.some(function (s) {\n return s.yKeys != null && s.yKey != null;\n })) {\n console.warn('AG Charts - series options yKeys and yKey are mutually exclusive, please only use yKey for future compatibility.');\n }\n if ((_b = options.series) === null || _b === void 0 ? void 0 : _b.some(function (s) {\n return s.yNames != null && s.yName != null;\n })) {\n console.warn('AG Charts - series options yNames and yName are mutually exclusive, please only use yName for future compatibility.');\n }\n}\nfunction prepareMainOptions(defaultOverrides, options) {\n var _a = prepareTheme(options),\n theme = _a.theme,\n cleanedTheme = _a.cleanedTheme,\n axesThemes = _a.axesThemes,\n seriesThemes = _a.seriesThemes;\n var context = {\n colourIndex: 0,\n palette: theme.palette\n };\n var mergedOptions = jsonMerge([defaultOverrides, cleanedTheme, options], noDataCloneMergeOptions);\n return {\n context: context,\n mergedOptions: mergedOptions,\n axesThemes: axesThemes,\n seriesThemes: seriesThemes\n };\n}\nfunction prepareTheme(options) {\n var theme = getChartTheme(options.theme);\n var themeConfig = theme.getConfig(optionsType(options) || 'cartesian');\n return {\n theme: theme,\n axesThemes: themeConfig['axes'] || {},\n seriesThemes: themeConfig['series'] || {},\n cleanedTheme: jsonMerge([themeConfig, {\n axes: DELETE,\n series: DELETE\n }])\n };\n}\nfunction prepareSeries(context, input) {\n var defaults = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n defaults[_i - 2] = arguments[_i];\n }\n var paletteOptions = calculateSeriesPalette(context, input);\n // Part of the options interface, but not directly consumed by the series implementations.\n var removeOptions = {\n stacked: DELETE\n };\n var mergedResult = jsonMerge(__spread$7(defaults, [paletteOptions, input, removeOptions]), noDataCloneMergeOptions);\n return applySeriesTransform(mergedResult);\n}\nfunction calculateSeriesPalette(context, input) {\n var paletteOptions = {};\n var _a = context.palette,\n fills = _a.fills,\n strokes = _a.strokes;\n var inputAny = input;\n var colourCount = countArrayElements(inputAny['yKeys'] || []) || 1; // Defaults to 1 if no yKeys.\n switch (input.type) {\n case 'pie':\n colourCount = Math.max(fills.length, strokes.length);\n // fall-through - only colourCount varies for `pie`.\n case 'area':\n case 'bar':\n case 'column':\n paletteOptions.fills = takeColours(context, fills, colourCount);\n paletteOptions.strokes = takeColours(context, strokes, colourCount);\n break;\n case 'histogram':\n paletteOptions.fill = takeColours(context, fills, 1)[0];\n paletteOptions.stroke = takeColours(context, strokes, 1)[0];\n break;\n case 'scatter':\n paletteOptions.marker = {\n stroke: takeColours(context, strokes, 1)[0],\n fill: takeColours(context, fills, 1)[0]\n };\n break;\n case 'line':\n paletteOptions.stroke = takeColours(context, fills, 1)[0];\n paletteOptions.marker = {\n stroke: takeColours(context, strokes, 1)[0],\n fill: takeColours(context, fills, 1)[0]\n };\n break;\n case 'treemap':\n break;\n default:\n throw new Error('AG Charts - unknown series type: ' + input.type);\n }\n context.colourIndex += colourCount;\n return paletteOptions;\n}\nfunction prepareAxis(axis, axisTheme) {\n // Remove redundant theme overload keys.\n var removeOptions = {\n top: DELETE,\n bottom: DELETE,\n left: DELETE,\n right: DELETE\n };\n // Special cross lines case where we have an arrays of cross line elements which need their own defaults.\n if (axis.crossLines) {\n if (!Array.isArray(axis.crossLines)) {\n console.warn('AG Charts - axis[].crossLines should be an array.');\n axis.crossLines = [];\n }\n var crossLinesTheme_1 = axisTheme.crossLines;\n axis.crossLines = axis.crossLines.map(function (crossLine) {\n return jsonMerge([crossLinesTheme_1, crossLine]);\n });\n }\n var cleanTheme = {\n crossLines: DELETE\n };\n return jsonMerge([axisTheme, cleanTheme, axis, removeOptions], noDataCloneMergeOptions);\n}\nfunction prepareEnabledOptions(options, mergedOptions) {\n // Set `enabled: true` for all option objects where the user has provided values.\n jsonWalk(options, function (_, userOpts, mergedOpts) {\n if (!mergedOpts) {\n return;\n }\n if ('enabled' in mergedOpts && userOpts.enabled == null) {\n mergedOpts.enabled = true;\n }\n }, {\n skip: ['data']\n }, mergedOptions);\n}\nfunction preparePieOptions(pieSeriesTheme, seriesOptions, mergedSeries) {\n if (Array.isArray(seriesOptions.innerLabels)) {\n mergedSeries.innerLabels = seriesOptions.innerLabels.map(function (ln) {\n return jsonMerge([pieSeriesTheme.innerLabels, ln]);\n });\n } else {\n mergedSeries.innerLabels = DELETE;\n }\n}\nvar horizontalCrosslineTranslationDirections = {\n top: {\n xTranslationDirection: 0,\n yTranslationDirection: -1\n },\n bottom: {\n xTranslationDirection: 0,\n yTranslationDirection: 1\n },\n left: {\n xTranslationDirection: -1,\n yTranslationDirection: 0\n },\n right: {\n xTranslationDirection: 1,\n yTranslationDirection: 0\n },\n topLeft: {\n xTranslationDirection: 1,\n yTranslationDirection: -1\n },\n topRight: {\n xTranslationDirection: -1,\n yTranslationDirection: -1\n },\n bottomLeft: {\n xTranslationDirection: 1,\n yTranslationDirection: 1\n },\n bottomRight: {\n xTranslationDirection: -1,\n yTranslationDirection: 1\n },\n inside: {\n xTranslationDirection: 0,\n yTranslationDirection: 0\n },\n insideLeft: {\n xTranslationDirection: 1,\n yTranslationDirection: 0\n },\n insideRight: {\n xTranslationDirection: -1,\n yTranslationDirection: 0\n },\n insideTop: {\n xTranslationDirection: 0,\n yTranslationDirection: 1\n },\n insideBottom: {\n xTranslationDirection: 0,\n yTranslationDirection: -1\n },\n insideTopLeft: {\n xTranslationDirection: 1,\n yTranslationDirection: 1\n },\n insideBottomLeft: {\n xTranslationDirection: 1,\n yTranslationDirection: -1\n },\n insideTopRight: {\n xTranslationDirection: -1,\n yTranslationDirection: 1\n },\n insideBottomRight: {\n xTranslationDirection: -1,\n yTranslationDirection: -1\n }\n};\nvar verticalCrossLineTranslationDirections = {\n top: {\n xTranslationDirection: 1,\n yTranslationDirection: 0\n },\n bottom: {\n xTranslationDirection: -1,\n yTranslationDirection: 0\n },\n left: {\n xTranslationDirection: 0,\n yTranslationDirection: -1\n },\n right: {\n xTranslationDirection: 0,\n yTranslationDirection: 1\n },\n topLeft: {\n xTranslationDirection: -1,\n yTranslationDirection: -1\n },\n topRight: {\n xTranslationDirection: -1,\n yTranslationDirection: 1\n },\n bottomLeft: {\n xTranslationDirection: 1,\n yTranslationDirection: -1\n },\n bottomRight: {\n xTranslationDirection: 1,\n yTranslationDirection: 1\n },\n inside: {\n xTranslationDirection: 0,\n yTranslationDirection: 0\n },\n insideLeft: {\n xTranslationDirection: 0,\n yTranslationDirection: 1\n },\n insideRight: {\n xTranslationDirection: 0,\n yTranslationDirection: -1\n },\n insideTop: {\n xTranslationDirection: -1,\n yTranslationDirection: 0\n },\n insideBottom: {\n xTranslationDirection: 1,\n yTranslationDirection: 0\n },\n insideTopLeft: {\n xTranslationDirection: -1,\n yTranslationDirection: 1\n },\n insideBottomLeft: {\n xTranslationDirection: 1,\n yTranslationDirection: 1\n },\n insideTopRight: {\n xTranslationDirection: -1,\n yTranslationDirection: -1\n },\n insideBottomRight: {\n xTranslationDirection: 1,\n yTranslationDirection: -1\n }\n};\nvar calculateLabelTranslation = function (_a) {\n var yDirection = _a.yDirection,\n _b = _a.padding,\n padding = _b === void 0 ? 0 : _b,\n position = _a.position,\n bbox = _a.bbox;\n var _c;\n var crossLineTranslationDirections = yDirection ? horizontalCrosslineTranslationDirections : verticalCrossLineTranslationDirections;\n var _d = (_c = crossLineTranslationDirections[position], _c !== null && _c !== void 0 ? _c : crossLineTranslationDirections['top']),\n xTranslationDirection = _d.xTranslationDirection,\n yTranslationDirection = _d.yTranslationDirection;\n var w = yDirection ? bbox.width : bbox.height;\n var h = yDirection ? bbox.height : bbox.width;\n var xTranslation = xTranslationDirection * (padding + w / 2);\n var yTranslation = yTranslationDirection * (padding + h / 2);\n return {\n xTranslation: xTranslation,\n yTranslation: yTranslation\n };\n};\nvar POSITION_TOP_COORDINATES = function (_a) {\n var yDirection = _a.yDirection,\n xEnd = _a.xEnd,\n yStart = _a.yStart,\n yEnd = _a.yEnd;\n if (yDirection) {\n return {\n x: xEnd / 2,\n y: yStart\n };\n } else {\n return {\n x: xEnd,\n y: !isNaN(yEnd) ? (yStart + yEnd) / 2 : yStart\n };\n }\n};\nvar POSITION_LEFT_COORDINATES = function (_a) {\n var yDirection = _a.yDirection,\n xStart = _a.xStart,\n xEnd = _a.xEnd,\n yStart = _a.yStart,\n yEnd = _a.yEnd;\n if (yDirection) {\n return {\n x: xStart,\n y: !isNaN(yEnd) ? (yStart + yEnd) / 2 : yStart\n };\n } else {\n return {\n x: xEnd / 2,\n y: yStart\n };\n }\n};\nvar POSITION_RIGHT_COORDINATES = function (_a) {\n var yDirection = _a.yDirection,\n xEnd = _a.xEnd,\n yStart = _a.yStart,\n yEnd = _a.yEnd;\n if (yDirection) {\n return {\n x: xEnd,\n y: !isNaN(yEnd) ? (yStart + yEnd) / 2 : yStart\n };\n } else {\n return {\n x: xEnd / 2,\n y: !isNaN(yEnd) ? yEnd : yStart\n };\n }\n};\nvar POSITION_BOTTOM_COORDINATES = function (_a) {\n var yDirection = _a.yDirection,\n xStart = _a.xStart,\n xEnd = _a.xEnd,\n yStart = _a.yStart,\n yEnd = _a.yEnd;\n if (yDirection) {\n return {\n x: xEnd / 2,\n y: !isNaN(yEnd) ? yEnd : yStart\n };\n } else {\n return {\n x: xStart,\n y: !isNaN(yEnd) ? (yStart + yEnd) / 2 : yStart\n };\n }\n};\nvar POSITION_INSIDE_COORDINATES = function (_a) {\n var xEnd = _a.xEnd,\n yStart = _a.yStart,\n yEnd = _a.yEnd;\n return {\n x: xEnd / 2,\n y: !isNaN(yEnd) ? (yStart + yEnd) / 2 : yStart\n };\n};\nvar POSITION_TOP_LEFT_COORDINATES = function (_a) {\n var yDirection = _a.yDirection,\n xStart = _a.xStart,\n xEnd = _a.xEnd,\n yStart = _a.yStart;\n if (yDirection) {\n return {\n x: xStart / 2,\n y: yStart\n };\n } else {\n return {\n x: xEnd,\n y: yStart\n };\n }\n};\nvar POSITION_BOTTOM_LEFT_COORDINATES = function (_a) {\n var yDirection = _a.yDirection,\n xStart = _a.xStart,\n yStart = _a.yStart,\n yEnd = _a.yEnd;\n if (yDirection) {\n return {\n x: xStart,\n y: !isNaN(yEnd) ? yEnd : yStart\n };\n } else {\n return {\n x: xStart,\n y: yStart\n };\n }\n};\nvar POSITION_TOP_RIGHT_COORDINATES = function (_a) {\n var yDirection = _a.yDirection,\n xEnd = _a.xEnd,\n yStart = _a.yStart,\n yEnd = _a.yEnd;\n if (yDirection) {\n return {\n x: xEnd,\n y: yStart\n };\n } else {\n return {\n x: xEnd,\n y: !isNaN(yEnd) ? yEnd : yStart\n };\n }\n};\nvar POSITION_BOTTOM_RIGHT_COORDINATES = function (_a) {\n var yDirection = _a.yDirection,\n xStart = _a.xStart,\n xEnd = _a.xEnd,\n yStart = _a.yStart,\n yEnd = _a.yEnd;\n if (yDirection) {\n return {\n x: xEnd,\n y: !isNaN(yEnd) ? yEnd : yStart\n };\n } else {\n return {\n x: xStart,\n y: !isNaN(yEnd) ? yEnd : yStart\n };\n }\n};\nvar labeldDirectionHandling = {\n top: {\n c: POSITION_TOP_COORDINATES\n },\n bottom: {\n c: POSITION_BOTTOM_COORDINATES\n },\n left: {\n c: POSITION_LEFT_COORDINATES\n },\n right: {\n c: POSITION_RIGHT_COORDINATES\n },\n topLeft: {\n c: POSITION_TOP_LEFT_COORDINATES\n },\n topRight: {\n c: POSITION_TOP_RIGHT_COORDINATES\n },\n bottomLeft: {\n c: POSITION_BOTTOM_LEFT_COORDINATES\n },\n bottomRight: {\n c: POSITION_BOTTOM_RIGHT_COORDINATES\n },\n inside: {\n c: POSITION_INSIDE_COORDINATES\n },\n insideLeft: {\n c: POSITION_LEFT_COORDINATES\n },\n insideRight: {\n c: POSITION_RIGHT_COORDINATES\n },\n insideTop: {\n c: POSITION_TOP_COORDINATES\n },\n insideBottom: {\n c: POSITION_BOTTOM_COORDINATES\n },\n insideTopLeft: {\n c: POSITION_TOP_LEFT_COORDINATES\n },\n insideBottomLeft: {\n c: POSITION_BOTTOM_LEFT_COORDINATES\n },\n insideTopRight: {\n c: POSITION_TOP_RIGHT_COORDINATES\n },\n insideBottomRight: {\n c: POSITION_BOTTOM_RIGHT_COORDINATES\n }\n};\nvar __extends$1P = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign$m = undefined && undefined.__assign || function () {\n __assign$m = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$m.apply(this, arguments);\n};\nvar __decorate$16 = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar Range = /** @class */function (_super) {\n __extends$1P(Range, _super);\n function Range() {\n var _this = _super.call(this) || this;\n _this.x1 = 0;\n _this.y1 = 0;\n _this.x2 = 0;\n _this.y2 = 0;\n _this.startLine = false;\n _this.endLine = false;\n _this.isRange = false;\n _this.restoreOwnStyles();\n return _this;\n }\n Range.prototype.computeBBox = function () {\n return new BBox$1(this.x1, this.y1, this.x2 - this.x1, this.y2 - this.y1);\n };\n Range.prototype.isPointInPath = function (_x, _y) {\n return false;\n };\n Range.prototype.render = function (renderCtx) {\n var _a;\n var ctx = renderCtx.ctx,\n forceRender = renderCtx.forceRender,\n stats = renderCtx.stats;\n if (this.dirty === RedrawType.NONE && !forceRender) {\n if (stats) stats.nodesSkipped += this.nodeCount.count;\n return;\n }\n this.computeTransformMatrix();\n this.matrix.toContext(ctx);\n var _b = this,\n x1 = _b.x1,\n y1 = _b.y1,\n x2 = _b.x2,\n y2 = _b.y2;\n x1 = this.align(x1);\n y1 = this.align(y1);\n x2 = this.align(x2);\n y2 = this.align(y2);\n var _c = this,\n fill = _c.fill,\n opacity = _c.opacity,\n isRange = _c.isRange;\n var fillActive = !!(isRange && fill);\n if (fillActive) {\n var fillOpacity = this.fillOpacity;\n ctx.fillStyle = fill;\n ctx.globalAlpha = opacity * fillOpacity;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y1);\n ctx.lineTo(x2, y2);\n ctx.lineTo(x1, y2);\n ctx.closePath();\n ctx.fill();\n }\n var _d = this,\n stroke = _d.stroke,\n strokeWidth = _d.strokeWidth,\n startLine = _d.startLine,\n endLine = _d.endLine;\n var strokeActive = !!((startLine || endLine) && stroke && strokeWidth);\n if (strokeActive) {\n var _e = this,\n strokeOpacity = _e.strokeOpacity,\n lineDash = _e.lineDash,\n lineDashOffset = _e.lineDashOffset,\n lineCap = _e.lineCap,\n lineJoin = _e.lineJoin;\n ctx.strokeStyle = stroke;\n ctx.globalAlpha = opacity * strokeOpacity;\n ctx.lineWidth = strokeWidth;\n if (lineDash) {\n ctx.setLineDash(lineDash);\n }\n if (lineDashOffset) {\n ctx.lineDashOffset = lineDashOffset;\n }\n if (lineCap) {\n ctx.lineCap = lineCap;\n }\n if (lineJoin) {\n ctx.lineJoin = lineJoin;\n }\n ctx.beginPath();\n if (startLine) {\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y1);\n }\n if (endLine) {\n ctx.moveTo(x2, y2);\n ctx.lineTo(x1, y2);\n }\n ctx.stroke();\n }\n (_a = this.fillShadow) === null || _a === void 0 ? void 0 : _a.markClean();\n _super.prototype.render.call(this, renderCtx);\n };\n Range.className = 'Range';\n Range.defaultStyles = __assign$m(__assign$m({}, Shape$1.defaultStyles), {\n strokeWidth: 1\n });\n __decorate$16([SceneChangeDetection({\n redraw: RedrawType.MINOR\n })], Range.prototype, \"x1\", void 0);\n __decorate$16([SceneChangeDetection({\n redraw: RedrawType.MINOR\n })], Range.prototype, \"y1\", void 0);\n __decorate$16([SceneChangeDetection({\n redraw: RedrawType.MINOR\n })], Range.prototype, \"x2\", void 0);\n __decorate$16([SceneChangeDetection({\n redraw: RedrawType.MINOR\n })], Range.prototype, \"y2\", void 0);\n __decorate$16([SceneChangeDetection({\n redraw: RedrawType.MINOR\n })], Range.prototype, \"startLine\", void 0);\n __decorate$16([SceneChangeDetection({\n redraw: RedrawType.MINOR\n })], Range.prototype, \"endLine\", void 0);\n __decorate$16([SceneChangeDetection({\n redraw: RedrawType.MINOR\n })], Range.prototype, \"isRange\", void 0);\n return Range;\n}(Shape$1);\nvar __decorate$15 = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __read$i = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar CROSSLINE_LABEL_POSITIONS = ['top', 'left', 'right', 'bottom', 'topLeft', 'topRight', 'bottomLeft', 'bottomRight', 'inside', 'insideLeft', 'insideRight', 'insideTop', 'insideBottom', 'insideTopLeft', 'insideBottomLeft', 'insideTopRight', 'insideBottomRight'];\nvar OPT_CROSSLINE_LABEL_POSITION = predicateWithMessage(function (v, ctx) {\n return OPTIONAL(v, ctx, function (v) {\n return CROSSLINE_LABEL_POSITIONS.includes(v);\n });\n}, \"expecting an optional crossLine label position keyword such as 'topLeft', 'topRight' or 'inside'\");\nvar OPT_CROSSLINE_TYPE = predicateWithMessage(function (v, ctx) {\n return OPTIONAL(v, ctx, function (v) {\n return v === 'range' || v === 'line';\n });\n}, \"expecting a crossLine type keyword such as 'range' or 'line'\");\nvar CrossLineLabel = /** @class */function () {\n function CrossLineLabel() {\n this.enabled = undefined;\n this.text = undefined;\n this.fontStyle = undefined;\n this.fontWeight = undefined;\n this.fontSize = 14;\n this.fontFamily = 'Verdana, sans-serif';\n /**\n * The padding between the label and the line.\n */\n this.padding = 5;\n /**\n * The color of the labels.\n */\n this.color = 'rgba(87, 87, 87, 1)';\n this.position = undefined;\n this.rotation = undefined;\n this.parallel = undefined;\n }\n __decorate$15([Validate(OPT_BOOLEAN)], CrossLineLabel.prototype, \"enabled\", void 0);\n __decorate$15([Validate(OPT_STRING)], CrossLineLabel.prototype, \"text\", void 0);\n __decorate$15([Validate(OPT_FONT_STYLE)], CrossLineLabel.prototype, \"fontStyle\", void 0);\n __decorate$15([Validate(OPT_FONT_WEIGHT)], CrossLineLabel.prototype, \"fontWeight\", void 0);\n __decorate$15([Validate(NUMBER(0))], CrossLineLabel.prototype, \"fontSize\", void 0);\n __decorate$15([Validate(STRING)], CrossLineLabel.prototype, \"fontFamily\", void 0);\n __decorate$15([Validate(NUMBER(0))], CrossLineLabel.prototype, \"padding\", void 0);\n __decorate$15([Validate(OPT_COLOR_STRING)], CrossLineLabel.prototype, \"color\", void 0);\n __decorate$15([Validate(OPT_CROSSLINE_LABEL_POSITION)], CrossLineLabel.prototype, \"position\", void 0);\n __decorate$15([Validate(OPT_NUMBER(-360, 360))], CrossLineLabel.prototype, \"rotation\", void 0);\n __decorate$15([Validate(OPT_BOOLEAN)], CrossLineLabel.prototype, \"parallel\", void 0);\n return CrossLineLabel;\n}();\nvar CrossLine = /** @class */function () {\n function CrossLine() {\n this.id = createId$1(this);\n this.enabled = undefined;\n this.type = undefined;\n this.range = undefined;\n this.value = undefined;\n this.fill = undefined;\n this.fillOpacity = undefined;\n this.stroke = undefined;\n this.strokeWidth = undefined;\n this.strokeOpacity = undefined;\n this.lineDash = undefined;\n this.label = new CrossLineLabel();\n this.scale = undefined;\n this.clippedRange = [-Infinity, Infinity];\n this.gridLength = 0;\n this.sideFlag = -1;\n this.parallelFlipRotation = 0;\n this.regularFlipRotation = 0;\n this.direction = ChartAxisDirection.X;\n this.group = new Group$1({\n name: \"\" + this.id,\n layer: true,\n zIndex: CrossLine.LINE_LAYER_ZINDEX\n });\n this.crossLineRange = new Range();\n this.crossLineLabel = new Text$1();\n this.labelPoint = undefined;\n this.data = [];\n this.startLine = false;\n this.endLine = false;\n this.isRange = false;\n var _a = this,\n group = _a.group,\n crossLineRange = _a.crossLineRange,\n crossLineLabel = _a.crossLineLabel;\n group.append([crossLineRange, crossLineLabel]);\n crossLineRange.pointerEvents = PointerEvents$1.None;\n }\n CrossLine.prototype.update = function (visible) {\n if (!this.enabled) {\n return;\n }\n this.group.visible = visible;\n if (!visible) {\n return;\n }\n var dataCreated = this.createNodeData();\n if (!dataCreated) {\n this.group.visible = false;\n return;\n }\n this.updateNodes();\n this.group.zIndex = this.getZIndex(this.isRange);\n };\n CrossLine.prototype.updateNodes = function () {\n this.updateRangeNode();\n if (this.label.enabled) {\n this.updateLabel();\n this.positionLabel();\n }\n };\n CrossLine.prototype.createNodeData = function () {\n var _a, _b, _c, _d, _e, _f;\n var _g, _h;\n var _j = this,\n scale = _j.scale,\n gridLength = _j.gridLength,\n sideFlag = _j.sideFlag,\n direction = _j.direction,\n _k = _j.label.position,\n position = _k === void 0 ? 'top' : _k,\n clippedRange = _j.clippedRange,\n _l = _j.strokeWidth,\n strokeWidth = _l === void 0 ? 0 : _l;\n if (!scale) {\n return false;\n }\n var isContinuous = scale instanceof ContinuousScale$1;\n var bandwidth = (_g = scale.bandwidth, _g !== null && _g !== void 0 ? _g : 0);\n var clippedRangeClamper = clamper$1(clippedRange);\n var xStart, xEnd, yStart, yEnd, clampedYStart, clampedYEnd;\n _a = __read$i([0, sideFlag * gridLength], 2), xStart = _a[0], xEnd = _a[1];\n _b = __read$i(this.getRange(), 2), yStart = _b[0], yEnd = _b[1];\n _c = __read$i([Number(scale.convert(yStart, isContinuous ? clamper$1 : undefined)), scale.convert(yEnd, isContinuous ? clamper$1 : undefined) + bandwidth], 2), clampedYStart = _c[0], clampedYEnd = _c[1];\n clampedYStart = clippedRangeClamper(clampedYStart);\n clampedYEnd = clippedRangeClamper(clampedYEnd);\n _d = __read$i([Number(scale.convert(yStart)), scale.convert(yEnd) + bandwidth], 2), yStart = _d[0], yEnd = _d[1];\n var validRange = !isNaN(clampedYStart) && !isNaN(clampedYEnd) && (yStart === clampedYStart || yEnd === clampedYEnd || clampedYStart !== clampedYEnd) && Math.abs(clampedYEnd - clampedYStart) > 0;\n if (validRange) {\n var reverse = clampedYStart !== Math.min(clampedYStart, clampedYEnd);\n if (reverse) {\n _e = __read$i([Math.min(clampedYStart, clampedYEnd), Math.max(clampedYStart, clampedYEnd)], 2), clampedYStart = _e[0], clampedYEnd = _e[1];\n _f = __read$i([yEnd, yStart], 2), yStart = _f[0], yEnd = _f[1];\n }\n }\n this.isRange = validRange;\n this.startLine = !isNaN(yStart) && strokeWidth > 0 && yStart === clampedYStart;\n this.endLine = !isNaN(yEnd) && strokeWidth > 0 && yEnd === clampedYEnd;\n if (!validRange && !this.startLine && !this.endLine) {\n return false;\n }\n this.data = [clampedYStart, clampedYEnd];\n if (this.label.enabled) {\n var yDirection = direction === ChartAxisDirection.Y;\n var _m = (_h = labeldDirectionHandling[position], _h !== null && _h !== void 0 ? _h : {}).c,\n c = _m === void 0 ? POSITION_TOP_COORDINATES : _m;\n var _o = c({\n yDirection: yDirection,\n xStart: xStart,\n xEnd: xEnd,\n yStart: clampedYStart,\n yEnd: clampedYEnd\n }),\n labelX = _o.x,\n labelY = _o.y;\n this.labelPoint = {\n x: labelX,\n y: labelY\n };\n }\n return true;\n };\n CrossLine.prototype.updateRangeNode = function () {\n var _a;\n var _b = this,\n crossLineRange = _b.crossLineRange,\n sideFlag = _b.sideFlag,\n gridLength = _b.gridLength,\n data = _b.data,\n startLine = _b.startLine,\n endLine = _b.endLine,\n isRange = _b.isRange,\n fill = _b.fill,\n fillOpacity = _b.fillOpacity,\n stroke = _b.stroke,\n strokeWidth = _b.strokeWidth,\n lineDash = _b.lineDash;\n crossLineRange.x1 = 0;\n crossLineRange.x2 = sideFlag * gridLength;\n crossLineRange.y1 = data[0];\n crossLineRange.y2 = data[1];\n crossLineRange.startLine = startLine;\n crossLineRange.endLine = endLine;\n crossLineRange.isRange = isRange;\n crossLineRange.fill = fill;\n crossLineRange.fillOpacity = fillOpacity !== null && fillOpacity !== void 0 ? fillOpacity : 1;\n crossLineRange.stroke = stroke;\n crossLineRange.strokeWidth = strokeWidth !== null && strokeWidth !== void 0 ? strokeWidth : 1;\n crossLineRange.strokeOpacity = (_a = this.strokeOpacity, _a !== null && _a !== void 0 ? _a : 1);\n crossLineRange.lineDash = lineDash;\n };\n CrossLine.prototype.updateLabel = function () {\n var _a = this,\n crossLineLabel = _a.crossLineLabel,\n label = _a.label;\n if (!label.text) {\n return;\n }\n crossLineLabel.fontStyle = label.fontStyle;\n crossLineLabel.fontWeight = label.fontWeight;\n crossLineLabel.fontSize = label.fontSize;\n crossLineLabel.fontFamily = label.fontFamily;\n crossLineLabel.fill = label.color;\n crossLineLabel.text = label.text;\n };\n CrossLine.prototype.positionLabel = function () {\n var _a = this,\n crossLineLabel = _a.crossLineLabel,\n _b = _a.labelPoint,\n _c = _b === void 0 ? {} : _b,\n _d = _c.x,\n x = _d === void 0 ? undefined : _d,\n _e = _c.y,\n y = _e === void 0 ? undefined : _e,\n _f = _a.label,\n parallel = _f.parallel,\n rotation = _f.rotation,\n _g = _f.position,\n position = _g === void 0 ? 'top' : _g,\n _h = _f.padding,\n padding = _h === void 0 ? 0 : _h,\n direction = _a.direction,\n parallelFlipRotation = _a.parallelFlipRotation,\n regularFlipRotation = _a.regularFlipRotation;\n if (x === undefined || y === undefined) {\n return;\n }\n var labelRotation = rotation ? normalizeAngle360(toRadians(rotation)) : 0;\n var parallelFlipFlag = !labelRotation && parallelFlipRotation >= 0 && parallelFlipRotation <= Math.PI ? -1 : 1;\n var regularFlipFlag = !labelRotation && regularFlipRotation >= 0 && regularFlipRotation <= Math.PI ? -1 : 1;\n var autoRotation = parallel ? parallelFlipFlag * Math.PI / 2 : regularFlipFlag === -1 ? Math.PI : 0;\n crossLineLabel.rotation = autoRotation + labelRotation;\n crossLineLabel.textBaseline = 'middle';\n crossLineLabel.textAlign = 'center';\n var bbox = this.computeLabelBBox();\n if (!bbox) {\n return;\n }\n var yDirection = direction === ChartAxisDirection.Y;\n var _j = calculateLabelTranslation({\n yDirection: yDirection,\n padding: padding,\n position: position,\n bbox: bbox\n }),\n xTranslation = _j.xTranslation,\n yTranslation = _j.yTranslation;\n crossLineLabel.translationX = x + xTranslation;\n crossLineLabel.translationY = y + yTranslation;\n };\n CrossLine.prototype.getZIndex = function (isRange) {\n if (isRange === void 0) {\n isRange = false;\n }\n if (isRange) {\n return CrossLine.RANGE_LAYER_ZINDEX;\n }\n return CrossLine.LINE_LAYER_ZINDEX;\n };\n CrossLine.prototype.getRange = function () {\n var _a;\n var _b = this,\n value = _b.value,\n range = _b.range,\n scale = _b.scale;\n var isContinuous = scale instanceof ContinuousScale$1;\n var _c = __read$i(range !== null && range !== void 0 ? range : [value, undefined], 2),\n start = _c[0],\n end = _c[1];\n if (!isContinuous && end === undefined) {\n end = start;\n }\n _a = __read$i([checkDatum(start, isContinuous), checkDatum(end, isContinuous)], 2), start = _a[0], end = _a[1];\n if (isContinuous && start === end) {\n end = undefined;\n }\n if (start === undefined && end !== undefined) {\n start = end;\n end = undefined;\n }\n return [start, end];\n };\n CrossLine.prototype.computeLabelBBox = function () {\n return this.crossLineLabel.computeTransformedBBox();\n };\n CrossLine.prototype.calculatePadding = function (padding, seriesRect) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n var _l = this,\n isRange = _l.isRange,\n startLine = _l.startLine,\n endLine = _l.endLine;\n if (!isRange && !startLine && !endLine) {\n return;\n }\n var crossLineLabelBBox = this.computeLabelBBox();\n var labelX = (_a = crossLineLabelBBox) === null || _a === void 0 ? void 0 : _a.x;\n var labelY = (_b = crossLineLabelBBox) === null || _b === void 0 ? void 0 : _b.y;\n if (labelX == undefined || labelY == undefined) {\n return;\n }\n var labelWidth = (_d = (_c = crossLineLabelBBox) === null || _c === void 0 ? void 0 : _c.width, _d !== null && _d !== void 0 ? _d : 0);\n var labelHeight = (_f = (_e = crossLineLabelBBox) === null || _e === void 0 ? void 0 : _e.height, _f !== null && _f !== void 0 ? _f : 0);\n if (labelX + labelWidth >= seriesRect.x + seriesRect.width) {\n var paddingRight = labelX + labelWidth - (seriesRect.x + seriesRect.width);\n padding.right = (_g = padding.right, _g !== null && _g !== void 0 ? _g : 0) >= paddingRight ? padding.right : paddingRight;\n } else if (labelX <= seriesRect.x) {\n var paddingLeft = seriesRect.x - labelX;\n padding.left = (_h = padding.left, _h !== null && _h !== void 0 ? _h : 0) >= paddingLeft ? padding.left : paddingLeft;\n }\n if (labelY + labelHeight >= seriesRect.y + seriesRect.height) {\n var paddingbottom = labelY + labelHeight - (seriesRect.y + seriesRect.height);\n padding.bottom = (_j = padding.bottom, _j !== null && _j !== void 0 ? _j : 0) >= paddingbottom ? padding.bottom : paddingbottom;\n } else if (labelY <= seriesRect.y) {\n var paddingTop = seriesRect.y - labelY;\n padding.top = (_k = padding.top, _k !== null && _k !== void 0 ? _k : 0) >= paddingTop ? padding.top : paddingTop;\n }\n };\n CrossLine.LINE_LAYER_ZINDEX = Layers.SERIES_CROSSLINE_LINE_ZINDEX;\n CrossLine.RANGE_LAYER_ZINDEX = Layers.SERIES_CROSSLINE_RANGE_ZINDEX;\n CrossLine.className = 'CrossLine';\n __decorate$15([Validate(OPT_BOOLEAN)], CrossLine.prototype, \"enabled\", void 0);\n __decorate$15([Validate(OPT_CROSSLINE_TYPE)], CrossLine.prototype, \"type\", void 0);\n __decorate$15([Validate(OPT_ARRAY(2))], CrossLine.prototype, \"range\", void 0);\n __decorate$15([Validate(OPT_COLOR_STRING)], CrossLine.prototype, \"fill\", void 0);\n __decorate$15([Validate(OPT_NUMBER(0, 1))], CrossLine.prototype, \"fillOpacity\", void 0);\n __decorate$15([Validate(OPT_COLOR_STRING)], CrossLine.prototype, \"stroke\", void 0);\n __decorate$15([Validate(OPT_NUMBER())], CrossLine.prototype, \"strokeWidth\", void 0);\n __decorate$15([Validate(OPT_NUMBER(0, 1))], CrossLine.prototype, \"strokeOpacity\", void 0);\n __decorate$15([Validate(OPT_LINE_DASH)], CrossLine.prototype, \"lineDash\", void 0);\n return CrossLine;\n}();\nvar __assign$l = undefined && undefined.__assign || function () {\n __assign$l = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$l.apply(this, arguments);\n};\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = undefined && undefined.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __read$h = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread$6 = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$h(arguments[i]));\n return ar;\n};\nvar __values$6 = undefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nfunction chartType(options) {\n if (isAgCartesianChartOptions(options)) {\n return 'cartesian';\n } else if (isAgPolarChartOptions(options)) {\n return 'polar';\n } else if (isAgHierarchyChartOptions(options)) {\n return 'hierarchy';\n }\n throw new Error('AG Chart - unknown type of chart for options with type: ' + options.type);\n}\n// Backwards-compatibility layer.\nvar AgChart = /** @class */function () {\n function AgChart() {}\n /** @deprecated use AgChart.create() or AgChart.update() instead. */\n AgChart.createComponent = function (options, type) {\n // console.warn('AG Charts - createComponent should no longer be used, use AgChart.update() instead.')\n if (type.indexOf('.series') >= 0) {\n var optionsWithType = __assign$l(__assign$l({}, options), {\n type: options.type || type.split('.')[0]\n });\n return createSeries([optionsWithType])[0];\n }\n return null;\n };\n AgChart.create = function (options, _container, _data) {\n return AgChartV2.create(options);\n };\n AgChart.update = function (chart, options, _container, _data) {\n return AgChartV2.update(chart, options);\n };\n AgChart.download = function (chart, options) {\n return AgChartV2.download(chart, options);\n };\n return AgChart;\n}();\nvar AgChartV2 = /** @class */function () {\n function AgChartV2() {}\n AgChartV2.create = function (userOptions) {\n var _this = this;\n debug('user options', userOptions);\n var mixinOpts = {};\n if (AgChartV2.DEBUG()) {\n mixinOpts['debug'] = true;\n }\n var overrideDevicePixelRatio = userOptions.overrideDevicePixelRatio;\n delete userOptions['overrideDevicePixelRatio'];\n var mergedOptions = prepareOptions(userOptions, mixinOpts);\n var chart = isAgCartesianChartOptions(mergedOptions) ? mergedOptions.type === 'groupedCategory' ? new GroupedCategoryChart(document, overrideDevicePixelRatio) : new CartesianChart(document, overrideDevicePixelRatio) : isAgHierarchyChartOptions(mergedOptions) ? new HierarchyChart(document, overrideDevicePixelRatio) : isAgPolarChartOptions(mergedOptions) ? new PolarChart(document, overrideDevicePixelRatio) : undefined;\n if (!chart) {\n throw new Error(\"AG Charts - couldn't apply configuration, check type of options: \" + mergedOptions['type']);\n }\n chart.requestFactoryUpdate(function () {\n return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (chart.destroyed) {\n // Chart destroyed, skip processing.\n return [2 /*return*/];\n }\n return [4 /*yield*/, AgChartV2.updateDelta(chart, mergedOptions, userOptions)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n });\n return chart;\n };\n AgChartV2.update = function (chart, userOptions) {\n var _this = this;\n debug('user options', userOptions);\n var mixinOpts = {};\n if (AgChartV2.DEBUG()) {\n mixinOpts['debug'] = true;\n }\n chart.requestFactoryUpdate(function () {\n return __awaiter(_this, void 0, void 0, function () {\n var mergedOptions, deltaOptions;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (chart.destroyed) {\n // Chart destroyed, skip processing.\n return [2 /*return*/];\n }\n mergedOptions = prepareOptions(userOptions, chart.userOptions, mixinOpts);\n if (chartType(mergedOptions) !== chartType(chart.options)) {\n chart.destroy();\n console.warn('AG Charts - options supplied require a different type of chart, please recreate the chart.');\n return [2 /*return*/];\n }\n deltaOptions = jsonDiff(chart.options, mergedOptions);\n if (deltaOptions == null) {\n return [2 /*return*/];\n }\n return [4 /*yield*/, AgChartV2.updateDelta(chart, deltaOptions, userOptions)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n });\n };\n /**\n * Returns the content of the current canvas as an image.\n * @param opts The download options including `width` and `height` of the image as well as `fileName` and `fileFormat`.\n */\n AgChartV2.download = function (chart, opts) {\n var _a = opts || {},\n width = _a.width,\n height = _a.height,\n fileName = _a.fileName,\n fileFormat = _a.fileFormat;\n var currentWidth = chart.width;\n var currentHeight = chart.height;\n var unchanged = width === undefined && height === undefined || chart.scene.canvas.pixelRatio === 1 && currentWidth === width && currentHeight === height;\n if (unchanged) {\n chart.scene.download(fileName, fileFormat);\n return;\n }\n width = width !== null && width !== void 0 ? width : currentWidth;\n height = height !== null && height !== void 0 ? height : currentHeight;\n var options = __assign$l(__assign$l({}, chart.userOptions), {\n container: document.createElement('div'),\n width: width,\n height: height,\n autoSize: false,\n overrideDevicePixelRatio: 1\n });\n var clonedChart = AgChartV2.create(options);\n clonedChart.waitForUpdate().then(function () {\n clonedChart.scene.download(fileName, fileFormat);\n clonedChart.destroy();\n });\n };\n AgChartV2.updateDelta = function (chart, update, userOptions) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (update.type == null) {\n update = __assign$l(__assign$l({}, update), {\n type: chart.options.type || optionsType(update)\n });\n }\n debug('delta update', update);\n return [4 /*yield*/, chart.awaitUpdateCompletion()];\n case 1:\n _a.sent();\n applyChartOptions(chart, update, userOptions);\n return [2 /*return*/];\n }\n });\n });\n };\n AgChartV2.DEBUG = function () {\n var _a;\n return _a = windowValue('agChartsDebug'), _a !== null && _a !== void 0 ? _a : false;\n };\n return AgChartV2;\n}();\nfunction debug(message) {\n var optionalParams = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n optionalParams[_i - 1] = arguments[_i];\n }\n if (AgChartV2.DEBUG()) {\n console.log.apply(console, __spread$6([message], optionalParams));\n }\n}\nfunction applyChartOptions(chart, options, userOptions) {\n var _a, _b;\n if (isAgCartesianChartOptions(options)) {\n applyOptionValues(chart, options, {\n skip: ['type', 'data', 'series', 'axes', 'autoSize', 'listeners', 'theme']\n });\n } else if (isAgPolarChartOptions(options)) {\n applyOptionValues(chart, options, {\n skip: ['type', 'data', 'series', 'autoSize', 'listeners', 'theme']\n });\n } else if (isAgHierarchyChartOptions(options)) {\n applyOptionValues(chart, options, {\n skip: ['type', 'data', 'series', 'autoSize', 'listeners', 'theme']\n });\n } else {\n throw new Error(\"AG Charts - couldn't apply configuration, check type of options and chart: \" + options['type']);\n }\n var forceNodeDataRefresh = false;\n if (options.series && options.series.length > 0) {\n applySeries(chart, options);\n forceNodeDataRefresh = true;\n }\n if (isAgCartesianChartOptions(options) && options.axes) {\n var axesPresent = applyAxes(chart, options);\n if (axesPresent) {\n forceNodeDataRefresh = true;\n }\n }\n var seriesOpts = options.series;\n var seriesDataUpdate = !!options.data || ((_a = seriesOpts) === null || _a === void 0 ? void 0 : _a.some(function (s) {\n return s.data != null;\n }));\n var otherRefreshUpdate = options.legend || options.title || options.subtitle;\n forceNodeDataRefresh = forceNodeDataRefresh || seriesDataUpdate || !!otherRefreshUpdate;\n if (options.data) {\n chart.data = options.data;\n }\n // Needs to be done last to avoid overrides by width/height properties.\n if (options.autoSize != null) {\n chart.autoSize = options.autoSize;\n }\n if (options.listeners) {\n registerListeners(chart, options.listeners);\n }\n if ((_b = options.legend) === null || _b === void 0 ? void 0 : _b.listeners) {\n Object.assign(chart.legend.listeners, options.legend.listeners);\n }\n chart.options = jsonMerge([chart.options || {}, options], noDataCloneMergeOptions);\n chart.userOptions = jsonMerge([chart.userOptions || {}, userOptions], noDataCloneMergeOptions);\n var updateType = forceNodeDataRefresh ? ChartUpdateType.PROCESS_DATA : ChartUpdateType.PERFORM_LAYOUT;\n chart.update(updateType, {\n forceNodeDataRefresh: forceNodeDataRefresh\n });\n}\nfunction applySeries(chart, options) {\n var optSeries = options.series;\n if (!optSeries) {\n return;\n }\n var matchingTypes = chart.series.length === optSeries.length && chart.series.every(function (s, i) {\n var _a;\n return s.type === ((_a = optSeries[i]) === null || _a === void 0 ? void 0 : _a.type);\n });\n // Try to optimise series updates if series count and types didn't change.\n if (matchingTypes) {\n chart.series.forEach(function (s, i) {\n var _a, _b;\n var previousOpts = ((_b = (_a = chart.options) === null || _a === void 0 ? void 0 : _a.series) === null || _b === void 0 ? void 0 : _b[i]) || {};\n var seriesDiff = jsonDiff(previousOpts, optSeries[i] || {});\n if (!seriesDiff) {\n return;\n }\n debug(\"applying series diff idx \" + i, seriesDiff);\n applySeriesValues(s, seriesDiff, {\n path: \"series[\" + i + \"]\"\n });\n s.markNodeDataDirty();\n });\n return;\n }\n chart.series = createSeries(optSeries);\n}\nfunction applyAxes(chart, options) {\n var optAxes = options.axes;\n if (!optAxes) {\n return false;\n }\n var matchingTypes = chart.axes.length === optAxes.length && chart.axes.every(function (a, i) {\n return a.type === optAxes[i].type;\n });\n // Try to optimise series updates if series count and types didn't change.\n if (matchingTypes) {\n var oldOpts_1 = chart.options;\n if (isAgCartesianChartOptions(oldOpts_1)) {\n chart.axes.forEach(function (a, i) {\n var _a;\n var previousOpts = ((_a = oldOpts_1.axes) === null || _a === void 0 ? void 0 : _a[i]) || {};\n var axisDiff = jsonDiff(previousOpts, optAxes[i]);\n debug(\"applying axis diff idx \" + i, axisDiff);\n var path = \"axes[\" + i + \"]\";\n var skip = ['axes[].type'];\n applyOptionValues(a, axisDiff, {\n path: path,\n skip: skip\n });\n });\n return true;\n }\n }\n chart.axes = createAxis(optAxes);\n return true;\n}\nfunction createSeries(options) {\n var e_1, _a;\n var series = [];\n var index = 0;\n try {\n for (var _b = __values$6(options || []), _c = _b.next(); !_c.done; _c = _b.next()) {\n var seriesOptions = _c.value;\n var path = \"series[\" + index++ + \"]\";\n switch (seriesOptions.type) {\n case 'area':\n series.push(applySeriesValues(new AreaSeries(), seriesOptions, {\n path: path\n }));\n break;\n case 'bar':\n // fall-through - bar and column are synonyms.\n case 'column':\n series.push(applySeriesValues(new BarSeries(), seriesOptions, {\n path: path\n }));\n break;\n case 'histogram':\n series.push(applySeriesValues(new HistogramSeries(), seriesOptions, {\n path: path\n }));\n break;\n case 'line':\n series.push(applySeriesValues(new LineSeries(), seriesOptions, {\n path: path\n }));\n break;\n case 'scatter':\n series.push(applySeriesValues(new ScatterSeries(), seriesOptions, {\n path: path\n }));\n break;\n case 'pie':\n series.push(applySeriesValues(new PieSeries(), seriesOptions, {\n path: path\n }));\n break;\n case 'treemap':\n series.push(applySeriesValues(new TreemapSeries(), seriesOptions, {\n path: path\n }));\n break;\n default:\n throw new Error('AG Charts - unknown series type: ' + seriesOptions.type);\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n return series;\n}\nfunction createAxis(options) {\n var e_2, _a;\n var axes = [];\n var index = 0;\n try {\n for (var _b = __values$6(options || []), _c = _b.next(); !_c.done; _c = _b.next()) {\n var axisOptions = _c.value;\n var path = \"axes[\" + index++ + \"]\";\n var skip = ['axes[].type'];\n switch (axisOptions.type) {\n case 'number':\n axes.push(applyOptionValues(new NumberAxis(), axisOptions, {\n path: path,\n skip: skip\n }));\n break;\n case LogAxis.type:\n axes.push(applyOptionValues(new LogAxis(), axisOptions, {\n path: path,\n skip: skip\n }));\n break;\n case CategoryAxis.type:\n axes.push(applyOptionValues(new CategoryAxis(), axisOptions, {\n path: path,\n skip: skip\n }));\n break;\n case GroupedCategoryAxis.type:\n axes.push(applyOptionValues(new GroupedCategoryAxis(), axisOptions, {\n path: path,\n skip: skip\n }));\n break;\n case TimeAxis.type:\n axes.push(applyOptionValues(new TimeAxis(), axisOptions, {\n path: path,\n skip: skip\n }));\n break;\n default:\n throw new Error('AG Charts - unknown axis type: ' + axisOptions['type']);\n }\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n return axes;\n}\nfunction registerListeners(source, listeners) {\n source.clearEventListeners();\n for (var property in listeners) {\n source.addEventListener(property, listeners[property]);\n }\n}\nvar JSON_APPLY_OPTIONS = {\n constructors: {\n title: Caption,\n subtitle: Caption,\n shadow: DropShadow,\n innerCircle: DoughnutInnerCircle,\n 'axes[].crossLines[]': CrossLine,\n 'series[].innerLabels[]': DoughnutInnerLabel\n },\n allowedTypes: {\n 'series[].marker.shape': ['primitive', 'function'],\n 'axis[].tick.count': ['primitive', 'class-instance']\n }\n};\nfunction applyOptionValues(target, options, _a) {\n var _b = _a === void 0 ? {} : _a,\n skip = _b.skip,\n path = _b.path;\n var applyOpts = __assign$l(__assign$l(__assign$l({}, JSON_APPLY_OPTIONS), {\n skip: skip\n }), path ? {\n path: path\n } : {});\n return jsonApply(target, options, applyOpts);\n}\nfunction applySeriesValues(target, options, _a) {\n var path = (_a === void 0 ? {} : _a).path;\n var _b, _c;\n var skip = ['series[].listeners'];\n var ctrs = ((_b = JSON_APPLY_OPTIONS) === null || _b === void 0 ? void 0 : _b.constructors) || {};\n var seriesTypeOverrides = {\n constructors: __assign$l(__assign$l({}, ctrs), {\n title: target.type === 'pie' ? PieTitle : ctrs['title']\n })\n };\n var applyOpts = __assign$l(__assign$l(__assign$l(__assign$l({}, JSON_APPLY_OPTIONS), seriesTypeOverrides), {\n skip: __spread$6(['series[].type'], skip || [])\n }), path ? {\n path: path\n } : {});\n var result = jsonApply(target, options, applyOpts);\n var listeners = (_c = options) === null || _c === void 0 ? void 0 : _c.listeners;\n if (listeners != null) {\n registerListeners(target, listeners);\n }\n return result;\n}\nvar time = {\n millisecond: millisecond$1,\n second: second$1,\n minute: minute$1,\n hour: hour$1,\n day: day$1,\n sunday: sunday$1,\n monday: monday$1,\n tuesday: tuesday,\n wednesday: wednesday,\n thursday: thursday$1,\n friday: friday,\n saturday: saturday,\n month: month$1,\n year: year$1,\n utcMinute: utcMinute,\n utcHour: utcHour,\n utcDay: utcDay$1,\n utcMonth: utcMonth,\n utcYear: utcYear$1\n};\nfunction getSeriesType(chartType) {\n switch (chartType) {\n case 'bar':\n case 'groupedBar':\n case 'stackedBar':\n case 'normalizedBar':\n return 'bar';\n case 'column':\n case 'groupedColumn':\n case 'stackedColumn':\n case 'normalizedColumn':\n return 'column';\n case 'line':\n return 'line';\n case 'area':\n case 'stackedArea':\n case 'normalizedArea':\n return 'area';\n case 'scatter':\n case 'bubble':\n return 'scatter';\n case 'histogram':\n return 'histogram';\n case 'pie':\n case 'doughnut':\n return 'pie';\n default:\n return 'cartesian';\n }\n}\nvar __extends$1O = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$14 = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar ChartController = /** @class */function (_super) {\n __extends$1O(ChartController, _super);\n function ChartController(model) {\n var _this = _super.call(this) || this;\n _this.model = model;\n return _this;\n }\n ChartController.prototype.init = function () {\n var _this = this;\n this.setChartRange();\n this.addManagedListener(this.eventService, Events.EVENT_RANGE_SELECTION_CHANGED, function (event) {\n if (event.id && event.id === _this.model.chartId) {\n _this.updateForRangeChange();\n }\n });\n if (this.model.unlinked) {\n if (this.rangeService) {\n this.rangeService.setCellRanges([]);\n }\n }\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_MOVED, this.updateForGridChange.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PINNED, this.updateForGridChange.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VISIBLE, this.updateForGridChange.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.updateForGridChange.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, this.updateForGridChange.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_CELL_VALUE_CHANGED, this.updateForDataChange.bind(this));\n };\n ChartController.prototype.updateForGridChange = function () {\n if (this.model.unlinked) {\n return;\n }\n this.model.updateCellRanges();\n this.setChartRange();\n };\n ChartController.prototype.updateForDataChange = function () {\n if (this.model.unlinked) {\n return;\n }\n this.model.updateData();\n this.raiseChartModelUpdateEvent();\n };\n ChartController.prototype.updateForRangeChange = function () {\n this.updateForGridChange();\n this.raiseChartRangeSelectionChangedEvent();\n };\n ChartController.prototype.updateForPanelChange = function (updatedCol) {\n this.model.updateCellRanges(updatedCol);\n this.setChartRange();\n this.raiseChartRangeSelectionChangedEvent();\n };\n ChartController.prototype.getChartUpdateParams = function () {\n var selectedCols = this.getSelectedValueColState();\n var fields = selectedCols.map(function (c) {\n return {\n colId: c.colId,\n displayName: c.displayName\n };\n });\n var data = this.getChartData();\n var selectedDimension = this.getSelectedDimension();\n return {\n data: data,\n grouping: this.isGrouping(),\n category: {\n id: selectedDimension.colId,\n name: selectedDimension.displayName,\n chartDataType: this.model.getChartDataType(selectedDimension.colId)\n },\n fields: fields,\n chartId: this.getChartId(),\n getCrossFilteringContext: function () {\n return {\n lastSelectedChartId: 'xxx'\n };\n },\n seriesChartTypes: this.getSeriesChartTypes()\n };\n };\n ChartController.prototype.getChartModel = function () {\n var modelType = this.model.pivotChart ? 'pivot' : 'range';\n var seriesChartTypes = this.isComboChart() ? this.model.seriesChartTypes : undefined;\n return {\n modelType: modelType,\n chartId: this.model.chartId,\n chartType: this.model.chartType,\n chartThemeName: this.model.chartThemeName,\n chartOptions: this.chartProxy.getChartOptions(),\n chartPalette: this.chartProxy.getChartPalette(),\n cellRange: this.getCellRangeParams(),\n suppressChartRanges: this.model.suppressChartRanges,\n aggFunc: this.model.aggFunc,\n unlinkChart: this.model.unlinked,\n seriesChartTypes: seriesChartTypes\n };\n };\n ChartController.prototype.getChartId = function () {\n return this.model.chartId;\n };\n ChartController.prototype.getChartData = function () {\n return this.model.chartData;\n };\n ChartController.prototype.getChartType = function () {\n return this.model.chartType;\n };\n ChartController.prototype.setChartType = function (chartType) {\n this.model.chartType = chartType;\n this.model.updateSeriesChartTypes();\n this.raiseChartModelUpdateEvent();\n this.raiseChartOptionsChangedEvent();\n };\n ChartController.prototype.setChartThemeName = function (chartThemeName) {\n this.model.chartThemeName = chartThemeName;\n this.raiseChartModelUpdateEvent();\n this.raiseChartOptionsChangedEvent();\n };\n ChartController.prototype.getChartThemeName = function () {\n return this.model.chartThemeName;\n };\n ChartController.prototype.isPivotChart = function () {\n return this.model.pivotChart;\n };\n ChartController.prototype.isPivotMode = function () {\n return this.model.isPivotMode();\n };\n ChartController.prototype.isGrouping = function () {\n return this.model.isGrouping();\n };\n ChartController.prototype.getThemes = function () {\n return this.gridOptionsWrapper.getChartThemes();\n };\n ChartController.prototype.getPalettes = function () {\n var _this = this;\n var themeNames = this.gridOptionsWrapper.getChartThemes();\n return themeNames.map(function (themeName) {\n var stockTheme = _this.chartProxy.isStockTheme(themeName);\n var theme = stockTheme ? themeName : _this.chartProxy.lookupCustomChartTheme(themeName);\n return getChartTheme(theme).palette;\n });\n };\n ChartController.prototype.getValueColState = function () {\n return this.model.valueColState.map(this.displayNameMapper.bind(this));\n };\n ChartController.prototype.getSelectedValueColState = function () {\n return this.getValueColState().filter(function (cs) {\n return cs.selected;\n });\n };\n ChartController.prototype.getDimensionColState = function () {\n return this.model.dimensionColState;\n };\n ChartController.prototype.getSelectedDimension = function () {\n return this.model.getSelectedDimension();\n };\n ChartController.prototype.displayNameMapper = function (col) {\n var columnNames = this.model.columnNames[col.colId];\n col.displayName = columnNames ? columnNames.join(' - ') : this.model.getColDisplayName(col.column);\n return col;\n };\n ChartController.prototype.getColStateForMenu = function () {\n return {\n dimensionCols: this.model.dimensionColState,\n valueCols: this.getValueColState()\n };\n };\n ChartController.prototype.isDefaultCategorySelected = function () {\n return this.model.getSelectedDimension().colId === ChartDataModel.DEFAULT_CATEGORY;\n };\n ChartController.prototype.setChartRange = function (silent) {\n if (silent === void 0) {\n silent = false;\n }\n if (this.rangeService && !this.model.suppressChartRanges && !this.model.unlinked) {\n this.rangeService.setCellRanges(this.getCellRanges());\n }\n if (!silent) {\n this.raiseChartModelUpdateEvent();\n }\n };\n ChartController.prototype.detachChartRange = function () {\n // when chart is detached it won't listen to changes from the grid\n this.model.unlinked = !this.model.unlinked;\n if (this.model.unlinked) {\n // remove range from grid\n if (this.rangeService) {\n this.rangeService.setCellRanges([]);\n }\n } else {\n // update chart data may have changed\n this.updateForGridChange();\n }\n };\n ChartController.prototype.setChartProxy = function (chartProxy) {\n this.chartProxy = chartProxy;\n };\n ChartController.prototype.getChartProxy = function () {\n return this.chartProxy;\n };\n ChartController.prototype.isActiveXYChart = function () {\n return _.includes(['scatter', 'bubble'], this.getChartType());\n };\n ChartController.prototype.isChartLinked = function () {\n return !this.model.unlinked;\n };\n ChartController.prototype.customComboExists = function () {\n return this.model.savedCustomSeriesChartTypes && this.model.savedCustomSeriesChartTypes.length > 0;\n };\n ChartController.prototype.getSeriesChartTypes = function () {\n return this.model.seriesChartTypes;\n };\n ChartController.prototype.isComboChart = function () {\n return this.model.isComboChart();\n };\n ChartController.prototype.updateSeriesChartType = function (colId, chartType, secondaryAxis) {\n var seriesChartType = this.model.seriesChartTypes.find(function (s) {\n return s.colId === colId;\n });\n if (seriesChartType) {\n // once a combo chart has been modified it is now a 'customCombo' chart\n var updateChartType = this.model.chartType !== 'customCombo';\n if (updateChartType) {\n this.model.chartType = 'customCombo';\n }\n var prevSeriesChartType = seriesChartType.chartType;\n if (chartType != null) {\n seriesChartType.chartType = chartType;\n }\n if (secondaryAxis != null) {\n seriesChartType.secondaryAxis = secondaryAxis;\n }\n // replace existing custom series types with this latest version\n this.model.savedCustomSeriesChartTypes = this.model.seriesChartTypes;\n // series chart types can be modified, i.e. column chart types should be moved to primary axis\n this.model.updateSeriesChartTypes();\n this.updateForDataChange();\n if (updateChartType) {\n // update the settings panel by raising an EVENT_CHART_TYPE_CHANGED event\n this.dispatchEvent(Object.freeze({\n type: ChartController.EVENT_CHART_TYPE_CHANGED\n }));\n }\n if (prevSeriesChartType !== chartType) {\n // update the format panel by raising an EVENT_CHART_SERIES_CHART_TYPE_CHANGED event\n this.dispatchEvent(Object.freeze({\n type: ChartController.EVENT_CHART_SERIES_CHART_TYPE_CHANGED\n }));\n }\n }\n };\n ChartController.prototype.getActiveSeriesChartTypes = function () {\n var selectedColIds = this.getSelectedValueColState().map(function (c) {\n return c.colId;\n });\n return this.getSeriesChartTypes().filter(function (s) {\n return selectedColIds.includes(s.colId);\n });\n };\n ChartController.prototype.getChartSeriesTypes = function () {\n var supportedComboSeriesTypes = ['line', 'column', 'area'];\n return this.isComboChart() ? supportedComboSeriesTypes : [getSeriesType(this.getChartType())];\n };\n ChartController.prototype.getCellRanges = function () {\n return [this.model.dimensionCellRange, this.model.valueCellRange].filter(function (r) {\n return r;\n });\n };\n ChartController.prototype.getCellRangeParams = function () {\n var cellRanges = this.getCellRanges();\n var firstCellRange = cellRanges[0];\n var startRow = firstCellRange && firstCellRange.startRow || null;\n var endRow = firstCellRange && firstCellRange.endRow || null;\n return {\n rowStartIndex: startRow && startRow.rowIndex,\n rowStartPinned: startRow && startRow.rowPinned,\n rowEndIndex: endRow && endRow.rowIndex,\n rowEndPinned: endRow && endRow.rowPinned,\n columns: cellRanges.reduce(function (columns, value) {\n return columns.concat(value.columns.map(function (c) {\n return c.getId();\n }));\n }, [])\n };\n };\n ChartController.prototype.raiseChartModelUpdateEvent = function () {\n var event = Object.freeze({\n type: ChartController.EVENT_CHART_MODEL_UPDATE\n });\n this.dispatchEvent(event);\n };\n ChartController.prototype.raiseChartUpdatedEvent = function () {\n var event = Object.freeze({\n type: ChartController.EVENT_CHART_UPDATED\n });\n this.dispatchEvent(event);\n };\n ChartController.prototype.raiseChartOptionsChangedEvent = function () {\n var _a = this.getChartModel(),\n chartId = _a.chartId,\n chartType = _a.chartType;\n var event = Object.freeze({\n type: Events.EVENT_CHART_OPTIONS_CHANGED,\n chartId: chartId,\n chartType: chartType,\n chartThemeName: this.model.chartThemeName,\n chartOptions: this.chartProxy.getChartOptions()\n });\n this.eventService.dispatchEvent(event);\n };\n ChartController.prototype.raiseChartRangeSelectionChangedEvent = function () {\n var event = Object.freeze({\n type: Events.EVENT_CHART_RANGE_SELECTION_CHANGED,\n id: this.model.chartId,\n chartId: this.model.chartId,\n cellRange: this.getCellRangeParams()\n });\n this.eventService.dispatchEvent(event);\n };\n ChartController.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.rangeService) {\n this.rangeService.setCellRanges([]);\n }\n };\n ChartController.EVENT_CHART_UPDATED = 'chartUpdated';\n ChartController.EVENT_CHART_MODEL_UPDATE = 'chartModelUpdate';\n ChartController.EVENT_CHART_TYPE_CHANGED = 'chartTypeChanged';\n ChartController.EVENT_CHART_SERIES_CHART_TYPE_CHANGED = 'chartSeriesChartTypeChanged';\n __decorate$14([Autowired('rangeService')], ChartController.prototype, \"rangeService\", void 0);\n __decorate$14([PostConstruct], ChartController.prototype, \"init\", null);\n return ChartController;\n}(BeanStub);\nvar __extends$1N = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$13 = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __read$g = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread$5 = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$g(arguments[i]));\n return ar;\n};\nvar __values$5 = undefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar ChartDataPanel = /** @class */function (_super) {\n __extends$1N(ChartDataPanel, _super);\n function ChartDataPanel(chartController, chartOptionsService) {\n var _this = _super.call(this, ChartDataPanel.TEMPLATE) || this;\n _this.chartController = chartController;\n _this.chartOptionsService = chartOptionsService;\n _this.columnComps = new Map();\n return _this;\n }\n ChartDataPanel.prototype.init = function () {\n this.updatePanels();\n this.addManagedListener(this.chartController, ChartController.EVENT_CHART_MODEL_UPDATE, this.updatePanels.bind(this));\n this.createAutoScrollService();\n };\n ChartDataPanel.prototype.destroy = function () {\n this.clearComponents();\n _super.prototype.destroy.call(this);\n };\n ChartDataPanel.prototype.updatePanels = function () {\n var _this = this;\n var currentChartType = this.chartType;\n var _a = this.chartController.getColStateForMenu(),\n dimensionCols = _a.dimensionCols,\n valueCols = _a.valueCols;\n var colIds = dimensionCols.map(function (c) {\n return c.colId;\n }).concat(valueCols.map(function (c) {\n return c.colId;\n }));\n this.chartType = this.chartController.getChartType();\n var groupExpandedState = this.getGroupExpandedState();\n if (_.areEqual(_.keys(this.columnComps), colIds) && this.chartType === currentChartType) {\n // if possible, we just update existing components\n __spread$5(dimensionCols, valueCols).forEach(function (col) {\n _this.columnComps.get(col.colId).setValue(col.selected, true);\n });\n if (this.chartController.isActiveXYChart()) {\n var getSeriesLabel_1 = this.generateGetSeriesLabel();\n valueCols.forEach(function (col) {\n _this.columnComps.get(col.colId).setLabel(getSeriesLabel_1(col));\n });\n }\n // recreate series chart type group if it exists as series may be added or removed via series group panel\n _.removeFromParent(this.getGui().querySelector('#seriesChartTypeGroup'));\n this.seriesChartTypeGroupComp = this.destroyBean(this.seriesChartTypeGroupComp);\n this.createSeriesChartTypeGroup(valueCols);\n } else {\n // otherwise, we re-create everything\n this.clearComponents();\n this.createCategoriesGroup(dimensionCols);\n this.createSeriesGroup(valueCols);\n this.createSeriesChartTypeGroup(valueCols);\n }\n this.restoreGroupExpandedState(groupExpandedState);\n };\n ChartDataPanel.prototype.getGroupExpandedState = function () {\n return [this.categoriesGroupComp, this.seriesGroupComp, this.seriesChartTypeGroupComp].map(function (group) {\n return !group ? true : group.isExpanded();\n });\n };\n ChartDataPanel.prototype.restoreGroupExpandedState = function (groupExpandedState) {\n [this.categoriesGroupComp, this.seriesGroupComp, this.seriesChartTypeGroupComp].forEach(function (group, idx) {\n if (!group) {\n return;\n }\n group.toggleGroupExpand(groupExpandedState[idx]);\n });\n };\n ChartDataPanel.prototype.createAutoScrollService = function () {\n var eGui = this.getGui();\n this.autoScrollService = new AutoScrollService({\n scrollContainer: eGui,\n scrollAxis: 'y',\n getVerticalPosition: function () {\n return eGui.scrollTop;\n },\n setVerticalPosition: function (position) {\n return eGui.scrollTop = position;\n }\n });\n };\n ChartDataPanel.prototype.addComponent = function (parent, component, id) {\n var eDiv = document.createElement('div');\n eDiv.id = id;\n eDiv.className = 'ag-chart-data-section';\n eDiv.appendChild(component.getGui());\n parent.appendChild(eDiv);\n };\n ChartDataPanel.prototype.addChangeListener = function (component, columnState) {\n var _this = this;\n this.addManagedListener(component, AgAbstractField.EVENT_CHANGED, function () {\n columnState.selected = component.getValue();\n _this.chartController.updateForPanelChange(columnState);\n });\n };\n ChartDataPanel.prototype.createCategoriesGroup = function (columns) {\n var _this = this;\n this.categoriesGroupComp = this.createBean(new AgGroupComponent({\n title: this.getCategoryGroupTitle(),\n enabled: true,\n suppressEnabledCheckbox: true,\n suppressOpenCloseIcons: false,\n cssIdentifier: 'charts-data'\n }));\n var inputName = \"chartDimension\" + this.getCompId();\n columns.forEach(function (col) {\n var comp = _this.categoriesGroupComp.createManagedBean(new AgRadioButton());\n comp.setLabel(_.escapeString(col.displayName));\n comp.setValue(col.selected);\n comp.setInputName(inputName);\n _this.addChangeListener(comp, col);\n _this.categoriesGroupComp.addItem(comp);\n _this.columnComps.set(col.colId, comp);\n });\n this.addComponent(this.getGui(), this.categoriesGroupComp, 'categoriesGroup');\n };\n ChartDataPanel.prototype.createSeriesGroup = function (columns) {\n var _this = this;\n this.seriesGroupComp = this.createManagedBean(new AgGroupComponent({\n title: this.getSeriesGroupTitle(),\n enabled: true,\n suppressEnabledCheckbox: true,\n suppressOpenCloseIcons: false,\n cssIdentifier: 'charts-data'\n }));\n if (this.chartController.isActiveXYChart()) {\n var pairedModeToggle = this.seriesGroupComp.createManagedBean(new AgToggleButton());\n pairedModeToggle.setLabel(this.chartTranslationService.translate('paired')).setLabelAlignment('left').setLabelWidth('flex').setInputWidth(45).setValue(this.chartOptionsService.getPairedMode()).onValueChange(function (newValue) {\n _this.chartOptionsService.setPairedMode(!!newValue);\n _this.chartController.updateForGridChange();\n });\n this.seriesGroupComp.addItem(pairedModeToggle);\n }\n var getSeriesLabel = this.generateGetSeriesLabel();\n columns.forEach(function (col) {\n var comp = _this.seriesGroupComp.createManagedBean(new AgCheckbox());\n comp.addCssClass('ag-data-select-checkbox');\n var label = getSeriesLabel(col);\n comp.setLabel(label);\n comp.setValue(col.selected);\n _this.addChangeListener(comp, col);\n _this.seriesGroupComp.addItem(comp);\n _this.columnComps.set(col.colId, comp);\n _this.addDragHandle(comp, col);\n });\n this.addComponent(this.getGui(), this.seriesGroupComp, 'seriesGroup');\n var dropTarget = {\n getIconName: function () {\n return DragAndDropService.ICON_MOVE;\n },\n getContainer: function () {\n return _this.seriesGroupComp.getGui();\n },\n onDragging: function (params) {\n return _this.onDragging(params);\n },\n onDragLeave: function () {\n return _this.onDragLeave();\n },\n isInterestedIn: this.isInterestedIn.bind(this),\n targetContainsSource: true\n };\n this.dragAndDropService.addDropTarget(dropTarget);\n };\n ChartDataPanel.prototype.createSeriesChartTypeGroup = function (columns) {\n var _this = this;\n if (!this.chartController.isComboChart()) {\n return;\n }\n this.seriesChartTypeGroupComp = this.createManagedBean(new AgGroupComponent({\n title: this.chartTranslationService.translate('seriesChartType'),\n enabled: true,\n suppressEnabledCheckbox: true,\n suppressOpenCloseIcons: false,\n cssIdentifier: 'charts-data'\n }));\n var seriesChartTypes = this.chartController.getSeriesChartTypes();\n columns.forEach(function (col) {\n if (!col.selected) {\n return;\n }\n var seriesChartType = seriesChartTypes.filter(function (s) {\n return s.colId === col.colId;\n })[0];\n if (!seriesChartType) {\n return;\n }\n var seriesItemGroup = _this.seriesChartTypeGroupComp.createManagedBean(new AgGroupComponent({\n title: col.displayName,\n enabled: true,\n suppressEnabledCheckbox: true,\n suppressOpenCloseIcons: true,\n cssIdentifier: 'charts-format-sub-level'\n }));\n var secondaryAxisComp = _this.seriesChartTypeGroupComp.createManagedBean(new AgCheckbox()).setLabel(_this.chartTranslationService.translate('secondaryAxis')).setLabelWidth(\"flex\").setDisabled(['groupedColumn', 'stackedColumn', 'stackedArea'].includes(seriesChartType.chartType)).setValue(!!seriesChartType.secondaryAxis).onValueChange(function (enabled) {\n return _this.chartController.updateSeriesChartType(col.colId, undefined, enabled);\n });\n seriesItemGroup.addItem(secondaryAxisComp);\n var translate = function (key, defaultText) {\n return _this.chartTranslationService.translate(key, defaultText);\n };\n var availableChartTypes = [{\n value: 'line',\n text: translate('line', 'Line')\n }, {\n value: 'area',\n text: translate('area', 'Area')\n }, {\n value: 'stackedArea',\n text: translate('stackedArea', 'StackedArea')\n }, {\n value: 'groupedColumn',\n text: translate('groupedColumn', 'Grouped Column')\n }, {\n value: 'stackedColumn',\n text: translate('stackedColumn', 'Stacked Column')\n }];\n var chartTypeComp = seriesItemGroup.createManagedBean(new AgSelect());\n chartTypeComp.setLabelAlignment('left').setLabelWidth(\"flex\").addOptions(availableChartTypes).setValue(seriesChartType.chartType).onValueChange(function (chartType) {\n return _this.chartController.updateSeriesChartType(col.colId, chartType);\n });\n seriesItemGroup.addItem(chartTypeComp);\n _this.seriesChartTypeGroupComp.addItem(seriesItemGroup);\n });\n this.addComponent(this.getGui(), this.seriesChartTypeGroupComp, 'seriesChartTypeGroup');\n };\n ChartDataPanel.prototype.addDragHandle = function (comp, col) {\n var _this = this;\n var eDragHandle = _.createIconNoSpan('columnDrag', this.gridOptionsWrapper);\n eDragHandle.classList.add('ag-drag-handle', 'ag-chart-data-column-drag-handle');\n comp.getGui().insertAdjacentElement('beforeend', eDragHandle);\n var dragSource = {\n type: DragSourceType.ChartPanel,\n eElement: eDragHandle,\n dragItemName: col.displayName,\n getDragItem: function () {\n return {\n columns: [col.column]\n };\n },\n onDragStopped: function () {\n return _this.onDragStop();\n }\n };\n this.dragAndDropService.addDragSource(dragSource, true);\n this.addDestroyFunc(function () {\n return _this.dragAndDropService.removeDragSource(dragSource);\n });\n };\n ChartDataPanel.prototype.generateGetSeriesLabel = function () {\n if (!this.chartController.isActiveXYChart()) {\n return function (col) {\n return _.escapeString(col.displayName);\n };\n }\n var isBubble = this.chartType === 'bubble';\n var isInPairedMode = this.isInPairedMode();\n var selectedValuesCount = 0;\n var indexToAxisLabel = new Map();\n indexToAxisLabel.set(0, 'X');\n indexToAxisLabel.set(1, 'Y');\n indexToAxisLabel.set(2, 'size');\n return function (col) {\n var escapedLabel = _.escapeString(col.displayName);\n if (!col.selected) {\n return escapedLabel;\n }\n var axisLabel;\n if (isInPairedMode) {\n axisLabel = indexToAxisLabel.get(selectedValuesCount % (isBubble ? 3 : 2));\n } else {\n if (selectedValuesCount === 0) {\n axisLabel = 'X';\n } else {\n axisLabel = isBubble && selectedValuesCount % 2 === 0 ? 'size' : 'Y';\n }\n }\n selectedValuesCount++;\n return escapedLabel + \" (\" + axisLabel + \")\";\n };\n };\n ChartDataPanel.prototype.getCategoryGroupTitle = function () {\n return this.chartTranslationService.translate(this.chartController.isActiveXYChart() ? 'labels' : 'categories');\n };\n ChartDataPanel.prototype.getSeriesGroupTitle = function () {\n return this.chartTranslationService.translate(this.chartController.isActiveXYChart() ? 'xyValues' : 'series');\n };\n ChartDataPanel.prototype.isInPairedMode = function () {\n return this.chartController.isActiveXYChart() && this.chartOptionsService.getSeriesOption('paired', 'scatter');\n };\n ChartDataPanel.prototype.clearComponents = function () {\n _.clearElement(this.getGui());\n this.categoriesGroupComp = this.destroyBean(this.categoriesGroupComp);\n this.seriesGroupComp = this.destroyBean(this.seriesGroupComp);\n this.seriesChartTypeGroupComp = this.destroyBean(this.seriesChartTypeGroupComp);\n this.columnComps.clear();\n };\n ChartDataPanel.prototype.onDragging = function (draggingEvent) {\n var itemHovered = this.checkHoveredItem(draggingEvent);\n if (!itemHovered) {\n return;\n }\n this.lastDraggedColumn = draggingEvent.dragItem.columns[0];\n var comp = itemHovered.comp,\n position = itemHovered.position;\n var _a = this.lastHoveredItem || {},\n lastHoveredComp = _a.comp,\n lastHoveredPosition = _a.position;\n if (comp === lastHoveredComp && position === lastHoveredPosition) {\n return;\n }\n this.autoScrollService.check(draggingEvent.event);\n this.clearHoveredItems();\n this.lastHoveredItem = {\n comp: comp,\n position: position\n };\n var eGui = comp.getGui();\n eGui.classList.add('ag-list-item-hovered', \"ag-item-highlight-\" + position);\n };\n ChartDataPanel.prototype.checkHoveredItem = function (draggingEvent) {\n var e_1, _a;\n if (_.missing(draggingEvent.vDirection)) {\n return null;\n }\n var mouseEvent = draggingEvent.event;\n try {\n for (var _b = __values$5(this.columnComps.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\n var comp = _c.value;\n var eGui = comp.getGui();\n if (!eGui.querySelector('.ag-chart-data-column-drag-handle')) {\n continue;\n }\n var rect = eGui.getBoundingClientRect();\n var isOverComp = mouseEvent.clientY >= rect.top && mouseEvent.clientY <= rect.bottom;\n if (isOverComp) {\n var height = eGui.clientHeight;\n var position = mouseEvent.clientY > rect.top + height / 2 ? 'bottom' : 'top';\n return {\n comp: comp,\n position: position\n };\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n return null;\n };\n ChartDataPanel.prototype.onDragLeave = function () {\n this.clearHoveredItems();\n };\n ChartDataPanel.prototype.onDragStop = function () {\n var _this = this;\n if (this.lastHoveredItem) {\n var _a = this.chartController.getColStateForMenu(),\n dimensionCols = _a.dimensionCols,\n valueCols = _a.valueCols;\n var draggedColumnState = __spread$5(dimensionCols, valueCols).find(function (state) {\n return state.column === _this.lastDraggedColumn;\n });\n if (draggedColumnState) {\n var targetIndex = Array.from(this.columnComps.values()).indexOf(this.lastHoveredItem.comp);\n if (this.lastHoveredItem.position === 'bottom') {\n targetIndex++;\n }\n draggedColumnState.order = targetIndex;\n this.chartController.updateForPanelChange(draggedColumnState);\n }\n }\n this.clearHoveredItems();\n this.lastDraggedColumn = undefined;\n this.autoScrollService.ensureCleared();\n };\n ChartDataPanel.prototype.clearHoveredItems = function () {\n this.columnComps.forEach(function (columnComp) {\n columnComp.getGui().classList.remove('ag-list-item-hovered', 'ag-item-highlight-top', 'ag-item-highlight-bottom');\n });\n this.lastHoveredItem = undefined;\n };\n ChartDataPanel.prototype.isInterestedIn = function (type) {\n return type === DragSourceType.ChartPanel;\n };\n ChartDataPanel.TEMPLATE = \"
\";\n __decorate$13([Autowired('dragAndDropService')], ChartDataPanel.prototype, \"dragAndDropService\", void 0);\n __decorate$13([Autowired('chartTranslationService')], ChartDataPanel.prototype, \"chartTranslationService\", void 0);\n __decorate$13([PostConstruct], ChartDataPanel.prototype, \"init\", null);\n return ChartDataPanel;\n}(Component);\nvar __extends$1M = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$12 = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar FontPanel = /** @class */function (_super) {\n __extends$1M(FontPanel, _super);\n function FontPanel(params) {\n var _this = _super.call(this) || this;\n _this.activeComps = [];\n _this.params = params;\n return _this;\n }\n FontPanel.prototype.init = function () {\n var groupParams = {\n cssIdentifier: 'charts-format-sub-level',\n direction: 'vertical',\n suppressOpenCloseIcons: true\n };\n this.setTemplate(FontPanel.TEMPLATE, {\n fontGroup: groupParams\n });\n this.initGroup();\n this.initFontFamilySelect();\n this.initFontWeightStyleSelect();\n this.initFontSizeSelect();\n this.initFontColorPicker();\n };\n FontPanel.prototype.addCompToPanel = function (comp) {\n this.fontGroup.addItem(comp);\n this.activeComps.push(comp);\n };\n FontPanel.prototype.setEnabled = function (enabled) {\n this.fontGroup.setEnabled(enabled);\n };\n FontPanel.prototype.initGroup = function () {\n var _this = this;\n this.fontGroup.setTitle(this.params.name || this.chartTranslationService.translate('font')).setEnabled(this.params.enabled).hideEnabledCheckbox(!!this.params.suppressEnabledCheckbox).hideOpenCloseIcons(true).onEnableChange(function (enabled) {\n if (_this.params.setEnabled) {\n _this.params.setEnabled(enabled);\n }\n });\n };\n FontPanel.prototype.initFontFamilySelect = function () {\n var _this = this;\n var families = ['Arial, sans-serif', 'Aria Black, sans-serif', 'Book Antiqua, serif', 'Charcoal, sans-serif', 'Comic Sans MS, cursive', 'Courier, monospace', 'Courier New, monospace', 'Gadget, sans-serif', 'Geneva, sans-serif', 'Helvetica, sans-serif', 'Impact, sans-serif', 'Lucida Console, monospace', 'Lucida Grande, sans-serif', 'Lucida Sans Unicode, sans-serif', 'Monaco, monospace', 'Palatino Linotype, serif', 'Palatino, serif', 'Times New Roman, serif', 'Times, serif', 'Verdana, sans-serif'];\n var family = this.params.initialFont.family;\n var initialValue = families[0];\n if (family) {\n // check for known values using lowercase\n var lowerCaseValues = families.map(function (f) {\n return f.toLowerCase();\n });\n var valueIndex = lowerCaseValues.indexOf(family.toLowerCase());\n if (valueIndex >= 0) {\n initialValue = families[valueIndex];\n } else {\n // add user provided value to list\n var capitalisedFontValue = _.capitalise(family);\n families.push(capitalisedFontValue);\n initialValue = capitalisedFontValue;\n }\n }\n var options = families.sort().map(function (value) {\n return {\n value: value,\n text: value\n };\n });\n this.familySelect.addOptions(options).setInputWidth('flex').setValue(\"\" + initialValue).onValueChange(function (newValue) {\n return _this.params.setFont({\n family: newValue\n });\n });\n };\n FontPanel.prototype.initFontSizeSelect = function () {\n var _this = this;\n var sizes = [8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36];\n var size = this.params.initialFont.size;\n if (!_.includes(sizes, size)) {\n sizes.push(size);\n }\n var options = sizes.sort(function (a, b) {\n return a - b;\n }).map(function (value) {\n return {\n value: \"\" + value,\n text: \"\" + value\n };\n });\n this.sizeSelect.addOptions(options).setInputWidth('flex').setValue(\"\" + size).onValueChange(function (newValue) {\n return _this.params.setFont({\n size: parseInt(newValue, 10)\n });\n });\n this.sizeSelect.setLabel(this.chartTranslationService.translate('size'));\n };\n FontPanel.prototype.initFontWeightStyleSelect = function () {\n var _this = this;\n var _a = this.params.initialFont,\n _b = _a.weight,\n weight = _b === void 0 ? 'normal' : _b,\n _c = _a.style,\n style = _c === void 0 ? 'normal' : _c;\n var weightStyles = [{\n name: 'normal',\n weight: 'normal',\n style: 'normal'\n }, {\n name: 'bold',\n weight: 'bold',\n style: 'normal'\n }, {\n name: 'italic',\n weight: 'normal',\n style: 'italic'\n }, {\n name: 'boldItalic',\n weight: 'bold',\n style: 'italic'\n }];\n var selectedOption = weightStyles.find(function (x) {\n return x.weight === weight && x.style === style;\n });\n if (!selectedOption) {\n selectedOption = {\n name: 'predefined',\n weight: weight,\n style: style\n };\n weightStyles.unshift(selectedOption);\n }\n var options = weightStyles.map(function (ws) {\n return {\n value: ws.name,\n text: _this.chartTranslationService.translate(ws.name)\n };\n });\n this.weightStyleSelect.addOptions(options).setInputWidth('flex').setValue(selectedOption.name).onValueChange(function (newValue) {\n var selectedWeightStyle = weightStyles.find(function (x) {\n return x.name === newValue;\n });\n _this.params.setFont({\n weight: selectedWeightStyle.weight,\n style: selectedWeightStyle.style\n });\n });\n };\n FontPanel.prototype.initFontColorPicker = function () {\n var _this = this;\n this.colorPicker.setLabel(this.chartTranslationService.translate('color')).setInputWidth(45).setValue(\"\" + this.params.initialFont.color).onValueChange(function (newColor) {\n return _this.params.setFont({\n color: newColor\n });\n });\n };\n FontPanel.prototype.destroyActiveComps = function () {\n var _this = this;\n this.activeComps.forEach(function (comp) {\n _.removeFromParent(comp.getGui());\n _this.destroyBean(comp);\n });\n };\n FontPanel.prototype.destroy = function () {\n this.destroyActiveComps();\n _super.prototype.destroy.call(this);\n };\n FontPanel.TEMPLATE = \"
\\n \\n \\n \\n
\\n \\n \\n
\\n
\\n
\";\n __decorate$12([RefSelector('fontGroup')], FontPanel.prototype, \"fontGroup\", void 0);\n __decorate$12([RefSelector('familySelect')], FontPanel.prototype, \"familySelect\", void 0);\n __decorate$12([RefSelector('weightStyleSelect')], FontPanel.prototype, \"weightStyleSelect\", void 0);\n __decorate$12([RefSelector('sizeSelect')], FontPanel.prototype, \"sizeSelect\", void 0);\n __decorate$12([RefSelector('colorPicker')], FontPanel.prototype, \"colorPicker\", void 0);\n __decorate$12([Autowired('chartTranslationService')], FontPanel.prototype, \"chartTranslationService\", void 0);\n __decorate$12([PostConstruct], FontPanel.prototype, \"init\", null);\n return FontPanel;\n}(Component);\nvar __extends$1L = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$11 = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar LegendPanel = /** @class */function (_super) {\n __extends$1L(LegendPanel, _super);\n function LegendPanel(_a) {\n var chartOptionsService = _a.chartOptionsService,\n _b = _a.isExpandedOnInit,\n isExpandedOnInit = _b === void 0 ? false : _b;\n var _this = _super.call(this) || this;\n _this.activePanels = [];\n _this.chartOptionsService = chartOptionsService;\n _this.isExpandedOnInit = isExpandedOnInit;\n return _this;\n }\n LegendPanel.prototype.init = function () {\n var groupParams = {\n cssIdentifier: 'charts-format-top-level',\n direction: 'vertical'\n };\n this.setTemplate(LegendPanel.TEMPLATE, {\n legendGroup: groupParams\n });\n this.initLegendGroup();\n this.initLegendPosition();\n this.initLegendPadding();\n this.initLegendItems();\n this.initLabelPanel();\n };\n LegendPanel.prototype.initLegendGroup = function () {\n var _this = this;\n this.legendGroup.setTitle(this.chartTranslationService.translate(\"legend\")).hideEnabledCheckbox(false).setEnabled(this.chartOptionsService.getChartOption(\"legend.enabled\") || false).toggleGroupExpand(this.isExpandedOnInit).onEnableChange(function (enabled) {\n _this.chartOptionsService.setChartOption(\"legend.enabled\", enabled);\n _this.legendGroup.toggleGroupExpand(true);\n });\n };\n LegendPanel.prototype.initLegendPosition = function () {\n var _this = this;\n var positions = [LegendPosition.Top, LegendPosition.Right, LegendPosition.Bottom, LegendPosition.Left];\n this.legendPositionSelect.setLabel(this.chartTranslationService.translate(\"position\")).setLabelWidth(\"flex\").setInputWidth(80).addOptions(positions.map(function (position) {\n return {\n value: position,\n text: _this.chartTranslationService.translate(position)\n };\n })).setValue(this.chartOptionsService.getChartOption(\"legend.position\")).onValueChange(function (newValue) {\n return _this.chartOptionsService.setChartOption(\"legend.position\", newValue);\n });\n };\n LegendPanel.prototype.initLegendPadding = function () {\n var _this = this;\n var currentValue = this.chartOptionsService.getChartOption(\"legend.spacing\");\n this.legendPaddingSlider.setLabel(this.chartTranslationService.translate(\"spacing\")).setMaxValue(getMaxValue(currentValue, 200)).setValue(\"\" + currentValue).setTextFieldWidth(45).onValueChange(function (newValue) {\n return _this.chartOptionsService.setChartOption(\"legend.spacing\", newValue);\n });\n };\n LegendPanel.prototype.initLegendItems = function () {\n var _this = this;\n var initSlider = function (expression, labelKey, input, defaultMaxValue) {\n var currentValue = _this.chartOptionsService.getChartOption(\"legend.\" + expression);\n input.setLabel(_this.chartTranslationService.translate(labelKey)).setMaxValue(getMaxValue(currentValue, defaultMaxValue)).setValue(\"\" + currentValue).setTextFieldWidth(45).onValueChange(function (newValue) {\n _this.chartOptionsService.setChartOption(\"legend.\" + expression, newValue);\n });\n };\n initSlider(\"item.marker.size\", \"markerSize\", this.markerSizeSlider, 40);\n initSlider(\"item.marker.strokeWidth\", \"markerStroke\", this.markerStrokeSlider, 10);\n initSlider(\"item.marker.padding\", \"itemSpacing\", this.markerPaddingSlider, 20);\n initSlider(\"item.paddingX\", \"layoutHorizontalSpacing\", this.itemPaddingXSlider, 50);\n initSlider(\"item.paddingY\", \"layoutVerticalSpacing\", this.itemPaddingYSlider, 50);\n };\n LegendPanel.prototype.initLabelPanel = function () {\n var _this = this;\n var chartProxy = this.chartOptionsService;\n var initialFont = {\n family: chartProxy.getChartOption(\"legend.item.label.fontFamily\"),\n style: chartProxy.getChartOption(\"legend.item.label.fontStyle\"),\n weight: chartProxy.getChartOption(\"legend.item.label.fontWeight\"),\n size: chartProxy.getChartOption(\"legend.item.label.fontSize\"),\n color: chartProxy.getChartOption(\"legend.item.label.color\")\n };\n var setFont = function (font) {\n var proxy = _this.chartOptionsService;\n if (font.family) {\n proxy.setChartOption(\"legend.item.label.fontFamily\", font.family);\n }\n if (font.weight) {\n proxy.setChartOption(\"legend.item.label.fontWeight\", font.weight);\n }\n if (font.style) {\n proxy.setChartOption(\"legend.item.label.fontStyle\", font.style);\n }\n if (font.size) {\n proxy.setChartOption(\"legend.item.label.fontSize\", font.size);\n }\n if (font.color) {\n proxy.setChartOption(\"legend.item.label.color\", font.color);\n }\n };\n var params = {\n enabled: true,\n suppressEnabledCheckbox: true,\n initialFont: initialFont,\n setFont: setFont\n };\n var fontPanelComp = this.createBean(new FontPanel(params));\n this.legendGroup.addItem(fontPanelComp);\n this.activePanels.push(fontPanelComp);\n };\n LegendPanel.prototype.destroyActivePanels = function () {\n var _this = this;\n this.activePanels.forEach(function (panel) {\n _.removeFromParent(panel.getGui());\n _this.destroyBean(panel);\n });\n };\n LegendPanel.prototype.destroy = function () {\n this.destroyActivePanels();\n _super.prototype.destroy.call(this);\n };\n LegendPanel.TEMPLATE = \"
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\";\n __decorate$11([RefSelector('legendGroup')], LegendPanel.prototype, \"legendGroup\", void 0);\n __decorate$11([RefSelector('legendPositionSelect')], LegendPanel.prototype, \"legendPositionSelect\", void 0);\n __decorate$11([RefSelector('legendPaddingSlider')], LegendPanel.prototype, \"legendPaddingSlider\", void 0);\n __decorate$11([RefSelector('markerSizeSlider')], LegendPanel.prototype, \"markerSizeSlider\", void 0);\n __decorate$11([RefSelector('markerStrokeSlider')], LegendPanel.prototype, \"markerStrokeSlider\", void 0);\n __decorate$11([RefSelector('markerPaddingSlider')], LegendPanel.prototype, \"markerPaddingSlider\", void 0);\n __decorate$11([RefSelector('itemPaddingXSlider')], LegendPanel.prototype, \"itemPaddingXSlider\", void 0);\n __decorate$11([RefSelector('itemPaddingYSlider')], LegendPanel.prototype, \"itemPaddingYSlider\", void 0);\n __decorate$11([Autowired('chartTranslationService')], LegendPanel.prototype, \"chartTranslationService\", void 0);\n __decorate$11([PostConstruct], LegendPanel.prototype, \"init\", null);\n return LegendPanel;\n}(Component);\nvar __extends$1K = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$10 = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar AxisTicksPanel = /** @class */function (_super) {\n __extends$1K(AxisTicksPanel, _super);\n function AxisTicksPanel(chartOptionsService) {\n var _this = _super.call(this) || this;\n _this.chartOptionsService = chartOptionsService;\n return _this;\n }\n AxisTicksPanel.prototype.init = function () {\n var groupParams = {\n cssIdentifier: 'charts-format-sub-level',\n direction: 'vertical',\n suppressOpenCloseIcons: true\n };\n this.setTemplate(AxisTicksPanel.TEMPLATE, {\n axisTicksGroup: groupParams\n });\n this.initAxisTicks();\n };\n AxisTicksPanel.prototype.initAxisTicks = function () {\n var _this = this;\n this.axisTicksGroup.setTitle(this.chartTranslationService.translate(\"ticks\")).hideOpenCloseIcons(true).hideEnabledCheckbox(true);\n this.axisTicksColorPicker.setLabel(this.chartTranslationService.translate(\"color\")).setLabelWidth(\"flex\").setInputWidth(45).setValue(this.chartOptionsService.getAxisProperty(\"tick.color\")).onValueChange(function (newColor) {\n return _this.chartOptionsService.setAxisProperty(\"tick.color\", newColor);\n });\n var initInput = function (expression, input, label, defaultMaxValue) {\n var currentValue = _this.chartOptionsService.getAxisProperty(expression);\n input.setLabel(label).setMaxValue(getMaxValue(currentValue, defaultMaxValue)).setValue(\"\" + currentValue).setTextFieldWidth(45).onValueChange(function (newValue) {\n return _this.chartOptionsService.setAxisProperty(expression, newValue);\n });\n };\n initInput(\"tick.width\", this.axisTicksWidthSlider, this.chartTranslationService.translate(\"width\"), 10);\n initInput(\"tick.size\", this.axisTicksSizeSlider, this.chartTranslationService.translate(\"length\"), 30);\n };\n AxisTicksPanel.TEMPLATE = \"
\\n \\n \\n \\n \\n \\n
\";\n __decorate$10([RefSelector('axisTicksGroup')], AxisTicksPanel.prototype, \"axisTicksGroup\", void 0);\n __decorate$10([RefSelector('axisTicksColorPicker')], AxisTicksPanel.prototype, \"axisTicksColorPicker\", void 0);\n __decorate$10([RefSelector('axisTicksWidthSlider')], AxisTicksPanel.prototype, \"axisTicksWidthSlider\", void 0);\n __decorate$10([RefSelector('axisTicksSizeSlider')], AxisTicksPanel.prototype, \"axisTicksSizeSlider\", void 0);\n __decorate$10([Autowired('chartTranslationService')], AxisTicksPanel.prototype, \"chartTranslationService\", void 0);\n __decorate$10([PostConstruct], AxisTicksPanel.prototype, \"init\", null);\n return AxisTicksPanel;\n}(Component);\nvar __extends$1J = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$$ = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar AxisPanel = /** @class */function (_super) {\n __extends$1J(AxisPanel, _super);\n function AxisPanel(_a) {\n var chartController = _a.chartController,\n chartOptionsService = _a.chartOptionsService,\n _b = _a.isExpandedOnInit,\n isExpandedOnInit = _b === void 0 ? false : _b;\n var _this = _super.call(this) || this;\n _this.activePanels = [];\n _this.axisLabelUpdateFuncs = [];\n _this.prevXRotation = 0;\n _this.prevYRotation = 0;\n _this.chartController = chartController;\n _this.chartOptionsService = chartOptionsService;\n _this.isExpandedOnInit = isExpandedOnInit;\n return _this;\n }\n AxisPanel.prototype.init = function () {\n var _this = this;\n var groupParams = {\n cssIdentifier: 'charts-format-top-level',\n direction: 'vertical'\n };\n this.setTemplate(AxisPanel.TEMPLATE, {\n axisGroup: groupParams\n });\n this.initAxis();\n this.initAxisTicks();\n this.initAxisLabels();\n var updateAxisLabelRotations = function () {\n return _this.axisLabelUpdateFuncs.forEach(function (func) {\n return func();\n });\n };\n this.addManagedListener(this.chartController, ChartController.EVENT_CHART_UPDATED, updateAxisLabelRotations);\n };\n AxisPanel.prototype.initAxis = function () {\n var _this = this;\n this.axisGroup.setTitle(this.translate(\"axis\")).toggleGroupExpand(this.isExpandedOnInit).hideEnabledCheckbox(true);\n this.axisColorInput.setLabel(this.translate(\"color\")).setLabelWidth(\"flex\").setInputWidth(45).setValue(this.chartOptionsService.getAxisProperty(\"line.color\")).onValueChange(function (newColor) {\n return _this.chartOptionsService.setAxisProperty(\"line.color\", newColor);\n });\n var currentValue = this.chartOptionsService.getAxisProperty(\"line.width\");\n this.axisLineWidthSlider.setMaxValue(getMaxValue(currentValue, 10)).setLabel(this.translate(\"thickness\")).setTextFieldWidth(45).setValue(\"\" + currentValue).onValueChange(function (newValue) {\n return _this.chartOptionsService.setAxisProperty(\"line.width\", newValue);\n });\n };\n AxisPanel.prototype.initAxisTicks = function () {\n var axisTicksComp = this.createBean(new AxisTicksPanel(this.chartOptionsService));\n this.axisGroup.addItem(axisTicksComp);\n this.activePanels.push(axisTicksComp);\n };\n AxisPanel.prototype.initAxisLabels = function () {\n var _this = this;\n var initialFont = {\n family: this.chartOptionsService.getAxisProperty(\"label.fontFamily\"),\n style: this.chartOptionsService.getAxisProperty(\"label.fontStyle\"),\n weight: this.chartOptionsService.getAxisProperty(\"label.fontWeight\"),\n size: this.chartOptionsService.getAxisProperty(\"label.fontSize\"),\n color: this.chartOptionsService.getAxisProperty(\"label.color\")\n };\n var setFont = function (font) {\n if (font.family) {\n _this.chartOptionsService.setAxisProperty(\"label.fontFamily\", font.family);\n }\n if (font.weight) {\n _this.chartOptionsService.setAxisProperty(\"label.fontWeight\", font.weight);\n }\n if (font.style) {\n _this.chartOptionsService.setAxisProperty(\"label.fontStyle\", font.style);\n }\n if (font.size) {\n _this.chartOptionsService.setAxisProperty(\"label.fontSize\", font.size);\n }\n if (font.color) {\n _this.chartOptionsService.setAxisProperty(\"label.color\", font.color);\n }\n };\n var params = {\n name: this.translate(\"labels\"),\n enabled: true,\n suppressEnabledCheckbox: true,\n initialFont: initialFont,\n setFont: setFont\n };\n var labelPanelComp = this.createBean(new FontPanel(params));\n this.axisGroup.addItem(labelPanelComp);\n this.activePanels.push(labelPanelComp);\n this.addAdditionalLabelComps(labelPanelComp);\n };\n AxisPanel.prototype.addAdditionalLabelComps = function (labelPanelComp) {\n this.addLabelPadding(labelPanelComp);\n var _a = this.createRotationWidgets(),\n xRotationComp = _a.xRotationComp,\n yRotationComp = _a.yRotationComp;\n var autoRotateCb = this.initLabelRotations(xRotationComp, yRotationComp);\n labelPanelComp.addCompToPanel(autoRotateCb);\n labelPanelComp.addCompToPanel(xRotationComp);\n labelPanelComp.addCompToPanel(yRotationComp);\n };\n AxisPanel.prototype.initLabelRotations = function (xRotationComp, yRotationComp) {\n var _this = this;\n var getLabelRotation = function (axisType) {\n return _this.chartOptionsService.getLabelRotation(axisType);\n };\n var setLabelRotation = function (axisType, value) {\n _this.chartOptionsService.setLabelRotation(axisType, value);\n };\n var updateAutoRotate = function (autoRotate) {\n _this.chartOptionsService.setAxisProperty(\"label.autoRotate\", autoRotate);\n if (autoRotate) {\n // store prev rotations before we remove them from the options\n _this.prevXRotation = getLabelRotation(\"xAxis\");\n _this.prevYRotation = getLabelRotation(\"yAxis\");\n // `autoRotate` is only\n setLabelRotation(\"xAxis\", undefined);\n setLabelRotation(\"yAxis\", undefined);\n } else {\n // reinstate prev rotations\n setLabelRotation(\"xAxis\", _this.prevXRotation);\n setLabelRotation(\"yAxis\", _this.prevYRotation);\n }\n xRotationComp.setDisabled(autoRotate);\n yRotationComp.setDisabled(autoRotate);\n };\n var getAutoRotateValue = function () {\n var xRotation = getLabelRotation(\"xAxis\");\n var yRotation = getLabelRotation(\"yAxis\");\n if (xRotation == undefined && yRotation == undefined) {\n return _this.chartOptionsService.getAxisProperty(\"label.autoRotate\");\n }\n return false;\n };\n var autoRotate = getAutoRotateValue();\n var autoRotateCheckbox = this.createBean(new AgCheckbox()).setLabel(this.translate('autoRotate')).setValue(autoRotate).onValueChange(updateAutoRotate);\n // init rotation comp state\n xRotationComp.setDisabled(autoRotate);\n yRotationComp.setDisabled(autoRotate);\n return autoRotateCheckbox;\n };\n AxisPanel.prototype.createRotationWidgets = function () {\n var _this = this;\n var degreesSymbol = String.fromCharCode(176);\n var createRotationComp = function (labelKey, axisType) {\n var label = _this.chartTranslationService.translate(labelKey) + \" \" + degreesSymbol;\n var value = _this.chartOptionsService.getLabelRotation(axisType);\n var angleSelect = new AgAngleSelect().setLabel(label).setLabelWidth(\"flex\").setValue(value || 0).onValueChange(function (newValue) {\n return _this.chartOptionsService.setLabelRotation(axisType, newValue);\n });\n // the axis label rotation needs to be updated when the default category changes in the data panel\n _this.axisLabelUpdateFuncs.push(function () {\n var value = _this.chartOptionsService.getLabelRotation(axisType);\n angleSelect.setValue(value || 0);\n });\n return _this.createBean(angleSelect);\n };\n return {\n xRotationComp: createRotationComp(\"xRotation\", \"xAxis\"),\n yRotationComp: createRotationComp(\"yRotation\", \"yAxis\")\n };\n };\n AxisPanel.prototype.addLabelPadding = function (labelPanelComp) {\n var _this = this;\n var labelPaddingSlider = this.createBean(new AgSlider());\n var currentValue = this.chartOptionsService.getAxisProperty(\"label.padding\");\n labelPaddingSlider.setLabel(this.chartTranslationService.translate(\"padding\")).setMaxValue(getMaxValue(currentValue, 30)).setValue(\"\" + currentValue).setTextFieldWidth(45).onValueChange(function (newValue) {\n return _this.chartOptionsService.setAxisProperty(\"label.padding\", newValue);\n });\n labelPanelComp.addCompToPanel(labelPaddingSlider);\n };\n AxisPanel.prototype.translate = function (key, defaultText) {\n return this.chartTranslationService.translate(key, defaultText);\n };\n AxisPanel.prototype.destroyActivePanels = function () {\n var _this = this;\n this.activePanels.forEach(function (panel) {\n _.removeFromParent(panel.getGui());\n _this.destroyBean(panel);\n });\n };\n AxisPanel.prototype.destroy = function () {\n this.destroyActivePanels();\n _super.prototype.destroy.call(this);\n };\n AxisPanel.TEMPLATE = \"
\\n \\n \\n \\n \\n
\";\n __decorate$$([RefSelector('axisGroup')], AxisPanel.prototype, \"axisGroup\", void 0);\n __decorate$$([RefSelector('axisColorInput')], AxisPanel.prototype, \"axisColorInput\", void 0);\n __decorate$$([RefSelector('axisLineWidthSlider')], AxisPanel.prototype, \"axisLineWidthSlider\", void 0);\n __decorate$$([Autowired('chartTranslationService')], AxisPanel.prototype, \"chartTranslationService\", void 0);\n __decorate$$([PostConstruct], AxisPanel.prototype, \"init\", null);\n return AxisPanel;\n}(Component);\nvar __extends$1I = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$_ = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar NavigatorPanel = /** @class */function (_super) {\n __extends$1I(NavigatorPanel, _super);\n function NavigatorPanel(_a) {\n var chartOptionsService = _a.chartOptionsService,\n _b = _a.isExpandedOnInit,\n isExpandedOnInit = _b === void 0 ? false : _b;\n var _this = _super.call(this) || this;\n _this.chartOptionsService = chartOptionsService;\n _this.isExpandedOnInit = isExpandedOnInit;\n return _this;\n }\n NavigatorPanel.prototype.init = function () {\n var groupParams = {\n cssIdentifier: 'charts-format-top-level',\n direction: 'vertical'\n };\n this.setTemplate(NavigatorPanel.TEMPLATE, {\n navigatorGroup: groupParams\n });\n this.initNavigator();\n };\n NavigatorPanel.prototype.initNavigator = function () {\n var _this = this;\n var chartTranslationService = this.chartTranslationService;\n this.navigatorGroup.setTitle(chartTranslationService.translate(\"navigator\")).hideEnabledCheckbox(false).setEnabled(this.chartOptionsService.getChartOption(\"navigator.enabled\") || false).onEnableChange(function (enabled) {\n _this.chartOptionsService.setChartOption(\"navigator.enabled\", enabled);\n _this.navigatorGroup.toggleGroupExpand(true);\n }).toggleGroupExpand(this.isExpandedOnInit);\n var currentValue = this.chartOptionsService.getChartOption(\"navigator.height\");\n this.navigatorHeightSlider.setLabel(chartTranslationService.translate(\"height\")).setMinValue(10).setMaxValue(getMaxValue(currentValue, 60)).setTextFieldWidth(45).setValue(\"\" + (currentValue || 30)).onValueChange(function (height) {\n return _this.chartOptionsService.setChartOption(\"navigator.height\", height);\n });\n };\n NavigatorPanel.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n NavigatorPanel.TEMPLATE = \"
\\n \\n \\n \\n
\";\n __decorate$_([RefSelector('navigatorGroup')], NavigatorPanel.prototype, \"navigatorGroup\", void 0);\n __decorate$_([RefSelector('navigatorHeightSlider')], NavigatorPanel.prototype, \"navigatorHeightSlider\", void 0);\n __decorate$_([Autowired('chartTranslationService')], NavigatorPanel.prototype, \"chartTranslationService\", void 0);\n __decorate$_([PostConstruct], NavigatorPanel.prototype, \"init\", null);\n return NavigatorPanel;\n}(Component);\nvar __extends$1H = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$Z = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar PaddingPanel = /** @class */function (_super) {\n __extends$1H(PaddingPanel, _super);\n function PaddingPanel(chartOptionsService) {\n var _this = _super.call(this) || this;\n _this.chartOptionsService = chartOptionsService;\n return _this;\n }\n PaddingPanel.prototype.init = function () {\n var groupParams = {\n cssIdentifier: 'charts-format-sub-level',\n direction: 'vertical',\n suppressOpenCloseIcons: true\n };\n this.setTemplate(PaddingPanel.TEMPLATE, {\n chartPaddingGroup: groupParams\n });\n this.initGroup();\n this.initChartPaddingItems();\n };\n PaddingPanel.prototype.initGroup = function () {\n this.chartPaddingGroup.setTitle(this.chartTranslationService.translate(\"padding\")).hideOpenCloseIcons(true).hideEnabledCheckbox(true);\n };\n PaddingPanel.prototype.initChartPaddingItems = function () {\n var _this = this;\n var initInput = function (property, input) {\n var currentValue = _this.chartOptionsService.getChartOption('padding.' + property);\n input.setLabel(_this.chartTranslationService.translate(property)).setMaxValue(getMaxValue(currentValue, 200)).setValue(\"\" + currentValue).setTextFieldWidth(45).onValueChange(function (newValue) {\n return _this.chartOptionsService.setChartOption('padding.' + property, newValue);\n });\n };\n initInput('top', this.paddingTopSlider);\n initInput('right', this.paddingRightSlider);\n initInput('bottom', this.paddingBottomSlider);\n initInput('left', this.paddingLeftSlider);\n };\n PaddingPanel.TEMPLATE = \"
\\n \\n \\n \\n \\n \\n \\n
\";\n __decorate$Z([RefSelector('chartPaddingGroup')], PaddingPanel.prototype, \"chartPaddingGroup\", void 0);\n __decorate$Z([RefSelector('paddingTopSlider')], PaddingPanel.prototype, \"paddingTopSlider\", void 0);\n __decorate$Z([RefSelector('paddingRightSlider')], PaddingPanel.prototype, \"paddingRightSlider\", void 0);\n __decorate$Z([RefSelector('paddingBottomSlider')], PaddingPanel.prototype, \"paddingBottomSlider\", void 0);\n __decorate$Z([RefSelector('paddingLeftSlider')], PaddingPanel.prototype, \"paddingLeftSlider\", void 0);\n __decorate$Z([Autowired('chartTranslationService')], PaddingPanel.prototype, \"chartTranslationService\", void 0);\n __decorate$Z([PostConstruct], PaddingPanel.prototype, \"init\", null);\n return PaddingPanel;\n}(Component);\nvar __extends$1G = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$Y = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar BackgroundPanel = /** @class */function (_super) {\n __extends$1G(BackgroundPanel, _super);\n function BackgroundPanel(chartOptionsService) {\n var _this = _super.call(this) || this;\n _this.chartOptionsService = chartOptionsService;\n return _this;\n }\n BackgroundPanel.prototype.init = function () {\n var groupParams = {\n cssIdentifier: 'charts-format-sub-level',\n direction: 'vertical',\n suppressOpenCloseIcons: true\n };\n this.setTemplate(BackgroundPanel.TEMPLATE, {\n chartBackgroundGroup: groupParams\n });\n this.initGroup();\n this.initColorPicker();\n };\n BackgroundPanel.prototype.initGroup = function () {\n var _this = this;\n this.group.setTitle(this.chartTranslationService.translate('background')).setEnabled(this.chartOptionsService.getChartOption('background.visible')).hideOpenCloseIcons(true).hideEnabledCheckbox(false).onEnableChange(function (enabled) {\n return _this.chartOptionsService.setChartOption('background.visible', enabled);\n });\n };\n BackgroundPanel.prototype.initColorPicker = function () {\n var _this = this;\n this.colorPicker.setLabel(this.chartTranslationService.translate('color')).setLabelWidth('flex').setInputWidth(45).setValue(this.chartOptionsService.getChartOption('background.fill')).onValueChange(function (newColor) {\n return _this.chartOptionsService.setChartOption('background.fill', newColor);\n });\n };\n BackgroundPanel.TEMPLATE = \"
\\n \\n \\n \\n
\";\n __decorate$Y([RefSelector('chartBackgroundGroup')], BackgroundPanel.prototype, \"group\", void 0);\n __decorate$Y([RefSelector('colorPicker')], BackgroundPanel.prototype, \"colorPicker\", void 0);\n __decorate$Y([Autowired('chartTranslationService')], BackgroundPanel.prototype, \"chartTranslationService\", void 0);\n __decorate$Y([PostConstruct], BackgroundPanel.prototype, \"init\", null);\n return BackgroundPanel;\n}(Component);\nvar __extends$1F = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$X = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar TitlePanel = /** @class */function (_super) {\n __extends$1F(TitlePanel, _super);\n function TitlePanel(chartOptionsService) {\n var _this = _super.call(this, TitlePanel.TEMPLATE) || this;\n _this.chartOptionsService = chartOptionsService;\n _this.activePanels = [];\n return _this;\n }\n TitlePanel.prototype.init = function () {\n this.initFontPanel();\n this.titlePlaceholder = this.chartTranslationService.translate('titlePlaceholder');\n };\n TitlePanel.prototype.hasTitle = function () {\n var title = this.getOption('title');\n return title && title.enabled && title.text && title.text.length > 0;\n };\n TitlePanel.prototype.initFontPanel = function () {\n var _this = this;\n var hasTitle = this.hasTitle;\n var setFont = function (font) {\n if (font.family) {\n _this.setOption('title.fontFamily', font.family);\n }\n if (font.weight) {\n _this.setOption('title.fontWeight', font.weight);\n }\n if (font.style) {\n _this.setOption('title.fontStyle', font.style);\n }\n if (font.size) {\n _this.setOption('title.fontSize', font.size);\n }\n if (font.color) {\n _this.setOption('title.color', font.color);\n }\n };\n var initialFont = {\n family: this.getOption('title.fontFamily'),\n style: this.getOption('title.fontStyle'),\n weight: this.getOption('title.fontWeight'),\n size: this.getOption('title.fontSize'),\n color: this.getOption('title.color')\n };\n if (!hasTitle) {\n setFont(initialFont);\n }\n var fontPanelParams = {\n name: this.chartTranslationService.translate('title'),\n enabled: this.hasTitle(),\n suppressEnabledCheckbox: false,\n initialFont: initialFont,\n setFont: setFont,\n setEnabled: function (enabled) {\n _this.setOption('title.enabled', enabled);\n var currentTitleText = _this.getOption('title.text');\n if (enabled && currentTitleText === 'Title') {\n _this.setOption('title.text', _this.titlePlaceholder);\n }\n }\n };\n var fontPanelComp = this.createBean(new FontPanel(fontPanelParams));\n this.getGui().appendChild(fontPanelComp.getGui());\n this.activePanels.push(fontPanelComp);\n // edits to the title can disable it, so keep the checkbox in sync:\n this.addManagedListener(this.eventService, 'chartTitleEdit', function () {\n fontPanelComp.setEnabled(_this.hasTitle());\n });\n };\n TitlePanel.prototype.getOption = function (expression) {\n return this.chartOptionsService.getChartOption(expression);\n };\n TitlePanel.prototype.setOption = function (property, value) {\n this.chartOptionsService.setChartOption(property, value);\n };\n TitlePanel.prototype.destroyActivePanels = function () {\n var _this = this;\n this.activePanels.forEach(function (panel) {\n _.removeFromParent(panel.getGui());\n _this.destroyBean(panel);\n });\n };\n TitlePanel.prototype.destroy = function () {\n this.destroyActivePanels();\n _super.prototype.destroy.call(this);\n };\n TitlePanel.TEMPLATE = \"
\";\n __decorate$X([Autowired('chartTranslationService')], TitlePanel.prototype, \"chartTranslationService\", void 0);\n __decorate$X([PostConstruct], TitlePanel.prototype, \"init\", null);\n return TitlePanel;\n}(Component);\nvar __extends$1E = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$W = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar ChartPanel = /** @class */function (_super) {\n __extends$1E(ChartPanel, _super);\n function ChartPanel(_a) {\n var chartOptionsService = _a.chartOptionsService,\n _b = _a.isExpandedOnInit,\n isExpandedOnInit = _b === void 0 ? false : _b;\n var _this = _super.call(this) || this;\n _this.activePanels = [];\n _this.chartOptionsService = chartOptionsService;\n _this.isExpandedOnInit = isExpandedOnInit;\n return _this;\n }\n ChartPanel.prototype.init = function () {\n var groupParams = {\n cssIdentifier: 'charts-format-top-level',\n direction: 'vertical'\n };\n this.setTemplate(ChartPanel.TEMPLATE, {\n chartGroup: groupParams\n });\n this.initGroup();\n this.initTitles();\n this.initPaddingPanel();\n this.initBackgroundPanel();\n };\n ChartPanel.prototype.initGroup = function () {\n this.chartGroup.setTitle(this.chartTranslationService.translate('chart')).toggleGroupExpand(this.isExpandedOnInit).hideEnabledCheckbox(true);\n };\n ChartPanel.prototype.initTitles = function () {\n var titlePanelComp = this.createBean(new TitlePanel(this.chartOptionsService));\n this.chartGroup.addItem(titlePanelComp);\n this.activePanels.push(titlePanelComp);\n };\n ChartPanel.prototype.initPaddingPanel = function () {\n var paddingPanelComp = this.createBean(new PaddingPanel(this.chartOptionsService));\n this.chartGroup.addItem(paddingPanelComp);\n this.activePanels.push(paddingPanelComp);\n };\n ChartPanel.prototype.initBackgroundPanel = function () {\n var backgroundPanelComp = this.createBean(new BackgroundPanel(this.chartOptionsService));\n this.chartGroup.addItem(backgroundPanelComp);\n this.activePanels.push(backgroundPanelComp);\n };\n ChartPanel.prototype.destroyActivePanels = function () {\n var _this = this;\n this.activePanels.forEach(function (panel) {\n _.removeFromParent(panel.getGui());\n _this.destroyBean(panel);\n });\n };\n ChartPanel.prototype.destroy = function () {\n this.destroyActivePanels();\n _super.prototype.destroy.call(this);\n };\n ChartPanel.TEMPLATE = \"
\\n \\n
\";\n __decorate$W([RefSelector('chartGroup')], ChartPanel.prototype, \"chartGroup\", void 0);\n __decorate$W([Autowired('chartTranslationService')], ChartPanel.prototype, \"chartTranslationService\", void 0);\n __decorate$W([PostConstruct], ChartPanel.prototype, \"init\", null);\n return ChartPanel;\n}(Component);\nvar __extends$1D = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$V = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar ShadowPanel = /** @class */function (_super) {\n __extends$1D(ShadowPanel, _super);\n function ShadowPanel(chartOptionsService, getSelectedSeries) {\n var _this = _super.call(this) || this;\n _this.chartOptionsService = chartOptionsService;\n _this.getSelectedSeries = getSelectedSeries;\n return _this;\n }\n ShadowPanel.prototype.init = function () {\n var groupParams = {\n cssIdentifier: 'charts-format-sub-level',\n direction: 'vertical',\n suppressOpenCloseIcons: true\n };\n this.setTemplate(ShadowPanel.TEMPLATE, {\n shadowGroup: groupParams\n });\n this.shadowBlurSlider.setTextFieldWidth(45);\n this.shadowXOffsetSlider.setTextFieldWidth(45);\n this.shadowYOffsetSlider.setTextFieldWidth(45);\n this.initSeriesShadow();\n };\n ShadowPanel.prototype.initSeriesShadow = function () {\n var _this = this;\n this.shadowGroup.setTitle(this.chartTranslationService.translate(\"shadow\")).setEnabled(this.chartOptionsService.getSeriesOption(\"shadow.enabled\", this.getSelectedSeries())).hideOpenCloseIcons(true).hideEnabledCheckbox(false).onEnableChange(function (newValue) {\n return _this.chartOptionsService.setSeriesOption(\"shadow.enabled\", newValue, _this.getSelectedSeries());\n });\n this.shadowColorPicker.setLabel(this.chartTranslationService.translate(\"color\")).setLabelWidth(\"flex\").setInputWidth(45).setValue(this.chartOptionsService.getSeriesOption(\"shadow.color\", this.getSelectedSeries())).onValueChange(function (newValue) {\n return _this.chartOptionsService.setSeriesOption(\"shadow.color\", newValue, _this.getSelectedSeries());\n });\n var initInput = function (input, property, minValue, defaultMaxValue) {\n var currentValue = _this.chartOptionsService.getSeriesOption(\"shadow.\" + property, _this.getSelectedSeries());\n input.setLabel(_this.chartTranslationService.translate(property)).setMinValue(minValue).setMaxValue(getMaxValue(currentValue, defaultMaxValue)).setValue(\"\" + currentValue).onValueChange(function (newValue) {\n return _this.chartOptionsService.setSeriesOption(\"shadow.\" + property, newValue, _this.getSelectedSeries());\n });\n };\n initInput(this.shadowBlurSlider, \"blur\", 0, 20);\n initInput(this.shadowXOffsetSlider, \"xOffset\", -10, 10);\n initInput(this.shadowYOffsetSlider, \"yOffset\", -10, 10);\n };\n ShadowPanel.TEMPLATE = \"
\\n \\n \\n \\n \\n \\n \\n
\";\n __decorate$V([RefSelector('shadowGroup')], ShadowPanel.prototype, \"shadowGroup\", void 0);\n __decorate$V([RefSelector('shadowColorPicker')], ShadowPanel.prototype, \"shadowColorPicker\", void 0);\n __decorate$V([RefSelector('shadowBlurSlider')], ShadowPanel.prototype, \"shadowBlurSlider\", void 0);\n __decorate$V([RefSelector('shadowXOffsetSlider')], ShadowPanel.prototype, \"shadowXOffsetSlider\", void 0);\n __decorate$V([RefSelector('shadowYOffsetSlider')], ShadowPanel.prototype, \"shadowYOffsetSlider\", void 0);\n __decorate$V([Autowired('chartTranslationService')], ShadowPanel.prototype, \"chartTranslationService\", void 0);\n __decorate$V([PostConstruct], ShadowPanel.prototype, \"init\", null);\n return ShadowPanel;\n}(Component);\nfunction initFontPanelParams(chartTranslationService, chartOptionsService, getSelectedSeries) {\n var getFontOptionExpression = function (fontOption) {\n var labelProperty = getSelectedSeries() === 'pie' ? 'calloutLabel' : 'label';\n return labelProperty + \".\" + fontOption;\n };\n var getFontOption = function (fontOption) {\n var expression = getFontOptionExpression(fontOption);\n return chartOptionsService.getSeriesOption(expression, getSelectedSeries());\n };\n var setFontOption = function (fontOption, value) {\n var expression = getFontOptionExpression(fontOption);\n chartOptionsService.setSeriesOption(expression, value, getSelectedSeries());\n };\n var initialFont = {\n family: getFontOption('fontFamily'),\n style: getFontOption('fontStyle'),\n weight: getFontOption('fontWeight'),\n size: getFontOption('fontSize'),\n color: getFontOption('color')\n };\n var setFont = function (font) {\n if (font.family) {\n setFontOption('fontFamily', font.family);\n }\n if (font.weight) {\n setFontOption('fontWeight', font.weight);\n }\n if (font.style) {\n setFontOption('fontStyle', font.style);\n }\n if (font.size) {\n setFontOption('fontSize', font.size);\n }\n if (font.color) {\n setFontOption('color', font.color);\n }\n };\n var params = {\n name: chartTranslationService.translate('labels'),\n enabled: getFontOption('enabled') || false,\n setEnabled: function (enabled) {\n return setFontOption('enabled', enabled);\n },\n suppressEnabledCheckbox: false,\n initialFont: initialFont,\n setFont: setFont\n };\n return params;\n}\nvar __extends$1C = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$U = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar MarkersPanel = /** @class */function (_super) {\n __extends$1C(MarkersPanel, _super);\n function MarkersPanel(chartOptionsService, getSelectedSeries) {\n var _this = _super.call(this) || this;\n _this.chartOptionsService = chartOptionsService;\n _this.getSelectedSeries = getSelectedSeries;\n return _this;\n }\n MarkersPanel.prototype.init = function () {\n var groupParams = {\n cssIdentifier: 'charts-format-sub-level',\n direction: 'vertical'\n };\n this.setTemplate(MarkersPanel.TEMPLATE, {\n seriesMarkersGroup: groupParams\n });\n this.initMarkers();\n };\n MarkersPanel.prototype.initMarkers = function () {\n var _this = this;\n var seriesMarkerShapeOptions = [{\n value: 'square',\n text: 'Square'\n }, {\n value: 'circle',\n text: 'Circle'\n }, {\n value: 'cross',\n text: 'Cross'\n }, {\n value: 'diamond',\n text: 'Diamond'\n }, {\n value: 'plus',\n text: 'Plus'\n }, {\n value: 'triangle',\n text: 'Triangle'\n }, {\n value: 'heart',\n text: 'Heart'\n }];\n this.seriesMarkerShapeSelect.addOptions(seriesMarkerShapeOptions).setLabel(this.chartTranslationService.translate('shape')).setValue(this.getSeriesOption(\"marker.shape\")).onValueChange(function (value) {\n return _this.setSeriesOption(\"marker.shape\", value);\n });\n // scatter charts should always show markers\n var chartType = this.chartOptionsService.getChartType();\n var shouldHideEnabledCheckbox = _.includes(['scatter', 'bubble'], chartType);\n this.seriesMarkersGroup.setTitle(this.chartTranslationService.translate(\"markers\")).hideEnabledCheckbox(shouldHideEnabledCheckbox).setEnabled(this.getSeriesOption(\"marker.enabled\") || false).hideOpenCloseIcons(true).onEnableChange(function (newValue) {\n return _this.setSeriesOption(\"marker.enabled\", newValue);\n });\n var initInput = function (expression, input, labelKey, defaultMaxValue) {\n var currentValue = _this.getSeriesOption(expression);\n input.setLabel(_this.chartTranslationService.translate(labelKey)).setMaxValue(getMaxValue(currentValue, defaultMaxValue)).setValue(\"\" + currentValue).setTextFieldWidth(45).onValueChange(function (newValue) {\n return _this.setSeriesOption(expression, newValue);\n });\n };\n if (chartType === 'bubble') {\n initInput(\"marker.maxSize\", this.seriesMarkerMinSizeSlider, \"maxSize\", 60);\n initInput(\"marker.size\", this.seriesMarkerSizeSlider, \"minSize\", 60);\n } else {\n this.seriesMarkerMinSizeSlider.setDisplayed(false);\n initInput(\"marker.size\", this.seriesMarkerSizeSlider, \"size\", 60);\n }\n initInput(\"marker.strokeWidth\", this.seriesMarkerStrokeWidthSlider, \"strokeWidth\", 10);\n };\n MarkersPanel.prototype.getSeriesOption = function (expression) {\n return this.chartOptionsService.getSeriesOption(expression, this.getSelectedSeries());\n };\n MarkersPanel.prototype.setSeriesOption = function (expression, newValue) {\n this.chartOptionsService.setSeriesOption(expression, newValue, this.getSelectedSeries());\n };\n MarkersPanel.TEMPLATE = \"
\\n \\n \\n \\n \\n \\n \\n
\";\n __decorate$U([RefSelector('seriesMarkersGroup')], MarkersPanel.prototype, \"seriesMarkersGroup\", void 0);\n __decorate$U([RefSelector('seriesMarkerShapeSelect')], MarkersPanel.prototype, \"seriesMarkerShapeSelect\", void 0);\n __decorate$U([RefSelector('seriesMarkerSizeSlider')], MarkersPanel.prototype, \"seriesMarkerSizeSlider\", void 0);\n __decorate$U([RefSelector('seriesMarkerMinSizeSlider')], MarkersPanel.prototype, \"seriesMarkerMinSizeSlider\", void 0);\n __decorate$U([RefSelector('seriesMarkerStrokeWidthSlider')], MarkersPanel.prototype, \"seriesMarkerStrokeWidthSlider\", void 0);\n __decorate$U([Autowired('chartTranslationService')], MarkersPanel.prototype, \"chartTranslationService\", void 0);\n __decorate$U([PostConstruct], MarkersPanel.prototype, \"init\", null);\n return MarkersPanel;\n}(Component);\nvar __extends$1B = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$T = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar CalloutPanel = /** @class */function (_super) {\n __extends$1B(CalloutPanel, _super);\n function CalloutPanel(chartOptionsService, getSelectedSeries) {\n var _this = _super.call(this) || this;\n _this.chartOptionsService = chartOptionsService;\n _this.getSelectedSeries = getSelectedSeries;\n return _this;\n }\n CalloutPanel.prototype.init = function () {\n var groupParams = {\n cssIdentifier: 'charts-format-sub-level',\n direction: 'vertical'\n };\n this.setTemplate(CalloutPanel.TEMPLATE, {\n calloutGroup: groupParams\n });\n this.initCalloutOptions();\n };\n CalloutPanel.prototype.initCalloutOptions = function () {\n var _this = this;\n this.calloutGroup.setTitle(this.chartTranslationService.translate(\"callout\")).setEnabled(true).hideOpenCloseIcons(true).hideEnabledCheckbox(true);\n var initInput = function (expression, input, labelKey, defaultMaxValue) {\n var currentValue = _this.chartOptionsService.getSeriesOption(expression, _this.getSelectedSeries());\n input.setLabel(_this.chartTranslationService.translate(labelKey)).setMaxValue(getMaxValue(currentValue, defaultMaxValue)).setValue(\"\" + currentValue).setTextFieldWidth(45).onValueChange(function (newValue) {\n return _this.chartOptionsService.setSeriesOption(expression, newValue, _this.getSelectedSeries());\n });\n };\n initInput('calloutLine.length', this.calloutLengthSlider, 'length', 40);\n initInput('calloutLine.strokeWidth', this.calloutStrokeWidthSlider, 'strokeWidth', 10);\n initInput('calloutLabel.offset', this.labelOffsetSlider, 'offset', 30);\n };\n CalloutPanel.TEMPLATE = \"
\\n \\n \\n \\n \\n \\n
\";\n __decorate$T([RefSelector('calloutGroup')], CalloutPanel.prototype, \"calloutGroup\", void 0);\n __decorate$T([RefSelector('calloutLengthSlider')], CalloutPanel.prototype, \"calloutLengthSlider\", void 0);\n __decorate$T([RefSelector('calloutStrokeWidthSlider')], CalloutPanel.prototype, \"calloutStrokeWidthSlider\", void 0);\n __decorate$T([RefSelector('labelOffsetSlider')], CalloutPanel.prototype, \"labelOffsetSlider\", void 0);\n __decorate$T([Autowired('chartTranslationService')], CalloutPanel.prototype, \"chartTranslationService\", void 0);\n __decorate$T([PostConstruct], CalloutPanel.prototype, \"init\", null);\n return CalloutPanel;\n}(Component);\nvar __extends$1A = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$S = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar SeriesPanel = /** @class */function (_super) {\n __extends$1A(SeriesPanel, _super);\n function SeriesPanel(_a) {\n var chartController = _a.chartController,\n chartOptionsService = _a.chartOptionsService,\n seriesType = _a.seriesType,\n _b = _a.isExpandedOnInit,\n isExpandedOnInit = _b === void 0 ? false : _b;\n var _this = _super.call(this) || this;\n _this.activePanels = [];\n _this.widgetFuncs = {\n 'lineWidth': function () {\n return _this.initLineWidth();\n },\n 'strokeWidth': function () {\n return _this.initStrokeWidth();\n },\n 'lineDash': function () {\n return _this.initLineDash();\n },\n 'lineOpacity': function () {\n return _this.initLineOpacity();\n },\n 'fillOpacity': function () {\n return _this.initFillOpacity();\n },\n 'markers': function () {\n return _this.initMarkers();\n },\n 'labels': function () {\n return _this.initLabels();\n },\n 'shadow': function () {\n return _this.initShadow();\n },\n 'tooltips': function () {\n return _this.initTooltips();\n },\n 'bins': function () {\n return _this.initBins();\n }\n };\n _this.seriesWidgetMappings = {\n 'area': ['tooltips', 'lineWidth', 'lineDash', 'lineOpacity', 'fillOpacity', 'markers', 'labels', 'shadow'],\n 'bar': ['tooltips', 'strokeWidth', 'lineDash', 'lineOpacity', 'fillOpacity', 'labels', 'shadow'],\n 'column': ['tooltips', 'strokeWidth', 'lineDash', 'lineOpacity', 'fillOpacity', 'labels', 'shadow'],\n 'line': ['tooltips', 'lineWidth', 'lineDash', 'lineOpacity', 'markers', 'labels'],\n 'histogram': ['tooltips', 'bins', 'strokeWidth', 'lineDash', 'lineOpacity', 'fillOpacity', 'labels', 'shadow'],\n 'scatter': ['tooltips', 'markers', 'labels'],\n 'pie': ['tooltips', 'strokeWidth', 'lineOpacity', 'fillOpacity', 'labels', 'shadow']\n };\n _this.chartController = chartController;\n _this.chartOptionsService = chartOptionsService;\n _this.seriesType = seriesType || _this.getChartSeriesType();\n _this.isExpandedOnInit = isExpandedOnInit;\n return _this;\n }\n SeriesPanel.prototype.init = function () {\n var groupParams = {\n cssIdentifier: 'charts-format-top-level',\n direction: 'vertical'\n };\n this.setTemplate(SeriesPanel.TEMPLATE, {\n seriesGroup: groupParams\n });\n this.seriesGroup.setTitle(this.translate(\"series\")).toggleGroupExpand(this.isExpandedOnInit).hideEnabledCheckbox(true);\n this.addManagedListener(this.chartController, ChartController.EVENT_CHART_SERIES_CHART_TYPE_CHANGED, this.refreshWidgets.bind(this));\n this.refreshWidgets();\n };\n SeriesPanel.prototype.refreshWidgets = function () {\n var _this = this;\n this.destroyActivePanels();\n var chart = this.chartController.getChartProxy().getChart();\n chart.waitForUpdate().then(function () {\n if (_this.chartController.isComboChart()) {\n _this.updateSeriesType();\n _this.initSeriesSelect();\n }\n _this.seriesWidgetMappings[_this.seriesType].forEach(function (w) {\n return _this.widgetFuncs[w]();\n });\n });\n };\n SeriesPanel.prototype.initSeriesSelect = function () {\n var _this = this;\n var seriesSelect = this.seriesGroup.createManagedBean(new AgSelect());\n seriesSelect.setLabel(this.translate('seriesType')).setLabelAlignment(\"left\").setLabelWidth('flex').setInputWidth(100).addOptions(this.getSeriesSelectOptions()).setValue(\"\" + this.seriesType).onValueChange(function (newValue) {\n _this.seriesType = newValue;\n _this.refreshWidgets();\n });\n this.seriesGroup.addItem(seriesSelect);\n this.activePanels.push(seriesSelect);\n };\n SeriesPanel.prototype.initTooltips = function () {\n var _this = this;\n var seriesTooltipsToggle = this.createBean(new AgToggleButton());\n seriesTooltipsToggle.setLabel(this.translate(\"tooltips\")).setLabelAlignment(\"left\").setLabelWidth(\"flex\").setInputWidth(45).setValue(this.getSeriesOption(\"tooltip.enabled\") || false).onValueChange(function (newValue) {\n return _this.setSeriesOption(\"tooltip.enabled\", newValue);\n });\n this.addWidget(seriesTooltipsToggle);\n };\n SeriesPanel.prototype.initStrokeWidth = function () {\n var _this = this;\n var currentValue = this.getSeriesOption(\"strokeWidth\");\n var seriesStrokeWidthSlider = this.createBean(new AgSlider());\n seriesStrokeWidthSlider.setLabel(this.translate(\"strokeWidth\")).setMaxValue(getMaxValue(currentValue, 10)).setTextFieldWidth(45).setValue(\"\" + currentValue).onValueChange(function (newValue) {\n return _this.setSeriesOption(\"strokeWidth\", newValue);\n });\n this.addWidget(seriesStrokeWidthSlider);\n };\n SeriesPanel.prototype.initLineWidth = function () {\n var _this = this;\n var currentValue = this.getSeriesOption(\"strokeWidth\");\n var seriesLineWidthSlider = this.createBean(new AgSlider());\n seriesLineWidthSlider.setLabel(this.translate('lineWidth')).setMaxValue(getMaxValue(currentValue, 10)).setTextFieldWidth(45).setValue(\"\" + currentValue).onValueChange(function (newValue) {\n return _this.setSeriesOption(\"strokeWidth\", newValue);\n });\n this.addWidget(seriesLineWidthSlider);\n };\n SeriesPanel.prototype.initLineDash = function () {\n var _this = this;\n var lineDash = this.getSeriesOption(\"lineDash\");\n var currentValue = lineDash ? lineDash[0] : 0;\n var seriesLineDashSlider = this.createBean(new AgSlider());\n seriesLineDashSlider.setLabel(this.translate('lineDash')).setMaxValue(getMaxValue(currentValue, 30)).setTextFieldWidth(45).setValue(\"\" + currentValue).onValueChange(function (newValue) {\n return _this.setSeriesOption(\"lineDash\", [newValue]);\n });\n this.addWidget(seriesLineDashSlider);\n };\n SeriesPanel.prototype.initLineOpacity = function () {\n var _this = this;\n var currentValue = this.getSeriesOption(\"strokeOpacity\");\n var seriesLineOpacitySlider = this.createBean(new AgSlider());\n seriesLineOpacitySlider.setLabel(this.translate(\"strokeOpacity\")).setStep(0.05).setMaxValue(getMaxValue(currentValue, 1)).setTextFieldWidth(45).setValue(\"\" + currentValue).onValueChange(function (newValue) {\n return _this.setSeriesOption(\"strokeOpacity\", newValue);\n });\n this.addWidget(seriesLineOpacitySlider);\n };\n SeriesPanel.prototype.initFillOpacity = function () {\n var _this = this;\n var currentValue = this.getSeriesOption(\"fillOpacity\");\n var seriesFillOpacitySlider = this.createBean(new AgSlider());\n seriesFillOpacitySlider.setLabel(this.translate(\"fillOpacity\")).setStep(0.05).setMaxValue(getMaxValue(currentValue, 1)).setTextFieldWidth(45).setValue(\"\" + currentValue).onValueChange(function (newValue) {\n return _this.setSeriesOption(\"fillOpacity\", newValue);\n });\n this.addWidget(seriesFillOpacitySlider);\n };\n SeriesPanel.prototype.initLabels = function () {\n var _this = this;\n var params = initFontPanelParams(this.chartTranslationService, this.chartOptionsService, function () {\n return _this.seriesType;\n });\n var labelPanelComp = this.createBean(new FontPanel(params));\n if (this.seriesType === 'pie') {\n var calloutPanelComp = this.createBean(new CalloutPanel(this.chartOptionsService, function () {\n return _this.seriesType;\n }));\n labelPanelComp.addCompToPanel(calloutPanelComp);\n this.activePanels.push(calloutPanelComp);\n }\n this.addWidget(labelPanelComp);\n };\n SeriesPanel.prototype.initShadow = function () {\n var _this = this;\n var shadowPanelComp = this.createBean(new ShadowPanel(this.chartOptionsService, function () {\n return _this.seriesType;\n }));\n this.addWidget(shadowPanelComp);\n };\n SeriesPanel.prototype.initMarkers = function () {\n var _this = this;\n var markersPanelComp = this.createBean(new MarkersPanel(this.chartOptionsService, function () {\n return _this.seriesType;\n }));\n this.addWidget(markersPanelComp);\n };\n SeriesPanel.prototype.initBins = function () {\n var _this = this;\n var currentValue = this.getSeriesOption(\"bins\").length;\n var seriesBinCountSlider = this.createBean(new AgSlider());\n seriesBinCountSlider.setLabel(this.translate(\"histogramBinCount\")).setMinValue(0).setMaxValue(getMaxValue(currentValue, 20)).setTextFieldWidth(45).setValue(\"\" + currentValue).onValueChange(function (newValue) {\n return _this.setSeriesOption(\"binCount\", newValue);\n });\n this.addWidget(seriesBinCountSlider);\n };\n SeriesPanel.prototype.addWidget = function (widget) {\n this.seriesGroup.addItem(widget);\n this.activePanels.push(widget);\n };\n SeriesPanel.prototype.getSeriesOption = function (expression) {\n return this.chartOptionsService.getSeriesOption(expression, this.seriesType);\n };\n SeriesPanel.prototype.setSeriesOption = function (expression, newValue) {\n this.chartOptionsService.setSeriesOption(expression, newValue, this.seriesType);\n };\n SeriesPanel.prototype.getChartSeriesType = function () {\n if (this.chartController.getSeriesChartTypes().length === 0) {\n return 'column';\n }\n var ct = this.chartController.getSeriesChartTypes()[0].chartType;\n return ct === 'columnLineCombo' ? 'column' : ct === 'areaColumnCombo' ? 'area' : getSeriesType(ct);\n };\n SeriesPanel.prototype.getSeriesSelectOptions = function () {\n var _this = this;\n if (!this.seriesSelectOptions) {\n // lazy init options as they are only required for combo charts\n this.seriesSelectOptions = new Map([['area', {\n value: 'area',\n text: this.translate('area', 'Area')\n }], ['bar', {\n value: 'bar',\n text: this.translate('bar', 'Bar')\n }], ['column', {\n value: 'column',\n text: this.translate('column', 'Column')\n }], ['line', {\n value: 'line',\n text: this.translate('line', 'Line')\n }], ['scatter', {\n value: 'scatter',\n text: this.translate('scatter', 'Scatter')\n }], ['histogram', {\n value: 'histogram',\n text: this.translate('histogram', 'Histogram')\n }], ['pie', {\n value: 'pie',\n text: this.translate('pie', 'Pie')\n }]]);\n }\n var seriesSelectOptions = new Set();\n this.chartController.getActiveSeriesChartTypes().forEach(function (s) {\n var chartType = getSeriesType(s.chartType);\n seriesSelectOptions.add(_this.seriesSelectOptions.get(chartType));\n });\n return Array.from(seriesSelectOptions);\n };\n SeriesPanel.prototype.updateSeriesType = function () {\n var activeChartTypes = this.chartController.getActiveSeriesChartTypes().map(function (s) {\n return getSeriesType(s.chartType);\n });\n var invalidSeriesType = !activeChartTypes.includes(this.seriesType);\n if (invalidSeriesType && activeChartTypes.length > 0) {\n this.seriesType = activeChartTypes[0]; // default to first active series type\n }\n };\n SeriesPanel.prototype.translate = function (key, defaultText) {\n return this.chartTranslationService.translate(key, defaultText);\n };\n SeriesPanel.prototype.destroyActivePanels = function () {\n var _this = this;\n this.activePanels.forEach(function (panel) {\n _.removeFromParent(panel.getGui());\n _this.destroyBean(panel);\n });\n };\n SeriesPanel.prototype.destroy = function () {\n this.destroyActivePanels();\n _super.prototype.destroy.call(this);\n };\n SeriesPanel.TEMPLATE = \"
\\n \\n \\n
\";\n __decorate$S([RefSelector('seriesGroup')], SeriesPanel.prototype, \"seriesGroup\", void 0);\n __decorate$S([Autowired('chartTranslationService')], SeriesPanel.prototype, \"chartTranslationService\", void 0);\n __decorate$S([PostConstruct], SeriesPanel.prototype, \"init\", null);\n return SeriesPanel;\n}(Component);\nvar __extends$1z = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$R = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nfunction getMaxValue(currentValue, defaultMaxValue) {\n return Math.max(currentValue, defaultMaxValue);\n}\nvar DefaultFormatPanelDef = {\n groups: [{\n type: 'chart'\n }, {\n type: 'legend'\n }, {\n type: 'series'\n }, {\n type: 'axis'\n }, {\n type: 'navigator'\n }]\n};\nvar FormatPanel = /** @class */function (_super) {\n __extends$1z(FormatPanel, _super);\n function FormatPanel(chartController, chartOptionsService) {\n var _this = _super.call(this, FormatPanel.TEMPLATE) || this;\n _this.chartController = chartController;\n _this.chartOptionsService = chartOptionsService;\n _this.panels = [];\n _this.isGroupPanelShownInSeries = function (group, seriesType) {\n var commonGroupPanels = ['chart', 'legend', 'series'];\n if (commonGroupPanels.includes(group)) {\n return true;\n }\n var cartesianOnlyGroupPanels = ['axis', 'navigator'];\n var cartesianSeries = ['bar', 'column', 'line', 'area', 'scatter', 'histogram', 'cartesian'];\n return !!(cartesianOnlyGroupPanels.includes(group) && cartesianSeries.includes(seriesType));\n };\n return _this;\n }\n FormatPanel.prototype.init = function () {\n this.createPanels();\n this.addManagedListener(this.chartController, ChartController.EVENT_CHART_UPDATED, this.createPanels.bind(this));\n };\n FormatPanel.prototype.createPanels = function () {\n var _this = this;\n var _a;\n var chartType = this.chartController.getChartType();\n var isGrouping = this.chartController.isGrouping();\n var seriesType = getSeriesType(chartType);\n if (chartType === this.chartType && isGrouping === this.isGrouping) {\n // existing panels can be re-used\n return;\n }\n this.destroyPanels();\n (_a = this.getFormatPanelDef().groups) === null || _a === void 0 ? void 0 : _a.forEach(function (groupDef) {\n var group = groupDef.type;\n // ensure the group should be displayed for the current series type\n if (!_this.isGroupPanelShownInSeries(group, seriesType)) {\n return;\n }\n var opts = {\n chartController: _this.chartController,\n chartOptionsService: _this.chartOptionsService,\n isExpandedOnInit: groupDef.isOpen,\n seriesType: seriesType\n };\n if (group === 'chart') {\n _this.addComponent(new ChartPanel(opts));\n } else if (group === 'legend') {\n _this.addComponent(new LegendPanel(opts));\n } else if (group === 'axis') {\n _this.addComponent(new AxisPanel(opts));\n } else if (group === 'series') {\n _this.addComponent(new SeriesPanel(opts));\n } else if (group === 'navigator') {\n _this.addComponent(new NavigatorPanel(opts));\n } else {\n console.warn(\"AG Grid: invalid charts format panel group name supplied: '\" + groupDef.type + \"'\");\n }\n });\n this.chartType = chartType;\n this.isGrouping = isGrouping;\n };\n FormatPanel.prototype.getFormatPanelDef = function () {\n var _a;\n var userProvidedFormatPanelDef = (_a = this.gridOptionsWrapper.getChartToolPanelsDef()) === null || _a === void 0 ? void 0 : _a.formatPanel;\n return userProvidedFormatPanelDef ? userProvidedFormatPanelDef : DefaultFormatPanelDef;\n };\n FormatPanel.prototype.addComponent = function (component) {\n this.createBean(component);\n this.panels.push(component);\n component.addCssClass('ag-chart-format-section');\n this.getGui().appendChild(component.getGui());\n };\n FormatPanel.prototype.destroyPanels = function () {\n var _this = this;\n this.panels.forEach(function (panel) {\n _.removeFromParent(panel.getGui());\n _this.destroyBean(panel);\n });\n };\n FormatPanel.prototype.destroy = function () {\n this.destroyPanels();\n _super.prototype.destroy.call(this);\n };\n FormatPanel.TEMPLATE = \"
\";\n __decorate$R([PostConstruct], FormatPanel.prototype, \"init\", null);\n return FormatPanel;\n}(Component);\nvar __extends$1y = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$Q = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar MiniChart = /** @class */function (_super) {\n __extends$1y(MiniChart, _super);\n function MiniChart(container, tooltipName) {\n var _this = _super.call(this) || this;\n _this.size = 58;\n _this.padding = 5;\n _this.root = new Group$1();\n var scene = new Scene$1({\n document: window.document,\n width: _this.size,\n height: _this.size\n });\n scene.canvas.element.classList.add('ag-chart-mini-thumbnail-canvas');\n scene.root = _this.root;\n scene.container = container;\n _this.scene = scene;\n _this.tooltipName = tooltipName;\n return _this;\n }\n MiniChart.prototype.init = function () {\n this.scene.canvas.element.title = this.chartTranslationService.translate(this.tooltipName);\n // necessary to force scene graph render as we are not using the standalone factory!\n this.scene.render();\n };\n __decorate$Q([Autowired('chartTranslationService')], MiniChart.prototype, \"chartTranslationService\", void 0);\n __decorate$Q([PostConstruct], MiniChart.prototype, \"init\", null);\n return MiniChart;\n}(Component);\nvar __extends$1x = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$P = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar MiniChartWithAxes = /** @class */function (_super) {\n __extends$1x(MiniChartWithAxes, _super);\n function MiniChartWithAxes(container, tooltipName) {\n var _this = _super.call(this, container, tooltipName) || this;\n _this.stroke = 'gray';\n _this.axisOvershoot = 3;\n return _this;\n }\n MiniChartWithAxes.prototype.addAxes = function () {\n var size = this.size;\n var padding = this.padding;\n var leftAxis = new Line$1();\n leftAxis.x1 = padding;\n leftAxis.y1 = padding;\n leftAxis.x2 = padding;\n leftAxis.y2 = size - padding + this.axisOvershoot;\n leftAxis.stroke = this.stroke;\n var bottomAxis = new Line$1();\n bottomAxis.x1 = padding - this.axisOvershoot + 1;\n bottomAxis.y1 = size - padding;\n bottomAxis.x2 = size - padding + 1;\n bottomAxis.y2 = size - padding;\n bottomAxis.stroke = this.stroke;\n var root = this.root;\n root.append(leftAxis);\n root.append(bottomAxis);\n };\n __decorate$P([PostConstruct], MiniChartWithAxes.prototype, \"addAxes\", null);\n return MiniChartWithAxes;\n}(MiniChart);\nfunction createColumnRects(params) {\n var stacked = params.stacked,\n size = params.size,\n padding = params.padding,\n xScalePadding = params.xScalePadding,\n xScaleDomain = params.xScaleDomain,\n yScaleDomain = params.yScaleDomain;\n var xScale = new BandScale$1();\n xScale.domain = xScaleDomain;\n xScale.range = [padding, size - padding];\n xScale.paddingInner = xScalePadding;\n xScale.paddingOuter = xScalePadding;\n var yScale = new LinearScale$1();\n yScale.domain = yScaleDomain;\n yScale.range = [size - padding, padding];\n var createBars = function (series, xScale, yScale) {\n return series.map(function (datum, i) {\n var top = yScale.convert(datum);\n var rect = new Rect();\n rect.x = xScale.convert(i);\n rect.y = top;\n rect.width = xScale.bandwidth;\n rect.height = yScale.convert(0) - top;\n rect.strokeWidth = 1;\n rect.crisp = true;\n return rect;\n });\n };\n if (stacked) {\n return params.data.map(function (d) {\n return createBars(d, xScale, yScale);\n });\n }\n return createBars(params.data, xScale, yScale);\n}\nfunction createLinePaths(root, data, size, padding) {\n var xScale = new LinearScale$1();\n xScale.domain = [0, 4];\n xScale.range = [padding, size - padding];\n var yScale = new LinearScale$1();\n yScale.domain = [0, 10];\n yScale.range = [size - padding, padding];\n var lines = data.map(function (series) {\n var line = new Path$1();\n line.strokeWidth = 3;\n line.lineCap = \"round\";\n line.fill = undefined;\n series.forEach(function (datum, i) {\n line.path[i > 0 ? \"lineTo\" : \"moveTo\"](xScale.convert(i), yScale.convert(datum));\n });\n return line;\n });\n var clipRect = new ClipRect();\n clipRect.x = clipRect.y = padding;\n clipRect.width = clipRect.height = size - padding * 2;\n clipRect.append(lines);\n root.append(clipRect);\n return lines;\n}\nvar __extends$1w = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar MiniColumn = /** @class */function (_super) {\n __extends$1w(MiniColumn, _super);\n function MiniColumn(container, fills, strokes) {\n var _this = _super.call(this, container, \"groupedColumnTooltip\") || this;\n _this.columnData = [2, 3, 4];\n var _a = _this,\n root = _a.root,\n columnData = _a.columnData,\n size = _a.size,\n padding = _a.padding;\n _this.columns = createColumnRects({\n stacked: false,\n root: root,\n data: columnData,\n size: size,\n padding: padding,\n xScaleDomain: [0, 1, 2],\n yScaleDomain: [0, 4],\n xScalePadding: 0.3\n });\n root.append(_this.columns);\n _this.updateColors(fills, strokes);\n return _this;\n }\n MiniColumn.prototype.updateColors = function (fills, strokes) {\n this.columns.forEach(function (column, i) {\n column.fill = fills[i];\n column.stroke = strokes[i];\n });\n };\n MiniColumn.chartType = 'groupedColumn';\n return MiniColumn;\n}(MiniChartWithAxes);\nvar __extends$1v = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar MiniStackedColumn = /** @class */function (_super) {\n __extends$1v(MiniStackedColumn, _super);\n function MiniStackedColumn(container, fills, strokes, data, yScaleDomain, tooltipName) {\n if (data === void 0) {\n data = MiniStackedColumn.data;\n }\n if (yScaleDomain === void 0) {\n yScaleDomain = [0, 16];\n }\n if (tooltipName === void 0) {\n tooltipName = \"stackedColumnTooltip\";\n }\n var _this = _super.call(this, container, tooltipName) || this;\n var _a = _this,\n root = _a.root,\n size = _a.size,\n padding = _a.padding;\n _this.stackedColumns = createColumnRects({\n stacked: true,\n root: root,\n data: data,\n size: size,\n padding: padding,\n xScaleDomain: [0, 1, 2],\n yScaleDomain: yScaleDomain,\n xScalePadding: 0.3\n });\n root.append([].concat.apply([], _this.stackedColumns));\n _this.updateColors(fills, strokes);\n return _this;\n }\n MiniStackedColumn.prototype.updateColors = function (fills, strokes) {\n this.stackedColumns.forEach(function (series, i) {\n return series.forEach(function (column) {\n column.fill = fills[i];\n column.stroke = strokes[i];\n });\n });\n };\n MiniStackedColumn.chartType = 'stackedColumn';\n MiniStackedColumn.data = [[8, 12, 16], [6, 9, 12], [2, 3, 4]];\n return MiniStackedColumn;\n}(MiniChartWithAxes);\nvar __extends$1u = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar MiniNormalizedColumn = /** @class */function (_super) {\n __extends$1u(MiniNormalizedColumn, _super);\n function MiniNormalizedColumn(container, fills, strokes) {\n return _super.call(this, container, fills, strokes, MiniNormalizedColumn.data, [0, 10], \"normalizedColumnTooltip\") || this;\n }\n MiniNormalizedColumn.chartType = 'normalizedColumn';\n MiniNormalizedColumn.data = [[10, 10, 10], [6, 7, 8], [2, 4, 6]];\n return MiniNormalizedColumn;\n}(MiniStackedColumn);\nvar __extends$1t = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar MiniBar = /** @class */function (_super) {\n __extends$1t(MiniBar, _super);\n function MiniBar(container, fills, strokes) {\n var _this = _super.call(this, container, \"groupedBarTooltip\") || this;\n var padding = _this.padding;\n var size = _this.size;\n var data = [2, 3, 4];\n var yScale = new BandScale$1();\n yScale.domain = [0, 1, 2];\n yScale.range = [padding, size - padding];\n yScale.paddingInner = 0.3;\n yScale.paddingOuter = 0.3;\n var xScale = new LinearScale$1();\n xScale.domain = [0, 4];\n xScale.range = [size - padding, padding];\n var bottom = xScale.convert(0);\n var height = yScale.bandwidth;\n _this.bars = data.map(function (datum, i) {\n var rect = new Rect();\n rect.x = padding;\n rect.y = yScale.convert(i);\n rect.width = bottom - xScale.convert(datum);\n rect.height = height;\n rect.strokeWidth = 1;\n rect.crisp = true;\n return rect;\n });\n _this.updateColors(fills, strokes);\n _this.root.append(_this.bars);\n return _this;\n }\n MiniBar.prototype.updateColors = function (fills, strokes) {\n this.bars.forEach(function (bar, i) {\n bar.fill = fills[i];\n bar.stroke = strokes[i];\n });\n };\n MiniBar.chartType = 'groupedBar';\n return MiniBar;\n}(MiniChartWithAxes);\nvar __extends$1s = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar MiniStackedBar = /** @class */function (_super) {\n __extends$1s(MiniStackedBar, _super);\n function MiniStackedBar(container, fills, strokes, data, xScaleDomain, tooltipName) {\n if (data === void 0) {\n data = MiniStackedBar.data;\n }\n if (xScaleDomain === void 0) {\n xScaleDomain = [0, 16];\n }\n if (tooltipName === void 0) {\n tooltipName = \"stackedBarTooltip\";\n }\n var _this = _super.call(this, container, tooltipName) || this;\n var size = _this.size;\n var padding = _this.padding;\n var yScale = new BandScale$1();\n yScale.domain = [0, 1, 2];\n yScale.range = [padding, size - padding];\n yScale.paddingInner = 0.3;\n yScale.paddingOuter = 0.3;\n var xScale = new LinearScale$1();\n xScale.domain = xScaleDomain;\n xScale.range = [size - padding, padding];\n var bottom = xScale.convert(0);\n var height = yScale.bandwidth;\n _this.bars = data.map(function (series) {\n return series.map(function (datum, i) {\n var rect = new Rect();\n rect.x = padding;\n rect.y = yScale.convert(i);\n rect.width = bottom - xScale.convert(datum);\n rect.height = height;\n rect.strokeWidth = 1;\n rect.crisp = true;\n return rect;\n });\n });\n _this.updateColors(fills, strokes);\n _this.root.append([].concat.apply([], _this.bars));\n return _this;\n }\n MiniStackedBar.prototype.updateColors = function (fills, strokes) {\n this.bars.forEach(function (series, i) {\n return series.forEach(function (bar) {\n bar.fill = fills[i];\n bar.stroke = strokes[i];\n });\n });\n };\n MiniStackedBar.chartType = 'stackedBar';\n MiniStackedBar.data = [[8, 12, 16], [6, 9, 12], [2, 3, 4]];\n return MiniStackedBar;\n}(MiniChartWithAxes);\nvar __extends$1r = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar MiniNormalizedBar = /** @class */function (_super) {\n __extends$1r(MiniNormalizedBar, _super);\n function MiniNormalizedBar(container, fills, strokes) {\n return _super.call(this, container, fills, strokes, MiniNormalizedBar.data, [0, 10], \"normalizedBarTooltip\") || this;\n }\n MiniNormalizedBar.chartType = 'normalizedBar';\n MiniNormalizedBar.data = [[10, 10, 10], [6, 7, 8], [2, 4, 6]];\n return MiniNormalizedBar;\n}(MiniStackedBar);\nvar __extends$1q = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __read$f = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar MiniDoughnut = /** @class */function (_super) {\n __extends$1q(MiniDoughnut, _super);\n function MiniDoughnut(container, fills, strokes, centerRadiusScaler, tooltipName) {\n if (centerRadiusScaler === void 0) {\n centerRadiusScaler = 0.6;\n }\n if (tooltipName === void 0) {\n tooltipName = \"doughnutTooltip\";\n }\n var _this = _super.call(this, container, tooltipName) || this;\n var radius = (_this.size - _this.padding * 2) / 2;\n var center = radius + _this.padding;\n var angles = [[toRadians(-90), toRadians(30)], [toRadians(30), toRadians(120)], [toRadians(120), toRadians(180)], [toRadians(180), toRadians(210)], [toRadians(210), toRadians(240)], [toRadians(240), toRadians(270)]];\n _this.sectors = angles.map(function (_a) {\n var _b = __read$f(_a, 2),\n startAngle = _b[0],\n endAngle = _b[1];\n var sector = new Sector();\n sector.centerX = center;\n sector.centerY = center;\n sector.innerRadius = radius * centerRadiusScaler;\n sector.outerRadius = radius;\n sector.startAngle = startAngle;\n sector.endAngle = endAngle;\n sector.stroke = undefined;\n sector.strokeWidth = 1;\n return sector;\n });\n _this.updateColors(fills, strokes);\n _this.root.append(_this.sectors);\n return _this;\n }\n MiniDoughnut.prototype.updateColors = function (fills, strokes) {\n this.sectors.forEach(function (sector, i) {\n sector.fill = fills[i % fills.length];\n sector.stroke = strokes[i % strokes.length];\n });\n };\n MiniDoughnut.chartType = 'doughnut';\n return MiniDoughnut;\n}(MiniChart);\nvar __extends$1p = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar MiniPie = /** @class */function (_super) {\n __extends$1p(MiniPie, _super);\n function MiniPie(container, fills, strokes) {\n return _super.call(this, container, fills, strokes, 0, \"pieTooltip\") || this;\n }\n MiniPie.chartType = 'pie';\n return MiniPie;\n}(MiniDoughnut);\nvar __extends$1o = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar MiniLine = /** @class */function (_super) {\n __extends$1o(MiniLine, _super);\n function MiniLine(container, fills, strokes) {\n var _this = _super.call(this, container, \"lineTooltip\") || this;\n _this.data = [[9, 7, 8, 5, 6], [5, 6, 3, 4, 1], [1, 3, 4, 8, 7]];\n _this.lines = createLinePaths(_this.root, _this.data, _this.size, _this.padding);\n _this.updateColors(fills, strokes);\n return _this;\n }\n MiniLine.prototype.updateColors = function (fills, strokes) {\n this.lines.forEach(function (line, i) {\n line.stroke = fills[i];\n });\n };\n MiniLine.chartType = 'line';\n return MiniLine;\n}(MiniChartWithAxes);\nvar __extends$1n = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __read$e = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar MiniScatter = /** @class */function (_super) {\n __extends$1n(MiniScatter, _super);\n function MiniScatter(container, fills, strokes) {\n var _this = _super.call(this, container, \"scatterTooltip\") || this;\n var size = _this.size;\n var padding = _this.padding;\n // [x, y] pairs\n var data = [[[0.3, 3], [1.1, 0.9], [2, 0.4], [3.4, 2.4]], [[0, 0.3], [1, 2], [2.4, 1.4], [3, 0]]];\n var xScale = new LinearScale$1();\n xScale.domain = [-0.5, 4];\n xScale.range = [padding * 2, size - padding];\n var yScale = new LinearScale$1();\n yScale.domain = [-0.5, 3.5];\n yScale.range = [size - padding, padding];\n var points = [];\n data.forEach(function (series) {\n series.forEach(function (_a) {\n var _b = __read$e(_a, 2),\n x = _b[0],\n y = _b[1];\n var arc = new Arc();\n arc.strokeWidth = 1;\n arc.centerX = xScale.convert(x);\n arc.centerY = yScale.convert(y);\n arc.radiusX = arc.radiusY = 2.5;\n points.push(arc);\n });\n });\n _this.points = points;\n _this.updateColors(fills, strokes);\n var clipRect = new ClipRect();\n clipRect.x = clipRect.y = padding;\n clipRect.width = clipRect.height = size - padding * 2;\n clipRect.append(_this.points);\n _this.root.append(clipRect);\n return _this;\n }\n MiniScatter.prototype.updateColors = function (fills, strokes) {\n this.points.forEach(function (line, i) {\n line.stroke = strokes[i % strokes.length];\n line.fill = fills[i % fills.length];\n });\n };\n MiniScatter.chartType = 'scatter';\n return MiniScatter;\n}(MiniChartWithAxes);\nvar __extends$1m = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __read$d = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar MiniBubble = /** @class */function (_super) {\n __extends$1m(MiniBubble, _super);\n function MiniBubble(container, fills, strokes) {\n var _this = _super.call(this, container, \"bubbleTooltip\") || this;\n var size = _this.size;\n var padding = _this.padding;\n // [x, y, radius] triples\n var data = [[[0.1, 0.3, 5], [0.5, 0.4, 7], [0.2, 0.8, 7]], [[0.8, 0.7, 5], [0.7, 0.3, 9]]];\n var xScale = new LinearScale$1();\n xScale.domain = [0, 1];\n xScale.range = [padding * 2, size - padding];\n var yScale = new LinearScale$1();\n yScale.domain = [0, 1];\n yScale.range = [size - padding, padding];\n var points = [];\n data.forEach(function (series) {\n series.forEach(function (_a) {\n var _b = __read$d(_a, 3),\n x = _b[0],\n y = _b[1],\n radius = _b[2];\n var arc = new Arc();\n arc.strokeWidth = 1;\n arc.centerX = xScale.convert(x);\n arc.centerY = yScale.convert(y);\n arc.radiusX = arc.radiusY = radius;\n arc.fillOpacity = 0.7;\n points.push(arc);\n });\n });\n _this.points = points;\n _this.updateColors(fills, strokes);\n var clipRect = new ClipRect();\n clipRect.x = padding;\n clipRect.y = padding;\n clipRect.width = size - padding * 2;\n clipRect.height = size - padding * 2;\n clipRect.append(_this.points);\n _this.root.append(clipRect);\n return _this;\n }\n MiniBubble.prototype.updateColors = function (fills, strokes) {\n this.points.forEach(function (line, i) {\n line.stroke = strokes[i % strokes.length];\n line.fill = fills[i % fills.length];\n });\n };\n MiniBubble.chartType = 'bubble';\n return MiniBubble;\n}(MiniChartWithAxes);\nvar __extends$1l = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar MiniArea = /** @class */function (_super) {\n __extends$1l(MiniArea, _super);\n function MiniArea(container, fills, strokes, data) {\n if (data === void 0) {\n data = MiniArea.data;\n }\n var _this = _super.call(this, container, \"groupedAreaTooltip\") || this;\n var size = _this.size;\n var padding = _this.padding;\n var xScale = new BandScale$1();\n xScale.domain = [0, 1, 2];\n xScale.paddingInner = 1;\n xScale.paddingOuter = 0;\n xScale.range = [padding + 0.5, size - padding - 0.5];\n var yScale = new LinearScale$1();\n yScale.domain = [0, 6];\n yScale.range = [size - padding + 0.5, padding];\n var xCount = data.length;\n var last = xCount * 2 - 1;\n var pathData = [];\n var bottomY = yScale.convert(0);\n data.forEach(function (datum, i) {\n var x = xScale.convert(i);\n datum.forEach(function (yDatum, j) {\n var y = yScale.convert(yDatum);\n var points = pathData[j] || (pathData[j] = []);\n points[i] = {\n x: x,\n y: y\n };\n points[last - i] = {\n x: x,\n y: bottomY\n };\n });\n });\n _this.areas = pathData.reverse().map(function (points) {\n var area = new Path$1();\n area.strokeWidth = 1;\n area.fillOpacity = 0.7;\n var path = area.path;\n path.clear();\n points.forEach(function (point, i) {\n return path[i > 0 ? \"lineTo\" : \"moveTo\"](point.x, point.y);\n });\n path.closePath();\n return area;\n });\n _this.updateColors(fills, strokes);\n _this.root.append(_this.areas);\n return _this;\n }\n MiniArea.prototype.updateColors = function (fills, strokes) {\n this.areas.forEach(function (area, i) {\n area.fill = fills[i];\n area.stroke = strokes[i];\n });\n };\n MiniArea.chartType = 'area';\n MiniArea.data = [[1, 3, 5], [2, 6, 4], [5, 3, 1]];\n return MiniArea;\n}(MiniChartWithAxes);\nvar __extends$1k = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar MiniStackedArea = /** @class */function (_super) {\n __extends$1k(MiniStackedArea, _super);\n function MiniStackedArea(container, fills, strokes, data, tooltipName) {\n if (data === void 0) {\n data = MiniStackedArea.data;\n }\n if (tooltipName === void 0) {\n tooltipName = \"stackedAreaTooltip\";\n }\n var _this = _super.call(this, container, tooltipName) || this;\n var size = _this.size;\n var padding = _this.padding;\n var xScale = new BandScale$1();\n xScale.domain = [0, 1, 2];\n xScale.paddingInner = 1;\n xScale.paddingOuter = 0;\n xScale.range = [padding + 0.5, size - padding - 0.5];\n var yScale = new LinearScale$1();\n yScale.domain = [0, 16];\n yScale.range = [size - padding + 0.5, padding + 0.5];\n var xCount = data.length;\n var last = xCount * 2 - 1;\n var pathData = [];\n data.forEach(function (datum, i) {\n var x = xScale.convert(i);\n var total = 0;\n datum.forEach(function (yDatum, j) {\n var y = yScale.convert(total + yDatum);\n var points = pathData[j] || (pathData[j] = []);\n points[i] = {\n x: x,\n y: y\n };\n points[last - i] = {\n x: x,\n y: yScale.convert(total) // bottom y\n };\n total += yDatum;\n });\n });\n _this.areas = pathData.map(function (points) {\n var area = new Path$1();\n area.strokeWidth = 1;\n var path = area.path;\n path.clear();\n points.forEach(function (point, i) {\n return path[i > 0 ? \"lineTo\" : \"moveTo\"](point.x, point.y);\n });\n path.closePath();\n return area;\n });\n _this.updateColors(fills, strokes);\n _this.root.append(_this.areas);\n return _this;\n }\n MiniStackedArea.prototype.updateColors = function (fills, strokes) {\n this.areas.forEach(function (area, i) {\n area.fill = fills[i];\n area.stroke = strokes[i];\n });\n };\n MiniStackedArea.chartType = 'stackedArea';\n MiniStackedArea.data = [[2, 3, 2], [3, 6, 5], [6, 2, 2]];\n return MiniStackedArea;\n}(MiniChartWithAxes);\nvar __extends$1j = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar MiniNormalizedArea = /** @class */function (_super) {\n __extends$1j(MiniNormalizedArea, _super);\n function MiniNormalizedArea(container, fills, strokes, data) {\n if (data === void 0) {\n data = MiniNormalizedArea.data;\n }\n return _super.call(this, container, fills, strokes, data, \"normalizedAreaTooltip\") || this;\n }\n MiniNormalizedArea.chartType = 'normalizedArea';\n MiniNormalizedArea.data = MiniStackedArea.data.map(function (stack) {\n var sum = stack.reduce(function (p, c) {\n return p + c;\n }, 0);\n return stack.map(function (v) {\n return v / sum * 16;\n });\n });\n return MiniNormalizedArea;\n}(MiniStackedArea);\nvar __extends$1i = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __read$c = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar MiniHistogram = /** @class */function (_super) {\n __extends$1i(MiniHistogram, _super);\n function MiniHistogram(container, fills, strokes) {\n var _this = _super.call(this, container, \"histogramTooltip\") || this;\n var padding = _this.padding;\n var size = _this.size;\n // approx normal curve\n var data = [2, 5, 11, 13, 10, 6, 1];\n var xScale = new LinearScale$1();\n xScale.domain = [0, data.length];\n xScale.range = [padding, size - padding];\n var yScale = new LinearScale$1();\n yScale.domain = [0, data.reduce(function (a, b) {\n return Math.max(a, b);\n }, 0)];\n yScale.range = [size - padding, padding];\n var bottom = yScale.convert(0);\n _this.bars = data.map(function (datum, i) {\n var top = yScale.convert(datum);\n var left = xScale.convert(i);\n var right = xScale.convert(i + 1);\n var rect = new Rect();\n rect.x = left;\n rect.y = top;\n rect.width = right - left;\n rect.height = bottom - top;\n rect.strokeWidth = 1;\n rect.crisp = true;\n return rect;\n });\n _this.updateColors(fills, strokes);\n _this.root.append(_this.bars);\n return _this;\n }\n MiniHistogram.prototype.updateColors = function (_a, _b) {\n var _c = __read$c(_a, 1),\n fill = _c[0];\n var _d = __read$c(_b, 1),\n stroke = _d[0];\n this.bars.forEach(function (bar) {\n bar.fill = fill;\n bar.stroke = stroke;\n });\n };\n MiniHistogram.chartType = 'histogram';\n return MiniHistogram;\n}(MiniChartWithAxes);\nvar __extends$1h = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar MiniColumnLineCombo = /** @class */function (_super) {\n __extends$1h(MiniColumnLineCombo, _super);\n function MiniColumnLineCombo(container, fills, strokes) {\n var _this = _super.call(this, container, \"columnLineComboTooltip\") || this;\n _this.columnData = [3, 4];\n _this.lineData = [[5, 4, 6, 5, 4]];\n var _a = _this,\n root = _a.root,\n columnData = _a.columnData,\n lineData = _a.lineData,\n size = _a.size,\n padding = _a.padding;\n _this.columns = createColumnRects({\n stacked: false,\n root: root,\n data: columnData,\n size: size,\n padding: padding,\n xScaleDomain: [0, 1],\n yScaleDomain: [0, 4],\n xScalePadding: 0.5\n });\n root.append(_this.columns);\n _this.lines = createLinePaths(root, lineData, size, padding);\n _this.updateColors(fills, strokes);\n return _this;\n }\n MiniColumnLineCombo.prototype.updateColors = function (fills, strokes) {\n this.columns.forEach(function (bar, i) {\n bar.fill = fills[i];\n bar.stroke = strokes[i];\n });\n this.lines.forEach(function (line, i) {\n line.stroke = fills[i + 2];\n });\n };\n MiniColumnLineCombo.chartType = 'columnLineCombo';\n return MiniColumnLineCombo;\n}(MiniChartWithAxes);\nvar __extends$1g = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar MiniAreaColumnCombo = /** @class */function (_super) {\n __extends$1g(MiniAreaColumnCombo, _super);\n function MiniAreaColumnCombo(container, fills, strokes) {\n var _this = _super.call(this, container, \"areaColumnComboTooltip\") || this;\n _this.columnData = [3, 4.5];\n _this.areaData = [[5, 4, 6, 5, 4]];\n var _a = _this,\n root = _a.root,\n columnData = _a.columnData,\n areaData = _a.areaData,\n size = _a.size,\n padding = _a.padding;\n _this.columns = createColumnRects({\n stacked: false,\n root: root,\n data: columnData,\n size: size,\n padding: padding,\n xScaleDomain: [0, 1],\n yScaleDomain: [0, 6],\n xScalePadding: 0.5\n });\n // scale for area series\n var xScale = new BandScale$1();\n xScale.range = [padding, size - padding];\n xScale.domain = [0, 1, 2, 3, 4];\n xScale.paddingInner = 1;\n xScale.paddingOuter = 0;\n var yScale = new LinearScale$1();\n yScale.range = [size - padding, padding];\n yScale.domain = [0, 6];\n var pathData = [];\n var yZero = yScale.convert(0);\n var firstX = xScale.convert(0);\n areaData.forEach(function (series, i) {\n var points = pathData[i] || (pathData[i] = []);\n series.forEach(function (data, j) {\n var yDatum = data;\n var xDatum = j;\n var x = xScale.convert(xDatum);\n var y = yScale.convert(yDatum);\n points[j] = {\n x: x,\n y: y\n };\n });\n var lastX = xScale.convert(series.length - 1);\n pathData[i].push({\n x: lastX,\n y: yZero\n }, {\n x: firstX,\n y: yZero\n });\n });\n _this.areas = pathData.map(function (points) {\n var area = new Path$1();\n area.strokeWidth = 1;\n area.fillOpacity = 0.8;\n var path = area.path;\n points.forEach(function (point, i) {\n return path[i > 0 ? 'lineTo' : 'moveTo'](point.x, point.y);\n });\n return area;\n });\n root.append(_this.areas);\n root.append([].concat.apply([], _this.columns));\n _this.updateColors(fills, strokes);\n return _this;\n }\n MiniAreaColumnCombo.prototype.updateColors = function (fills, strokes) {\n this.areas.forEach(function (area, i) {\n area.fill = fills[i];\n area.stroke = strokes[i];\n });\n this.columns.forEach(function (bar, i) {\n bar.fill = fills[i + 1];\n bar.stroke = strokes[i + 1];\n });\n };\n MiniAreaColumnCombo.chartType = 'areaColumnCombo';\n return MiniAreaColumnCombo;\n}(MiniChartWithAxes);\nvar __extends$1f = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar MiniCustomCombo = /** @class */function (_super) {\n __extends$1f(MiniCustomCombo, _super);\n function MiniCustomCombo(container, fills, strokes) {\n var _this = _super.call(this, container, 'customComboTooltip') || this;\n _this.columnData = [3, 4];\n _this.lineData = [[5, 4, 6, 5, 4]];\n var _a = _this,\n root = _a.root,\n columnData = _a.columnData,\n lineData = _a.lineData,\n size = _a.size,\n padding = _a.padding;\n _this.columns = createColumnRects({\n stacked: false,\n root: root,\n data: columnData,\n size: size,\n padding: padding,\n xScaleDomain: [0, 1],\n yScaleDomain: [0, 4],\n xScalePadding: 0.5\n });\n root.append(_this.columns);\n _this.lines = createLinePaths(root, lineData, size, padding);\n var axisStroke = 'grey';\n var axisOvershoot = 3;\n var leftAxis = new Line$1();\n leftAxis.x1 = padding;\n leftAxis.y1 = padding;\n leftAxis.x2 = padding;\n leftAxis.y2 = size - padding + axisOvershoot;\n leftAxis.stroke = axisStroke;\n var bottomAxis = new Line$1();\n bottomAxis.x1 = padding - axisOvershoot + 1;\n bottomAxis.y1 = size - padding;\n bottomAxis.x2 = size - padding + 1;\n bottomAxis.y2 = size - padding;\n bottomAxis.stroke = axisStroke;\n var penIcon = new Path$1();\n _this.buildPenIconPath(penIcon);\n penIcon.fill = 'whitesmoke';\n penIcon.stroke = 'darkslategrey';\n penIcon.strokeWidth = 1;\n root.append([bottomAxis, leftAxis, penIcon]);\n _this.updateColors(fills, strokes);\n return _this;\n }\n MiniCustomCombo.prototype.updateColors = function (fills, strokes) {\n this.columns.forEach(function (bar, i) {\n bar.fill = fills[i];\n bar.stroke = strokes[i];\n });\n this.lines.forEach(function (line, i) {\n line.stroke = fills[i + 2];\n });\n };\n MiniCustomCombo.prototype.buildPenIconPath = function (penIcon) {\n var path = penIcon.path;\n path.moveTo(25.76, 43.46);\n path.lineTo(31.27, 48.53);\n path.moveTo(49.86, 22);\n path.lineTo(49.86, 22);\n path.cubicCurveTo(49.01994659053345, 21.317514933510974, 47.89593834348529, 21.09645997825817, 46.86, 21.41);\n path.lineTo(46.86, 21.41);\n path.cubicCurveTo(45.55460035985361, 21.77260167850787, 44.38777081121966, 22.517979360321792, 43.51, 23.55);\n path.lineTo(25.51, 43.8);\n path.lineTo(25.43, 43.89);\n path.lineTo(23.01, 51.89);\n path.lineTo(22.83, 52.46);\n path.lineTo(31.02, 48.86);\n path.lineTo(49.02, 28.52);\n path.lineTo(49.02, 28.52);\n path.cubicCurveTo(49.940716461596224, 27.521914221246085, 50.54302631059587, 26.2720342455763, 50.75, 24.93);\n path.lineTo(50.75, 24.93);\n path.cubicCurveTo(50.95363374988308, 23.866379846512814, 50.62080640232334, 22.77066734274871, 49.86, 22.0);\n path.closePath();\n path.moveTo(41.76, 25.5);\n path.lineTo(47.34, 30.5);\n path.moveTo(40.74, 26.65);\n path.lineTo(46.25, 31.71);\n };\n MiniCustomCombo.chartType = 'customCombo';\n return MiniCustomCombo;\n}(MiniChart);\nvar __extends$1e = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign$k = undefined && undefined.__assign || function () {\n __assign$k = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$k.apply(this, arguments);\n};\nvar __decorate$O = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar miniChartMapping = {\n columnGroup: {\n column: MiniColumn,\n stackedColumn: MiniStackedColumn,\n normalizedColumn: MiniNormalizedColumn\n },\n barGroup: {\n bar: MiniBar,\n stackedBar: MiniStackedBar,\n normalizedBar: MiniNormalizedBar\n },\n pieGroup: {\n pie: MiniPie,\n doughnut: MiniDoughnut\n },\n lineGroup: {\n line: MiniLine\n },\n scatterGroup: {\n scatter: MiniScatter,\n bubble: MiniBubble\n },\n areaGroup: {\n area: MiniArea,\n stackedArea: MiniStackedArea,\n normalizedArea: MiniNormalizedArea\n },\n histogramGroup: {\n histogram: MiniHistogram\n },\n combinationGroup: {\n columnLineCombo: MiniColumnLineCombo,\n areaColumnCombo: MiniAreaColumnCombo,\n customCombo: MiniCustomCombo\n }\n};\nvar MiniChartsContainer = /** @class */function (_super) {\n __extends$1e(MiniChartsContainer, _super);\n function MiniChartsContainer(chartController, fills, strokes, chartGroups) {\n if (chartGroups === void 0) {\n chartGroups = DEFAULT_CHART_GROUPS;\n }\n var _this = _super.call(this, MiniChartsContainer.TEMPLATE) || this;\n _this.wrappers = {};\n _this.chartController = chartController;\n _this.fills = fills;\n _this.strokes = strokes;\n _this.chartGroups = __assign$k({}, chartGroups);\n return _this;\n }\n MiniChartsContainer.prototype.init = function () {\n var _this = this;\n // hide MiniCustomCombo if no custom combo exists\n if (!this.chartController.customComboExists() && this.chartGroups.combinationGroup) {\n this.chartGroups.combinationGroup = this.chartGroups.combinationGroup.filter(function (chartType) {\n return chartType !== 'customCombo';\n });\n }\n var eGui = this.getGui();\n Object.keys(this.chartGroups).forEach(function (group) {\n var chartGroupValues = _this.chartGroups[group];\n var groupComponent = _this.createBean(new AgGroupComponent({\n title: _this.chartTranslationService.translate(group),\n suppressEnabledCheckbox: true,\n enabled: true,\n suppressOpenCloseIcons: true,\n cssIdentifier: 'charts-settings',\n direction: 'horizontal'\n }));\n chartGroupValues.forEach(function (chartType) {\n var MiniClass = miniChartMapping[group][chartType];\n if (!MiniClass) {\n console.warn(\"AG Grid - invalid chart type '\" + chartType + \"' in group '\" + group + \"'\");\n return;\n }\n var miniWrapper = document.createElement('div');\n miniWrapper.classList.add('ag-chart-mini-thumbnail');\n var miniClassChartType = MiniClass.chartType;\n _this.addManagedListener(miniWrapper, 'click', function () {\n _this.chartController.setChartType(miniClassChartType);\n _this.updateSelectedMiniChart();\n });\n _this.wrappers[miniClassChartType] = miniWrapper;\n _this.createBean(new MiniClass(miniWrapper, _this.fills, _this.strokes));\n groupComponent.addItem(miniWrapper);\n });\n eGui.appendChild(groupComponent.getGui());\n });\n this.updateSelectedMiniChart();\n };\n MiniChartsContainer.prototype.updateSelectedMiniChart = function () {\n var selectedChartType = this.chartController.getChartType();\n for (var miniChartType in this.wrappers) {\n var miniChart = this.wrappers[miniChartType];\n var selected = miniChartType === selectedChartType;\n miniChart.classList.toggle('ag-selected', selected);\n }\n };\n MiniChartsContainer.TEMPLATE = \"
\";\n __decorate$O([Autowired('chartTranslationService')], MiniChartsContainer.prototype, \"chartTranslationService\", void 0);\n __decorate$O([PostConstruct], MiniChartsContainer.prototype, \"init\", null);\n return MiniChartsContainer;\n}(Component);\nvar __extends$1d = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$N = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar ChartSettingsPanel = /** @class */function (_super) {\n __extends$1d(ChartSettingsPanel, _super);\n function ChartSettingsPanel(chartController) {\n var _this = _super.call(this, ChartSettingsPanel.TEMPLATE) || this;\n _this.miniCharts = [];\n _this.cardItems = [];\n _this.activePaletteIndex = 0;\n _this.palettes = [];\n _this.themes = [];\n _this.chartController = chartController;\n return _this;\n }\n ChartSettingsPanel.prototype.postConstruct = function () {\n var _this = this;\n this.resetPalettes();\n this.ePrevBtn.insertAdjacentElement('afterbegin', _.createIconNoSpan('previous', this.gridOptionsWrapper));\n this.eNextBtn.insertAdjacentElement('afterbegin', _.createIconNoSpan('next', this.gridOptionsWrapper));\n this.addManagedListener(this.ePrevBtn, 'click', function () {\n return _this.setActivePalette(_this.getPrev(), 'left');\n });\n this.addManagedListener(this.eNextBtn, 'click', function () {\n return _this.setActivePalette(_this.getNext(), 'right');\n });\n // change the selected chart when a combo chart is modified via the data panel, i.e. the custom combo should be selected\n this.addManagedListener(this.chartController, ChartController.EVENT_CHART_TYPE_CHANGED, function () {\n return _this.resetPalettes(true);\n });\n this.scrollSelectedIntoView();\n };\n ChartSettingsPanel.prototype.scrollSelectedIntoView = function () {\n var _this = this;\n // the panel is not immediately visible due to the slide animation, so we add a\n // setTimeout to wait until the panel animation is over and is able to scroll\n setTimeout(function () {\n var currentPallet = _this.miniCharts.find(function (pallet) {\n return !pallet.getGui().classList.contains('ag-hidden');\n });\n var currentChart = currentPallet.getGui().querySelector('.ag-selected');\n if (currentChart) {\n currentChart.scrollIntoView({\n block: 'nearest'\n });\n }\n }, 250);\n };\n ChartSettingsPanel.prototype.resetPalettes = function (forceReset) {\n var _this = this;\n var _a, _b;\n var palettes = this.chartController.getPalettes();\n var chartGroups = (_b = (_a = this.gridOptionsWrapper.getChartToolPanelsDef()) === null || _a === void 0 ? void 0 : _a.settingsPanel) === null || _b === void 0 ? void 0 : _b.chartGroupsDef;\n if (_.shallowCompare(palettes, this.palettes) && !forceReset || this.isAnimating) {\n return;\n }\n this.palettes = palettes;\n this.themes = this.chartController.getThemes();\n this.activePaletteIndex = this.themes.findIndex(function (name) {\n return name === _this.chartController.getChartThemeName();\n });\n this.cardItems = [];\n _.clearElement(this.eCardSelector);\n this.destroyMiniCharts();\n this.palettes.forEach(function (palette, index) {\n var isActivePalette = _this.activePaletteIndex === index;\n var fills = palette.fills,\n strokes = palette.strokes;\n var miniChartsContainer = _this.createBean(new MiniChartsContainer(_this.chartController, fills, strokes, chartGroups));\n _this.miniCharts.push(miniChartsContainer);\n _this.eMiniChartsContainer.appendChild(miniChartsContainer.getGui());\n _this.addCardLink(index);\n if (isActivePalette) {\n miniChartsContainer.updateSelectedMiniChart();\n } else {\n miniChartsContainer.addCssClass('ag-hidden');\n }\n });\n this.eNavBar.classList.toggle('ag-hidden', this.palettes.length <= 1);\n _.radioCssClass(this.cardItems[this.activePaletteIndex], 'ag-selected', 'ag-not-selected');\n };\n ChartSettingsPanel.prototype.addCardLink = function (index) {\n var _this = this;\n var link = document.createElement('div');\n link.classList.add('ag-chart-settings-card-item');\n this.addManagedListener(link, 'click', function () {\n _this.setActivePalette(index, index < _this.activePaletteIndex ? 'left' : 'right');\n });\n this.eCardSelector.appendChild(link);\n this.cardItems.push(link);\n };\n ChartSettingsPanel.prototype.getPrev = function () {\n var prev = this.activePaletteIndex - 1;\n if (prev < 0) {\n prev = this.palettes.length - 1;\n }\n return prev;\n };\n ChartSettingsPanel.prototype.getNext = function () {\n var next = this.activePaletteIndex + 1;\n if (next >= this.palettes.length) {\n next = 0;\n }\n return next;\n };\n ChartSettingsPanel.prototype.setActivePalette = function (index, animationDirection) {\n var _this = this;\n if (this.isAnimating || this.activePaletteIndex === index) {\n return;\n }\n _.radioCssClass(this.cardItems[index], 'ag-selected', 'ag-not-selected');\n var currentPalette = this.miniCharts[this.activePaletteIndex];\n var currentGui = currentPalette.getGui();\n var futurePalette = this.miniCharts[index];\n var nextGui = futurePalette.getGui();\n currentPalette.updateSelectedMiniChart();\n futurePalette.updateSelectedMiniChart();\n var multiplier = animationDirection === 'left' ? -1 : 1;\n var final = nextGui.style.left = _.getAbsoluteWidth(this.getGui()) * multiplier + \"px\";\n this.activePaletteIndex = index;\n this.isAnimating = true;\n var animatingClass = 'ag-animating';\n futurePalette.removeCssClass('ag-hidden');\n currentPalette.addCssClass(animatingClass);\n futurePalette.addCssClass(animatingClass);\n this.chartController.setChartThemeName(this.themes[index]);\n window.setTimeout(function () {\n currentGui.style.left = -parseFloat(final) + \"px\";\n nextGui.style.left = '0px';\n }, 0);\n window.setTimeout(function () {\n _this.isAnimating = false;\n currentPalette.removeCssClass(animatingClass);\n futurePalette.removeCssClass(animatingClass);\n currentPalette.addCssClass('ag-hidden');\n }, 300);\n };\n ChartSettingsPanel.prototype.destroyMiniCharts = function () {\n _.clearElement(this.eMiniChartsContainer);\n this.miniCharts = this.destroyBeans(this.miniCharts);\n };\n ChartSettingsPanel.prototype.destroy = function () {\n this.destroyMiniCharts();\n _super.prototype.destroy.call(this);\n };\n ChartSettingsPanel.TEMPLATE = \"
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\";\n __decorate$N([Autowired('resizeObserverService')], ChartSettingsPanel.prototype, \"resizeObserverService\", void 0);\n __decorate$N([RefSelector('eMiniChartsContainer')], ChartSettingsPanel.prototype, \"eMiniChartsContainer\", void 0);\n __decorate$N([RefSelector('eNavBar')], ChartSettingsPanel.prototype, \"eNavBar\", void 0);\n __decorate$N([RefSelector('eCardSelector')], ChartSettingsPanel.prototype, \"eCardSelector\", void 0);\n __decorate$N([RefSelector('ePrevBtn')], ChartSettingsPanel.prototype, \"ePrevBtn\", void 0);\n __decorate$N([RefSelector('eNextBtn')], ChartSettingsPanel.prototype, \"eNextBtn\", void 0);\n __decorate$N([PostConstruct], ChartSettingsPanel.prototype, \"postConstruct\", null);\n return ChartSettingsPanel;\n}(Component);\nvar __extends$1c = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$M = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar TabbedChartMenu = /** @class */function (_super) {\n __extends$1c(TabbedChartMenu, _super);\n function TabbedChartMenu(params) {\n var _this = _super.call(this) || this;\n _this.tabs = [];\n var controller = params.controller,\n panels = params.panels,\n chartOptionsService = params.chartOptionsService;\n _this.chartController = controller;\n _this.chartOptionsService = chartOptionsService;\n _this.panels = panels;\n return _this;\n }\n TabbedChartMenu.prototype.init = function () {\n var _this = this;\n this.panels.forEach(function (panel) {\n var panelType = panel.replace('chart', '').toLowerCase();\n var _a = _this.createTab(panel, panelType, _this.getPanelClass(panelType)),\n comp = _a.comp,\n tab = _a.tab;\n _this.tabs.push(tab);\n _this.addDestroyFunc(function () {\n return _this.destroyBean(comp);\n });\n });\n this.tabbedLayout = new TabbedLayout({\n items: this.tabs,\n cssClass: 'ag-chart-tabbed-menu',\n keepScrollPosition: true\n });\n this.getContext().createBean(this.tabbedLayout);\n };\n TabbedChartMenu.prototype.createTab = function (name, title, TabPanelClass) {\n var eWrapperDiv = document.createElement('div');\n eWrapperDiv.classList.add('ag-chart-tab', \"ag-chart-\" + title);\n var comp = new TabPanelClass(this.chartController, this.chartOptionsService);\n this.getContext().createBean(comp);\n eWrapperDiv.appendChild(comp.getGui());\n var titleEl = document.createElement('div');\n var translatedTitle = this.chartTranslationService.translate(title);\n titleEl.innerText = translatedTitle;\n return {\n comp: comp,\n tab: {\n title: titleEl,\n titleLabel: translatedTitle,\n bodyPromise: AgPromise.resolve(eWrapperDiv),\n getScrollableContainer: function () {\n var scrollableContainer = eWrapperDiv.querySelector('.ag-scrollable-container');\n return scrollableContainer || eWrapperDiv;\n },\n name: name\n }\n };\n };\n TabbedChartMenu.prototype.showTab = function (tab) {\n var tabItem = this.tabs[tab];\n this.tabbedLayout.showItem(tabItem);\n };\n TabbedChartMenu.prototype.getGui = function () {\n return this.tabbedLayout && this.tabbedLayout.getGui();\n };\n TabbedChartMenu.prototype.destroy = function () {\n if (this.parentComponent && this.parentComponent.isAlive()) {\n this.destroyBean(this.parentComponent);\n }\n _super.prototype.destroy.call(this);\n };\n TabbedChartMenu.prototype.getPanelClass = function (panelType) {\n switch (panelType) {\n case TabbedChartMenu.TAB_DATA:\n return ChartDataPanel;\n case TabbedChartMenu.TAB_FORMAT:\n return FormatPanel;\n default:\n return ChartSettingsPanel;\n }\n };\n TabbedChartMenu.TAB_DATA = 'data';\n TabbedChartMenu.TAB_FORMAT = 'format';\n __decorate$M([Autowired('chartTranslationService')], TabbedChartMenu.prototype, \"chartTranslationService\", void 0);\n __decorate$M([PostConstruct], TabbedChartMenu.prototype, \"init\", null);\n return TabbedChartMenu;\n}(Component);\nvar __extends$1b = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$L = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __read$b = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread$4 = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$b(arguments[i]));\n return ar;\n};\nvar ChartMenu = /** @class */function (_super) {\n __extends$1b(ChartMenu, _super);\n function ChartMenu(eChartContainer, eMenuPanelContainer, chartController, chartOptionsService) {\n var _this = _super.call(this, ChartMenu.TEMPLATE) || this;\n _this.eChartContainer = eChartContainer;\n _this.eMenuPanelContainer = eMenuPanelContainer;\n _this.chartController = chartController;\n _this.chartOptionsService = chartOptionsService;\n _this.buttons = {\n chartSettings: ['menu', function () {\n return _this.showMenu(_this.defaultPanel);\n }],\n chartData: ['menu', function () {\n return _this.showMenu(\"chartData\");\n }],\n chartFormat: ['menu', function () {\n return _this.showMenu(\"chartFormat\");\n }],\n chartLink: ['linked', function (e) {\n return _this.toggleDetached(e);\n }],\n chartUnlink: ['unlinked', function (e) {\n return _this.toggleDetached(e);\n }],\n chartDownload: ['save', function () {\n return _this.saveChart();\n }]\n };\n _this.panels = [];\n _this.menuVisible = false;\n return _this;\n }\n ChartMenu.prototype.postConstruct = function () {\n var _this = this;\n this.createButtons();\n this.addManagedListener(this.eventService, Events.EVENT_CHART_CREATED, function (e) {\n var _a;\n if (e.chartId === _this.chartController.getChartId()) {\n var showDefaultToolPanel = Boolean((_a = _this.gridOptionsWrapper.getChartToolPanelsDef()) === null || _a === void 0 ? void 0 : _a.defaultToolPanel);\n if (showDefaultToolPanel) {\n _this.showMenu(_this.defaultPanel, false);\n }\n }\n });\n this.refreshMenuClasses();\n if (this.gridOptionsWrapper.isEnableChartToolPanelsButton()) {\n this.getGui().classList.add('ag-chart-tool-panel-button-enable');\n this.addManagedListener(this.eHideButton, 'click', this.toggleMenu.bind(this));\n }\n };\n ChartMenu.prototype.isVisible = function () {\n return this.menuVisible;\n };\n ChartMenu.prototype.getToolbarOptions = function () {\n var _this = this;\n var _a, _b, _c;\n var useChartToolPanelCustomisation = Boolean(this.gridOptionsWrapper.getChartToolPanelsDef());\n if (useChartToolPanelCustomisation) {\n var defaultChartToolbarOptions = [this.chartController.isChartLinked() ? 'chartLink' : 'chartUnlink', 'chartDownload'];\n var toolbarItemsFunc = this.gridOptionsWrapper.getChartToolbarItemsFunc();\n var params = {\n defaultItems: defaultChartToolbarOptions\n };\n var chartToolbarOptions = toolbarItemsFunc ? toolbarItemsFunc(params).filter(function (option) {\n if (!CHART_TOOLBAR_ALLOW_LIST.includes(option)) {\n var msg = CHART_TOOL_PANEL_ALLOW_LIST.includes(option) ? \"AG Grid: '\" + option + \"' is a Chart Tool Panel option and will be ignored since 'chartToolPanelsDef' is used. Please use 'chartToolPanelsDef.panels' grid option instead\" : \"AG Grid: '\" + option + \"' is not a valid Chart Toolbar Option\";\n console.warn(msg);\n return false;\n }\n return true;\n }) : defaultChartToolbarOptions;\n var panelsOverride = (_b = (_a = this.gridOptionsWrapper.getChartToolPanelsDef()) === null || _a === void 0 ? void 0 : _a.panels) === null || _b === void 0 ? void 0 : _b.map(function (panel) {\n var menuOption = CHART_TOOL_PANEL_MENU_OPTIONS[panel];\n if (!menuOption) {\n console.warn(\"AG Grid - invalid panel in chartToolPanelsDef.panels: '\" + panel + \"'\");\n }\n return menuOption;\n }).filter(function (panel) {\n return Boolean(panel);\n });\n this.panels = panelsOverride ? panelsOverride : Object.values(CHART_TOOL_PANEL_MENU_OPTIONS);\n // pivot charts use the column tool panel instead of the data panel\n if (this.chartController.isPivotChart()) {\n this.panels = this.panels.filter(function (panel) {\n return panel !== 'chartData';\n });\n }\n var defaultToolPanel = (_c = this.gridOptionsWrapper.getChartToolPanelsDef()) === null || _c === void 0 ? void 0 : _c.defaultToolPanel;\n this.defaultPanel = defaultToolPanel && CHART_TOOL_PANEL_MENU_OPTIONS[defaultToolPanel] || this.panels[0];\n return this.panels.length > 0\n // Only one panel is required to display menu icon in toolbar\n ? __spread$4([this.panels[0]], chartToolbarOptions) : chartToolbarOptions;\n } else {\n // To be deprecated in future. Toolbar options will be different to chart tool panels.\n var tabOptions = ['chartSettings', 'chartData', 'chartFormat', this.chartController.isChartLinked() ? 'chartLink' : 'chartUnlink', 'chartDownload'];\n var toolbarItemsFunc = this.gridOptionsWrapper.getChartToolbarItemsFunc();\n if (toolbarItemsFunc) {\n var params = {\n defaultItems: tabOptions\n };\n tabOptions = toolbarItemsFunc(params).filter(function (option) {\n if (!_this.buttons[option]) {\n console.warn(\"AG Grid: '\" + option + \"' is not a valid Chart Toolbar Option\");\n return false;\n }\n return true;\n });\n }\n // pivot charts use the column tool panel instead of the data panel\n if (this.chartController.isPivotChart()) {\n tabOptions = tabOptions.filter(function (option) {\n return option !== 'chartData';\n });\n }\n var ignoreOptions_1 = ['chartUnlink', 'chartLink', 'chartDownload'];\n this.panels = tabOptions.filter(function (option) {\n return ignoreOptions_1.indexOf(option) === -1;\n });\n this.defaultPanel = this.panels[0];\n return tabOptions.filter(function (value) {\n return ignoreOptions_1.indexOf(value) !== -1 || _this.panels.length && value === _this.panels[0];\n });\n }\n };\n ChartMenu.prototype.toggleDetached = function (e) {\n var target = e.target;\n var active = target.classList.contains('ag-icon-linked');\n target.classList.toggle('ag-icon-linked', !active);\n target.classList.toggle('ag-icon-unlinked', active);\n var tooltipKey = active ? 'chartUnlinkToolbarTooltip' : 'chartLinkToolbarTooltip';\n var tooltipTitle = this.chartTranslationService.translate(tooltipKey);\n if (tooltipTitle) {\n target.title = tooltipTitle;\n }\n this.chartController.detachChartRange();\n };\n ChartMenu.prototype.createButtons = function () {\n var _this = this;\n var chartToolbarOptions = this.getToolbarOptions();\n var menuEl = this.eMenu;\n chartToolbarOptions.forEach(function (button) {\n var buttonConfig = _this.buttons[button];\n var _a = __read$b(buttonConfig, 2),\n iconName = _a[0],\n callback = _a[1];\n var buttonEl = _.createIconNoSpan(iconName, _this.gridOptionsWrapper, undefined, true);\n buttonEl.classList.add('ag-chart-menu-icon');\n var tooltipTitle = _this.chartTranslationService.translate(button + 'ToolbarTooltip');\n if (tooltipTitle) {\n buttonEl.title = tooltipTitle;\n }\n _this.addManagedListener(buttonEl, 'click', callback);\n menuEl.appendChild(buttonEl);\n });\n };\n ChartMenu.prototype.saveChart = function () {\n var event = {\n type: ChartMenu.EVENT_DOWNLOAD_CHART\n };\n this.dispatchEvent(event);\n };\n ChartMenu.prototype.createMenuPanel = function (defaultTab) {\n var _this = this;\n var width = this.gridOptionsWrapper.chartMenuPanelWidth();\n var menuPanel = this.menuPanel = this.createBean(new AgPanel({\n minWidth: width,\n width: width,\n height: '100%',\n closable: true,\n hideTitleBar: true,\n cssIdentifier: 'chart-menu'\n }));\n menuPanel.setParentComponent(this);\n this.eMenuPanelContainer.appendChild(menuPanel.getGui());\n this.tabbedMenu = this.createBean(new TabbedChartMenu({\n controller: this.chartController,\n type: this.chartController.getChartType(),\n panels: this.panels,\n chartOptionsService: this.chartOptionsService\n }));\n this.addManagedListener(menuPanel, Component.EVENT_DESTROYED, function () {\n return _this.destroyBean(_this.tabbedMenu);\n });\n return new AgPromise(function (res) {\n window.setTimeout(function () {\n menuPanel.setBodyComponent(_this.tabbedMenu);\n _this.tabbedMenu.showTab(defaultTab);\n _this.addManagedListener(_this.eChartContainer, 'click', function (event) {\n if (_this.getGui().contains(event.target)) {\n return;\n }\n if (_this.menuVisible) {\n _this.hideMenu();\n }\n });\n res(menuPanel);\n }, 100);\n });\n };\n ChartMenu.prototype.showContainer = function () {\n if (!this.menuPanel) {\n return;\n }\n this.menuVisible = true;\n this.showParent(this.menuPanel.getWidth());\n this.refreshMenuClasses();\n };\n ChartMenu.prototype.toggleMenu = function () {\n this.menuVisible ? this.hideMenu() : this.showMenu();\n };\n ChartMenu.prototype.showMenu = function (panel, animate) {\n var _this = this;\n if (animate === void 0) {\n animate = true;\n }\n if (!animate) {\n this.eMenuPanelContainer.classList.add('ag-no-transition');\n }\n var menuPanel = panel || this.defaultPanel;\n var tab = this.panels.indexOf(menuPanel);\n if (tab < 0) {\n console.warn(\"AG Grid: '\" + panel + \"' is not a valid Chart Tool Panel name\");\n tab = this.panels.indexOf(this.defaultPanel);\n }\n if (this.menuPanel) {\n this.tabbedMenu.showTab(tab);\n this.showContainer();\n } else {\n this.createMenuPanel(tab).then(this.showContainer.bind(this));\n }\n if (!animate) {\n // Wait for menu to render\n setTimeout(function () {\n if (!_this.isAlive()) {\n return;\n }\n _this.eMenuPanelContainer.classList.remove('ag-no-transition');\n }, 500);\n }\n };\n ChartMenu.prototype.hideMenu = function () {\n var _this = this;\n this.hideParent();\n window.setTimeout(function () {\n _this.menuVisible = false;\n _this.refreshMenuClasses();\n }, 500);\n };\n ChartMenu.prototype.refreshMenuClasses = function () {\n this.eChartContainer.classList.toggle('ag-chart-menu-visible', this.menuVisible);\n this.eChartContainer.classList.toggle('ag-chart-menu-hidden', !this.menuVisible);\n if (this.gridOptionsWrapper.isEnableChartToolPanelsButton()) {\n this.eHideButtonIcon.classList.toggle('ag-icon-contracted', this.menuVisible);\n this.eHideButtonIcon.classList.toggle('ag-icon-expanded', !this.menuVisible);\n }\n };\n ChartMenu.prototype.showParent = function (width) {\n this.eMenuPanelContainer.style.minWidth = width + \"px\";\n };\n ChartMenu.prototype.hideParent = function () {\n this.eMenuPanelContainer.style.minWidth = '0';\n };\n ChartMenu.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.menuPanel && this.menuPanel.isAlive()) {\n this.destroyBean(this.menuPanel);\n }\n };\n ChartMenu.EVENT_DOWNLOAD_CHART = \"downloadChart\";\n ChartMenu.TEMPLATE = \"
\\n
\\n \\n
\";\n __decorate$L([Autowired('chartTranslationService')], ChartMenu.prototype, \"chartTranslationService\", void 0);\n __decorate$L([RefSelector(\"eMenu\")], ChartMenu.prototype, \"eMenu\", void 0);\n __decorate$L([RefSelector(\"eHideButton\")], ChartMenu.prototype, \"eHideButton\", void 0);\n __decorate$L([RefSelector(\"eHideButtonIcon\")], ChartMenu.prototype, \"eHideButtonIcon\", void 0);\n __decorate$L([PostConstruct], ChartMenu.prototype, \"postConstruct\", null);\n return ChartMenu;\n}(Component);\nvar __extends$1a = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign$j = undefined && undefined.__assign || function () {\n __assign$j = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$j.apply(this, arguments);\n};\nvar __decorate$K = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar TitleEdit = /** @class */function (_super) {\n __extends$1a(TitleEdit, _super);\n function TitleEdit(chartMenu) {\n var _this = _super.call(this, TitleEdit.TEMPLATE) || this;\n _this.chartMenu = chartMenu;\n return _this;\n }\n TitleEdit.prototype.init = function () {\n var _this = this;\n this.addManagedListener(this.getGui(), 'keypress', function (e) {\n if (e.key === 'Enter') {\n _this.endEditing();\n }\n });\n this.addManagedListener(this.getGui(), 'blur', this.endEditing.bind(this));\n };\n /* should be called when the containing component changes to a new chart proxy */\n TitleEdit.prototype.refreshTitle = function (chartController, chartOptionsService) {\n var _this = this;\n this.chartController = chartController;\n this.chartOptionsService = chartOptionsService;\n var chartProxy = this.chartController.getChartProxy();\n if (chartProxy) {\n for (var i = 0; i++; i < this.destroyableChartListeners.length) {\n this.destroyableChartListeners[i]();\n }\n this.destroyableChartListeners = [];\n }\n var chart = chartProxy.getChart();\n var canvas = chart.scene.canvas.element;\n var destroyDbleClickListener = this.addManagedListener(canvas, 'dblclick', function (event) {\n var title = chart.title;\n if (title && title.node.containsPoint(event.offsetX, event.offsetY)) {\n var bbox = title.node.computeBBox();\n var xy = title.node.inverseTransformPoint(bbox.x, bbox.y);\n _this.startEditing(__assign$j(__assign$j({}, bbox), xy));\n }\n });\n var wasInTitle = false;\n var destroyMouseMoveListener = this.addManagedListener(canvas, 'mousemove', function (event) {\n var title = chart.title;\n var inTitle = !!(title && title.enabled && title.node.containsPoint(event.offsetX, event.offsetY));\n if (wasInTitle !== inTitle) {\n canvas.style.cursor = inTitle ? 'pointer' : '';\n }\n wasInTitle = inTitle;\n });\n this.destroyableChartListeners = [destroyDbleClickListener, destroyMouseMoveListener];\n };\n TitleEdit.prototype.startEditing = function (titleBBox) {\n if (this.chartMenu && this.chartMenu.isVisible()) {\n // currently, we ignore requests to edit the chart title while the chart menu is showing\n // because the click to edit the chart will also close the chart menu, making the position\n // of the title change.\n return;\n }\n var minimumTargetInputWidth = 300;\n var maximumInputWidth = this.chartController.getChartProxy().getChart().width;\n var inputWidth = Math.max(Math.min(titleBBox.width + 20, maximumInputWidth), minimumTargetInputWidth);\n var inputElement = this.getGui();\n inputElement.classList.add('currently-editing');\n var inputStyle = inputElement.style;\n // match style of input to title that we're editing\n inputStyle.fontFamily = this.chartOptionsService.getChartOption('title.fontFamily');\n inputStyle.fontWeight = this.chartOptionsService.getChartOption('title.fontWeight');\n inputStyle.fontStyle = this.chartOptionsService.getChartOption('title.fontStyle');\n inputStyle.fontSize = this.chartOptionsService.getChartOption('title.fontSize') + 'px';\n inputStyle.color = this.chartOptionsService.getChartOption('title.color');\n // populate the input with the title, unless the title is the placeholder:\n var oldTitle = this.chartOptionsService.getChartOption('title.text');\n var isTitlePlaceholder = oldTitle === this.chartTranslationService.translate('titlePlaceholder');\n inputElement.value = isTitlePlaceholder ? '' : oldTitle;\n var inputRect = inputElement.getBoundingClientRect();\n inputStyle.left = Math.round(titleBBox.x + titleBBox.width / 2 - inputWidth / 2) + 'px';\n inputStyle.top = Math.round(titleBBox.y + titleBBox.height / 2 - inputRect.height / 2) + 'px';\n inputStyle.width = Math.round(inputWidth) + 'px';\n inputElement.focus();\n };\n TitleEdit.prototype.endEditing = function () {\n var value = this.getGui().value;\n this.chartOptionsService.setChartOption('title.text', value);\n this.eventService.dispatchEvent({\n type: 'chartTitleEdit'\n });\n this.getGui().classList.remove('currently-editing');\n };\n TitleEdit.TEMPLATE = \"\\n \";\n __decorate$K([Autowired('chartTranslationService')], TitleEdit.prototype, \"chartTranslationService\", void 0);\n __decorate$K([PostConstruct], TitleEdit.prototype, \"init\", null);\n return TitleEdit;\n}(Component);\n\n// deepMerge\nfunction emptyTarget(value) {\n return Array.isArray(value) ? [] : {};\n}\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n return options.clone !== false && options.isMergeableObject(value) ? deepMerge(emptyTarget(value), value, options) : value;\n}\nfunction defaultArrayMerge(target, source, options) {\n return target.concat(source).map(function (element) {\n return cloneUnlessOtherwiseSpecified(element, options);\n });\n}\nfunction getMergeFunction(key, options) {\n if (!options.customMerge) {\n return deepMerge;\n }\n var customMerge = options.customMerge(key);\n return typeof customMerge === 'function' ? customMerge : deepMerge;\n}\nfunction getEnumerableOwnPropertySymbols(target) {\n // @ts-ignore\n return Object.getOwnPropertySymbols\n // @ts-ignore\n ? Object.getOwnPropertySymbols(target).filter(function (symbol) {\n return target.propertyIsEnumerable(symbol);\n }) : [];\n}\nfunction getKeys(target) {\n return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target));\n}\nfunction propertyIsOnObject(object, property) {\n try {\n return property in object;\n } catch (_) {\n return false;\n }\n}\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n return propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n && !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n && Object.propertyIsEnumerable.call(target, key)); // and also unsafe if they're nonenumerable.\n}\nfunction mergeObject(target, source, options) {\n var destination = {};\n if (options.isMergeableObject(target)) {\n getKeys(target).forEach(function (key) {\n destination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n });\n }\n getKeys(source).forEach(function (key) {\n if (propertyIsUnsafe(target, key)) {\n return;\n }\n if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n destination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n } else {\n destination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n }\n });\n return destination;\n}\nfunction defaultIsMergeableObject(value) {\n return isNonNullObject(value) && !isSpecial(value);\n}\nfunction isNonNullObject(value) {\n return !!value && typeof value === 'object';\n}\nfunction isSpecial(value) {\n var stringValue = Object.prototype.toString.call(value);\n return stringValue === '[object RegExp]' || stringValue === '[object Date]';\n}\nfunction deepMerge(target, source, options) {\n options = options || {};\n options.arrayMerge = options.arrayMerge || defaultArrayMerge;\n options.isMergeableObject = options.isMergeableObject || defaultIsMergeableObject;\n // cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n // implementations can use it. The caller may not replace it.\n options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n var sourceIsArray = Array.isArray(source);\n var targetIsArray = Array.isArray(target);\n var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n if (!sourceAndTargetTypesMatch) {\n return cloneUnlessOtherwiseSpecified(source, options);\n } else if (sourceIsArray) {\n return options.arrayMerge(target, source, options);\n } else {\n return mergeObject(target, source, options);\n }\n}\nvar __assign$i = undefined && undefined.__assign || function () {\n __assign$i = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$i.apply(this, arguments);\n};\nvar ChartProxy = /** @class */function () {\n function ChartProxy(chartProxyParams) {\n this.chartProxyParams = chartProxyParams;\n this.chartType = chartProxyParams.chartType;\n this.crossFiltering = chartProxyParams.crossFiltering;\n this.crossFilterCallback = chartProxyParams.crossFilterCallback;\n this.standaloneChartType = getSeriesType(this.chartType);\n if (this.chartProxyParams.chartOptionsToRestore) {\n this.chartOptions = this.chartProxyParams.chartOptionsToRestore;\n this.chartPalette = this.chartProxyParams.chartPaletteToRestore;\n var themeOverrides = {\n overrides: this.chartOptions,\n palette: this.chartPalette\n };\n this.chartTheme = getIntegratedChartTheme(__assign$i({\n baseTheme: this.getSelectedTheme()\n }, themeOverrides));\n return;\n }\n this.chartTheme = this.createChartTheme();\n this.chartOptions = this.convertConfigToOverrides(this.chartTheme.config);\n this.chartPalette = this.chartTheme.palette;\n }\n ChartProxy.prototype.recreateChart = function () {\n var _this = this;\n if (this.chart) {\n this.destroyChart();\n }\n this.chart = this.createChart();\n if (this.crossFiltering) {\n // add event listener to chart canvas to detect when user wishes to reset filters\n var resetFilters_1 = true;\n this.chart.addEventListener('click', function (e) {\n return _this.crossFilterCallback(e, resetFilters_1);\n });\n }\n };\n ChartProxy.prototype.getChart = function () {\n return this.chart;\n };\n ChartProxy.prototype.createChartTheme = function () {\n var _this = this;\n var themeName = this.getSelectedTheme();\n var stockTheme = this.isStockTheme(themeName);\n var gridOptionsThemeOverrides = this.chartProxyParams.getGridOptionsChartThemeOverrides();\n var apiThemeOverrides = this.chartProxyParams.apiChartThemeOverrides;\n if (gridOptionsThemeOverrides || apiThemeOverrides) {\n var themeOverrides_1 = {\n overrides: ChartProxy.mergeThemeOverrides(gridOptionsThemeOverrides, apiThemeOverrides)\n };\n var getCustomTheme = function () {\n return deepMerge(_this.lookupCustomChartTheme(themeName), themeOverrides_1);\n };\n return getIntegratedChartTheme(stockTheme ? __assign$i({\n baseTheme: themeName\n }, themeOverrides_1) : getCustomTheme());\n }\n return getIntegratedChartTheme(stockTheme ? themeName : this.lookupCustomChartTheme(themeName));\n };\n ChartProxy.prototype.isStockTheme = function (themeName) {\n return _.includes(Object.keys(themes), themeName);\n };\n ChartProxy.prototype.getSelectedTheme = function () {\n var chartThemeName = this.chartProxyParams.getChartThemeName();\n var availableThemes = this.chartProxyParams.getChartThemes();\n if (!_.includes(availableThemes, chartThemeName)) {\n chartThemeName = availableThemes[0];\n }\n return chartThemeName;\n };\n ChartProxy.prototype.lookupCustomChartTheme = function (name) {\n var customChartThemes = this.chartProxyParams.customChartThemes;\n var customChartTheme = customChartThemes && customChartThemes[name];\n if (!customChartTheme) {\n console.warn(\"AG Grid: no stock theme exists with the name '\" + name + \"' and no \" + \"custom chart theme with that name was supplied to 'customChartThemes'\");\n }\n return customChartTheme;\n };\n ChartProxy.mergeThemeOverrides = function (gridOptionsThemeOverrides, apiThemeOverrides) {\n if (!gridOptionsThemeOverrides) {\n return apiThemeOverrides;\n }\n if (!apiThemeOverrides) {\n return gridOptionsThemeOverrides;\n }\n return deepMerge(gridOptionsThemeOverrides, apiThemeOverrides);\n };\n ChartProxy.prototype.downloadChart = function (dimensions, fileName, fileFormat) {\n var chart = this.chart;\n var imageFileName = fileName || (chart.title ? chart.title.text : 'chart');\n var _a = dimensions || {},\n width = _a.width,\n height = _a.height;\n AgChart.download(chart, {\n width: width,\n height: height,\n fileName: imageFileName,\n fileFormat: fileFormat\n });\n };\n ChartProxy.prototype.getChartImageDataURL = function (type) {\n return this.chart.scene.getDataURL(type);\n };\n ChartProxy.prototype.getChartOptions = function () {\n return this.chartOptions;\n };\n ChartProxy.prototype.getChartPalette = function () {\n return this.chartPalette;\n };\n ChartProxy.prototype.transformData = function (data, categoryKey, categoryAxis) {\n if (categoryAxis) {\n // replace the values for the selected category with a complex object to allow for duplicated categories\n return data.map(function (d, index) {\n var value = d[categoryKey];\n var valueString = value && value.toString ? value.toString() : '';\n var datum = __assign$i({}, d);\n datum[categoryKey] = {\n id: index,\n value: value,\n toString: function () {\n return valueString;\n }\n };\n return datum;\n });\n }\n return data;\n };\n ChartProxy.prototype.getCommonChartOptions = function () {\n var _this = this;\n var getChartOption = function (propertyKey) {\n return _.get(_this.chartOptions, _this.standaloneChartType + \".\" + propertyKey, undefined);\n };\n return {\n padding: getChartOption('padding'),\n background: getChartOption('background'),\n title: getChartOption('title'),\n subtitle: getChartOption('subtitle'),\n tooltip: getChartOption('tooltip'),\n legend: getChartOption('legend'),\n navigator: getChartOption('navigator')\n };\n };\n ChartProxy.prototype.convertConfigToOverrides = function (config) {\n var isComboChart = ['columnLineCombo', 'areaColumnCombo', 'customCombo'].includes(this.chartType);\n var overrideObjs = isComboChart ? ['line', 'area', 'column', 'cartesian'] : [this.standaloneChartType];\n var overrides = {};\n overrideObjs.forEach(function (overrideObj) {\n var chartOverrides = deepMerge({}, config[overrideObj]);\n chartOverrides.series = chartOverrides.series[overrideObj];\n // special handing to add the scatter paired mode to the chart options\n if (overrideObj === 'scatter') {\n chartOverrides.paired = true;\n }\n overrides[overrideObj] = chartOverrides;\n });\n return overrides;\n };\n ChartProxy.prototype.destroy = function () {\n this.destroyChart();\n };\n ChartProxy.prototype.destroyChart = function () {\n if (this.chart) {\n this.chart.destroy();\n this.chart = undefined;\n }\n };\n return ChartProxy;\n}();\nvar __extends$19 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign$h = undefined && undefined.__assign || function () {\n __assign$h = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$h.apply(this, arguments);\n};\nvar CartesianChartProxy = /** @class */function (_super) {\n __extends$19(CartesianChartProxy, _super);\n function CartesianChartProxy(params) {\n var _this = _super.call(this, params) || this;\n _this.supportsAxesUpdates = true;\n _this.axisTypeToClassMap = {\n number: NumberAxis,\n category: CategoryAxis,\n groupedCategory: GroupedCategoryAxis,\n time: TimeAxis\n };\n _this.crossFilteringAllPoints = new Set();\n _this.crossFilteringSelectedPoints = [];\n return _this;\n }\n CartesianChartProxy.prototype.createChart = function () {\n return AgChart.create({\n container: this.chartProxyParams.parentElement,\n theme: this.chartTheme\n });\n };\n CartesianChartProxy.prototype.update = function (params) {\n if (this.supportsAxesUpdates) {\n this.updateAxes(params);\n }\n var options = __assign$h(__assign$h({}, this.getCommonChartOptions()), {\n data: this.getData(params),\n axes: this.getAxes(params),\n series: this.getSeries(params)\n });\n if (this.crossFiltering) {\n options = this.addCrossFilterOptions(options);\n }\n AgChart.update(this.chart, options);\n };\n CartesianChartProxy.prototype.getDataTransformedData = function (params) {\n var isCategoryAxis = this.xAxisType === 'category';\n return this.transformData(params.data, params.category.id, isCategoryAxis);\n };\n CartesianChartProxy.prototype.addCrossFilterOptions = function (options) {\n var _this = this;\n var seriesOverrides = this.extractSeriesOverrides();\n options.tooltip = __assign$h(__assign$h({}, options.tooltip), {\n delay: 500\n });\n options.legend = __assign$h(__assign$h(__assign$h({}, options.legend), seriesOverrides.legend), {\n listeners: {\n legendItemClick: function (e) {\n _this.chart.series.forEach(function (s) {\n s.toggleSeriesItem(e.itemId, e.enabled);\n s.toggleSeriesItem(e.itemId + \"-filtered-out\", e.enabled);\n });\n }\n }\n });\n return options;\n };\n CartesianChartProxy.prototype.extractSeriesOverrides = function (chartSeriesType) {\n var seriesOverrides = this.chartOptions[chartSeriesType ? chartSeriesType : this.standaloneChartType].series;\n // TODO: remove once `yKeys` and `yNames` have been removed from the options\n delete seriesOverrides.yKeys;\n delete seriesOverrides.yNames;\n return seriesOverrides;\n };\n CartesianChartProxy.prototype.updateAxes = function (params) {\n // when grouping recreate chart if the axis is not a 'groupedCategory', otherwise return\n if (params.grouping) {\n if (!(this.axisTypeToClassMap[this.xAxisType] === GroupedCategoryAxis)) {\n this.xAxisType = 'groupedCategory';\n this.recreateChart();\n }\n return;\n }\n // only update axis has changed and recreate the chart, i.e. switching from 'category' to 'time' axis\n var newXAxisType = CartesianChartProxy.isTimeAxis(params) ? 'time' : 'category';\n if (newXAxisType !== this.xAxisType) {\n this.xAxisType = newXAxisType;\n this.recreateChart();\n }\n };\n CartesianChartProxy.prototype.getAxesOptions = function (chartSeriesType) {\n if (chartSeriesType === void 0) {\n chartSeriesType = this.standaloneChartType;\n }\n return this.chartOptions[chartSeriesType].axes;\n };\n CartesianChartProxy.isTimeAxis = function (params) {\n if (params.category && params.category.chartDataType) {\n return params.category.chartDataType === 'time';\n }\n var testDatum = params.data[0];\n return (testDatum && testDatum[params.category.id]) instanceof Date;\n };\n CartesianChartProxy.prototype.crossFilteringReset = function () {\n this.crossFilteringSelectedPoints = [];\n this.crossFilteringAllPoints.clear();\n };\n CartesianChartProxy.prototype.crossFilteringPointSelected = function (point) {\n return this.crossFilteringSelectedPoints.length == 0 || this.crossFilteringSelectedPoints.includes(point);\n };\n CartesianChartProxy.prototype.crossFilteringDeselectedPoints = function () {\n return this.crossFilteringSelectedPoints.length > 0 && this.crossFilteringAllPoints.size !== this.crossFilteringSelectedPoints.length;\n };\n CartesianChartProxy.prototype.extractLineAreaCrossFilterSeries = function (series, params) {\n var _this = this;\n var getYKey = function (yKey) {\n if (_this.standaloneChartType === 'area') {\n var lastSelectedChartId = params.getCrossFilteringContext().lastSelectedChartId;\n return lastSelectedChartId === params.chartId ? yKey + '-total' : yKey;\n }\n return yKey + '-total';\n };\n return series.map(function (s) {\n var seriesOverrides = _this.extractSeriesOverrides();\n s.yKey = getYKey(s.yKey);\n s.listeners = __assign$h(__assign$h({}, seriesOverrides.listeners), {\n nodeClick: function (e) {\n var value = e.datum[s.xKey];\n var multiSelection = e.event.metaKey || e.event.ctrlKey;\n _this.crossFilteringAddSelectedPoint(multiSelection, value);\n _this.crossFilterCallback(e);\n }\n });\n s.marker = {\n formatter: function (p) {\n var category = p.datum[params.category.id];\n return {\n fill: p.highlighted ? 'yellow' : p.fill,\n size: p.highlighted ? 14 : _this.crossFilteringPointSelected(category) ? 8 : 0\n };\n }\n };\n if (_this.standaloneChartType === 'area') {\n s.fillOpacity = _this.crossFilteringDeselectedPoints() ? 0.3 : 1;\n }\n if (_this.standaloneChartType === 'line') {\n s.strokeOpacity = _this.crossFilteringDeselectedPoints() ? 0.3 : 1;\n }\n return s;\n });\n };\n CartesianChartProxy.prototype.getLineAreaCrossFilterData = function (params) {\n var _this = this;\n this.crossFilteringAllPoints.clear();\n var colId = params.fields[0].colId;\n var filteredOutColId = colId + \"-filtered-out\";\n var lastSelectedChartId = params.getCrossFilteringContext().lastSelectedChartId;\n return params.data.map(function (d) {\n var category = d[params.category.id];\n _this.crossFilteringAllPoints.add(category);\n var pointSelected = _this.crossFilteringPointSelected(category);\n if (_this.standaloneChartType === 'area' && lastSelectedChartId === params.chartId) {\n d[colId + \"-total\"] = pointSelected ? d[colId] : d[colId] + d[filteredOutColId];\n }\n if (_this.standaloneChartType === 'line') {\n d[colId + \"-total\"] = pointSelected ? d[colId] : d[colId] + d[filteredOutColId];\n }\n return d;\n });\n };\n CartesianChartProxy.prototype.crossFilteringAddSelectedPoint = function (multiSelection, value) {\n multiSelection ? this.crossFilteringSelectedPoints.push(value) : this.crossFilteringSelectedPoints = [value];\n };\n return CartesianChartProxy;\n}(ChartProxy);\nfunction hexToRGBA(hex, alpha) {\n var r = parseInt(hex.slice(1, 3), 16);\n var g = parseInt(hex.slice(3, 5), 16);\n var b = parseInt(hex.slice(5, 7), 16);\n return alpha ? \"rgba(\" + r + \", \" + g + \", \" + b + \", \" + alpha + \")\" : \"rgba(\" + r + \", \" + g + \", \" + b + \")\";\n}\nfunction changeOpacity(fills, alpha) {\n return fills.map(function (fill) {\n var c = Color$2.fromString(fill);\n return new Color$2(c.r, c.g, c.b, alpha).toHexString();\n });\n}\nvar __extends$18 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign$g = undefined && undefined.__assign || function () {\n __assign$g = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$g.apply(this, arguments);\n};\nvar BarChartProxy = /** @class */function (_super) {\n __extends$18(BarChartProxy, _super);\n function BarChartProxy(params) {\n var _this = _super.call(this, params) || this;\n // when the standalone chart type is 'bar' - xAxis is positioned to the 'left'\n _this.xAxisType = params.grouping ? 'groupedCategory' : 'category';\n _this.yAxisType = 'number';\n _this.recreateChart();\n return _this;\n }\n BarChartProxy.prototype.getData = function (params) {\n return this.getDataTransformedData(params);\n };\n BarChartProxy.prototype.getAxes = function () {\n var isBar = this.standaloneChartType === 'bar';\n var axisOptions = this.getAxesOptions();\n var axes = [__assign$g(__assign$g({}, deepMerge(axisOptions[this.xAxisType], axisOptions[this.xAxisType].bottom)), {\n type: this.xAxisType,\n position: isBar ? ChartAxisPosition.Left : ChartAxisPosition.Bottom\n }), __assign$g(__assign$g({}, deepMerge(axisOptions[this.yAxisType], axisOptions[this.yAxisType].left)), {\n type: this.yAxisType,\n position: isBar ? ChartAxisPosition.Bottom : ChartAxisPosition.Left\n })];\n // special handling to add a default label formatter to show '%' for normalized charts if none is provided\n if (this.isNormalised()) {\n var numberAxis = axes[1];\n numberAxis.label = __assign$g(__assign$g({}, numberAxis.label), {\n formatter: function (params) {\n return Math.round(params.value) + '%';\n }\n });\n }\n return axes;\n };\n BarChartProxy.prototype.getSeries = function (params) {\n var _this = this;\n var groupedCharts = ['groupedColumn', 'groupedBar'];\n var isGrouped = !this.crossFiltering && _.includes(groupedCharts, this.chartType);\n var series = params.fields.map(function (f) {\n return __assign$g(__assign$g({}, _this.extractSeriesOverrides()), {\n type: _this.standaloneChartType,\n grouped: isGrouped,\n normalizedTo: _this.isNormalised() ? 100 : undefined,\n xKey: params.category.id,\n xName: params.category.name,\n yKey: f.colId,\n yName: f.displayName\n });\n });\n return this.crossFiltering ? this.extractCrossFilterSeries(series) : series;\n };\n BarChartProxy.prototype.extractCrossFilterSeries = function (series) {\n var _this = this;\n var palette = this.chartTheme.palette;\n var updatePrimarySeries = function (seriesOptions, index) {\n return __assign$g(__assign$g({}, seriesOptions), {\n highlightStyle: {\n item: {\n fill: undefined\n }\n },\n fill: palette.fills[index],\n stroke: palette.strokes[index],\n listeners: __assign$g(__assign$g({}, _this.extractSeriesOverrides().listeners), {\n nodeClick: _this.crossFilterCallback\n })\n });\n };\n var updateFilteredOutSeries = function (seriesOptions) {\n var yKey = seriesOptions.yKey + '-filtered-out';\n return __assign$g(__assign$g({}, deepMerge({}, seriesOptions)), {\n yKey: yKey,\n fill: hexToRGBA(seriesOptions.fill, '0.3'),\n stroke: hexToRGBA(seriesOptions.stroke, '0.3'),\n hideInLegend: [yKey]\n });\n };\n var allSeries = [];\n for (var i = 0; i < series.length; i++) {\n // update primary series\n var primarySeries = updatePrimarySeries(series[i], i);\n allSeries.push(primarySeries);\n // add 'filtered-out' series\n allSeries.push(updateFilteredOutSeries(primarySeries));\n }\n return allSeries;\n };\n BarChartProxy.prototype.isNormalised = function () {\n var normalisedCharts = ['normalizedColumn', 'normalizedBar'];\n return !this.crossFiltering && _.includes(normalisedCharts, this.chartType);\n };\n return BarChartProxy;\n}(CartesianChartProxy);\nvar __extends$17 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign$f = undefined && undefined.__assign || function () {\n __assign$f = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$f.apply(this, arguments);\n};\nvar AreaChartProxy = /** @class */function (_super) {\n __extends$17(AreaChartProxy, _super);\n function AreaChartProxy(params) {\n var _this = _super.call(this, params) || this;\n _this.xAxisType = params.grouping ? 'groupedCategory' : 'category';\n _this.yAxisType = 'number';\n _this.recreateChart();\n return _this;\n }\n AreaChartProxy.prototype.getData = function (params) {\n return this.crossFiltering ? this.getLineAreaCrossFilterData(params) : this.getDataTransformedData(params);\n };\n AreaChartProxy.prototype.getAxes = function () {\n var axisOptions = this.getAxesOptions();\n return [__assign$f(__assign$f({}, deepMerge(axisOptions[this.xAxisType], axisOptions[this.xAxisType].bottom)), {\n type: this.xAxisType,\n position: ChartAxisPosition.Bottom\n }), __assign$f(__assign$f({}, deepMerge(axisOptions[this.yAxisType], axisOptions[this.yAxisType].left)), {\n type: this.yAxisType,\n position: ChartAxisPosition.Left\n })];\n };\n AreaChartProxy.prototype.getSeries = function (params) {\n var _this = this;\n var series = params.fields.map(function (f) {\n return __assign$f(__assign$f({}, _this.extractSeriesOverrides()), {\n type: _this.standaloneChartType,\n xKey: params.category.id,\n xName: params.category.name,\n yKey: f.colId,\n yName: f.displayName,\n normalizedTo: _this.chartType === 'normalizedArea' ? 100 : undefined,\n stacked: ['normalizedArea', 'stackedArea'].includes(_this.chartType)\n });\n });\n return this.crossFiltering ? this.extractLineAreaCrossFilterSeries(series, params) : series;\n };\n return AreaChartProxy;\n}(CartesianChartProxy);\nvar __extends$16 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign$e = undefined && undefined.__assign || function () {\n __assign$e = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$e.apply(this, arguments);\n};\nvar LineChartProxy = /** @class */function (_super) {\n __extends$16(LineChartProxy, _super);\n function LineChartProxy(params) {\n var _this = _super.call(this, params) || this;\n _this.xAxisType = params.grouping ? 'groupedCategory' : 'category';\n _this.yAxisType = 'number';\n _this.recreateChart();\n return _this;\n }\n LineChartProxy.prototype.getData = function (params) {\n return this.crossFiltering ? this.getLineAreaCrossFilterData(params) : this.getDataTransformedData(params);\n };\n LineChartProxy.prototype.getAxes = function () {\n var axisOptions = this.getAxesOptions();\n return [__assign$e(__assign$e({}, deepMerge(axisOptions[this.xAxisType], axisOptions[this.xAxisType].bottom)), {\n type: this.xAxisType,\n position: ChartAxisPosition.Bottom\n }), __assign$e(__assign$e({}, deepMerge(axisOptions[this.yAxisType], axisOptions[this.yAxisType].left)), {\n type: this.yAxisType,\n position: ChartAxisPosition.Left\n })];\n };\n LineChartProxy.prototype.getSeries = function (params) {\n var _this = this;\n var series = params.fields.map(function (f) {\n return __assign$e(__assign$e({}, _this.extractSeriesOverrides()), {\n type: _this.standaloneChartType,\n xKey: params.category.id,\n xName: params.category.name,\n yKey: f.colId,\n yName: f.displayName\n });\n });\n return this.crossFiltering ? this.extractLineAreaCrossFilterSeries(series, params) : series;\n };\n return LineChartProxy;\n}(CartesianChartProxy);\nvar __extends$15 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign$d = undefined && undefined.__assign || function () {\n __assign$d = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$d.apply(this, arguments);\n};\nvar PieChartProxy = /** @class */function (_super) {\n __extends$15(PieChartProxy, _super);\n function PieChartProxy(params) {\n var _this = _super.call(this, params) || this;\n _this.recreateChart();\n return _this;\n }\n PieChartProxy.prototype.createChart = function () {\n return AgChart.create({\n type: 'pie',\n container: this.chartProxyParams.parentElement,\n theme: this.chartTheme\n });\n };\n PieChartProxy.prototype.update = function (params) {\n var data = params.data,\n category = params.category;\n var options = __assign$d(__assign$d({}, this.getCommonChartOptions()), {\n data: this.crossFiltering ? this.getCrossFilterData(params) : this.transformData(data, category.id),\n series: this.getSeries(params)\n });\n if (this.crossFiltering) {\n options = this.getCrossFilterChartOptions(options);\n }\n AgChart.update(this.chart, options);\n };\n PieChartProxy.prototype.getSeries = function (params) {\n var _this = this;\n var numFields = params.fields.length;\n var offset = {\n currentOffset: 0,\n offsetAmount: numFields > 1 ? 20 : 40\n };\n var series = this.getFields(params).map(function (f) {\n var seriesDefaults = _this.extractSeriesOverrides();\n // options shared by 'pie' and 'doughnut' charts\n var options = __assign$d(__assign$d({}, seriesDefaults), {\n type: _this.standaloneChartType,\n angleKey: f.colId,\n angleName: f.displayName,\n calloutLabelKey: params.category.id,\n calloutLabelName: params.category.name\n });\n if (_this.chartType === 'doughnut') {\n var _a = PieChartProxy.calculateOffsets(offset),\n outerRadiusOffset = _a.outerRadiusOffset,\n innerRadiusOffset = _a.innerRadiusOffset;\n // augment shared options with 'doughnut' specific options\n return __assign$d(__assign$d({}, options), {\n outerRadiusOffset: outerRadiusOffset,\n innerRadiusOffset: innerRadiusOffset,\n title: __assign$d(__assign$d({}, seriesDefaults.title), {\n text: seriesDefaults.title.text || f.displayName,\n showInLegend: numFields > 1\n }),\n calloutLine: __assign$d(__assign$d({}, seriesDefaults.calloutLine), {\n colors: _this.chartTheme.palette.strokes\n })\n });\n }\n return options;\n });\n return this.crossFiltering ? this.extractCrossFilterSeries(series) : series;\n };\n PieChartProxy.prototype.getCrossFilterChartOptions = function (options) {\n var _this = this;\n var seriesOverrides = this.extractSeriesOverrides();\n return __assign$d(__assign$d({}, options), {\n tooltip: __assign$d(__assign$d({}, seriesOverrides.tooltip), {\n delay: 500\n }),\n legend: __assign$d(__assign$d({}, seriesOverrides.legend), {\n listeners: {\n legendItemClick: function (e) {\n _this.chart.series.forEach(function (s) {\n return s.toggleSeriesItem(e.itemId, e.enabled);\n });\n }\n }\n })\n });\n };\n PieChartProxy.prototype.getCrossFilterData = function (params) {\n var colId = params.fields[0].colId;\n var filteredOutColId = colId + \"-filtered-out\";\n return params.data.map(function (d) {\n var total = d[colId] + d[filteredOutColId];\n d[colId + \"-total\"] = total;\n d[filteredOutColId] = 1; // normalise to 1\n d[colId] = d[colId] / total; // fraction of 1\n return d;\n });\n };\n PieChartProxy.prototype.extractCrossFilterSeries = function (series) {\n var _this = this;\n var palette = this.chartTheme.palette;\n var seriesOverrides = this.extractSeriesOverrides();\n var primaryOptions = function (seriesOptions) {\n return __assign$d(__assign$d({}, seriesOptions), {\n calloutLabel: {\n enabled: false\n },\n highlightStyle: {\n item: {\n fill: undefined\n }\n },\n radiusKey: seriesOptions.angleKey,\n angleKey: seriesOptions.angleKey + '-total',\n radiusMin: 0,\n radiusMax: 1,\n listeners: __assign$d(__assign$d({}, seriesOverrides.listeners), {\n nodeClick: _this.crossFilterCallback\n }),\n tooltip: __assign$d(__assign$d({}, seriesOverrides.tooltip), {\n renderer: _this.getCrossFilterTooltipRenderer(\"\" + seriesOptions.angleName)\n })\n });\n };\n var filteredOutOptions = function (seriesOptions, angleKey) {\n var _a, _b, _c;\n return __assign$d(__assign$d({}, deepMerge({}, primaryOpts)), {\n radiusKey: angleKey + '-filtered-out',\n calloutLabel: seriesOverrides.calloutLabel,\n calloutLine: seriesOverrides.calloutLine && __assign$d(__assign$d({}, seriesOverrides.calloutLine), {\n colors: (_a = seriesOverrides.calloutLine.colors, _a !== null && _a !== void 0 ? _a : palette.strokes)\n }),\n fills: changeOpacity((_b = seriesOptions.fills, _b !== null && _b !== void 0 ? _b : palette.fills), 0.3),\n strokes: changeOpacity((_c = seriesOptions.strokes, _c !== null && _c !== void 0 ? _c : palette.strokes), 0.3),\n showInLegend: false\n });\n };\n // currently, only single 'doughnut' cross-filter series are supported\n var primarySeries = series[0];\n // update primary series\n var angleKey = primarySeries.angleKey;\n var primaryOpts = primaryOptions(primarySeries);\n return [filteredOutOptions(primarySeries, angleKey), primaryOpts];\n };\n PieChartProxy.calculateOffsets = function (offset) {\n var outerRadiusOffset = offset.currentOffset;\n offset.currentOffset -= offset.offsetAmount;\n var innerRadiusOffset = offset.currentOffset;\n offset.currentOffset -= offset.offsetAmount;\n return {\n outerRadiusOffset: outerRadiusOffset,\n innerRadiusOffset: innerRadiusOffset\n };\n };\n PieChartProxy.prototype.getFields = function (params) {\n return this.chartType === 'pie' ? params.fields.slice(0, 1) : params.fields;\n };\n PieChartProxy.prototype.getCrossFilterTooltipRenderer = function (title) {\n return function (params) {\n var label = params.datum[params.calloutLabelKey];\n var ratio = params.datum[params.radiusKey];\n var totalValue = params.angleValue;\n return {\n title: title,\n content: label + \": \" + totalValue * ratio\n };\n };\n };\n PieChartProxy.prototype.extractSeriesOverrides = function () {\n return this.chartOptions[this.standaloneChartType].series;\n };\n PieChartProxy.prototype.crossFilteringReset = function () {\n // not required in pie charts\n };\n return PieChartProxy;\n}(ChartProxy);\nvar __extends$14 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign$c = undefined && undefined.__assign || function () {\n __assign$c = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$c.apply(this, arguments);\n};\nvar __values$4 = undefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$a = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread$3 = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$a(arguments[i]));\n return ar;\n};\nvar ScatterChartProxy = /** @class */function (_super) {\n __extends$14(ScatterChartProxy, _super);\n function ScatterChartProxy(params) {\n var _this = _super.call(this, params) || this;\n _this.supportsAxesUpdates = false;\n _this.xAxisType = 'number';\n _this.yAxisType = 'number';\n _this.recreateChart();\n return _this;\n }\n ScatterChartProxy.prototype.getData = function (params) {\n return this.getDataTransformedData(params);\n };\n ScatterChartProxy.prototype.getAxes = function () {\n var axisOptions = this.getAxesOptions();\n return [__assign$c(__assign$c({}, deepMerge(axisOptions[this.xAxisType], axisOptions[this.xAxisType].bottom)), {\n type: this.xAxisType,\n position: ChartAxisPosition.Bottom\n }), __assign$c(__assign$c({}, deepMerge(axisOptions[this.yAxisType], axisOptions[this.yAxisType].left)), {\n type: this.yAxisType,\n position: ChartAxisPosition.Left\n })];\n };\n ScatterChartProxy.prototype.getSeries = function (params) {\n var _this = this;\n var paired = this.chartOptions[this.standaloneChartType].paired;\n var seriesDefinitions = this.getSeriesDefinitions(params.fields, paired);\n var labelFieldDefinition = params.category.id === ChartDataModel.DEFAULT_CATEGORY ? undefined : params.category;\n var series = seriesDefinitions.map(function (seriesDefinition) {\n return __assign$c(__assign$c({}, _this.extractSeriesOverrides()), {\n type: _this.standaloneChartType,\n xKey: seriesDefinition.xField.colId,\n xName: seriesDefinition.xField.displayName,\n yKey: seriesDefinition.yField.colId,\n yName: seriesDefinition.yField.displayName,\n title: seriesDefinition.yField.displayName + \" vs \" + seriesDefinition.xField.displayName,\n sizeKey: seriesDefinition.sizeField ? seriesDefinition.sizeField.colId : undefined,\n sizeName: seriesDefinition.sizeField ? seriesDefinition.sizeField.displayName : undefined,\n labelKey: labelFieldDefinition ? labelFieldDefinition.id : seriesDefinition.yField.colId,\n labelName: labelFieldDefinition ? labelFieldDefinition.name : undefined\n });\n });\n return this.crossFiltering ? this.extractCrossFilterSeries(series, params) : series;\n };\n ScatterChartProxy.prototype.extractCrossFilterSeries = function (series, params) {\n var _this = this;\n var data = params.data;\n var palette = this.chartTheme.palette;\n var filteredOutKey = function (key) {\n return key + \"-filtered-out\";\n };\n var calcMarkerDomain = function (data, sizeKey) {\n var e_1, _a;\n var _b;\n var markerDomain = [Infinity, -Infinity];\n if (sizeKey != null) {\n try {\n for (var data_1 = __values$4(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) {\n var datum = data_1_1.value;\n var value = (_b = datum[sizeKey], _b !== null && _b !== void 0 ? _b : datum[filteredOutKey(sizeKey)]);\n if (value < markerDomain[0]) {\n markerDomain[0] = value;\n }\n if (value > markerDomain[1]) {\n markerDomain[1] = value;\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (data_1_1 && !data_1_1.done && (_a = data_1.return)) _a.call(data_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n }\n if (markerDomain[0] <= markerDomain[1]) {\n return markerDomain;\n }\n return undefined;\n };\n var updatePrimarySeries = function (series, idx) {\n var sizeKey = series.sizeKey;\n var fill = palette.fills[idx];\n var stroke = palette.strokes[idx];\n var markerDomain = calcMarkerDomain(data, sizeKey);\n var marker = __assign$c(__assign$c({}, series.marker), {\n fill: fill,\n stroke: stroke,\n domain: markerDomain\n });\n return __assign$c(__assign$c({}, series), {\n marker: marker,\n highlightStyle: {\n item: {\n fill: 'yellow'\n }\n },\n listeners: __assign$c(__assign$c({}, series.listeners), {\n nodeClick: _this.crossFilterCallback\n })\n });\n };\n var updateFilteredOutSeries = function (series) {\n var sizeKey = series.sizeKey,\n yKey = series.yKey,\n xKey = series.xKey;\n if (sizeKey != null) {\n sizeKey = filteredOutKey(sizeKey);\n }\n return __assign$c(__assign$c({}, series), {\n yKey: filteredOutKey(yKey),\n xKey: filteredOutKey(xKey),\n marker: __assign$c(__assign$c({}, series.marker), {\n fillOpacity: 0.3,\n strokeOpacity: 0.3\n }),\n sizeKey: sizeKey,\n showInLegend: false,\n listeners: __assign$c(__assign$c({}, series.listeners), {\n nodeClick: function (e) {\n var _a;\n var value = e.datum[filteredOutKey(xKey)];\n // Need to remove the `-filtered-out` suffixes from the event so that\n // upstream processing maps the event correctly onto grid column ids.\n var filterableEvent = __assign$c(__assign$c({}, e), {\n xKey: xKey,\n datum: __assign$c(__assign$c({}, e.datum), (_a = {}, _a[xKey] = value, _a))\n });\n _this.crossFilterCallback(filterableEvent);\n }\n })\n });\n };\n var updatedSeries = series.map(updatePrimarySeries);\n return __spread$3(updatedSeries, updatedSeries.map(updateFilteredOutSeries));\n };\n ScatterChartProxy.prototype.getSeriesDefinitions = function (fields, paired) {\n if (fields.length < 2) {\n return [];\n }\n var isBubbleChart = this.chartType === 'bubble';\n if (paired) {\n if (isBubbleChart) {\n return fields.map(function (currentXField, i) {\n return i % 3 === 0 ? {\n xField: currentXField,\n yField: fields[i + 1],\n sizeField: fields[i + 2]\n } : null;\n }).filter(function (x) {\n return x && x.yField && x.sizeField;\n });\n }\n return fields.map(function (currentXField, i) {\n return i % 2 === 0 ? {\n xField: currentXField,\n yField: fields[i + 1]\n } : null;\n }).filter(function (x) {\n return x && x.yField;\n });\n }\n var xField = fields[0];\n if (isBubbleChart) {\n return fields.map(function (yField, i) {\n return i % 2 === 1 ? {\n xField: xField,\n yField: yField,\n sizeField: fields[i + 1]\n } : null;\n }).filter(function (x) {\n return x && x.sizeField;\n });\n }\n return fields.filter(function (value, i) {\n return i > 0;\n }).map(function (yField) {\n return {\n xField: xField,\n yField: yField\n };\n });\n };\n return ScatterChartProxy;\n}(CartesianChartProxy);\nvar __extends$13 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign$b = undefined && undefined.__assign || function () {\n __assign$b = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$b.apply(this, arguments);\n};\nvar HistogramChartProxy = /** @class */function (_super) {\n __extends$13(HistogramChartProxy, _super);\n function HistogramChartProxy(params) {\n var _this = _super.call(this, params) || this;\n _this.supportsAxesUpdates = false;\n _this.xAxisType = 'number';\n _this.yAxisType = 'number';\n _this.recreateChart();\n return _this;\n }\n HistogramChartProxy.prototype.getData = function (params) {\n return this.getDataTransformedData(params);\n };\n HistogramChartProxy.prototype.getSeries = function (params) {\n var firstField = params.fields[0]; // multiple series are not supported!\n return [__assign$b(__assign$b({}, this.extractSeriesOverrides()), {\n type: this.standaloneChartType,\n xKey: firstField.colId,\n xName: firstField.displayName,\n yName: this.chartProxyParams.translate(\"histogramFrequency\"),\n areaPlot: false\n })];\n };\n HistogramChartProxy.prototype.getAxes = function () {\n var axisOptions = this.getAxesOptions();\n return [__assign$b(__assign$b({}, deepMerge(axisOptions[this.xAxisType], axisOptions[this.xAxisType].bottom)), {\n type: this.xAxisType,\n position: ChartAxisPosition.Bottom\n }), __assign$b(__assign$b({}, deepMerge(axisOptions[this.yAxisType], axisOptions[this.yAxisType].left)), {\n type: this.yAxisType,\n position: ChartAxisPosition.Left\n })];\n };\n return HistogramChartProxy;\n}(CartesianChartProxy);\nvar __extends$12 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$J = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar ChartOptionsService = /** @class */function (_super) {\n __extends$12(ChartOptionsService, _super);\n function ChartOptionsService(chartController) {\n var _this = _super.call(this) || this;\n _this.chartController = chartController;\n return _this;\n }\n ChartOptionsService.prototype.getChartOption = function (expression) {\n return _.get(this.getChart(), expression, undefined);\n };\n ChartOptionsService.prototype.setChartOption = function (expression, value) {\n var _this = this;\n var chartSeriesTypes = this.chartController.getChartSeriesTypes();\n if (this.chartController.isComboChart()) {\n chartSeriesTypes.push('cartesian');\n }\n // we need to update chart options on each series type for combo charts\n chartSeriesTypes.forEach(function (optionsType) {\n // update options\n var options = _.get(_this.getChartOptions(), \"\" + optionsType, undefined);\n _.set(options, expression, value);\n });\n // update chart\n this.updateChart();\n this.raiseChartOptionsChangedEvent();\n };\n ChartOptionsService.prototype.getAxisProperty = function (expression) {\n return _.get(this.getChart().axes[0], expression, undefined);\n };\n ChartOptionsService.prototype.setAxisProperty = function (expression, value) {\n var _this = this;\n // update axis options\n var chart = this.getChart();\n chart.axes.forEach(function (axis) {\n _this.updateAxisOptions(axis, expression, value);\n });\n // update chart\n this.updateChart();\n this.raiseChartOptionsChangedEvent();\n };\n ChartOptionsService.prototype.getLabelRotation = function (axisType) {\n var axis = this.getAxis(axisType);\n return _.get(axis, 'label.rotation', undefined);\n };\n ChartOptionsService.prototype.setLabelRotation = function (axisType, value) {\n var chartAxis = this.getAxis(axisType);\n if (chartAxis) {\n this.updateAxisOptions(chartAxis, 'label.rotation', value);\n this.updateChart();\n this.raiseChartOptionsChangedEvent();\n }\n };\n ChartOptionsService.prototype.getSeriesOption = function (expression, seriesType) {\n var series = this.getChart().series.find(function (s) {\n return ChartOptionsService.isMatchingSeries(seriesType, s);\n });\n return _.get(series, expression, undefined);\n };\n ChartOptionsService.prototype.setSeriesOption = function (expression, value, seriesType) {\n // update series options\n var options = this.getChartOptions();\n if (!options[seriesType]) {\n options[seriesType] = {};\n }\n _.set(options[seriesType].series, expression, value);\n // update chart\n this.updateChart();\n this.raiseChartOptionsChangedEvent();\n };\n ChartOptionsService.prototype.getPairedMode = function () {\n var optionsType = getSeriesType(this.getChartType());\n return _.get(this.getChartOptions(), optionsType + \".paired\", undefined);\n };\n ChartOptionsService.prototype.setPairedMode = function (paired) {\n var optionsType = getSeriesType(this.getChartType());\n var options = _.get(this.getChartOptions(), \"\" + optionsType, undefined);\n _.set(options, 'paired', paired);\n };\n ChartOptionsService.prototype.getAxis = function (axisType) {\n var chart = this.getChart();\n if (!chart.axes || chart.axes.length < 1) {\n return undefined;\n }\n if (axisType === 'xAxis') {\n return chart.axes && chart.axes[0].direction === 'x' ? chart.axes[0] : chart.axes[1];\n }\n return chart.axes && chart.axes[1].direction === 'y' ? chart.axes[1] : chart.axes[0];\n };\n ChartOptionsService.prototype.updateAxisOptions = function (chartAxis, expression, value) {\n var optionsType = getSeriesType(this.getChartType());\n var axisOptions = this.getChartOptions()[optionsType].axes;\n if (chartAxis instanceof NumberAxis) {\n _.set(axisOptions.number, expression, value);\n } else if (chartAxis instanceof CategoryAxis) {\n _.set(axisOptions.category, expression, value);\n } else if (chartAxis instanceof TimeAxis) {\n _.set(axisOptions.time, expression, value);\n } else if (chartAxis instanceof GroupedCategoryAxis) {\n _.set(axisOptions.groupedCategory, expression, value);\n }\n };\n ChartOptionsService.prototype.getChartType = function () {\n return this.chartController.getChartType();\n };\n ChartOptionsService.prototype.getChart = function () {\n return this.chartController.getChartProxy().getChart();\n };\n ChartOptionsService.prototype.getChartOptions = function () {\n return this.chartController.getChartProxy().getChartOptions();\n };\n ChartOptionsService.prototype.updateChart = function () {\n var chartUpdateParams = this.chartController.getChartUpdateParams();\n this.chartController.getChartProxy().update(chartUpdateParams);\n };\n ChartOptionsService.prototype.raiseChartOptionsChangedEvent = function () {\n var chartModel = this.chartController.getChartModel();\n var event = Object.freeze({\n type: Events.EVENT_CHART_OPTIONS_CHANGED,\n chartId: chartModel.chartId,\n chartType: chartModel.chartType,\n chartThemeName: chartModel.chartThemeName,\n chartOptions: chartModel.chartOptions\n });\n this.eventService.dispatchEvent(event);\n };\n ChartOptionsService.isMatchingSeries = function (seriesType, series) {\n return seriesType === 'area' && series instanceof AreaSeries ? true : seriesType === 'bar' && series instanceof BarSeries ? true : seriesType === 'column' && series instanceof BarSeries ? true : seriesType === 'histogram' && series instanceof HistogramSeries ? true : seriesType === 'line' && series instanceof LineSeries ? true : seriesType === 'pie' && series instanceof PieSeries ? true : seriesType === 'scatter' && series instanceof ScatterSeries;\n };\n ChartOptionsService.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n __decorate$J([Autowired('gridApi')], ChartOptionsService.prototype, \"gridApi\", void 0);\n __decorate$J([Autowired('columnApi')], ChartOptionsService.prototype, \"columnApi\", void 0);\n return ChartOptionsService;\n}(BeanStub);\nvar __extends$11 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign$a = undefined && undefined.__assign || function () {\n __assign$a = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$a.apply(this, arguments);\n};\nvar ComboChartProxy = /** @class */function (_super) {\n __extends$11(ComboChartProxy, _super);\n function ComboChartProxy(params) {\n var _this = _super.call(this, params) || this;\n _this.xAxisType = params.grouping ? 'groupedCategory' : 'category';\n _this.yAxisType = 'number';\n _this.recreateChart();\n return _this;\n }\n ComboChartProxy.prototype.getData = function (params) {\n return this.getDataTransformedData(params);\n };\n ComboChartProxy.prototype.getAxes = function (params) {\n var _this = this;\n var _a;\n var fields = params ? params.fields : [];\n var fieldsMap = new Map(fields.map(function (f) {\n return [f.colId, f];\n }));\n var _b = this.getYKeys(fields, params.seriesChartTypes),\n primaryYKeys = _b.primaryYKeys,\n secondaryYKeys = _b.secondaryYKeys;\n var _c = this.getAxisOptions(),\n bottomOptions = _c.bottomOptions,\n leftOptions = _c.leftOptions,\n rightOptions = _c.rightOptions;\n var axes = [__assign$a(__assign$a({}, bottomOptions), {\n type: this.xAxisType,\n position: ChartAxisPosition.Bottom,\n gridStyle: [{\n stroke: undefined\n }]\n })];\n if (primaryYKeys.length > 0) {\n axes.push(__assign$a(__assign$a({}, leftOptions), {\n type: this.yAxisType,\n keys: primaryYKeys,\n position: ChartAxisPosition.Left,\n title: __assign$a({}, deepMerge(leftOptions.title, {\n enabled: (_a = leftOptions.title) === null || _a === void 0 ? void 0 : _a.enabled,\n text: primaryYKeys.map(function (key) {\n var field = fieldsMap.get(key);\n return field ? field.displayName : key;\n }).join(' / ')\n }))\n }));\n }\n if (secondaryYKeys.length > 0) {\n secondaryYKeys.forEach(function (secondaryYKey, i) {\n var _a;\n var field = fieldsMap.get(secondaryYKey);\n var secondaryAxisIsVisible = field && field.colId === secondaryYKey;\n if (!secondaryAxisIsVisible) {\n return;\n }\n var secondaryAxisOptions = __assign$a(__assign$a({}, rightOptions), {\n type: _this.yAxisType,\n keys: [secondaryYKey],\n position: ChartAxisPosition.Right,\n title: __assign$a({}, deepMerge(rightOptions.title, {\n enabled: (_a = rightOptions.title) === null || _a === void 0 ? void 0 : _a.enabled,\n text: field ? field.displayName : secondaryYKey\n }))\n });\n var primaryYAxis = primaryYKeys.some(function (primaryYKey) {\n return !!fieldsMap.get(primaryYKey);\n });\n var lastSecondaryAxis = i === secondaryYKeys.length - 1;\n if (!primaryYAxis && lastSecondaryAxis) ;else {\n secondaryAxisOptions.gridStyle = [{\n stroke: undefined\n }];\n }\n axes.push(secondaryAxisOptions);\n });\n }\n return axes;\n };\n ComboChartProxy.prototype.getSeries = function (params) {\n var _this = this;\n var fields = params.fields,\n category = params.category,\n seriesChartTypes = params.seriesChartTypes;\n return fields.map(function (field) {\n var seriesChartType = seriesChartTypes.find(function (s) {\n return s.colId === field.colId;\n });\n if (seriesChartType) {\n var chartType = seriesChartType.chartType;\n return __assign$a(__assign$a({}, _this.extractSeriesOverrides(getSeriesType(seriesChartType.chartType))), {\n type: getSeriesType(chartType),\n xKey: category.id,\n yKey: field.colId,\n yName: field.displayName,\n grouped: ['groupedColumn', 'groupedBar', 'groupedArea'].includes(chartType),\n stacked: ['stackedArea', 'stackedColumn'].includes(chartType)\n });\n }\n });\n };\n ComboChartProxy.prototype.getAxisOptions = function () {\n var axisOptions = this.getAxesOptions('cartesian');\n return {\n bottomOptions: deepMerge(axisOptions[this.xAxisType], axisOptions[this.xAxisType].bottom),\n leftOptions: deepMerge(axisOptions[this.yAxisType], axisOptions[this.yAxisType].left),\n rightOptions: deepMerge(axisOptions[this.yAxisType], axisOptions[this.yAxisType].right)\n };\n };\n ComboChartProxy.prototype.getYKeys = function (fields, seriesChartTypes) {\n var primaryYKeys = [];\n var secondaryYKeys = [];\n fields.forEach(function (field) {\n var colId = field.colId;\n var seriesChartType = seriesChartTypes.find(function (s) {\n return s.colId === colId;\n });\n if (seriesChartType) {\n seriesChartType.secondaryAxis ? secondaryYKeys.push(colId) : primaryYKeys.push(colId);\n }\n });\n return {\n primaryYKeys: primaryYKeys,\n secondaryYKeys: secondaryYKeys\n };\n };\n return ComboChartProxy;\n}(CartesianChartProxy);\nvar __extends$10 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$I = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar GridChartComp = /** @class */function (_super) {\n __extends$10(GridChartComp, _super);\n function GridChartComp(params) {\n var _this = _super.call(this, GridChartComp.TEMPLATE) || this;\n _this.params = params;\n return _this;\n }\n GridChartComp.prototype.init = function () {\n var _this = this;\n var availableChartThemes = this.gridOptionsWrapper.getChartThemes();\n if (availableChartThemes.length < 1) {\n throw new Error('Cannot create chart: no chart themes are available to be used.');\n }\n var chartThemeName = this.params.chartThemeName;\n if (!_.includes(availableChartThemes, chartThemeName)) {\n chartThemeName = availableChartThemes[0];\n }\n var modelParams = {\n chartId: this.params.chartId,\n pivotChart: this.params.pivotChart,\n chartType: this.params.chartType,\n chartThemeName: chartThemeName,\n aggFunc: this.params.aggFunc,\n cellRange: this.params.cellRange,\n suppressChartRanges: this.params.suppressChartRanges,\n unlinkChart: this.params.unlinkChart,\n crossFiltering: this.params.crossFiltering,\n seriesChartTypes: this.params.seriesChartTypes\n };\n var isRtl = this.gridOptionsWrapper.isEnableRtl();\n this.addCssClass(isRtl ? 'ag-rtl' : 'ag-ltr');\n // only the chart controller interacts with the chart model\n var model = this.createBean(new ChartDataModel(modelParams));\n this.chartController = this.createManagedBean(new ChartController(model));\n this.validateCustomThemes();\n // create chart before dialog to ensure dialog is correct size\n this.createChart();\n if (this.params.insideDialog) {\n this.addDialog();\n }\n this.addMenu();\n this.addTitleEditComp();\n this.addManagedListener(this.getGui(), 'focusin', this.setActiveChartCellRange.bind(this));\n this.addManagedListener(this.chartController, ChartController.EVENT_CHART_MODEL_UPDATE, this.update.bind(this));\n if (this.chartMenu) {\n // chart menu may not exist, i.e. cross filtering\n this.addManagedListener(this.chartMenu, ChartMenu.EVENT_DOWNLOAD_CHART, function () {\n return _this.downloadChart();\n });\n }\n this.update();\n this.raiseChartCreatedEvent();\n };\n GridChartComp.prototype.validateCustomThemes = function () {\n var suppliedThemes = this.gridOptionsWrapper.getChartThemes();\n var customChartThemes = this.gridOptionsWrapper.getCustomChartThemes();\n if (customChartThemes) {\n _.getAllKeysInObjects([customChartThemes]).forEach(function (customThemeName) {\n if (!_.includes(suppliedThemes, customThemeName)) {\n console.warn(\"AG Grid: a custom chart theme with the name '\" + customThemeName + \"' has been \" + \"supplied but not added to the 'chartThemes' list\");\n }\n });\n }\n };\n GridChartComp.prototype.createChart = function () {\n var _this = this;\n // if chart already exists, destroy it and remove it from DOM\n if (this.chartProxy) {\n this.chartProxy.destroy();\n }\n var crossFilterCallback = function (event, reset) {\n var ctx = _this.params.crossFilteringContext;\n ctx.lastSelectedChartId = reset ? '' : _this.chartController.getChartId();\n if (reset) {\n _this.params.crossFilteringResetCallback();\n }\n _this.crossFilterService.filter(event, reset);\n };\n var chartType = this.chartController.getChartType();\n var chartProxyParams = {\n chartType: chartType,\n getChartThemeName: this.getChartThemeName.bind(this),\n getChartThemes: this.getChartThemes.bind(this),\n customChartThemes: this.gridOptionsWrapper.getCustomChartThemes(),\n getGridOptionsChartThemeOverrides: this.getGridOptionsChartThemeOverrides.bind(this),\n apiChartThemeOverrides: this.params.chartThemeOverrides,\n crossFiltering: this.params.crossFiltering,\n crossFilterCallback: crossFilterCallback,\n parentElement: this.eChart,\n grouping: this.chartController.isGrouping(),\n chartOptionsToRestore: this.params.chartOptionsToRestore,\n chartPaletteToRestore: this.params.chartPaletteToRestore,\n seriesChartTypes: this.chartController.getSeriesChartTypes(),\n translate: function (toTranslate, defaultText) {\n return _this.chartTranslationService.translate(toTranslate, defaultText);\n }\n };\n // ensure 'restoring' options are not reused when switching chart types\n this.params.chartOptionsToRestore = undefined;\n // set local state used to detect when chart changes\n this.chartType = chartType;\n this.chartThemeName = this.chartController.getChartThemeName();\n this.chartProxy = GridChartComp.createChartProxy(chartProxyParams);\n if (!this.chartProxy) {\n console.warn('AG Grid: invalid chart type supplied: ', chartProxyParams.chartType);\n return;\n }\n var canvas = this.eChart.querySelector('canvas');\n if (canvas) {\n canvas.classList.add('ag-charts-canvas');\n }\n this.chartController.setChartProxy(this.chartProxy);\n this.chartOptionsService = this.createBean(new ChartOptionsService(this.chartController));\n this.titleEdit && this.titleEdit.refreshTitle(this.chartController, this.chartOptionsService);\n };\n GridChartComp.prototype.getChartThemeName = function () {\n return this.chartController.getChartThemeName();\n };\n GridChartComp.prototype.getChartThemes = function () {\n return this.chartController.getThemes();\n };\n GridChartComp.prototype.getGridOptionsChartThemeOverrides = function () {\n return this.gridOptionsWrapper.getChartThemeOverrides();\n };\n GridChartComp.createChartProxy = function (chartProxyParams) {\n switch (chartProxyParams.chartType) {\n case 'column':\n case 'bar':\n case 'groupedColumn':\n case 'stackedColumn':\n case 'normalizedColumn':\n case 'groupedBar':\n case 'stackedBar':\n case 'normalizedBar':\n return new BarChartProxy(chartProxyParams);\n case 'pie':\n case 'doughnut':\n return new PieChartProxy(chartProxyParams);\n case 'area':\n case 'stackedArea':\n case 'normalizedArea':\n return new AreaChartProxy(chartProxyParams);\n case 'line':\n return new LineChartProxy(chartProxyParams);\n case 'scatter':\n case 'bubble':\n return new ScatterChartProxy(chartProxyParams);\n case 'histogram':\n return new HistogramChartProxy(chartProxyParams);\n case 'columnLineCombo':\n case 'areaColumnCombo':\n case 'customCombo':\n return new ComboChartProxy(chartProxyParams);\n default:\n throw \"AG Grid: Unable to create chart as an invalid chartType = '\" + chartProxyParams.chartType + \"' was supplied.\";\n }\n };\n GridChartComp.prototype.addDialog = function () {\n var _this = this;\n var title = this.chartTranslationService.translate(this.params.pivotChart ? 'pivotChartTitle' : 'rangeChartTitle');\n var _a = this.getBestDialogSize(),\n width = _a.width,\n height = _a.height;\n this.chartDialog = new AgDialog({\n resizable: true,\n movable: true,\n maximizable: true,\n title: title,\n width: width,\n height: height,\n component: this,\n centered: true,\n closable: true\n });\n this.getContext().createBean(this.chartDialog);\n this.chartDialog.addEventListener(AgDialog.EVENT_DESTROYED, function () {\n return _this.destroy();\n });\n };\n GridChartComp.prototype.getBestDialogSize = function () {\n var popupParent = this.popupService.getPopupParent();\n var maxWidth = _.getAbsoluteWidth(popupParent) * 0.75;\n var maxHeight = _.getAbsoluteHeight(popupParent) * 0.75;\n var ratio = 0.553;\n var chart = this.chartProxy.getChart();\n var width = this.params.insideDialog ? 850 : chart.width;\n var height = this.params.insideDialog ? 470 : chart.height;\n if (width > maxWidth || height > maxHeight) {\n width = Math.min(width, maxWidth);\n height = Math.round(width * ratio);\n if (height > maxHeight) {\n height = maxHeight;\n width = Math.min(width, Math.round(height / ratio));\n }\n }\n return {\n width: width,\n height: height\n };\n };\n GridChartComp.prototype.addMenu = function () {\n if (!this.params.crossFiltering) {\n this.chartMenu = this.createBean(new ChartMenu(this.eChartContainer, this.eMenuContainer, this.chartController, this.chartOptionsService));\n this.eChartContainer.appendChild(this.chartMenu.getGui());\n }\n };\n GridChartComp.prototype.addTitleEditComp = function () {\n this.titleEdit = this.createBean(new TitleEdit(this.chartMenu));\n this.eTitleEditContainer.appendChild(this.titleEdit.getGui());\n if (this.chartProxy) {\n this.titleEdit.refreshTitle(this.chartController, this.chartOptionsService);\n }\n };\n GridChartComp.prototype.update = function () {\n if (this.shouldRecreateChart()) {\n this.createChart();\n }\n this.updateChart();\n };\n GridChartComp.prototype.shouldRecreateChart = function () {\n return this.chartType !== this.chartController.getChartType() || this.chartThemeName !== this.chartController.getChartThemeName();\n };\n GridChartComp.prototype.getCurrentChartType = function () {\n return this.chartType;\n };\n GridChartComp.prototype.getChartModel = function () {\n return this.chartController.getChartModel();\n };\n GridChartComp.prototype.getChartImageDataURL = function (fileFormat) {\n return this.chartProxy.getChartImageDataURL(fileFormat);\n };\n GridChartComp.prototype.updateChart = function () {\n var _this = this;\n var chartProxy = this.chartProxy;\n var selectedCols = this.chartController.getSelectedValueColState();\n var fields = selectedCols.map(function (c) {\n return {\n colId: c.colId,\n displayName: c.displayName\n };\n });\n var data = this.chartController.getChartData();\n var chartEmpty = this.handleEmptyChart(data, fields);\n if (chartEmpty) {\n return;\n }\n var chartUpdateParams = this.chartController.getChartUpdateParams();\n chartProxy.update(chartUpdateParams);\n this.chartProxy.getChart().waitForUpdate().then(function () {\n _this.chartController.raiseChartUpdatedEvent();\n });\n this.titleEdit.refreshTitle(this.chartController, this.chartOptionsService);\n };\n GridChartComp.prototype.handleEmptyChart = function (data, fields) {\n var pivotModeDisabled = this.chartController.isPivotChart() && !this.chartController.isPivotMode();\n var minFieldsRequired = 1;\n if (this.chartController.isActiveXYChart()) {\n minFieldsRequired = this.chartController.getChartType() === 'bubble' ? 3 : 2;\n }\n var isEmptyChart = fields.length < minFieldsRequired || data.length === 0;\n if (this.eChart) {\n var isEmpty = pivotModeDisabled || isEmptyChart;\n _.setDisplayed(this.eChart, !isEmpty);\n _.setDisplayed(this.eEmpty, isEmpty);\n }\n if (pivotModeDisabled) {\n this.eEmpty.innerText = this.chartTranslationService.translate('pivotChartRequiresPivotMode');\n return true;\n }\n if (isEmptyChart) {\n this.eEmpty.innerText = this.chartTranslationService.translate('noDataToChart');\n return true;\n }\n return false;\n };\n GridChartComp.prototype.downloadChart = function (dimensions, fileName, fileFormat) {\n this.chartProxy.downloadChart(dimensions, fileName, fileFormat);\n };\n GridChartComp.prototype.openChartToolPanel = function (panel) {\n var menuPanel = panel ? CHART_TOOL_PANEL_MENU_OPTIONS[panel] : panel;\n this.chartMenu.showMenu(menuPanel);\n };\n GridChartComp.prototype.closeChartToolPanel = function () {\n this.chartMenu.hideMenu();\n };\n GridChartComp.prototype.getChartId = function () {\n return this.chartController.getChartId();\n };\n GridChartComp.prototype.getUnderlyingChart = function () {\n return this.chartProxy.getChart();\n };\n GridChartComp.prototype.crossFilteringReset = function () {\n this.chartProxy.crossFilteringReset();\n };\n GridChartComp.prototype.setActiveChartCellRange = function (focusEvent) {\n if (this.getGui().contains(focusEvent.relatedTarget)) {\n return;\n }\n this.chartController.setChartRange(true);\n this.gridApi.focusService.clearFocusedCell();\n };\n GridChartComp.prototype.raiseChartCreatedEvent = function () {\n var _this = this;\n var event = Object.freeze({\n type: Events.EVENT_CHART_CREATED,\n chartId: this.chartController.getChartId()\n });\n this.chartProxy.getChart().waitForUpdate().then(function () {\n _this.eventService.dispatchEvent(event);\n });\n };\n GridChartComp.prototype.raiseChartDestroyedEvent = function () {\n var event = Object.freeze({\n type: Events.EVENT_CHART_DESTROYED,\n chartId: this.chartController.getChartId()\n });\n this.eventService.dispatchEvent(event);\n };\n GridChartComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.chartProxy) {\n this.chartProxy.destroy();\n }\n this.destroyBean(this.chartMenu);\n // don't want to invoke destroy() on the Dialog (prevents destroy loop)\n if (this.chartDialog && this.chartDialog.isAlive()) {\n this.destroyBean(this.chartDialog);\n }\n // if the user is providing containers for the charts, we need to clean up, otherwise the old chart\n // data will still be visible although the chart is no longer bound to the grid\n var eGui = this.getGui();\n _.clearElement(eGui);\n // remove from parent, so if user provided container, we detach from the provided dom element\n _.removeFromParent(eGui);\n this.raiseChartDestroyedEvent();\n };\n GridChartComp.TEMPLATE = \"
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\";\n __decorate$I([RefSelector('eChart')], GridChartComp.prototype, \"eChart\", void 0);\n __decorate$I([RefSelector('eChartContainer')], GridChartComp.prototype, \"eChartContainer\", void 0);\n __decorate$I([RefSelector('eMenuContainer')], GridChartComp.prototype, \"eMenuContainer\", void 0);\n __decorate$I([RefSelector('eEmpty')], GridChartComp.prototype, \"eEmpty\", void 0);\n __decorate$I([RefSelector('eTitleEditContainer')], GridChartComp.prototype, \"eTitleEditContainer\", void 0);\n __decorate$I([Autowired('chartCrossFilterService')], GridChartComp.prototype, \"crossFilterService\", void 0);\n __decorate$I([Autowired('chartTranslationService')], GridChartComp.prototype, \"chartTranslationService\", void 0);\n __decorate$I([Autowired('gridApi')], GridChartComp.prototype, \"gridApi\", void 0);\n __decorate$I([Autowired('popupService')], GridChartComp.prototype, \"popupService\", void 0);\n __decorate$I([PostConstruct], GridChartComp.prototype, \"init\", null);\n return GridChartComp;\n}(Component);\nvar ALL_AXIS_TYPES = ['number', 'category', 'groupedCategory', 'log', 'time'];\nfunction getLegacyAxisType(chartType) {\n switch (chartType) {\n case 'bar':\n case 'stackedBar':\n case 'normalizedBar':\n return ['number', 'category'];\n case 'groupedBar':\n return ['number', 'groupedCategory'];\n case 'column':\n case 'stackedColumn':\n case 'normalizedColumn':\n case 'line':\n case 'area':\n case 'stackedArea':\n case 'normalizedArea':\n case 'histogram':\n return ['category', 'number'];\n case 'groupedColumn':\n return ['groupedCategory', 'number'];\n case 'scatter':\n case 'bubble':\n return ['number', 'number'];\n default:\n return undefined;\n }\n}\nvar __assign$9 = undefined && undefined.__assign || function () {\n __assign$9 = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$9.apply(this, arguments);\n};\nvar __rest = undefined && undefined.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __read$9 = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __values$3 = undefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\n// the line below is automatically modified during releases - do not modify\n// (see scripts/release/updateChartModel.js)\nvar CURRENT_VERSION = '28.2.0';\nfunction upgradeChartModel(model) {\n model.version;\n if (model.version == null) {\n // Try to guess the version so we can apply the right subset of migrations.\n model.version = heuristicVersionDetection(model);\n }\n model = migrateIfBefore('23.0.0', model, migrateV23);\n model = migrateIfBefore('24.0.0', model, migrateV24);\n model = migrateIfBefore('25.1.0', model, migrateV25_1);\n model = migrateIfBefore('26.0.0', model, migrateV26);\n model = migrateIfBefore('26.1.0', model, migrateV26_1);\n // Switch from iChartOptions to iAgChartOptions....\n model = migrateIfBefore('26.2.0', model, migrateV26_2);\n model = migrateIfBefore('28.0.0', model, migrateV28);\n model = migrateIfBefore('28.2.0', model, migrateV28_2);\n model = cleanup(model);\n // Bump version to latest.\n model = migrateIfBefore(CURRENT_VERSION, model, function (m) {\n return m;\n });\n return model;\n}\nfunction migrateV23(model) {\n // https://github.com/ag-grid/ag-grid/commit/76c6744ff2b732d298d1ade73c122188854b5bac\n model = jsonRename('chartOptions.legend.item.marker.type', 'shape', model);\n model = jsonRename('chartOptions.seriesDefaults.marker.type', 'shape', model);\n // https://github.com/ag-grid/ag-grid/commit/7bdf2cfd666acda758a818733a9f9cb35ac1d7a7\n model = jsonRename('chartOptions.legend.padding', 'spacing', model);\n return model;\n}\nfunction migrateV24(model) {\n var _a, _b;\n // https://github.com/ag-grid/ag-grid/commit/f4e854e3dc459400fa00e6da2873cb8e9cfff6fe#\n model = jsonDelete('chartOptions.seriesDefaults.marker.minSize', model);\n var _c = model,\n chartType = _c.chartType,\n chartPalette = _c.chartPalette,\n // Migrate.\n _d = _c.chartOptions,\n xAxis = _d.xAxis,\n yAxis = _d.yAxis,\n chartOptions = __rest(_d, [\"xAxis\", \"yAxis\"]),\n chartModel = __rest(_c, [\"chartType\", \"chartPalette\", \"chartOptions\"]);\n var axesTypes = getLegacyAxisType(chartType);\n var axes = (_a = axesTypes) === null || _a === void 0 ? void 0 : _a.map(function (type, i) {\n return __assign$9({\n type: type\n }, i === 0 ? xAxis : yAxis);\n });\n return __assign$9({\n chartType: chartType,\n chartThemeName: (_b = LEGACY_PALETTES[chartPalette], _b !== null && _b !== void 0 ? _b : 'ag-default'),\n chartOptions: __assign$9(__assign$9({}, chartOptions), {\n axes: axes,\n xAxis: xAxis,\n yAxis: yAxis\n })\n }, chartModel);\n}\nfunction migrateV25_1(model) {\n // https://github.com/ag-grid/ag-grid/commit/61943f9fecbfb5ac1b9a1fd93788f9fdd8687181\n model = jsonRename('chartOptions.seriesDefaults.label.minRequiredAngle', 'minAngle', model);\n return model;\n}\nfunction migrateV26(model) {\n // https://github.com/ag-grid/ag-grid/commit/df2445d88e64cb4e831d6163104a0fa60ccde3b5\n var highlightOptUpdate = function (_a) {\n var dimOpacity = _a.dimOpacity,\n opts = __rest(_a, [\"dimOpacity\"]);\n return __assign$9(__assign$9({}, opts), dimOpacity != null ? {\n series: {\n dimOpacity: dimOpacity\n }\n } : {});\n };\n model = jsonMutate('chartOptions.seriesDefaults.highlightStyle', model, highlightOptUpdate);\n // https://github.com/ag-grid/ag-grid/commit/f4e854e3dc459400fa00e6da2873cb8e9cfff6fe#\n model = jsonDelete('chart', model);\n model = jsonDelete('chartOptions.seriesDefaults.tooltipClass', model);\n model = jsonDelete('chartOptions.seriesDefaults.tooltipTracking', model);\n // Cleanup label.rotation === 0, which was treated as 'use the default' on reload prior to 26.\n model = jsonDeleteDefault('chartOptions.axes[].label.rotation', 0, model);\n model = jsonDeleteDefault('chartOptions.axes[].label.rotation', 335, model);\n return model;\n}\nfunction migrateV26_1(model) {\n // https://github.com/ag-grid/ag-grid/commit/df2445d88e64cb4e831d6163104a0fa60ccde3b5\n var highlightOptUpdate = function (_a) {\n var item = _a.item,\n series = _a.series,\n opts = __rest(_a, [\"item\", \"series\"]);\n return __assign$9({\n item: __assign$9(__assign$9({}, opts), item)\n }, series ? {\n series: series\n } : {});\n };\n model = jsonMutate('chartOptions.seriesDefaults.highlightStyle', model, highlightOptUpdate);\n model = jsonMutate('chartOptions.series[].highlightStyle', model, highlightOptUpdate);\n return model;\n}\nfunction migrateV26_2(model) {\n // https://github.com/ag-grid/ag-grid/commit/8b2e223cb1a687cb6c1d70b9f75f52fa29d00341\n model = jsonMove('chartOptions.seriesDefaults.fill.opacity', 'chartOptions.seriesDefaults.fillOpacity', model);\n model = jsonMove('chartOptions.seriesDefaults.stroke.opacity', 'chartOptions.seriesDefaults.strokeOpacity', model);\n model = jsonMove('chartOptions.seriesDefaults.stroke.width', 'chartOptions.seriesDefaults.strokeWidth', model);\n model = jsonDelete('chartOptions.seriesDefaults.fill', model);\n model = jsonDelete('chartOptions.seriesDefaults.stroke', model);\n model = jsonDelete('chartOptions.seriesDefaults.callout.colors', model);\n model = jsonDelete('chartOptions.xAxis', model);\n model = jsonDelete('chartOptions.yAxis', model);\n var _a = model,\n chartType = _a.chartType,\n _b = _a.chartOptions,\n axes = _b.axes;\n _b.series;\n var seriesDefaults = _b.seriesDefaults,\n otherChartOptions = __rest(_b, [\"axes\", \"series\", \"seriesDefaults\"]),\n otherModelProps = __rest(_a, [\"chartType\", \"chartOptions\"]);\n // At 26.2.0 combination charts weren't supported, so we can safely assume a single series type.\n // We can't rely on the `series.type` field as it was incorrect (in v25.0.0 line chart has an\n // `area` series).\n var seriesTypes = [getSeriesType(chartType)];\n var chartTypeMixin = {};\n if (!seriesTypes.includes('pie')) {\n var minimalAxis_1 = {\n top: {},\n bottom: {},\n left: {},\n right: {}\n };\n var updatedAxes_1 = axes.map(function (_a) {\n var _b;\n var type = _a.type,\n axisProps = __rest(_a, [\"type\"]);\n return _b = {}, _b[type] = __assign$9(__assign$9({}, minimalAxis_1), axisProps), _b;\n }).reduce(merge, {});\n ALL_AXIS_TYPES.filter(function (v) {\n return updatedAxes_1[v] == null;\n }).forEach(function (v) {\n updatedAxes_1[v] = __assign$9({}, minimalAxis_1);\n });\n chartTypeMixin.axes = updatedAxes_1;\n }\n var updatedChartOptions = seriesTypes.map(function (t) {\n var _a;\n return _a = {}, _a[t] = __assign$9(__assign$9(__assign$9({}, chartTypeMixin), {\n series: seriesDefaults\n }), otherChartOptions), _a;\n }).reduce(merge, {});\n model = __assign$9(__assign$9({}, otherModelProps), {\n chartType: chartType,\n chartOptions: updatedChartOptions\n });\n return model;\n}\nfunction migrateV28(model) {\n model = jsonDelete('chartOptions.*.title.padding', model);\n model = jsonDelete('chartOptions.*.subtitle.padding', model);\n model = jsonDelete('chartOptions.*.axes.*.title.padding', model);\n model = jsonBackfill('chartOptions.*.axes.*.title.enabled', false, model);\n return model;\n}\nfunction migrateV28_2(model) {\n model = jsonRename('chartOptions.pie.series.callout', 'calloutLine', model);\n model = jsonRename('chartOptions.pie.series.label', 'calloutLabel', model);\n // series.yKeys => yKey ?\n // series.yNames => yName ?\n return model;\n}\nfunction cleanup(model) {\n // Remove fixed width/height - this has never been supported via UI configuration.\n model = jsonDelete('chartOptions.*.width', model);\n model = jsonDelete('chartOptions.*.height', model);\n model = jsonBackfill('chartOptions.*.axes.category.label.autoRotate', true, model);\n return model;\n}\nfunction heuristicVersionDetection(model) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n var modelAny = model;\n if (model.version != null) {\n return model.version;\n }\n var hasKey = function (obj) {\n var keys = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n keys[_i - 1] = arguments[_i];\n }\n return Object.keys(obj || {}).some(function (k) {\n return keys.includes(k);\n });\n };\n var chartOptions = modelAny.chartOptions;\n var seriesOptions = hasKey(chartOptions, 'seriesDefaults') ? (_a = chartOptions) === null || _a === void 0 ? void 0 : _a.seriesDefaults : (_b = chartOptions) === null || _b === void 0 ? void 0 : _b[Object.keys(chartOptions)[0]];\n var hints = {\n '27.0.0': hasKey(modelAny, 'seriesChartTypes'),\n '26.2.0': !hasKey(chartOptions, 'seriesDefaults'),\n '26.1.0': hasKey((_c = seriesOptions) === null || _c === void 0 ? void 0 : _c.highlightStyle, 'item'),\n '26.0.0': hasKey((_d = seriesOptions) === null || _d === void 0 ? void 0 : _d.highlightStyle, 'series'),\n // '26.0.0': modelAny.chart === undefined,\n '25.1.0': hasKey((_e = seriesOptions) === null || _e === void 0 ? void 0 : _e.label, 'minAngle'),\n '25.0.0': hasKey(modelAny, 'modelType', 'aggFunc', 'unlinkChart', 'suppressChartRanges') || hasKey(seriesOptions, 'lineDash', 'lineDashOffset'),\n '24.0.0': hasKey(modelAny, 'chartThemeName', 'chart') || hasKey(chartOptions, 'series'),\n '23.2.0': hasKey(chartOptions, 'navigator'),\n '23.0.0': hasKey((_h = (_g = (_f = chartOptions) === null || _f === void 0 ? void 0 : _f.legend) === null || _g === void 0 ? void 0 : _g.item) === null || _h === void 0 ? void 0 : _h.marker, 'shape'),\n '22.1.0': hasKey(modelAny, 'chartPalette', 'chartType')\n };\n // Default to 27.1.0, the last version before we added `version`.\n var defaultVersion = '27.1.0';\n var matchingHints = Object.entries(hints).filter(function (_a) {\n var _b = __read$9(_a, 2);\n _b[0];\n var match = _b[1];\n return match;\n });\n var _j = __read$9(matchingHints[0], 1),\n _k = _j[0],\n heuristicVersion = _k === void 0 ? defaultVersion : _k;\n return heuristicVersion;\n}\nfunction migrateIfBefore(maxVersion, model, migration) {\n if (versionNumber(maxVersion) > versionNumber(model.version)) {\n var result = migration(model);\n result.version = maxVersion;\n return result;\n }\n return model;\n}\nfunction versionParts(version) {\n var split = typeof version === 'string' ? version.split('.').map(function (v) {\n return Number(v);\n }) : [];\n if (split.length !== 3 || split.some(function (v) {\n return isNaN(v);\n })) {\n throw new Error('AG Grid - Illegal version string: ' + version);\n }\n return {\n major: split[0],\n minor: split[1],\n patch: split[2]\n };\n}\nfunction versionNumber(version) {\n var _a = versionParts(version),\n major = _a.major,\n minor = _a.minor,\n patch = _a.patch;\n // Return a number of the form MMmmPP.\n return major * 10000 + minor * 100 + patch;\n}\nfunction jsonDeleteDefault(path, defaultValue, json) {\n return jsonMutateProperty(path, true, json, function (parent, prop) {\n if (parent[prop] === defaultValue) {\n delete parent[prop];\n }\n });\n}\nfunction jsonBackfill(path, defaultValue, json) {\n return jsonMutateProperty(path, false, json, function (parent, prop) {\n if (parent[prop] == null) {\n parent[prop] = defaultValue;\n }\n });\n}\nfunction jsonMove(from, to, json) {\n var valueToMove = undefined;\n var valueFound = false;\n json = jsonMutateProperty(from, true, json, function (parent, prop) {\n valueFound = true;\n valueToMove = parent[prop];\n delete parent[prop];\n });\n if (!valueFound) {\n return json;\n }\n return jsonMutateProperty(to, false, json, function (parent, prop) {\n parent[prop] = valueToMove;\n });\n}\nfunction jsonRename(path, renameTo, json) {\n return jsonMutateProperty(path, true, json, function (parent, prop) {\n parent[renameTo] = parent[prop];\n delete parent[prop];\n });\n}\nfunction jsonDelete(path, json) {\n return jsonMutateProperty(path, true, json, function (parent, prop) {\n return delete parent[prop];\n });\n}\nfunction jsonMutateProperty(path, skipMissing, json, mutator) {\n var pathElements = path instanceof Array ? path : path.split('.');\n var parentPathElements = pathElements.slice(0, pathElements.length - 1);\n var targetName = pathElements[pathElements.length - 1];\n return jsonMutate(parentPathElements, json, function (parent) {\n var hasProperty = Object.keys(parent).includes(targetName);\n if (skipMissing && !hasProperty) {\n return parent;\n }\n var result = __assign$9({}, parent);\n mutator(result, targetName);\n return result;\n });\n}\nfunction jsonMutate(path, json, mutator) {\n var e_1, _a;\n var pathElements = path instanceof Array ? path : path.split('.');\n // Clone to avoid mutating original input.\n json = __assign$9({}, json);\n if (pathElements.length === 0) {\n return mutator(json);\n } else if (pathElements[0].startsWith('{')) {\n var pathOptions = pathElements[0].substring(1, pathElements[0].lastIndexOf('}')).split(',');\n try {\n for (var pathOptions_1 = __values$3(pathOptions), pathOptions_1_1 = pathOptions_1.next(); !pathOptions_1_1.done; pathOptions_1_1 = pathOptions_1.next()) {\n var pathOption = pathOptions_1_1.value;\n if (json[pathOption] != null) {\n json[pathOption] = jsonMutate(pathElements.slice(1), json[pathOption], mutator);\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (pathOptions_1_1 && !pathOptions_1_1.done && (_a = pathOptions_1.return)) _a.call(pathOptions_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n } else if (pathElements[0].endsWith('[]')) {\n var arrayName = pathElements[0].substring(0, path[0].indexOf('['));\n if (json[arrayName] instanceof Array) {\n json[arrayName] = json[arrayName].map(function (v) {\n return jsonMutate(pathElements.slice(1), v, mutator);\n });\n }\n } else if (pathElements[0] === '*') {\n for (var jsonProp in json) {\n json[jsonProp] = jsonMutate(pathElements.slice(1), json[jsonProp], mutator);\n }\n } else if (json[pathElements[0]] != null) {\n json[pathElements[0]] = jsonMutate(pathElements.slice(1), json[pathElements[0]], mutator);\n }\n return json;\n}\nvar merge = function (r, n) {\n return __assign$9(__assign$9({}, r), n);\n};\n// Precise legacy palette fills/strokes can be found here for future reference:\n// https://github.com/ag-grid/ag-grid/blob/b22.1.0/enterprise-modules/charts/src/charts/chart/palettes.ts\nvar LEGACY_PALETTES = {\n borneo: 'ag-default',\n material: 'ag-material',\n pastel: 'ag-pastel',\n bright: 'ag-vivid',\n flat: 'ag-solar'\n};\nvar __extends$$ = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign$8 = undefined && undefined.__assign || function () {\n __assign$8 = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$8.apply(this, arguments);\n};\nvar __decorate$H = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar ChartService = /** @class */function (_super) {\n __extends$$(ChartService, _super);\n function ChartService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // we destroy all charts bound to this grid when grid is destroyed. activeCharts contains all charts, including\n // those in developer provided containers.\n _this.activeCharts = new Set();\n _this.activeChartComps = new Set();\n // this shared (singleton) context is used by cross filtering in line and area charts\n _this.crossFilteringContext = {\n lastSelectedChartId: ''\n };\n return _this;\n }\n ChartService.prototype.getChartModels = function () {\n var models = [];\n var versionedModel = function (c) {\n return __assign$8(__assign$8({}, c), {\n version: CURRENT_VERSION\n });\n };\n this.activeChartComps.forEach(function (c) {\n return models.push(versionedModel(c.getChartModel()));\n });\n return models;\n };\n ChartService.prototype.getChartRef = function (chartId) {\n var chartRef;\n this.activeCharts.forEach(function (cr) {\n if (cr.chartId === chartId) {\n chartRef = cr;\n }\n });\n return chartRef;\n };\n ChartService.prototype.getChartImageDataURL = function (params) {\n var url;\n this.activeChartComps.forEach(function (c) {\n if (c.getChartId() === params.chartId) {\n url = c.getChartImageDataURL(params.fileFormat);\n }\n });\n return url;\n };\n ChartService.prototype.downloadChart = function (params) {\n var _a;\n var chartComp = Array.from(this.activeChartComps).find(function (c) {\n return c.getChartId() === params.chartId;\n });\n (_a = chartComp) === null || _a === void 0 ? void 0 : _a.downloadChart(params.dimensions, params.fileName, params.fileFormat);\n };\n ChartService.prototype.openChartToolPanel = function (params) {\n var _a;\n var chartComp = Array.from(this.activeChartComps).find(function (c) {\n return c.getChartId() === params.chartId;\n });\n (_a = chartComp) === null || _a === void 0 ? void 0 : _a.openChartToolPanel(params.panel);\n };\n ChartService.prototype.closeChartToolPanel = function (chartId) {\n var _a;\n var chartComp = Array.from(this.activeChartComps).find(function (c) {\n return c.getChartId() === chartId;\n });\n (_a = chartComp) === null || _a === void 0 ? void 0 : _a.closeChartToolPanel();\n };\n ChartService.prototype.createChartFromCurrentRange = function (chartType) {\n if (chartType === void 0) {\n chartType = 'groupedColumn';\n }\n var selectedRange = this.getSelectedRange();\n return this.createChart(selectedRange, chartType);\n };\n ChartService.prototype.restoreChart = function (model, chartContainer) {\n var _this = this;\n if (!model) {\n console.warn(\"AG Grid - unable to restore chart as no chart model is provided\");\n return;\n }\n if (model.version !== CURRENT_VERSION) {\n model = upgradeChartModel(model);\n }\n var params = {\n cellRange: model.cellRange,\n chartType: model.chartType,\n chartThemeName: model.chartThemeName,\n chartContainer: chartContainer,\n suppressChartRanges: model.suppressChartRanges,\n aggFunc: model.aggFunc,\n unlinkChart: model.unlinkChart,\n seriesChartTypes: model.seriesChartTypes\n };\n var getCellRange = function (cellRangeParams) {\n return _this.rangeService ? _this.rangeService.createCellRangeFromCellRangeParams(cellRangeParams) : undefined;\n };\n if (model.modelType === 'pivot') {\n // if required enter pivot mode\n if (!this.columnModel.isPivotMode()) {\n this.columnModel.setPivotMode(true, \"pivotChart\");\n }\n // pivot chart range contains all visible column without a row range to include all rows\n var columns = this.columnModel.getAllDisplayedColumns().map(function (col) {\n return col.getColId();\n });\n var chartAllRangeParams = {\n rowStartIndex: null,\n rowStartPinned: undefined,\n rowEndIndex: null,\n rowEndPinned: undefined,\n columns: columns\n };\n var cellRange_1 = getCellRange(chartAllRangeParams);\n if (!cellRange_1) {\n console.warn(\"AG Grid - unable to create chart as there are no columns in the grid.\");\n return;\n }\n return this.createChart(cellRange_1, params.chartType, params.chartThemeName, true, true, params.chartContainer, undefined, undefined, params.unlinkChart, false, model.chartOptions);\n }\n var cellRange = getCellRange(params.cellRange);\n if (!cellRange) {\n console.warn(\"AG Grid - unable to create chart as no range is selected\");\n return;\n }\n return this.createChart(cellRange, params.chartType, params.chartThemeName, false, params.suppressChartRanges, params.chartContainer, params.aggFunc, undefined, params.unlinkChart, false, model.chartOptions, model.chartPalette, params.seriesChartTypes);\n };\n ChartService.prototype.createRangeChart = function (params) {\n var cellRange = this.rangeService ? this.rangeService.createCellRangeFromCellRangeParams(params.cellRange) : undefined;\n if (!cellRange) {\n console.warn(\"AG Grid - unable to create chart as no range is selected\");\n return;\n }\n return this.createChart(cellRange, params.chartType, params.chartThemeName, false, params.suppressChartRanges, params.chartContainer, params.aggFunc, params.chartThemeOverrides, params.unlinkChart, undefined, undefined, undefined, params.seriesChartTypes);\n };\n ChartService.prototype.createPivotChart = function (params) {\n // if required enter pivot mode\n if (!this.columnModel.isPivotMode()) {\n this.columnModel.setPivotMode(true, \"pivotChart\");\n }\n // pivot chart range contains all visible column without a row range to include all rows\n var chartAllRangeParams = {\n rowStartIndex: null,\n rowStartPinned: undefined,\n rowEndIndex: null,\n rowEndPinned: undefined,\n columns: this.columnModel.getAllDisplayedColumns().map(function (col) {\n return col.getColId();\n })\n };\n var cellRange = this.rangeService ? this.rangeService.createCellRangeFromCellRangeParams(chartAllRangeParams) : undefined;\n if (!cellRange) {\n console.warn(\"AG Grid - unable to create chart as there are no columns in the grid.\");\n return;\n }\n return this.createChart(cellRange, params.chartType, params.chartThemeName, true, true, params.chartContainer, undefined, params.chartThemeOverrides, params.unlinkChart);\n };\n ChartService.prototype.createCrossFilterChart = function (params) {\n var cellRange = this.rangeService ? this.rangeService.createCellRangeFromCellRangeParams(params.cellRange) : undefined;\n if (!cellRange) {\n console.warn(\"AG Grid - unable to create chart as no range is selected\");\n return;\n }\n var crossFiltering = true;\n var suppressChartRangesSupplied = typeof params.suppressChartRanges !== 'undefined' && params.suppressChartRanges !== null;\n var suppressChartRanges = suppressChartRangesSupplied ? params.suppressChartRanges : true;\n return this.createChart(cellRange, params.chartType, params.chartThemeName, false, suppressChartRanges, params.chartContainer, params.aggFunc, params.chartThemeOverrides, params.unlinkChart, crossFiltering);\n };\n ChartService.prototype.createChart = function (cellRange, chartType, chartThemeName, pivotChart, suppressChartRanges, container, aggFunc, chartThemeOverrides, unlinkChart, crossFiltering, chartOptionsToRestore, chartPaletteToRestore, seriesChartTypes) {\n var _this = this;\n if (pivotChart === void 0) {\n pivotChart = false;\n }\n if (suppressChartRanges === void 0) {\n suppressChartRanges = false;\n }\n if (unlinkChart === void 0) {\n unlinkChart = false;\n }\n if (crossFiltering === void 0) {\n crossFiltering = false;\n }\n var createChartContainerFunc = this.gridOptionsWrapper.getCreateChartContainerFunc();\n var params = {\n chartId: this.generateId(),\n pivotChart: pivotChart,\n cellRange: cellRange,\n chartType: chartType,\n chartThemeName: chartThemeName,\n insideDialog: !(container || createChartContainerFunc),\n suppressChartRanges: suppressChartRanges,\n aggFunc: aggFunc,\n chartThemeOverrides: chartThemeOverrides,\n unlinkChart: unlinkChart,\n crossFiltering: crossFiltering,\n crossFilteringContext: this.crossFilteringContext,\n chartOptionsToRestore: chartOptionsToRestore,\n chartPaletteToRestore: chartPaletteToRestore,\n seriesChartTypes: seriesChartTypes,\n crossFilteringResetCallback: function () {\n return _this.activeChartComps.forEach(function (c) {\n return c.crossFilteringReset();\n });\n }\n };\n var chartComp = new GridChartComp(params);\n this.context.createBean(chartComp);\n var chartRef = this.createChartRef(chartComp);\n if (container) {\n // if container exists, means developer initiated chart create via API, so place in provided container\n container.appendChild(chartComp.getGui());\n // if the chart container was placed outside of an element that\n // has the grid's theme, we manually add the current theme to\n // make sure all styles for the chartMenu are rendered correctly\n var theme = this.environment.getTheme();\n if (theme.el && !theme.el.contains(container)) {\n container.classList.add(theme.theme);\n }\n } else if (createChartContainerFunc) {\n // otherwise user created chart via grid UI, check if developer provides containers (eg if the application\n // is using its own dialogs rather than the grid provided dialogs)\n createChartContainerFunc(chartRef);\n } else {\n // add listener to remove from active charts list when charts are destroyed, e.g. closing chart dialog\n chartComp.addEventListener(GridChartComp.EVENT_DESTROYED, function () {\n _this.activeChartComps.delete(chartComp);\n _this.activeCharts.delete(chartRef);\n });\n }\n return chartRef;\n };\n ChartService.prototype.createChartRef = function (chartComp) {\n var _this = this;\n var chartRef = {\n destroyChart: function () {\n if (_this.activeCharts.has(chartRef)) {\n _this.context.destroyBean(chartComp);\n _this.activeChartComps.delete(chartComp);\n _this.activeCharts.delete(chartRef);\n }\n },\n chartElement: chartComp.getGui(),\n chart: chartComp.getUnderlyingChart(),\n chartId: chartComp.getChartModel().chartId\n };\n this.activeCharts.add(chartRef);\n this.activeChartComps.add(chartComp);\n return chartRef;\n };\n ChartService.prototype.getSelectedRange = function () {\n var ranges = this.rangeService.getCellRanges();\n return ranges.length > 0 ? ranges[0] : {};\n };\n ChartService.prototype.generateId = function () {\n return 'id-' + Math.random().toString(36).substr(2, 16);\n };\n ChartService.prototype.destroyAllActiveCharts = function () {\n this.activeCharts.forEach(function (chart) {\n return chart.destroyChart();\n });\n };\n __decorate$H([Optional('rangeService')], ChartService.prototype, \"rangeService\", void 0);\n __decorate$H([Autowired('columnModel')], ChartService.prototype, \"columnModel\", void 0);\n __decorate$H([Autowired('environment')], ChartService.prototype, \"environment\", void 0);\n __decorate$H([PreDestroy], ChartService.prototype, \"destroyAllActiveCharts\", null);\n ChartService = __decorate$H([Bean('chartService')], ChartService);\n return ChartService;\n}(BeanStub);\nvar __extends$_ = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$G = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar ChartTranslationService = /** @class */function (_super) {\n __extends$_(ChartTranslationService, _super);\n function ChartTranslationService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ChartTranslationService_1 = ChartTranslationService;\n ChartTranslationService.prototype.translate = function (toTranslate, defaultText) {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var defaultTranslation = ChartTranslationService_1.DEFAULT_TRANSLATIONS[toTranslate] || defaultText;\n return translate(toTranslate, defaultTranslation);\n };\n var ChartTranslationService_1;\n ChartTranslationService.DEFAULT_TRANSLATIONS = {\n pivotChartTitle: 'Pivot Chart',\n rangeChartTitle: 'Range Chart',\n settings: 'Settings',\n data: 'Data',\n format: 'Format',\n categories: 'Categories',\n defaultCategory: '(None)',\n series: 'Series',\n xyValues: 'X Y Values',\n paired: 'Paired Mode',\n axis: 'Axis',\n navigator: 'Navigator',\n color: 'Color',\n thickness: 'Thickness',\n xType: 'X Type',\n automatic: 'Automatic',\n category: 'Category',\n number: 'Number',\n time: 'Time',\n autoRotate: 'Auto Rotate',\n xRotation: 'X Rotation',\n yRotation: 'Y Rotation',\n ticks: 'Ticks',\n width: 'Width',\n height: 'Height',\n length: 'Length',\n padding: 'Padding',\n spacing: 'Spacing',\n chart: 'Chart',\n title: 'Title',\n titlePlaceholder: 'Chart title - double click to edit',\n background: 'Background',\n font: 'Font',\n top: 'Top',\n right: 'Right',\n bottom: 'Bottom',\n left: 'Left',\n labels: 'Labels',\n size: 'Size',\n shape: 'Shape',\n minSize: 'Minimum Size',\n maxSize: 'Maximum Size',\n legend: 'Legend',\n position: 'Position',\n markerSize: 'Marker Size',\n markerStroke: 'Marker Stroke',\n markerPadding: 'Marker Padding',\n itemSpacing: 'Item Spacing',\n itemPaddingX: 'Item Padding X',\n itemPaddingY: 'Item Padding Y',\n layoutHorizontalSpacing: 'Horizontal Spacing',\n layoutVerticalSpacing: 'Vertical Spacing',\n strokeWidth: 'Stroke Width',\n offset: 'Offset',\n offsets: 'Offsets',\n tooltips: 'Tooltips',\n callout: 'Callout',\n markers: 'Markers',\n shadow: 'Shadow',\n blur: 'Blur',\n xOffset: 'X Offset',\n yOffset: 'Y Offset',\n lineWidth: 'Line Width',\n lineDash: 'Line Dash',\n normal: 'Normal',\n bold: 'Bold',\n italic: 'Italic',\n boldItalic: 'Bold Italic',\n predefined: 'Predefined',\n fillOpacity: 'Fill Opacity',\n strokeOpacity: 'Line Opacity',\n histogramBinCount: 'Bin count',\n columnGroup: 'Column',\n barGroup: 'Bar',\n pieGroup: 'Pie',\n lineGroup: 'Line',\n scatterGroup: 'X Y (Scatter)',\n areaGroup: 'Area',\n histogramGroup: 'Histogram',\n combinationGroup: 'Combination',\n groupedColumnTooltip: 'Grouped',\n stackedColumnTooltip: 'Stacked',\n normalizedColumnTooltip: '100% Stacked',\n groupedBarTooltip: 'Grouped',\n stackedBarTooltip: 'Stacked',\n normalizedBarTooltip: '100% Stacked',\n pieTooltip: 'Pie',\n doughnutTooltip: 'Doughnut',\n lineTooltip: 'Line',\n groupedAreaTooltip: 'Area',\n stackedAreaTooltip: 'Stacked',\n normalizedAreaTooltip: '100% Stacked',\n scatterTooltip: 'Scatter',\n bubbleTooltip: 'Bubble',\n histogramTooltip: 'Histogram',\n columnLineComboTooltip: 'Column & Line',\n areaColumnComboTooltip: 'Area & Column',\n customComboTooltip: 'Custom Combination',\n noDataToChart: 'No data available to be charted.',\n pivotChartRequiresPivotMode: 'Pivot Chart requires Pivot Mode enabled.',\n chartSettingsToolbarTooltip: 'Menu',\n chartLinkToolbarTooltip: 'Linked to Grid',\n chartUnlinkToolbarTooltip: 'Unlinked from Grid',\n chartDownloadToolbarTooltip: 'Download Chart',\n histogramFrequency: \"Frequency\",\n seriesChartType: 'Series Chart Type',\n seriesType: 'Series Type',\n secondaryAxis: 'Secondary Axis'\n };\n ChartTranslationService = ChartTranslationService_1 = __decorate$G([Bean(\"chartTranslationService\")], ChartTranslationService);\n return ChartTranslationService;\n}(BeanStub);\nvar __extends$Z = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$F = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar ChartCrossFilterService = /** @class */function (_super) {\n __extends$Z(ChartCrossFilterService, _super);\n function ChartCrossFilterService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ChartCrossFilterService_1 = ChartCrossFilterService;\n ChartCrossFilterService.prototype.filter = function (event, reset) {\n if (reset === void 0) {\n reset = false;\n }\n var filterModel = this.gridApi.getFilterModel();\n // filters should be reset when user clicks on canvas background\n if (reset) {\n this.resetFilters(filterModel);\n return;\n }\n var colId = ChartCrossFilterService_1.extractFilterColId(event);\n if (this.isValidColumnFilter(colId)) {\n // update filters based on current chart selections\n this.updateFilters(filterModel, event, colId);\n } else {\n console.warn(\"AG Grid: cross filtering requires a 'agSetColumnFilter' or 'agMultiColumnFilter' \" + \"to be defined on the column with id: '\" + colId + \"'\");\n }\n };\n ChartCrossFilterService.prototype.resetFilters = function (filterModel) {\n var filtersExist = Object.keys(filterModel).length > 0;\n if (filtersExist) {\n // only reset filters / charts when necessary to prevent undesirable flickering effect\n this.gridApi.setFilterModel(null);\n this.gridApi.onFilterChanged();\n }\n };\n ChartCrossFilterService.prototype.updateFilters = function (filterModel, event, colId) {\n var _a;\n var dataKey = ChartCrossFilterService_1.extractFilterColId(event);\n var rawValue = event.datum[dataKey];\n if (rawValue === undefined) {\n return;\n }\n var selectedValue = rawValue.toString();\n if (event.event.metaKey || event.event.ctrlKey) {\n var existingGridValues = this.getCurrentGridValuesForCategory(colId);\n var valueAlreadyExists = _.includes(existingGridValues, selectedValue);\n var updatedValues = void 0;\n if (valueAlreadyExists) {\n updatedValues = existingGridValues.filter(function (v) {\n return v !== selectedValue;\n });\n } else {\n updatedValues = existingGridValues;\n updatedValues.push(selectedValue);\n }\n filterModel[colId] = this.getUpdatedFilterModel(colId, updatedValues);\n } else {\n var updatedValues = [selectedValue];\n filterModel = (_a = {}, _a[colId] = this.getUpdatedFilterModel(colId, updatedValues), _a);\n }\n this.gridApi.setFilterModel(filterModel);\n };\n ChartCrossFilterService.prototype.getUpdatedFilterModel = function (colId, updatedValues) {\n var columnFilterType = this.getColumnFilterType(colId);\n if (columnFilterType === 'agMultiColumnFilter') {\n return {\n filterType: 'multi',\n filterModels: [null, {\n filterType: 'set',\n values: updatedValues\n }]\n };\n }\n return {\n filterType: 'set',\n values: updatedValues\n };\n };\n ChartCrossFilterService.prototype.getCurrentGridValuesForCategory = function (colId) {\n var _this = this;\n var filteredValues = [];\n var column = this.getColumnById(colId);\n this.gridApi.forEachNodeAfterFilter(function (rowNode) {\n if (column && !rowNode.group) {\n var value = _this.valueService.getValue(column, rowNode) + '';\n if (!filteredValues.includes(value)) {\n filteredValues.push(value);\n }\n }\n });\n return filteredValues;\n };\n ChartCrossFilterService.extractFilterColId = function (event) {\n return event.xKey || event.calloutLabelKey;\n };\n ChartCrossFilterService.prototype.isValidColumnFilter = function (colId) {\n if (colId.indexOf('-filtered-out')) {\n colId = colId.replace('-filtered-out', '');\n }\n var filterType = this.getColumnFilterType(colId);\n if (typeof filterType === 'boolean') {\n return filterType;\n }\n return _.includes(['agSetColumnFilter', 'agMultiColumnFilter'], filterType);\n };\n ChartCrossFilterService.prototype.getColumnFilterType = function (colId) {\n var gridColumn = this.getColumnById(colId);\n if (gridColumn) {\n var colDef = gridColumn.getColDef();\n return colDef.filter != null ? colDef.filter : colDef.filterFramework;\n }\n };\n ChartCrossFilterService.prototype.getColumnById = function (colId) {\n return this.columnModel.getGridColumn(colId);\n };\n var ChartCrossFilterService_1;\n __decorate$F([Autowired('gridApi')], ChartCrossFilterService.prototype, \"gridApi\", void 0);\n __decorate$F([Autowired('columnModel')], ChartCrossFilterService.prototype, \"columnModel\", void 0);\n __decorate$F([Autowired('valueService')], ChartCrossFilterService.prototype, \"valueService\", void 0);\n ChartCrossFilterService = ChartCrossFilterService_1 = __decorate$F([Bean(\"chartCrossFilterService\")], ChartCrossFilterService);\n return ChartCrossFilterService;\n}(BeanStub);\nvar __extends$Y = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign$7 = undefined && undefined.__assign || function () {\n __assign$7 = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$7.apply(this, arguments);\n};\nvar __decorate$E = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __read$8 = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread$2 = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$8(arguments[i]));\n return ar;\n};\nvar __values$2 = undefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar RangeService = /** @class */function (_super) {\n __extends$Y(RangeService, _super);\n function RangeService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.cellRanges = [];\n _this.bodyScrollListener = _this.onBodyScroll.bind(_this);\n _this.dragging = false;\n _this.intersectionRange = false; // When dragging ends, the current range will be used to intersect all other ranges\n return _this;\n }\n RangeService.prototype.init = function () {\n var _this = this;\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, function () {\n return _this.onColumnsChanged();\n });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VISIBLE, this.onColumnsChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, this.onColumnsChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, function () {\n return _this.removeAllCellRanges();\n });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, function () {\n return _this.removeAllCellRanges();\n });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_CHANGED, function () {\n return _this.removeAllCellRanges();\n });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_GROUP_OPENED, this.refreshLastRangeStart.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_MOVED, this.refreshLastRangeStart.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PINNED, this.refreshLastRangeStart.bind(this));\n this.ctrlsService.whenReady(function () {\n var gridBodyCtrl = _this.ctrlsService.getGridBodyCtrl();\n _this.autoScrollService = new AutoScrollService({\n scrollContainer: gridBodyCtrl.getBodyViewportElement(),\n scrollAxis: 'xy',\n getVerticalPosition: function () {\n return gridBodyCtrl.getScrollFeature().getVScrollPosition().top;\n },\n setVerticalPosition: function (position) {\n return gridBodyCtrl.getScrollFeature().setVerticalScrollPosition(position);\n },\n getHorizontalPosition: function () {\n return gridBodyCtrl.getScrollFeature().getHScrollPosition().left;\n },\n setHorizontalPosition: function (position) {\n return gridBodyCtrl.getScrollFeature().setHorizontalScrollPosition(position);\n },\n shouldSkipVerticalScroll: function () {\n return _this.gridOptionsWrapper.getDomLayout() !== Constants.DOM_LAYOUT_NORMAL;\n },\n shouldSkipHorizontalScroll: function () {\n return gridBodyCtrl.getScrollFeature().isHorizontalScrollShowing();\n }\n });\n });\n };\n // Called for both columns loaded & column visibility events\n RangeService.prototype.onColumnsChanged = function () {\n var _this = this;\n // first move start column in last cell range (i.e. series chart range)\n this.refreshLastRangeStart();\n var allColumns = this.columnModel.getAllDisplayedColumns();\n // check that the columns in each range still exist and are visible\n this.cellRanges.forEach(function (cellRange) {\n var beforeCols = cellRange.columns;\n // remove hidden or removed cols from cell range\n cellRange.columns = cellRange.columns.filter(function (col) {\n return col.isVisible() && allColumns.indexOf(col) !== -1;\n });\n var colsInRangeChanged = !_.areEqual(beforeCols, cellRange.columns);\n if (colsInRangeChanged) {\n // notify users and other parts of grid (i.e. status panel) that range has changed\n _this.dispatchChangedEvent(false, true, cellRange.id);\n }\n });\n // Remove empty cell ranges\n var countBefore = this.cellRanges.length;\n this.cellRanges = this.cellRanges.filter(function (range) {\n return range.columns.length > 0;\n });\n if (countBefore > this.cellRanges.length) {\n this.dispatchChangedEvent(false, true);\n }\n };\n RangeService.prototype.refreshLastRangeStart = function () {\n var lastRange = _.last(this.cellRanges);\n if (!lastRange) {\n return;\n }\n this.refreshRangeStart(lastRange);\n };\n RangeService.prototype.isContiguousRange = function (cellRange) {\n var rangeColumns = cellRange.columns;\n if (!rangeColumns.length) {\n return false;\n }\n var allColumns = this.columnModel.getAllDisplayedColumns();\n var allPositions = rangeColumns.map(function (c) {\n return allColumns.indexOf(c);\n }).sort(function (a, b) {\n return a - b;\n });\n return _.last(allPositions) - allPositions[0] + 1 === rangeColumns.length;\n };\n RangeService.prototype.getRangeStartRow = function (cellRange) {\n if (cellRange.startRow && cellRange.endRow) {\n return this.rowPositionUtils.before(cellRange.startRow, cellRange.endRow) ? cellRange.startRow : cellRange.endRow;\n }\n var rowPinned = this.pinnedRowModel.getPinnedTopRowCount() > 0 ? Constants.PINNED_TOP : null;\n return {\n rowIndex: 0,\n rowPinned: rowPinned\n };\n };\n RangeService.prototype.getRangeEndRow = function (cellRange) {\n if (cellRange.startRow && cellRange.endRow) {\n return this.rowPositionUtils.before(cellRange.startRow, cellRange.endRow) ? cellRange.endRow : cellRange.startRow;\n }\n var pinnedBottomRowCount = this.pinnedRowModel.getPinnedBottomRowCount();\n var pinnedBottom = pinnedBottomRowCount > 0;\n if (pinnedBottom) {\n return {\n rowIndex: pinnedBottomRowCount - 1,\n rowPinned: Constants.PINNED_BOTTOM\n };\n }\n return {\n rowIndex: this.rowModel.getRowCount() - 1,\n rowPinned: null\n };\n };\n RangeService.prototype.setRangeToCell = function (cell, appendRange) {\n if (appendRange === void 0) {\n appendRange = false;\n }\n if (!this.gridOptionsWrapper.isEnableRangeSelection()) {\n return;\n }\n var columns = this.calculateColumnsBetween(cell.column, cell.column);\n if (!columns) {\n return;\n }\n var suppressMultiRangeSelections = this.gridOptionsWrapper.isSuppressMultiRangeSelection();\n // if not appending, then clear previous range selections\n if (suppressMultiRangeSelections || !appendRange || _.missing(this.cellRanges)) {\n this.removeAllCellRanges(true);\n }\n var rowForCell = {\n rowIndex: cell.rowIndex,\n rowPinned: cell.rowPinned\n };\n var cellRange = {\n startRow: rowForCell,\n endRow: rowForCell,\n columns: columns,\n startColumn: cell.column\n };\n this.cellRanges.push(cellRange);\n this.setNewestRangeStartCell(cell);\n this.onDragStop();\n this.dispatchChangedEvent(true, true);\n };\n RangeService.prototype.extendLatestRangeToCell = function (cellPosition) {\n if (this.isEmpty() || !this.newestRangeStartCell) {\n return;\n }\n var cellRange = _.last(this.cellRanges);\n this.updateRangeEnd(cellRange, cellPosition);\n };\n RangeService.prototype.updateRangeEnd = function (cellRange, cellPosition, silent) {\n if (silent === void 0) {\n silent = false;\n }\n var endColumn = cellPosition.column;\n var colsToAdd = this.calculateColumnsBetween(cellRange.startColumn, endColumn);\n if (!colsToAdd || this.isLastCellOfRange(cellRange, cellPosition)) {\n return;\n }\n cellRange.columns = colsToAdd;\n cellRange.endRow = {\n rowIndex: cellPosition.rowIndex,\n rowPinned: cellPosition.rowPinned\n };\n if (!silent) {\n this.dispatchChangedEvent(true, true, cellRange.id);\n }\n };\n RangeService.prototype.refreshRangeStart = function (cellRange) {\n var startColumn = cellRange.startColumn,\n columns = cellRange.columns;\n var moveColInCellRange = function (colToMove, moveToFront) {\n var otherCols = cellRange.columns.filter(function (col) {\n return col !== colToMove;\n });\n if (colToMove) {\n cellRange.startColumn = colToMove;\n cellRange.columns = moveToFront ? __spread$2([colToMove], otherCols) : __spread$2(otherCols, [colToMove]);\n } else {\n cellRange.columns = otherCols;\n }\n };\n var _a = this.getRangeEdgeColumns(cellRange),\n left = _a.left,\n right = _a.right;\n var shouldMoveLeftCol = startColumn === columns[0] && startColumn !== left;\n if (shouldMoveLeftCol) {\n moveColInCellRange(left, true);\n return;\n }\n var shouldMoveRightCol = startColumn === _.last(columns) && startColumn === right;\n if (shouldMoveRightCol) {\n moveColInCellRange(right, false);\n return;\n }\n };\n RangeService.prototype.getRangeEdgeColumns = function (cellRange) {\n var allColumns = this.columnModel.getAllDisplayedColumns();\n var allIndices = cellRange.columns.map(function (c) {\n return allColumns.indexOf(c);\n }).filter(function (i) {\n return i > -1;\n }).sort(function (a, b) {\n return a - b;\n });\n return {\n left: allColumns[allIndices[0]],\n right: allColumns[_.last(allIndices)]\n };\n };\n // returns true if successful, false if not successful\n RangeService.prototype.extendLatestRangeInDirection = function (event) {\n if (this.isEmpty() || !this.newestRangeStartCell) {\n return;\n }\n var key = event.key;\n var ctrlKey = event.ctrlKey || event.metaKey;\n var lastRange = _.last(this.cellRanges);\n var startCell = this.newestRangeStartCell;\n var firstCol = lastRange.columns[0];\n var lastCol = _.last(lastRange.columns);\n // find the cell that is at the furthest away corner from the starting cell\n var endCellIndex = lastRange.endRow.rowIndex;\n var endCellFloating = lastRange.endRow.rowPinned;\n var endCellColumn = startCell.column === firstCol ? lastCol : firstCol;\n var endCell = {\n column: endCellColumn,\n rowIndex: endCellIndex,\n rowPinned: endCellFloating\n };\n var newEndCell = this.cellNavigationService.getNextCellToFocus(key, endCell, ctrlKey);\n // if user is at end of grid, so no cell to extend to, we return false\n if (!newEndCell) {\n return;\n }\n this.setCellRange({\n rowStartIndex: startCell.rowIndex,\n rowStartPinned: startCell.rowPinned,\n rowEndIndex: newEndCell.rowIndex,\n rowEndPinned: newEndCell.rowPinned,\n columnStart: startCell.column,\n columnEnd: newEndCell.column\n });\n return newEndCell;\n };\n RangeService.prototype.setCellRange = function (params) {\n if (!this.gridOptionsWrapper.isEnableRangeSelection()) {\n return;\n }\n this.removeAllCellRanges(true);\n this.addCellRange(params);\n };\n RangeService.prototype.setCellRanges = function (cellRanges) {\n var _this = this;\n if (_.shallowCompare(this.cellRanges, cellRanges)) {\n return;\n }\n this.removeAllCellRanges(true);\n cellRanges.forEach(function (newRange) {\n if (newRange.columns && newRange.startRow) {\n _this.setNewestRangeStartCell({\n rowIndex: newRange.startRow.rowIndex,\n rowPinned: newRange.startRow.rowPinned,\n column: newRange.columns[0]\n });\n }\n _this.cellRanges.push(newRange);\n });\n this.dispatchChangedEvent(false, true);\n };\n RangeService.prototype.setNewestRangeStartCell = function (position) {\n this.newestRangeStartCell = position;\n };\n RangeService.prototype.clearCellRangeCellValues = function (cellRanges) {\n var _this = this;\n if (!cellRanges) {\n cellRanges = this.cellRanges;\n }\n cellRanges.forEach(function (cellRange) {\n _this.forEachRowInRange(cellRange, function (rowPosition) {\n var rowNode = _this.rowPositionUtils.getRowNode(rowPosition);\n if (!rowNode) {\n return;\n }\n for (var i = 0; i < cellRange.columns.length; i++) {\n var column = _this.columnModel.getGridColumn(cellRange.columns[i]);\n if (!column || !column.isCellEditable(rowNode)) {\n return;\n }\n rowNode.setDataValue(column, null, 'rangeService');\n }\n });\n });\n };\n RangeService.prototype.createCellRangeFromCellRangeParams = function (params) {\n var _this = this;\n var columns;\n var startsOnTheRight = false;\n if (params.columns) {\n columns = params.columns.map(function (c) {\n return _this.columnModel.getColumnWithValidation(c);\n }).filter(function (c) {\n return c;\n });\n } else {\n var columnStart = this.columnModel.getColumnWithValidation(params.columnStart);\n var columnEnd = this.columnModel.getColumnWithValidation(params.columnEnd);\n if (!columnStart || !columnEnd) {\n return;\n }\n columns = this.calculateColumnsBetween(columnStart, columnEnd);\n if (columns && columns.length) {\n startsOnTheRight = columns[0] !== columnStart;\n }\n }\n if (!columns) {\n return;\n }\n var startRow = params.rowStartIndex != null ? {\n rowIndex: params.rowStartIndex,\n rowPinned: params.rowStartPinned || null\n } : undefined;\n var endRow = params.rowEndIndex != null ? {\n rowIndex: params.rowEndIndex,\n rowPinned: params.rowEndPinned || null\n } : undefined;\n return {\n startRow: startRow,\n endRow: endRow,\n columns: columns,\n startColumn: startsOnTheRight ? _.last(columns) : columns[0]\n };\n };\n RangeService.prototype.addCellRange = function (params) {\n if (!this.gridOptionsWrapper.isEnableRangeSelection()) {\n return;\n }\n var newRange = this.createCellRangeFromCellRangeParams(params);\n if (newRange) {\n if (newRange.startRow) {\n this.setNewestRangeStartCell({\n rowIndex: newRange.startRow.rowIndex,\n rowPinned: newRange.startRow.rowPinned,\n column: newRange.startColumn\n });\n }\n this.cellRanges.push(newRange);\n this.dispatchChangedEvent(false, true, newRange.id);\n }\n };\n RangeService.prototype.getCellRanges = function () {\n return this.cellRanges;\n };\n RangeService.prototype.isEmpty = function () {\n return this.cellRanges.length === 0;\n };\n RangeService.prototype.isMoreThanOneCell = function () {\n var len = this.cellRanges.length;\n if (len === 0) {\n return false;\n }\n if (len > 1) {\n return true; // Assumes a cell range must contain at least one cell\n }\n // only one range, return true if range has more than one\n var range = this.cellRanges[0];\n var startRow = this.getRangeStartRow(range);\n var endRow = this.getRangeEndRow(range);\n return startRow.rowPinned !== endRow.rowPinned || startRow.rowIndex !== endRow.rowIndex || range.columns.length !== 1;\n };\n RangeService.prototype.areAllRangesAbleToMerge = function () {\n var e_1, _a;\n var _this = this;\n var rowToColumnMap = new Map();\n var len = this.cellRanges.length;\n if (len <= 1) return true;\n this.cellRanges.forEach(function (range) {\n _this.forEachRowInRange(range, function (row) {\n var rowName = (row.rowPinned || 'normal') + \"_\" + row.rowIndex;\n var columns = rowToColumnMap.get(rowName);\n var currentRangeColIds = range.columns.map(function (col) {\n return col.getId();\n });\n if (columns) {\n var filteredColumns = currentRangeColIds.filter(function (col) {\n return columns.indexOf(col) === -1;\n });\n columns.push.apply(columns, __spread$2(filteredColumns));\n } else {\n rowToColumnMap.set(rowName, currentRangeColIds);\n }\n });\n });\n var columnsString;\n try {\n for (var _b = __values$2(rowToColumnMap.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\n var val = _c.value;\n var currentValString = val.sort().join();\n if (columnsString === undefined) {\n columnsString = currentValString;\n continue;\n }\n if (columnsString !== currentValString) {\n return false;\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n return true;\n };\n RangeService.prototype.forEachRowInRange = function (cellRange, callback) {\n var topRow = this.getRangeStartRow(cellRange);\n var bottomRow = this.getRangeEndRow(cellRange);\n var currentRow = topRow;\n while (currentRow) {\n callback(currentRow);\n if (this.rowPositionUtils.sameRow(currentRow, bottomRow)) {\n break;\n }\n currentRow = this.cellNavigationService.getRowBelow(currentRow);\n }\n };\n RangeService.prototype.removeAllCellRanges = function (silent) {\n if (this.isEmpty()) {\n return;\n }\n this.onDragStop();\n this.cellRanges.length = 0;\n if (!silent) {\n this.dispatchChangedEvent(false, true);\n }\n };\n // as the user is dragging outside of the panel, the div starts to scroll, which in turn\n // means we are selection more (or less) cells, but the mouse isn't moving, so we recalculate\n // the selection my mimicking a new mouse event\n RangeService.prototype.onBodyScroll = function () {\n if (this.dragging && this.lastMouseEvent) {\n this.onDragging(this.lastMouseEvent);\n }\n };\n RangeService.prototype.isCellInAnyRange = function (cell) {\n return this.getCellRangeCount(cell) > 0;\n };\n RangeService.prototype.isCellInSpecificRange = function (cell, range) {\n var columnInRange = range.columns !== null && _.includes(range.columns, cell.column);\n var rowInRange = this.isRowInRange(cell.rowIndex, cell.rowPinned, range);\n return columnInRange && rowInRange;\n };\n RangeService.prototype.isLastCellOfRange = function (cellRange, cell) {\n var startRow = cellRange.startRow,\n endRow = cellRange.endRow;\n var lastRow = this.rowPositionUtils.before(startRow, endRow) ? endRow : startRow;\n var isLastRow = cell.rowIndex === lastRow.rowIndex && cell.rowPinned === lastRow.rowPinned;\n var rangeFirstIndexColumn = cellRange.columns[0];\n var rangeLastIndexColumn = _.last(cellRange.columns);\n var lastRangeColumn = cellRange.startColumn === rangeFirstIndexColumn ? rangeLastIndexColumn : rangeFirstIndexColumn;\n var isLastColumn = cell.column === lastRangeColumn;\n return isLastColumn && isLastRow;\n };\n RangeService.prototype.isBottomRightCell = function (cellRange, cell) {\n var allColumns = this.columnModel.getAllDisplayedColumns();\n var allPositions = cellRange.columns.map(function (c) {\n return allColumns.indexOf(c);\n }).sort(function (a, b) {\n return a - b;\n });\n var startRow = cellRange.startRow,\n endRow = cellRange.endRow;\n var lastRow = this.rowPositionUtils.before(startRow, endRow) ? endRow : startRow;\n var isRightColumn = allColumns.indexOf(cell.column) === _.last(allPositions);\n var isLastRow = cell.rowIndex === lastRow.rowIndex && _.makeNull(cell.rowPinned) === _.makeNull(lastRow.rowPinned);\n return isRightColumn && isLastRow;\n };\n // returns the number of ranges this cell is in\n RangeService.prototype.getCellRangeCount = function (cell) {\n var _this = this;\n if (this.isEmpty()) {\n return 0;\n }\n return this.cellRanges.filter(function (cellRange) {\n return _this.isCellInSpecificRange(cell, cellRange);\n }).length;\n };\n RangeService.prototype.isRowInRange = function (rowIndex, floating, cellRange) {\n var firstRow = this.getRangeStartRow(cellRange);\n var lastRow = this.getRangeEndRow(cellRange);\n var thisRow = {\n rowIndex: rowIndex,\n rowPinned: floating || null\n };\n // compare rowPinned with == instead of === because it can be `null` or `undefined`\n var equalsFirstRow = thisRow.rowIndex === firstRow.rowIndex && thisRow.rowPinned == firstRow.rowPinned;\n var equalsLastRow = thisRow.rowIndex === lastRow.rowIndex && thisRow.rowPinned == lastRow.rowPinned;\n if (equalsFirstRow || equalsLastRow) {\n return true;\n }\n var afterFirstRow = !this.rowPositionUtils.before(thisRow, firstRow);\n var beforeLastRow = this.rowPositionUtils.before(thisRow, lastRow);\n return afterFirstRow && beforeLastRow;\n };\n RangeService.prototype.getDraggingRange = function () {\n return this.draggingRange;\n };\n RangeService.prototype.onDragStart = function (mouseEvent) {\n if (!this.gridOptionsWrapper.isEnableRangeSelection()) {\n return;\n }\n var ctrlKey = mouseEvent.ctrlKey,\n metaKey = mouseEvent.metaKey,\n shiftKey = mouseEvent.shiftKey;\n // ctrlKey for windows, metaKey for Apple\n var multiKeyPressed = ctrlKey || metaKey;\n var allowMulti = !this.gridOptionsWrapper.isSuppressMultiRangeSelection();\n var multiSelectKeyPressed = allowMulti ? multiKeyPressed : false;\n var extendRange = shiftKey && _.existsAndNotEmpty(this.cellRanges);\n if (!multiSelectKeyPressed && (!extendRange || _.exists(_.last(this.cellRanges).type))) {\n this.removeAllCellRanges(true);\n }\n // The DragService used by this service (RangeService), automatically adds a `mousemove`\n // listener the document of the page that will then call `onDragging`. If you are in a shadow DOM\n // DOM elements outside your component's wrapper will be inaccessible to you, so here, we add a \n // temporary `mousemove` listener to the gridPanel to be able to update the last hovered cell.\n this.cellHoverListener = this.addManagedListener(this.ctrlsService.getGridCtrl().getGui(), 'mousemove', this.updateValuesOnMove.bind(this));\n // This is the mouse start event, so we need to call `updateValuesOnMove` \n // manually once to get the necessary variables initiated.\n this.updateValuesOnMove(mouseEvent);\n if (!this.lastCellHovered) {\n return;\n }\n this.dragging = true;\n this.lastMouseEvent = mouseEvent;\n this.intersectionRange = multiSelectKeyPressed && this.getCellRangeCount(this.lastCellHovered) > 1;\n if (!extendRange) {\n this.setNewestRangeStartCell(this.lastCellHovered);\n }\n // if we didn't clear the ranges, then dragging means the user clicked, and when the\n // user clicks it means a range of one cell was created. we need to extend this range\n // rather than creating another range. otherwise we end up with two distinct ranges\n // from a drag operation (one from click, and one from drag).\n if (this.cellRanges.length > 0) {\n this.draggingRange = _.last(this.cellRanges);\n } else {\n var mouseRowPosition = {\n rowIndex: this.lastCellHovered.rowIndex,\n rowPinned: this.lastCellHovered.rowPinned\n };\n this.draggingRange = {\n startRow: mouseRowPosition,\n endRow: mouseRowPosition,\n columns: [this.lastCellHovered.column],\n startColumn: this.newestRangeStartCell.column\n };\n this.cellRanges.push(this.draggingRange);\n }\n this.ctrlsService.getGridBodyCtrl().addScrollEventListener(this.bodyScrollListener);\n this.dispatchChangedEvent(true, false, this.draggingRange.id);\n };\n RangeService.prototype.intersectLastRange = function (fromMouseClick) {\n var _this = this;\n // when ranges are created due to a mouse click without drag (happens in cellMouseListener)\n // this method will be called with `fromMouseClick=true`.\n if (fromMouseClick && this.dragging) {\n return;\n }\n if (this.gridOptionsWrapper.isSuppressMultiRangeSelection()) {\n return;\n }\n if (this.isEmpty()) {\n return;\n }\n var lastRange = _.last(this.cellRanges);\n var intersectionStartRow = this.getRangeStartRow(lastRange);\n var intersectionEndRow = this.getRangeEndRow(lastRange);\n var newRanges = [];\n this.cellRanges.slice(0, -1).forEach(function (range) {\n var startRow = _this.getRangeStartRow(range);\n var endRow = _this.getRangeEndRow(range);\n var cols = range.columns;\n var intersectCols = cols.filter(function (col) {\n return lastRange.columns.indexOf(col) === -1;\n });\n if (intersectCols.length === cols.length) {\n // No overlapping columns, retain previous range\n newRanges.push(range);\n return;\n }\n if (_this.rowPositionUtils.before(intersectionEndRow, startRow) || _this.rowPositionUtils.before(endRow, intersectionStartRow)) {\n // No overlapping rows, retain previous range\n newRanges.push(range);\n return;\n }\n var rangeCountBefore = newRanges.length;\n // Top\n if (_this.rowPositionUtils.before(startRow, intersectionStartRow)) {\n var top_1 = {\n columns: __spread$2(cols),\n startColumn: lastRange.startColumn,\n startRow: __assign$7({}, startRow),\n endRow: _this.cellNavigationService.getRowAbove(intersectionStartRow)\n };\n newRanges.push(top_1);\n }\n // Left & Right (not contiguous with columns)\n if (intersectCols.length > 0) {\n var middle = {\n columns: intersectCols,\n startColumn: _.includes(intersectCols, lastRange.startColumn) ? lastRange.startColumn : intersectCols[0],\n startRow: _this.rowPositionUtils.rowMax([__assign$7({}, intersectionStartRow), __assign$7({}, startRow)]),\n endRow: _this.rowPositionUtils.rowMin([__assign$7({}, intersectionEndRow), __assign$7({}, endRow)])\n };\n newRanges.push(middle);\n }\n // Bottom\n if (_this.rowPositionUtils.before(intersectionEndRow, endRow)) {\n newRanges.push({\n columns: __spread$2(cols),\n startColumn: lastRange.startColumn,\n startRow: _this.cellNavigationService.getRowBelow(intersectionEndRow),\n endRow: __assign$7({}, endRow)\n });\n }\n if (newRanges.length - rangeCountBefore === 1) {\n // Only one range result from the intersection.\n // Copy the source range's id, since essentially we just reduced it's size\n newRanges[newRanges.length - 1].id = range.id;\n }\n });\n this.cellRanges = newRanges;\n // when this is called because of a clickEvent and the ranges were changed\n // we need to force a dragEnd event to update the UI.\n if (fromMouseClick) {\n this.dispatchChangedEvent(false, true);\n }\n };\n RangeService.prototype.updateValuesOnMove = function (mouseEvent) {\n var cell = this.mouseEventService.getCellPositionForEvent(mouseEvent);\n this.cellHasChanged = false;\n if (!cell || this.lastCellHovered && this.cellPositionUtils.equals(cell, this.lastCellHovered)) {\n return;\n }\n if (this.lastCellHovered) {\n this.cellHasChanged = true;\n }\n this.lastCellHovered = cell;\n };\n RangeService.prototype.onDragging = function (mouseEvent) {\n var _this = this;\n if (!this.dragging || !mouseEvent) {\n return;\n }\n this.lastMouseEvent = mouseEvent;\n var cellPosition = this.lastCellHovered;\n var isMouseAndStartInPinned = function (position) {\n return cellPosition && cellPosition.rowPinned === position && _this.newestRangeStartCell.rowPinned === position;\n };\n var skipVerticalScroll = isMouseAndStartInPinned('top') || isMouseAndStartInPinned('bottom');\n this.autoScrollService.check(mouseEvent, skipVerticalScroll);\n if (!this.cellHasChanged) {\n return;\n }\n var columns = this.calculateColumnsBetween(this.newestRangeStartCell.column, cellPosition.column);\n if (!columns) {\n return;\n }\n this.draggingRange.endRow = {\n rowIndex: cellPosition.rowIndex,\n rowPinned: cellPosition.rowPinned\n };\n this.draggingRange.columns = columns;\n this.dispatchChangedEvent(false, false, this.draggingRange.id);\n };\n RangeService.prototype.onDragStop = function () {\n if (this.cellHoverListener) {\n this.cellHoverListener();\n this.cellHoverListener = undefined;\n }\n if (!this.dragging) {\n return;\n }\n var id = this.draggingRange.id;\n this.autoScrollService.ensureCleared();\n this.ctrlsService.getGridBodyCtrl().removeScrollEventListener(this.bodyScrollListener);\n this.lastMouseEvent = null;\n this.dragging = false;\n this.draggingRange = undefined;\n this.lastCellHovered = undefined;\n if (this.intersectionRange) {\n this.intersectionRange = false;\n this.intersectLastRange();\n }\n this.dispatchChangedEvent(false, true, id);\n };\n RangeService.prototype.dispatchChangedEvent = function (started, finished, id) {\n var event = Object.freeze({\n type: Events.EVENT_RANGE_SELECTION_CHANGED,\n started: started,\n finished: finished,\n id: id\n });\n this.eventService.dispatchEvent(event);\n };\n RangeService.prototype.calculateColumnsBetween = function (columnFrom, columnTo) {\n var allColumns = this.columnModel.getAllDisplayedColumns();\n var isSameColumn = columnFrom === columnTo;\n var fromIndex = allColumns.indexOf(columnFrom);\n if (fromIndex < 0) {\n console.warn(\"AG Grid: column \" + columnFrom.getId() + \" is not visible\");\n return;\n }\n var toIndex = isSameColumn ? fromIndex : allColumns.indexOf(columnTo);\n if (toIndex < 0) {\n console.warn(\"AG Grid: column \" + columnTo.getId() + \" is not visible\");\n return;\n }\n if (isSameColumn) {\n return [columnFrom];\n }\n var firstIndex = Math.min(fromIndex, toIndex);\n var lastIndex = firstIndex === fromIndex ? toIndex : fromIndex;\n var columns = [];\n for (var i = firstIndex; i <= lastIndex; i++) {\n columns.push(allColumns[i]);\n }\n return columns;\n };\n __decorate$E([Autowired('rowModel')], RangeService.prototype, \"rowModel\", void 0);\n __decorate$E([Autowired('columnModel')], RangeService.prototype, \"columnModel\", void 0);\n __decorate$E([Autowired('mouseEventService')], RangeService.prototype, \"mouseEventService\", void 0);\n __decorate$E([Autowired('cellNavigationService')], RangeService.prototype, \"cellNavigationService\", void 0);\n __decorate$E([Autowired(\"pinnedRowModel\")], RangeService.prototype, \"pinnedRowModel\", void 0);\n __decorate$E([Autowired('rowPositionUtils')], RangeService.prototype, \"rowPositionUtils\", void 0);\n __decorate$E([Autowired('cellPositionUtils')], RangeService.prototype, \"cellPositionUtils\", void 0);\n __decorate$E([Autowired('ctrlsService')], RangeService.prototype, \"ctrlsService\", void 0);\n __decorate$E([PostConstruct], RangeService.prototype, \"init\", null);\n RangeService = __decorate$E([Bean('rangeService')], RangeService);\n return RangeService;\n}(BeanStub);\nvar __extends$X = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$D = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar AbstractSelectionHandle = /** @class */function (_super) {\n __extends$X(AbstractSelectionHandle, _super);\n function AbstractSelectionHandle() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.changedCalculatedValues = false;\n _this.dragging = false;\n _this.shouldDestroyOnEndDragging = false;\n return _this;\n }\n AbstractSelectionHandle.prototype.init = function () {\n var _this = this;\n this.dragService.addDragSource({\n dragStartPixels: 0,\n eElement: this.getGui(),\n onDragStart: this.onDragStart.bind(this),\n onDragging: function (e) {\n _this.dragging = true;\n _this.rangeService.autoScrollService.check(e);\n if (_this.changedCalculatedValues) {\n _this.onDrag(e);\n _this.changedCalculatedValues = false;\n }\n },\n onDragStop: function (e) {\n _this.dragging = false;\n _this.onDragEnd(e);\n _this.clearValues();\n _this.rangeService.autoScrollService.ensureCleared();\n // TODO: this causes a bug where if there are multiple grids in the same page, all of them will\n // be affected by a drag on any. Move it to the root element.\n document.body.classList.remove(_this.getDraggingCssClass());\n if (_this.shouldDestroyOnEndDragging) {\n _this.destroy();\n }\n }\n });\n this.addManagedListener(this.getGui(), 'mousedown', this.preventRangeExtension.bind(this));\n };\n AbstractSelectionHandle.prototype.isDragging = function () {\n return this.dragging;\n };\n AbstractSelectionHandle.prototype.getCellCtrl = function () {\n return this.cellCtrl;\n };\n AbstractSelectionHandle.prototype.setCellCtrl = function (cellComp) {\n this.cellCtrl = cellComp;\n };\n AbstractSelectionHandle.prototype.getCellRange = function () {\n return this.cellRange;\n };\n AbstractSelectionHandle.prototype.setCellRange = function (range) {\n this.cellRange = range;\n };\n AbstractSelectionHandle.prototype.getRangeStartRow = function () {\n return this.rangeStartRow;\n };\n AbstractSelectionHandle.prototype.setRangeStartRow = function (row) {\n this.rangeStartRow = row;\n };\n AbstractSelectionHandle.prototype.getRangeEndRow = function () {\n return this.rangeEndRow;\n };\n AbstractSelectionHandle.prototype.setRangeEndRow = function (row) {\n this.rangeEndRow = row;\n };\n AbstractSelectionHandle.prototype.getLastCellHovered = function () {\n return this.lastCellHovered;\n };\n AbstractSelectionHandle.prototype.preventRangeExtension = function (e) {\n e.preventDefault();\n e.stopPropagation();\n };\n AbstractSelectionHandle.prototype.onDragStart = function (e) {\n this.cellHoverListener = this.addManagedListener(this.ctrlsService.getGridCtrl().getGui(), 'mousemove', this.updateValuesOnMove.bind(this));\n document.body.classList.add(this.getDraggingCssClass());\n };\n AbstractSelectionHandle.prototype.getDraggingCssClass = function () {\n return \"ag-dragging-\" + (this.type === SelectionHandleType.FILL ? 'fill' : 'range') + \"-handle\";\n };\n AbstractSelectionHandle.prototype.updateValuesOnMove = function (e) {\n var cell = this.mouseEventService.getCellPositionForEvent(e);\n if (!cell || this.lastCellHovered && this.cellPositionUtils.equals(cell, this.lastCellHovered)) {\n return;\n }\n this.lastCellHovered = cell;\n this.changedCalculatedValues = true;\n };\n AbstractSelectionHandle.prototype.getType = function () {\n return this.type;\n };\n AbstractSelectionHandle.prototype.refresh = function (cellCtrl) {\n var oldCellComp = this.getCellCtrl();\n var eGui = this.getGui();\n var cellRange = _.last(this.rangeService.getCellRanges());\n var start = cellRange.startRow;\n var end = cellRange.endRow;\n if (start && end) {\n var isBefore = this.rowPositionUtils.before(end, start);\n if (isBefore) {\n this.setRangeStartRow(end);\n this.setRangeEndRow(start);\n } else {\n this.setRangeStartRow(start);\n this.setRangeEndRow(end);\n }\n }\n if (oldCellComp !== cellCtrl || !_.isVisible(eGui)) {\n this.setCellCtrl(cellCtrl);\n var eParentOfValue = cellCtrl.getComp().getParentOfValue();\n if (eParentOfValue) {\n eParentOfValue.appendChild(eGui);\n }\n }\n this.setCellRange(cellRange);\n };\n AbstractSelectionHandle.prototype.clearValues = function () {\n this.lastCellHovered = undefined;\n this.removeListeners();\n };\n AbstractSelectionHandle.prototype.removeListeners = function () {\n if (this.cellHoverListener) {\n this.cellHoverListener();\n this.cellHoverListener = undefined;\n }\n };\n AbstractSelectionHandle.prototype.destroy = function () {\n if (!this.shouldDestroyOnEndDragging && this.isDragging()) {\n _.setDisplayed(this.getGui(), false);\n this.shouldDestroyOnEndDragging = true;\n return;\n }\n this.shouldDestroyOnEndDragging = false;\n _super.prototype.destroy.call(this);\n this.removeListeners();\n var eGui = this.getGui();\n if (eGui.parentElement) {\n eGui.parentElement.removeChild(eGui);\n }\n };\n __decorate$D([Autowired(\"rowRenderer\")], AbstractSelectionHandle.prototype, \"rowRenderer\", void 0);\n __decorate$D([Autowired(\"dragService\")], AbstractSelectionHandle.prototype, \"dragService\", void 0);\n __decorate$D([Autowired(\"rangeService\")], AbstractSelectionHandle.prototype, \"rangeService\", void 0);\n __decorate$D([Autowired(\"mouseEventService\")], AbstractSelectionHandle.prototype, \"mouseEventService\", void 0);\n __decorate$D([Autowired(\"columnModel\")], AbstractSelectionHandle.prototype, \"columnModel\", void 0);\n __decorate$D([Autowired(\"cellNavigationService\")], AbstractSelectionHandle.prototype, \"cellNavigationService\", void 0);\n __decorate$D([Autowired(\"navigationService\")], AbstractSelectionHandle.prototype, \"navigationService\", void 0);\n __decorate$D([Autowired('rowPositionUtils')], AbstractSelectionHandle.prototype, \"rowPositionUtils\", void 0);\n __decorate$D([Autowired('cellPositionUtils')], AbstractSelectionHandle.prototype, \"cellPositionUtils\", void 0);\n __decorate$D([Autowired('ctrlsService')], AbstractSelectionHandle.prototype, \"ctrlsService\", void 0);\n __decorate$D([PostConstruct], AbstractSelectionHandle.prototype, \"init\", null);\n return AbstractSelectionHandle;\n}(Component);\nvar __extends$W = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign$6 = undefined && undefined.__assign || function () {\n __assign$6 = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$6.apply(this, arguments);\n};\nvar __decorate$C = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __read$7 = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread$1 = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$7(arguments[i]));\n return ar;\n};\nvar FillHandle = /** @class */function (_super) {\n __extends$W(FillHandle, _super);\n function FillHandle() {\n var _this = _super.call(this, FillHandle.TEMPLATE) || this;\n _this.markedCells = [];\n _this.cellValues = [];\n _this.isUp = false;\n _this.isLeft = false;\n _this.isReduce = false;\n _this.type = SelectionHandleType.FILL;\n return _this;\n }\n FillHandle.prototype.updateValuesOnMove = function (e) {\n _super.prototype.updateValuesOnMove.call(this, e);\n if (!this.initialXY) {\n this.initialXY = this.mouseEventService.getNormalisedPosition(e);\n }\n var _a = this.initialXY,\n x = _a.x,\n y = _a.y;\n var _b = this.mouseEventService.getNormalisedPosition(e),\n newX = _b.x,\n newY = _b.y;\n var diffX = Math.abs(x - newX);\n var diffY = Math.abs(y - newY);\n var allowedDirection = this.gridOptionsWrapper.getFillHandleDirection();\n var direction;\n if (allowedDirection === 'xy') {\n direction = diffX > diffY ? 'x' : 'y';\n } else {\n direction = allowedDirection;\n }\n if (direction !== this.dragAxis) {\n this.dragAxis = direction;\n this.changedCalculatedValues = true;\n }\n };\n FillHandle.prototype.onDrag = function (e) {\n if (!this.initialPosition) {\n var cellCtrl = this.getCellCtrl();\n if (!cellCtrl) {\n return;\n }\n this.initialPosition = cellCtrl.getCellPosition();\n }\n var lastCellHovered = this.getLastCellHovered();\n if (lastCellHovered) {\n this.markPathFrom(this.initialPosition, lastCellHovered);\n }\n };\n FillHandle.prototype.onDragEnd = function (e) {\n this.initialXY = null;\n if (!this.markedCells.length) {\n return;\n }\n var isX = this.dragAxis === 'x';\n var initialRange = this.getCellRange();\n var colLen = initialRange.columns.length;\n var rangeStartRow = this.getRangeStartRow();\n var rangeEndRow = this.getRangeEndRow();\n var finalRange;\n if (!this.isUp && !this.isLeft) {\n finalRange = this.rangeService.createCellRangeFromCellRangeParams({\n rowStartIndex: rangeStartRow.rowIndex,\n rowStartPinned: rangeStartRow.rowPinned,\n columnStart: initialRange.columns[0],\n rowEndIndex: isX ? rangeEndRow.rowIndex : this.lastCellMarked.rowIndex,\n rowEndPinned: isX ? rangeEndRow.rowPinned : this.lastCellMarked.rowPinned,\n columnEnd: isX ? this.lastCellMarked.column : initialRange.columns[colLen - 1]\n });\n } else {\n var startRow = isX ? rangeStartRow : this.lastCellMarked;\n finalRange = this.rangeService.createCellRangeFromCellRangeParams({\n rowStartIndex: startRow.rowIndex,\n rowStartPinned: startRow.rowPinned,\n columnStart: isX ? this.lastCellMarked.column : initialRange.columns[0],\n rowEndIndex: rangeEndRow.rowIndex,\n rowEndPinned: rangeEndRow.rowPinned,\n columnEnd: initialRange.columns[colLen - 1]\n });\n }\n if (finalRange) {\n // raising fill events for undo / redo\n this.raiseFillStartEvent();\n this.handleValueChanged(initialRange, finalRange, e);\n this.rangeService.setCellRanges([finalRange]);\n this.raiseFillEndEvent(initialRange, finalRange);\n }\n };\n FillHandle.prototype.raiseFillStartEvent = function () {\n var fillStartEvent = {\n type: Events.EVENT_FILL_START\n };\n this.eventService.dispatchEvent(fillStartEvent);\n };\n FillHandle.prototype.raiseFillEndEvent = function (initialRange, finalRange) {\n var fillEndEvent = {\n type: Events.EVENT_FILL_END,\n initialRange: initialRange,\n finalRange: finalRange\n };\n this.eventService.dispatchEvent(fillEndEvent);\n };\n FillHandle.prototype.handleValueChanged = function (initialRange, finalRange, e) {\n var _this = this;\n var initialRangeEndRow = this.rangeService.getRangeEndRow(initialRange);\n var initialRangeStartRow = this.rangeService.getRangeStartRow(initialRange);\n var finalRangeEndRow = this.rangeService.getRangeEndRow(finalRange);\n var finalRangeStartRow = this.rangeService.getRangeStartRow(finalRange);\n var isVertical = this.dragAxis === 'y';\n // if the range is being reduced in size, all we need to do is\n // clear the cells that are no longer part of the range\n if (this.isReduce && !this.gridOptionsWrapper.isSuppressClearOnFillReduction()) {\n var columns = isVertical ? initialRange.columns : initialRange.columns.filter(function (col) {\n return finalRange.columns.indexOf(col) < 0;\n });\n var startRow = isVertical ? this.cellNavigationService.getRowBelow(finalRangeEndRow) : finalRangeStartRow;\n if (startRow) {\n this.clearCellsInRange(startRow, initialRangeEndRow, columns);\n }\n return;\n }\n var withinInitialRange = true;\n var values = [];\n var initialValues = [];\n var idx = 0;\n var resetValues = function () {\n values.length = 0;\n initialValues.length = 0;\n idx = 0;\n };\n var iterateAcrossCells = function (column, columns) {\n var currentRow = _this.isUp ? initialRangeEndRow : initialRangeStartRow;\n var finished = false;\n if (isVertical) {\n withinInitialRange = true;\n resetValues();\n }\n var _loop_1 = function () {\n var rowNode = _this.rowPositionUtils.getRowNode(currentRow);\n if (!rowNode) {\n return \"break\";\n }\n if (isVertical && column) {\n fillValues(values, column, rowNode, function () {\n return !_this.rowPositionUtils.sameRow(currentRow, _this.isUp ? initialRangeStartRow : initialRangeEndRow);\n });\n } else if (columns) {\n withinInitialRange = true;\n resetValues();\n columns.forEach(function (col) {\n return fillValues(values, col, rowNode, function () {\n return col !== (_this.isLeft ? initialRange.columns[0] : _.last(initialRange.columns));\n });\n });\n }\n finished = _this.rowPositionUtils.sameRow(currentRow, _this.isUp ? finalRangeStartRow : finalRangeEndRow);\n currentRow = _this.isUp ? _this.cellNavigationService.getRowAbove(currentRow) : _this.cellNavigationService.getRowBelow(currentRow);\n };\n while (!finished && currentRow) {\n var state_1 = _loop_1();\n if (state_1 === \"break\") break;\n }\n };\n var fillValues = function (currentValues, col, rowNode, updateInitialSet) {\n var currentValue;\n var skipValue = false;\n if (withinInitialRange) {\n currentValue = _this.getValueFromObject(_this.valueService.getValue(col, rowNode));\n initialValues.push(currentValue);\n withinInitialRange = updateInitialSet();\n } else {\n var _a = _this.processValues(e, currentValues, initialValues, col, rowNode, idx++),\n value = _a.value,\n fromUserFunction = _a.fromUserFunction;\n currentValue = value;\n if (col.isCellEditable(rowNode)) {\n var cellValue = _this.getValueFromObject(_this.valueService.getValue(col, rowNode));\n if (!fromUserFunction || cellValue !== currentValue) {\n rowNode.setDataValue(col, currentValue, 'rangeService');\n } else {\n skipValue = true;\n }\n }\n }\n if (!skipValue) {\n currentValues.push(currentValue);\n }\n };\n if (isVertical) {\n initialRange.columns.forEach(function (col) {\n iterateAcrossCells(col);\n });\n } else {\n var columns = this.isLeft ? __spread$1(finalRange.columns).reverse() : finalRange.columns;\n iterateAcrossCells(undefined, columns);\n }\n };\n FillHandle.prototype.clearCellsInRange = function (startRow, endRow, columns) {\n var cellRange = {\n startRow: startRow,\n endRow: endRow,\n columns: columns,\n startColumn: columns[0]\n };\n this.rangeService.clearCellRangeCellValues([cellRange]);\n };\n FillHandle.prototype.processValues = function (event, values, initialValues, col, rowNode, idx) {\n var userFillOperation = this.gridOptionsWrapper.getFillOperation();\n var isVertical = this.dragAxis === 'y';\n var direction;\n if (isVertical) {\n direction = this.isUp ? 'up' : 'down';\n } else {\n direction = this.isLeft ? 'left' : 'right';\n }\n if (userFillOperation) {\n var params = {\n event: event,\n values: values,\n initialValues: initialValues,\n currentIndex: idx,\n currentCellValue: this.valueService.getValue(col, rowNode),\n direction: direction,\n column: col,\n rowNode: rowNode\n };\n var userResult = userFillOperation(params);\n if (userResult !== false) {\n return {\n value: userResult,\n fromUserFunction: true\n };\n }\n }\n var processedValues = values.map(this.getValueFromObject);\n var allNumbers = !processedValues.some(function (val) {\n var asFloat = parseFloat(val);\n return isNaN(asFloat) || asFloat.toString() !== val.toString();\n });\n // values should be copied in order if the alt key is pressed\n // or if the values contain strings and numbers\n // However, if we only have one initial value selected, and that\n // value is a number and we are also pressing alt, then we should\n // increment or decrement the value by 1 based on direction.\n if (event.altKey || !allNumbers) {\n if (allNumbers && initialValues.length === 1) {\n var multiplier = this.isUp || this.isLeft ? -1 : 1;\n return {\n value: parseFloat(_.last(processedValues)) + 1 * multiplier,\n fromUserFunction: false\n };\n }\n return {\n value: processedValues[idx % processedValues.length],\n fromUserFunction: false\n };\n }\n return {\n value: _.last(_.findLineByLeastSquares(processedValues.map(Number))),\n fromUserFunction: false\n };\n };\n FillHandle.prototype.getValueFromObject = function (val) {\n if (val != null && typeof val === 'object') {\n // @ts-ignore\n return val.toString();\n }\n return val;\n };\n FillHandle.prototype.clearValues = function () {\n this.clearMarkedPath();\n this.clearCellValues();\n this.lastCellMarked = undefined;\n _super.prototype.clearValues.call(this);\n };\n FillHandle.prototype.clearMarkedPath = function () {\n this.markedCells.forEach(function (cell) {\n if (!cell.isAlive()) {\n return;\n }\n var comp = cell.getComp();\n comp.addOrRemoveCssClass('ag-selection-fill-top', false);\n comp.addOrRemoveCssClass('ag-selection-fill-right', false);\n comp.addOrRemoveCssClass('ag-selection-fill-bottom', false);\n comp.addOrRemoveCssClass('ag-selection-fill-left', false);\n });\n this.markedCells.length = 0;\n this.isUp = false;\n this.isLeft = false;\n this.isReduce = false;\n };\n FillHandle.prototype.clearCellValues = function () {\n this.cellValues.length = 0;\n };\n FillHandle.prototype.markPathFrom = function (initialPosition, currentPosition) {\n this.clearMarkedPath();\n this.clearCellValues();\n if (this.dragAxis === 'y') {\n if (this.rowPositionUtils.sameRow(currentPosition, initialPosition)) {\n return;\n }\n var isBefore = this.rowPositionUtils.before(currentPosition, initialPosition);\n var rangeStartRow = this.getRangeStartRow();\n var rangeEndRow = this.getRangeEndRow();\n if (isBefore && (currentPosition.rowPinned == rangeStartRow.rowPinned && currentPosition.rowIndex >= rangeStartRow.rowIndex || rangeStartRow.rowPinned != rangeEndRow.rowPinned && currentPosition.rowPinned == rangeEndRow.rowPinned && currentPosition.rowIndex <= rangeEndRow.rowIndex)) {\n this.reduceVertical(initialPosition, currentPosition);\n this.isReduce = true;\n } else {\n this.extendVertical(initialPosition, currentPosition, isBefore);\n this.isReduce = false;\n }\n } else {\n var initialColumn = initialPosition.column;\n var currentColumn = currentPosition.column;\n if (initialColumn === currentColumn) {\n return;\n }\n var displayedColumns = this.columnModel.getAllDisplayedColumns();\n var initialIndex = displayedColumns.indexOf(initialColumn);\n var currentIndex = displayedColumns.indexOf(currentColumn);\n if (currentIndex <= initialIndex && currentIndex >= displayedColumns.indexOf(this.getCellRange().columns[0])) {\n this.reduceHorizontal(initialPosition, currentPosition);\n this.isReduce = true;\n } else {\n this.extendHorizontal(initialPosition, currentPosition, currentIndex < initialIndex);\n this.isReduce = false;\n }\n }\n this.lastCellMarked = currentPosition;\n };\n FillHandle.prototype.extendVertical = function (initialPosition, endPosition, isMovingUp) {\n var _a = this,\n navigationService = _a.navigationService,\n rangeService = _a.rangeService;\n var row = initialPosition;\n do {\n var cellRange = this.getCellRange();\n var colLen = cellRange.columns.length;\n for (var i = 0; i < colLen; i++) {\n var column = cellRange.columns[i];\n var rowPos = {\n rowIndex: row.rowIndex,\n rowPinned: row.rowPinned\n };\n var cellPos = __assign$6(__assign$6({}, rowPos), {\n column: column\n });\n var cellInRange = rangeService.isCellInSpecificRange(cellPos, cellRange);\n var isInitialRow = this.rowPositionUtils.sameRow(row, initialPosition);\n if (isMovingUp) {\n this.isUp = true;\n }\n if (!isInitialRow) {\n var cell = navigationService.getCellByPosition(cellPos);\n if (cell) {\n this.markedCells.push(cell);\n var cellCtrl = cell.getComp();\n if (!cellInRange) {\n cellCtrl.addOrRemoveCssClass('ag-selection-fill-left', i === 0);\n cellCtrl.addOrRemoveCssClass('ag-selection-fill-right', i === colLen - 1);\n }\n cellCtrl.addOrRemoveCssClass(isMovingUp ? 'ag-selection-fill-top' : 'ag-selection-fill-bottom', this.rowPositionUtils.sameRow(row, endPosition));\n }\n }\n }\n if (this.rowPositionUtils.sameRow(row, endPosition)) {\n break;\n }\n } while (\n // tslint:disable-next-line\n row = isMovingUp ? this.cellNavigationService.getRowAbove(row) : this.cellNavigationService.getRowBelow(row));\n };\n FillHandle.prototype.reduceVertical = function (initialPosition, endPosition) {\n var row = initialPosition;\n do {\n var cellRange = this.getCellRange();\n var colLen = cellRange.columns.length;\n var isLastRow = this.rowPositionUtils.sameRow(row, endPosition);\n for (var i = 0; i < colLen; i++) {\n var rowPos = {\n rowIndex: row.rowIndex,\n rowPinned: row.rowPinned\n };\n var celPos = __assign$6(__assign$6({}, rowPos), {\n column: cellRange.columns[i]\n });\n var cell = this.navigationService.getCellByPosition(celPos);\n if (cell) {\n this.markedCells.push(cell);\n var cellComp = cell.getComp();\n cellComp.addOrRemoveCssClass('ag-selection-fill-bottom', this.rowPositionUtils.sameRow(row, endPosition));\n }\n }\n if (isLastRow) {\n break;\n }\n // tslint:disable-next-line\n } while (row = this.cellNavigationService.getRowAbove(row));\n };\n FillHandle.prototype.extendHorizontal = function (initialPosition, endPosition, isMovingLeft) {\n var _this = this;\n var allCols = this.columnModel.getAllDisplayedColumns();\n var startCol = allCols.indexOf(isMovingLeft ? endPosition.column : initialPosition.column);\n var endCol = allCols.indexOf(isMovingLeft ? this.getCellRange().columns[0] : endPosition.column);\n var offset = isMovingLeft ? 0 : 1;\n var colsToMark = allCols.slice(startCol + offset, endCol + offset);\n var rangeStartRow = this.getRangeStartRow();\n var rangeEndRow = this.getRangeEndRow();\n colsToMark.forEach(function (column) {\n var row = rangeStartRow;\n var isLastRow = false;\n do {\n isLastRow = _this.rowPositionUtils.sameRow(row, rangeEndRow);\n var cell = _this.navigationService.getCellByPosition({\n rowIndex: row.rowIndex,\n rowPinned: row.rowPinned,\n column: column\n });\n if (cell) {\n _this.markedCells.push(cell);\n var cellComp = cell.getComp();\n cellComp.addOrRemoveCssClass('ag-selection-fill-top', _this.rowPositionUtils.sameRow(row, rangeStartRow));\n cellComp.addOrRemoveCssClass('ag-selection-fill-bottom', _this.rowPositionUtils.sameRow(row, rangeEndRow));\n if (isMovingLeft) {\n _this.isLeft = true;\n cellComp.addOrRemoveCssClass('ag-selection-fill-left', column === colsToMark[0]);\n } else {\n cellComp.addOrRemoveCssClass('ag-selection-fill-right', column === _.last(colsToMark));\n }\n }\n row = _this.cellNavigationService.getRowBelow(row);\n } while (!isLastRow);\n });\n };\n FillHandle.prototype.reduceHorizontal = function (initialPosition, endPosition) {\n var _this = this;\n var allCols = this.columnModel.getAllDisplayedColumns();\n var startCol = allCols.indexOf(endPosition.column);\n var endCol = allCols.indexOf(initialPosition.column);\n var colsToMark = allCols.slice(startCol, endCol);\n var rangeStartRow = this.getRangeStartRow();\n var rangeEndRow = this.getRangeEndRow();\n colsToMark.forEach(function (column) {\n var row = rangeStartRow;\n var isLastRow = false;\n do {\n isLastRow = _this.rowPositionUtils.sameRow(row, rangeEndRow);\n var cell = _this.navigationService.getCellByPosition({\n rowIndex: row.rowIndex,\n rowPinned: row.rowPinned,\n column: column\n });\n if (cell) {\n _this.markedCells.push(cell);\n var cellComp = cell.getComp();\n cellComp.addOrRemoveCssClass('ag-selection-fill-right', column === colsToMark[0]);\n }\n row = _this.cellNavigationService.getRowBelow(row);\n } while (!isLastRow);\n });\n };\n FillHandle.prototype.refresh = function (cellCtrl) {\n var cellRange = this.rangeService.getCellRanges()[0];\n var isColumnRange = !cellRange.startRow || !cellRange.endRow;\n if (isColumnRange) {\n this.destroy();\n return;\n }\n _super.prototype.refresh.call(this, cellCtrl);\n };\n FillHandle.TEMPLATE = \"
\";\n __decorate$C([Autowired('valueService')], FillHandle.prototype, \"valueService\", void 0);\n return FillHandle;\n}(AbstractSelectionHandle);\nvar __extends$V = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign$5 = undefined && undefined.__assign || function () {\n __assign$5 = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$5.apply(this, arguments);\n};\nvar RangeHandle = /** @class */function (_super) {\n __extends$V(RangeHandle, _super);\n function RangeHandle() {\n var _this = _super.call(this, RangeHandle.TEMPLATE) || this;\n _this.type = SelectionHandleType.RANGE;\n _this.rangeFixed = false;\n return _this;\n }\n RangeHandle.prototype.onDrag = function (e) {\n var lastCellHovered = this.getLastCellHovered();\n if (!lastCellHovered) {\n return;\n }\n var cellRanges = this.rangeService.getCellRanges();\n var lastRange = _.last(cellRanges);\n if (!this.rangeFixed) {\n this.fixRangeStartEnd(lastRange);\n this.rangeFixed = true;\n }\n this.endPosition = {\n rowIndex: lastCellHovered.rowIndex,\n rowPinned: lastCellHovered.rowPinned,\n column: lastCellHovered.column\n };\n // check if the cell ranges are for a chart\n if (cellRanges.length === 2 && cellRanges[0].type === CellRangeType.DIMENSION && lastRange.type === CellRangeType.VALUE) {\n var rowChanged = !this.rowPositionUtils.sameRow(this.endPosition, this.rangeService.getRangeEndRow(lastRange));\n if (rowChanged) {\n // ensure the dimension range is kept in sync with the value range (which has the handle)\n this.rangeService.updateRangeEnd(cellRanges[0], __assign$5(__assign$5({}, this.endPosition), {\n column: cellRanges[0].columns[0]\n }), true);\n }\n }\n this.rangeService.extendLatestRangeToCell(this.endPosition);\n };\n RangeHandle.prototype.onDragEnd = function (e) {\n var cellRange = _.last(this.rangeService.getCellRanges());\n this.fixRangeStartEnd(cellRange);\n this.rangeFixed = false;\n };\n RangeHandle.prototype.fixRangeStartEnd = function (cellRange) {\n var startRow = this.rangeService.getRangeStartRow(cellRange);\n var endRow = this.rangeService.getRangeEndRow(cellRange);\n var column = cellRange.columns[0];\n cellRange.startRow = startRow;\n cellRange.endRow = endRow;\n cellRange.startColumn = column;\n };\n RangeHandle.TEMPLATE = \"
\";\n return RangeHandle;\n}(AbstractSelectionHandle);\nvar __extends$U = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$B = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar SelectionHandleFactory = /** @class */function (_super) {\n __extends$U(SelectionHandleFactory, _super);\n function SelectionHandleFactory() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SelectionHandleFactory.prototype.createSelectionHandle = function (type) {\n return this.createBean(type === SelectionHandleType.RANGE ? new RangeHandle() : new FillHandle());\n };\n SelectionHandleFactory = __decorate$B([Bean('selectionHandleFactory')], SelectionHandleFactory);\n return SelectionHandleFactory;\n}(BeanStub);\nvar RangeSelectionModule = {\n moduleName: ModuleNames.RangeSelectionModule,\n beans: [RangeService, SelectionHandleFactory],\n agStackComponents: [{\n componentName: 'AgFillHandle',\n componentClass: FillHandle\n }, {\n componentName: 'AgRangeHandle',\n componentClass: RangeHandle\n }],\n dependantModules: [EnterpriseCoreModule]\n};\nvar GridChartsModule = {\n moduleName: ModuleNames.GridChartsModule,\n beans: [ChartService, ChartTranslationService, ChartCrossFilterService],\n dependantModules: [RangeSelectionModule, EnterpriseCoreModule]\n};\nvar agCharts = {\n time: time\n};\nvar __extends$T = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign$4 = undefined && undefined.__assign || function () {\n __assign$4 = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$4.apply(this, arguments);\n};\nvar __decorate$A = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar DetailCellRendererCtrl = /** @class */function (_super) {\n __extends$T(DetailCellRendererCtrl, _super);\n function DetailCellRendererCtrl() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.loadRowDataVersion = 0;\n _this.needRefresh = false;\n return _this;\n }\n DetailCellRendererCtrl.prototype.init = function (comp, params) {\n var _this = this;\n this.params = params;\n this.comp = comp;\n var doNothingBecauseInsidePinnedSection = params.pinned != null;\n if (doNothingBecauseInsidePinnedSection) {\n return;\n }\n this.setAutoHeightClasses();\n this.setupRefreshStrategy();\n this.addThemeToDetailGrid();\n this.createDetailGrid();\n this.loadRowData();\n this.addManagedListener(params.node.parent, RowNode.EVENT_DATA_CHANGED, function () {\n _this.needRefresh = true;\n });\n this.addManagedListener(this.eventService, Events.EVENT_FULL_WIDTH_ROW_FOCUSED, this.onFullWidthRowFocused.bind(this));\n };\n DetailCellRendererCtrl.prototype.onFullWidthRowFocused = function (e) {\n var params = this.params;\n var row = {\n rowIndex: params.node.rowIndex,\n rowPinned: params.node.rowPinned\n };\n var eventRow = {\n rowIndex: e.rowIndex,\n rowPinned: e.rowPinned\n };\n var isSameRow = this.rowPositionUtils.sameRow(row, eventRow);\n if (!isSameRow) {\n return;\n }\n this.focusService.focusInto(this.comp.getGui(), e.fromBelow);\n };\n DetailCellRendererCtrl.prototype.setAutoHeightClasses = function () {\n var autoHeight = this.gridOptionsWrapper.isDetailRowAutoHeight();\n var parentClass = autoHeight ? 'ag-details-row-auto-height' : 'ag-details-row-fixed-height';\n var detailClass = autoHeight ? 'ag-details-grid-auto-height' : 'ag-details-grid-fixed-height';\n this.comp.addOrRemoveCssClass(parentClass, true);\n this.comp.addOrRemoveDetailGridCssClass(detailClass, true);\n };\n DetailCellRendererCtrl.prototype.setupRefreshStrategy = function () {\n if (this.params.suppressRefresh) {\n console.warn(\"AG Grid: as of v23.2.0, cellRendererParams.suppressRefresh for Detail Cell Renderer is no \" + \"longer used. Please set cellRendererParams.refreshStrategy = 'nothing' instead.\");\n this.refreshStrategy = 'nothing';\n return;\n }\n var providedStrategy = this.params.refreshStrategy;\n var validSelection = providedStrategy == 'everything' || providedStrategy == 'nothing' || providedStrategy == 'rows';\n if (validSelection) {\n this.refreshStrategy = providedStrategy;\n return;\n }\n if (providedStrategy != null) {\n console.warn(\"AG Grid: invalid cellRendererParams.refreshStrategy = '\" + providedStrategy + \"' supplied, defaulting to refreshStrategy = 'rows'.\");\n }\n this.refreshStrategy = 'rows';\n };\n DetailCellRendererCtrl.prototype.addThemeToDetailGrid = function () {\n // this is needed by environment service of the child grid, the class needs to be on\n // the grid div itself - the browser's CSS on the other hand just inherits from the parent grid theme.\n var theme = this.environment.getTheme().theme;\n if (theme) {\n this.comp.addOrRemoveDetailGridCssClass(theme, true);\n }\n };\n DetailCellRendererCtrl.prototype.createDetailGrid = function () {\n if (_.missing(this.params.detailGridOptions)) {\n console.warn('AG Grid: could not find detail grid options for master detail, ' + 'please set gridOptions.detailCellRendererParams.detailGridOptions');\n return;\n }\n var autoHeight = this.gridOptionsWrapper.isDetailRowAutoHeight();\n // we clone the detail grid options, as otherwise it would be shared\n // across many instances, and that would be a problem because we set\n // api and columnApi into gridOptions\n var gridOptions = __assign$4({}, this.params.detailGridOptions);\n if (autoHeight) {\n gridOptions.domLayout = 'autoHeight';\n }\n this.comp.setDetailGrid(gridOptions);\n };\n DetailCellRendererCtrl.prototype.registerDetailWithMaster = function (api, columnApi) {\n var rowId = this.params.node.id;\n var masterGridApi = this.params.api;\n var gridInfo = {\n id: rowId,\n api: api,\n columnApi: columnApi\n };\n var rowNode = this.params.node;\n // register with api\n masterGridApi.addDetailGridInfo(rowId, gridInfo);\n // register with node\n rowNode.detailGridInfo = gridInfo;\n this.addDestroyFunc(function () {\n // the gridInfo can be stale if a refresh happens and\n // a new row is created before the old one is destroyed.\n if (rowNode.detailGridInfo !== gridInfo) {\n return;\n }\n masterGridApi.removeDetailGridInfo(rowId); // unregister from api\n rowNode.detailGridInfo = null; // unregister from node\n });\n };\n DetailCellRendererCtrl.prototype.loadRowData = function () {\n var _this = this;\n // in case a refresh happens before the last refresh completes (as we depend on async\n // application logic) we keep track on what the latest call was.\n this.loadRowDataVersion++;\n var versionThisCall = this.loadRowDataVersion;\n var userFunc = this.params.getDetailRowData;\n if (!userFunc) {\n console.warn('AG Grid: could not find getDetailRowData for master / detail, ' + 'please set gridOptions.detailCellRendererParams.getDetailRowData');\n return;\n }\n var successCallback = function (rowData) {\n var mostRecentCall = _this.loadRowDataVersion === versionThisCall;\n if (mostRecentCall) {\n _this.comp.setRowData(rowData);\n }\n };\n var funcParams = {\n node: this.params.node,\n // we take data from node, rather than params.data\n // as the data could have been updated with new instance\n data: this.params.node.data,\n successCallback: successCallback,\n context: this.gridOptionsWrapper.getContext()\n };\n userFunc(funcParams);\n };\n DetailCellRendererCtrl.prototype.refresh = function () {\n var GET_GRID_TO_REFRESH = false;\n var GET_GRID_TO_DO_NOTHING = true;\n // if we return true, it means we pretend to the grid\n // that we have refreshed, so refresh will never happen.\n var doNotRefresh = !this.needRefresh || this.refreshStrategy === 'nothing';\n if (doNotRefresh) {\n // we do nothing in this refresh method, and also tell the grid to do nothing\n return GET_GRID_TO_DO_NOTHING;\n }\n // reset flag, so don't refresh again until more data changes.\n this.needRefresh = false;\n if (this.refreshStrategy === 'everything') {\n // we want full refresh, so tell the grid to destroy and recreate this cell\n return GET_GRID_TO_REFRESH;\n } else {\n // do the refresh here, and tell the grid to do nothing\n this.loadRowData();\n return GET_GRID_TO_DO_NOTHING;\n }\n };\n __decorate$A([Autowired('environment')], DetailCellRendererCtrl.prototype, \"environment\", void 0);\n __decorate$A([Autowired('rowPositionUtils')], DetailCellRendererCtrl.prototype, \"rowPositionUtils\", void 0);\n __decorate$A([Autowired('focusService')], DetailCellRendererCtrl.prototype, \"focusService\", void 0);\n return DetailCellRendererCtrl;\n}(BeanStub);\nvar __extends$S = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$z = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar DetailCellRenderer = /** @class */function (_super) {\n __extends$S(DetailCellRenderer, _super);\n function DetailCellRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DetailCellRenderer.prototype.init = function (params) {\n var _this = this;\n this.params = params;\n this.selectAndSetTemplate();\n var compProxy = {\n addOrRemoveCssClass: function (cssClassName, on) {\n return _this.addOrRemoveCssClass(cssClassName, on);\n },\n addOrRemoveDetailGridCssClass: function (cssClassName, on) {\n return _this.eDetailGrid.classList.toggle(cssClassName, on);\n },\n setDetailGrid: function (gridOptions) {\n return _this.setDetailGrid(gridOptions);\n },\n setRowData: function (rowData) {\n return _this.setRowData(rowData);\n },\n getGui: function () {\n return _this.eDetailGrid;\n }\n };\n this.ctrl = this.createManagedBean(new DetailCellRendererCtrl());\n this.ctrl.init(compProxy, params);\n };\n DetailCellRenderer.prototype.refresh = function () {\n return this.ctrl && this.ctrl.refresh();\n };\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n DetailCellRenderer.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n DetailCellRenderer.prototype.selectAndSetTemplate = function () {\n var _this = this;\n if (this.params.pinned) {\n this.setTemplate('
');\n return;\n }\n var setDefaultTemplate = function () {\n _this.setTemplate(DetailCellRenderer.TEMPLATE);\n };\n if (_.missing(this.params.template)) {\n // use default template\n setDefaultTemplate();\n } else {\n // use user provided template\n if (typeof this.params.template === 'string') {\n this.setTemplate(this.params.template);\n } else if (typeof this.params.template === 'function') {\n var templateFunc = this.params.template;\n var template = templateFunc(this.params);\n this.setTemplate(template);\n } else {\n console.warn('AG Grid: detailCellRendererParams.template should be function or string');\n setDefaultTemplate();\n }\n }\n if (this.eDetailGrid == null) {\n console.warn('AG Grid: reference to eDetailGrid was missing from the details template. ' + 'Please add ref=\"eDetailGrid\" to the template.');\n }\n };\n DetailCellRenderer.prototype.setDetailGrid = function (gridOptions) {\n if (!this.eDetailGrid) {\n return;\n }\n // AG-1715\n // this is only needed when reactUi=false, once we remove the old way\n // of doing react, and Master / Details is all native React, then we\n // can remove this code.\n var agGridReact = this.context.getBean('agGridReact');\n var agGridReactCloned = agGridReact ? _.cloneObject(agGridReact) : undefined;\n // when we create detail grid, the detail grid needs frameworkComponentWrapper so that\n // it created child components correctly, ie Angular detail grid can have Angular cell renderer.\n // this is only used by Angular and Vue, as React uses native React AG Grid detail grids\n var frameworkComponentWrapper = this.context.getBean('frameworkComponentWrapper');\n var frameworkOverrides = this.getFrameworkOverrides();\n // tslint:disable-next-line\n new Grid(this.eDetailGrid, gridOptions, {\n frameworkOverrides: frameworkOverrides,\n providedBeanInstances: {\n agGridReact: agGridReactCloned,\n frameworkComponentWrapper: frameworkComponentWrapper\n }\n });\n this.detailApi = gridOptions.api;\n this.ctrl.registerDetailWithMaster(gridOptions.api, gridOptions.columnApi);\n this.addDestroyFunc(function () {\n if (gridOptions.api) {\n gridOptions.api.destroy();\n }\n });\n };\n DetailCellRenderer.prototype.setRowData = function (rowData) {\n // ensure detail grid api still exists (grid may be destroyed when async call tries to set data)\n this.detailApi && this.detailApi.setRowData(rowData);\n };\n DetailCellRenderer.TEMPLATE = \"
\\n
\\n
\";\n __decorate$z([RefSelector('eDetailGrid')], DetailCellRenderer.prototype, \"eDetailGrid\", void 0);\n return DetailCellRenderer;\n}(Component);\nvar MasterDetailModule = {\n moduleName: ModuleNames.MasterDetailModule,\n beans: [],\n userComponents: [{\n componentName: 'agDetailCellRenderer',\n componentClass: DetailCellRenderer\n }],\n controllers: [{\n controllerName: 'detailCellRenderer',\n controllerClass: DetailCellRendererCtrl\n }],\n dependantModules: [EnterpriseCoreModule]\n};\nvar __extends$R = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$y = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar EnterpriseMenuFactory = /** @class */function (_super) {\n __extends$R(EnterpriseMenuFactory, _super);\n function EnterpriseMenuFactory() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n EnterpriseMenuFactory.prototype.hideActiveMenu = function () {\n this.destroyBean(this.activeMenu);\n };\n EnterpriseMenuFactory.prototype.showMenuAfterMouseEvent = function (column, mouseEvent, defaultTab) {\n var _this = this;\n this.showMenu(column, function (menu) {\n var ePopup = menu.getGui();\n _this.popupService.positionPopupUnderMouseEvent({\n type: 'columnMenu',\n column: column,\n mouseEvent: mouseEvent,\n ePopup: ePopup\n });\n if (defaultTab) {\n menu.showTab(defaultTab);\n }\n }, 'columnMenu', defaultTab, undefined, mouseEvent.target);\n };\n EnterpriseMenuFactory.prototype.showMenuAfterButtonClick = function (column, eventSource, containerType, defaultTab, restrictToTabs) {\n var _this = this;\n var multiplier = -1;\n var alignSide = 'left';\n if (this.gridOptionsWrapper.isEnableRtl()) {\n multiplier = 1;\n alignSide = 'right';\n }\n this.showMenu(column, function (menu) {\n var ePopup = menu.getGui();\n _this.popupService.positionPopupUnderComponent({\n type: containerType,\n column: column,\n eventSource: eventSource,\n ePopup: ePopup,\n alignSide: alignSide,\n nudgeX: 9 * multiplier,\n nudgeY: -23,\n keepWithinBounds: true\n });\n if (defaultTab) {\n menu.showTab(defaultTab);\n }\n }, containerType, defaultTab, restrictToTabs, eventSource);\n };\n EnterpriseMenuFactory.prototype.showMenu = function (column, positionCallback, containerType, defaultTab, restrictToTabs, eventSource) {\n var _this = this;\n var menu = this.createBean(new EnterpriseMenu(column, this.lastSelectedTab, restrictToTabs));\n var eMenuGui = menu.getGui();\n var currentHeaderPosition = this.focusService.getFocusedHeader();\n var currentColumnIndex = this.columnModel.getAllDisplayedColumns().indexOf(column);\n var anchorToElement = eventSource || this.ctrlsService.getGridBodyCtrl().getGui();\n var closedFuncs = [];\n closedFuncs.push(function (e) {\n _this.destroyBean(menu);\n column.setMenuVisible(false, 'contextMenu');\n var isKeyboardEvent = e instanceof KeyboardEvent;\n if (isKeyboardEvent && eventSource) {\n if (_.isVisible(eventSource)) {\n var focusableEl = _this.focusService.findTabbableParent(eventSource);\n if (focusableEl) {\n if (column) {\n _this.headerNavigationService.scrollToColumn(column);\n }\n focusableEl.focus();\n }\n }\n // if the focusEl is no longer in the DOM, we try to focus\n // the header that is closest to the previous header position\n else if (currentHeaderPosition && currentColumnIndex !== -1) {\n var allColumns = _this.columnModel.getAllDisplayedColumns();\n var columnToFocus = allColumns[currentColumnIndex] || _.last(allColumns);\n if (columnToFocus) {\n _this.focusService.focusHeaderPosition({\n headerPosition: {\n headerRowIndex: currentHeaderPosition.headerRowIndex,\n column: columnToFocus\n }\n });\n }\n }\n }\n });\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n // need to show filter before positioning, as only after filter\n // is visible can we find out what the width of it is\n var addPopupRes = this.popupService.addPopup({\n modal: true,\n eChild: eMenuGui,\n closeOnEsc: true,\n closedCallback: function (e) {\n closedFuncs.forEach(function (f) {\n return f(e);\n });\n },\n afterGuiAttached: function (params) {\n return menu.afterGuiAttached(Object.assign({}, {\n container: containerType\n }, params));\n },\n positionCallback: function () {\n return positionCallback(menu);\n },\n anchorToElement: anchorToElement,\n ariaLabel: translate('ariaLabelColumnMenu', 'Column Menu')\n });\n if (addPopupRes) {\n // if user starts showing / hiding columns, or otherwise move the underlying column\n // for this menu, we want to stop tracking the menu with the column position. otherwise\n // the menu would move as the user is using the columns tab inside the menu.\n var stopAnchoringPromise = addPopupRes.stopAnchoringPromise;\n if (stopAnchoringPromise) {\n stopAnchoringPromise.then(function (stopAnchoringFunc) {\n column.addEventListener(Column.EVENT_LEFT_CHANGED, stopAnchoringFunc);\n column.addEventListener(Column.EVENT_VISIBLE_CHANGED, stopAnchoringFunc);\n closedFuncs.push(function () {\n column.removeEventListener(Column.EVENT_LEFT_CHANGED, stopAnchoringFunc);\n column.removeEventListener(Column.EVENT_VISIBLE_CHANGED, stopAnchoringFunc);\n });\n });\n }\n }\n if (!defaultTab) {\n menu.showTabBasedOnPreviousSelection();\n // reposition the menu because the method above could load\n // an element that is bigger than enterpriseMenu header.\n positionCallback(menu);\n }\n menu.addEventListener(EnterpriseMenu.EVENT_TAB_SELECTED, function (event) {\n _this.lastSelectedTab = event.key;\n });\n column.setMenuVisible(true, 'contextMenu');\n this.activeMenu = menu;\n menu.addEventListener(BeanStub.EVENT_DESTROYED, function () {\n if (_this.activeMenu === menu) {\n _this.activeMenu = null;\n }\n });\n };\n EnterpriseMenuFactory.prototype.isMenuEnabled = function (column) {\n return column.getMenuTabs(EnterpriseMenu.TABS_DEFAULT).length > 0;\n };\n __decorate$y([Autowired('popupService')], EnterpriseMenuFactory.prototype, \"popupService\", void 0);\n __decorate$y([Autowired('focusService')], EnterpriseMenuFactory.prototype, \"focusService\", void 0);\n __decorate$y([Autowired('headerNavigationService')], EnterpriseMenuFactory.prototype, \"headerNavigationService\", void 0);\n __decorate$y([Autowired('ctrlsService')], EnterpriseMenuFactory.prototype, \"ctrlsService\", void 0);\n __decorate$y([Autowired('columnModel')], EnterpriseMenuFactory.prototype, \"columnModel\", void 0);\n EnterpriseMenuFactory = __decorate$y([Bean('menuFactory')], EnterpriseMenuFactory);\n return EnterpriseMenuFactory;\n}(BeanStub);\nvar EnterpriseMenu = /** @class */function (_super) {\n __extends$R(EnterpriseMenu, _super);\n function EnterpriseMenu(column, initialSelection, restrictTo) {\n var _this = _super.call(this) || this;\n _this.tabFactories = {};\n _this.includeChecks = {};\n _this.column = column;\n _this.initialSelection = initialSelection;\n _this.tabFactories[EnterpriseMenu.TAB_GENERAL] = _this.createMainPanel.bind(_this);\n _this.tabFactories[EnterpriseMenu.TAB_FILTER] = _this.createFilterPanel.bind(_this);\n _this.tabFactories[EnterpriseMenu.TAB_COLUMNS] = _this.createColumnsPanel.bind(_this);\n _this.includeChecks[EnterpriseMenu.TAB_GENERAL] = function () {\n return true;\n };\n _this.includeChecks[EnterpriseMenu.TAB_FILTER] = function () {\n return column.isFilterAllowed();\n };\n _this.includeChecks[EnterpriseMenu.TAB_COLUMNS] = function () {\n return true;\n };\n _this.restrictTo = restrictTo;\n return _this;\n }\n EnterpriseMenu.prototype.init = function () {\n var _this = this;\n var tabs = this.getTabsToCreate().map(function (name) {\n return _this.createTab(name);\n });\n this.tabbedLayout = new TabbedLayout({\n items: tabs,\n cssClass: 'ag-menu',\n onActiveItemClicked: this.onHidePopup.bind(this),\n onItemClicked: this.onTabItemClicked.bind(this)\n });\n this.createBean(this.tabbedLayout);\n if (this.mainMenuList) {\n this.mainMenuList.setParentComponent(this.tabbedLayout);\n }\n };\n EnterpriseMenu.prototype.getTabsToCreate = function () {\n var _this = this;\n if (this.restrictTo) {\n return this.restrictTo;\n }\n return this.column.getMenuTabs(EnterpriseMenu.TABS_DEFAULT).filter(function (tabName) {\n return _this.isValidMenuTabItem(tabName);\n }).filter(function (tabName) {\n return _this.isNotSuppressed(tabName);\n }).filter(function (tabName) {\n return _this.isModuleLoaded(tabName);\n });\n };\n EnterpriseMenu.prototype.isModuleLoaded = function (menuTabName) {\n if (menuTabName === EnterpriseMenu.TAB_COLUMNS) {\n return ModuleRegistry.isRegistered(ModuleNames.ColumnToolPanelModule);\n }\n return true;\n };\n EnterpriseMenu.prototype.isValidMenuTabItem = function (menuTabName) {\n var isValid = true;\n var itemsToConsider = EnterpriseMenu.TABS_DEFAULT;\n if (this.restrictTo != null) {\n isValid = this.restrictTo.indexOf(menuTabName) > -1;\n itemsToConsider = this.restrictTo;\n }\n isValid = isValid && EnterpriseMenu.TABS_DEFAULT.indexOf(menuTabName) > -1;\n if (!isValid) {\n console.warn(\"AG Grid: Trying to render an invalid menu item '\" + menuTabName + \"'. Check that your 'menuTabs' contains one of [\" + itemsToConsider + \"]\");\n }\n return isValid;\n };\n EnterpriseMenu.prototype.isNotSuppressed = function (menuTabName) {\n return this.includeChecks[menuTabName]();\n };\n EnterpriseMenu.prototype.createTab = function (name) {\n return this.tabFactories[name]();\n };\n EnterpriseMenu.prototype.showTabBasedOnPreviousSelection = function () {\n // show the tab the user was on last time they had a menu open\n this.showTab(this.initialSelection);\n };\n EnterpriseMenu.prototype.showTab = function (toShow) {\n if (this.tabItemColumns && toShow === EnterpriseMenu.TAB_COLUMNS) {\n this.tabbedLayout.showItem(this.tabItemColumns);\n } else if (this.tabItemFilter && toShow === EnterpriseMenu.TAB_FILTER) {\n this.tabbedLayout.showItem(this.tabItemFilter);\n } else if (this.tabItemGeneral && toShow === EnterpriseMenu.TAB_GENERAL) {\n this.tabbedLayout.showItem(this.tabItemGeneral);\n } else {\n this.tabbedLayout.showFirstItem();\n }\n };\n EnterpriseMenu.prototype.onTabItemClicked = function (event) {\n var key = null;\n switch (event.item) {\n case this.tabItemColumns:\n key = EnterpriseMenu.TAB_COLUMNS;\n break;\n case this.tabItemFilter:\n key = EnterpriseMenu.TAB_FILTER;\n break;\n case this.tabItemGeneral:\n key = EnterpriseMenu.TAB_GENERAL;\n break;\n }\n if (key) {\n this.activateTab(key);\n }\n };\n EnterpriseMenu.prototype.activateTab = function (tab) {\n var ev = {\n type: EnterpriseMenu.EVENT_TAB_SELECTED,\n key: tab\n };\n this.dispatchEvent(ev);\n };\n EnterpriseMenu.prototype.getMenuItems = function () {\n var defaultMenuOptions = this.getDefaultMenuOptions();\n var result;\n var userFunc = this.gridOptionsWrapper.getMainMenuItemsFunc();\n if (userFunc) {\n result = userFunc({\n column: this.column,\n defaultItems: defaultMenuOptions\n });\n } else {\n result = defaultMenuOptions;\n }\n // GUI looks weird when two separators are side by side. this can happen accidentally\n // if we remove items from the menu then two separators can edit up adjacent.\n _.removeRepeatsFromArray(result, EnterpriseMenu.MENU_ITEM_SEPARATOR);\n return result;\n };\n EnterpriseMenu.prototype.getDefaultMenuOptions = function () {\n var result = [];\n var allowPinning = !this.column.getColDef().lockPinned;\n var rowGroupCount = this.columnModel.getRowGroupColumns().length;\n var doingGrouping = rowGroupCount > 0;\n var groupedByThisColumn = this.columnModel.getRowGroupColumns().indexOf(this.column) >= 0;\n var allowValue = this.column.isAllowValue();\n var allowRowGroup = this.column.isAllowRowGroup();\n var isPrimary = this.column.isPrimary();\n var pivotModeOn = this.columnModel.isPivotMode();\n var isInMemoryRowModel = this.rowModel.getType() === Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n var usingTreeData = this.gridOptionsWrapper.isTreeData();\n var allowValueAgg =\n // if primary, then only allow aggValue if grouping and it's a value columns\n isPrimary && doingGrouping && allowValue\n // secondary columns can always have aggValue, as it means it's a pivot value column\n || !isPrimary;\n if (allowPinning) {\n result.push('pinSubMenu');\n }\n if (allowValueAgg) {\n result.push('valueAggSubMenu');\n }\n if (allowPinning || allowValueAgg) {\n result.push(EnterpriseMenu.MENU_ITEM_SEPARATOR);\n }\n result.push('autoSizeThis');\n result.push('autoSizeAll');\n result.push(EnterpriseMenu.MENU_ITEM_SEPARATOR);\n if (allowRowGroup && this.column.isPrimary()) {\n if (groupedByThisColumn) {\n result.push('rowUnGroup');\n } else {\n result.push('rowGroup');\n }\n }\n result.push(EnterpriseMenu.MENU_ITEM_SEPARATOR);\n result.push('resetColumns');\n // only add grouping expand/collapse if grouping in the InMemoryRowModel\n // if pivoting, we only have expandable groups if grouping by 2 or more columns\n // as the lowest level group is not expandable while pivoting.\n // if not pivoting, then any active row group can be expanded.\n var allowExpandAndContract = isInMemoryRowModel && (usingTreeData || rowGroupCount > (pivotModeOn ? 1 : 0));\n if (allowExpandAndContract) {\n result.push('expandAll');\n result.push('contractAll');\n }\n return result;\n };\n EnterpriseMenu.prototype.createMainPanel = function () {\n this.mainMenuList = this.createManagedBean(new AgMenuList());\n var menuItems = this.getMenuItems();\n var menuItemsMapped = this.menuItemMapper.mapWithStockItems(menuItems, this.column);\n this.mainMenuList.addMenuItems(menuItemsMapped);\n this.mainMenuList.addEventListener(AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED, this.onHidePopup.bind(this));\n this.tabItemGeneral = {\n title: _.createIconNoSpan('menu', this.gridOptionsWrapper, this.column),\n titleLabel: EnterpriseMenu.TAB_GENERAL.replace('MenuTab', ''),\n bodyPromise: AgPromise.resolve(this.mainMenuList.getGui()),\n name: EnterpriseMenu.TAB_GENERAL\n };\n return this.tabItemGeneral;\n };\n EnterpriseMenu.prototype.onHidePopup = function (event) {\n var keyboardEvent;\n if (event && event.event && event.event instanceof KeyboardEvent) {\n keyboardEvent = event.event;\n }\n this.hidePopupFunc(keyboardEvent && {\n keyboardEvent: keyboardEvent\n });\n // this method only gets called when the menu was closed by selection an option\n // in this case we highlight the cell that was previously highlighted\n var focusedCell = this.focusService.getFocusedCell();\n var eDocument = this.gridOptionsWrapper.getDocument();\n if (eDocument.activeElement === eDocument.body && focusedCell) {\n var rowIndex = focusedCell.rowIndex,\n rowPinned = focusedCell.rowPinned,\n column = focusedCell.column;\n this.focusService.setFocusedCell({\n rowIndex: rowIndex,\n column: column,\n rowPinned: rowPinned,\n forceBrowserFocus: true,\n preventScrollOnBrowserFocus: true\n });\n }\n };\n EnterpriseMenu.prototype.createFilterPanel = function () {\n var _a;\n var filterWrapper = this.filterManager.getOrCreateFilterWrapper(this.column, 'COLUMN_MENU');\n if (!filterWrapper) {\n throw new Error('AG Grid - Unable to instantiate filter');\n }\n var afterFilterAttachedCallback = function (params) {\n var _a;\n if (!((_a = filterWrapper) === null || _a === void 0 ? void 0 : _a.filterPromise)) {\n return;\n }\n // slightly odd block this - this promise will always have been resolved by the time it gets here, so won't be\n // async (_unless_ in react or similar, but if so why not encountered before now?).\n // I'd suggest a future improvement would be to remove/replace this promise as this block just wont work if it is\n // async and is confusing if you don't have this context\n filterWrapper.filterPromise.then(function (filter) {\n if (filter && filter.afterGuiAttached) {\n filter.afterGuiAttached(params);\n }\n });\n };\n this.tabItemFilter = {\n title: _.createIconNoSpan('filter', this.gridOptionsWrapper, this.column),\n titleLabel: EnterpriseMenu.TAB_FILTER.replace('MenuTab', ''),\n bodyPromise: (_a = filterWrapper) === null || _a === void 0 ? void 0 : _a.guiPromise,\n afterAttachedCallback: afterFilterAttachedCallback,\n name: EnterpriseMenu.TAB_FILTER\n };\n return this.tabItemFilter;\n };\n EnterpriseMenu.prototype.createColumnsPanel = function () {\n var eWrapperDiv = document.createElement('div');\n eWrapperDiv.classList.add('ag-menu-column-select-wrapper');\n this.columnSelectPanel = this.createManagedBean(new PrimaryColsPanel());\n var columnsMenuParams = this.column.getColDef().columnsMenuParams;\n if (!columnsMenuParams) {\n columnsMenuParams = {};\n }\n this.columnSelectPanel.init(false, {\n suppressColumnMove: false,\n suppressValues: false,\n suppressPivots: false,\n suppressRowGroups: false,\n suppressPivotMode: false,\n contractColumnSelection: !!columnsMenuParams.contractColumnSelection,\n suppressColumnExpandAll: !!columnsMenuParams.suppressColumnExpandAll,\n suppressColumnFilter: !!columnsMenuParams.suppressColumnFilter,\n suppressColumnSelectAll: !!columnsMenuParams.suppressColumnSelectAll,\n suppressSyncLayoutWithGrid: !!columnsMenuParams.suppressSyncLayoutWithGrid,\n api: this.gridApi,\n columnApi: this.columnApi,\n context: this.gridOptionsWrapper.getContext()\n }, 'columnMenu');\n var columnSelectPanelGui = this.columnSelectPanel.getGui();\n columnSelectPanelGui.classList.add('ag-menu-column-select');\n eWrapperDiv.appendChild(columnSelectPanelGui);\n this.tabItemColumns = {\n title: _.createIconNoSpan('columns', this.gridOptionsWrapper, this.column),\n titleLabel: EnterpriseMenu.TAB_COLUMNS.replace('MenuTab', ''),\n bodyPromise: AgPromise.resolve(eWrapperDiv),\n name: EnterpriseMenu.TAB_COLUMNS\n };\n return this.tabItemColumns;\n };\n EnterpriseMenu.prototype.afterGuiAttached = function (params) {\n var container = params.container,\n hidePopup = params.hidePopup;\n this.tabbedLayout.setAfterAttachedParams({\n container: container,\n hidePopup: hidePopup\n });\n if (hidePopup) {\n this.hidePopupFunc = hidePopup;\n this.addDestroyFunc(hidePopup);\n }\n };\n EnterpriseMenu.prototype.getGui = function () {\n return this.tabbedLayout.getGui();\n };\n EnterpriseMenu.EVENT_TAB_SELECTED = 'tabSelected';\n EnterpriseMenu.TAB_FILTER = 'filterMenuTab';\n EnterpriseMenu.TAB_GENERAL = 'generalMenuTab';\n EnterpriseMenu.TAB_COLUMNS = 'columnsMenuTab';\n EnterpriseMenu.TABS_DEFAULT = [EnterpriseMenu.TAB_GENERAL, EnterpriseMenu.TAB_FILTER, EnterpriseMenu.TAB_COLUMNS];\n EnterpriseMenu.MENU_ITEM_SEPARATOR = 'separator';\n __decorate$y([Autowired('columnModel')], EnterpriseMenu.prototype, \"columnModel\", void 0);\n __decorate$y([Autowired('filterManager')], EnterpriseMenu.prototype, \"filterManager\", void 0);\n __decorate$y([Autowired('gridApi')], EnterpriseMenu.prototype, \"gridApi\", void 0);\n __decorate$y([Autowired('columnApi')], EnterpriseMenu.prototype, \"columnApi\", void 0);\n __decorate$y([Autowired('menuItemMapper')], EnterpriseMenu.prototype, \"menuItemMapper\", void 0);\n __decorate$y([Autowired('rowModel')], EnterpriseMenu.prototype, \"rowModel\", void 0);\n __decorate$y([Autowired('focusService')], EnterpriseMenu.prototype, \"focusService\", void 0);\n __decorate$y([PostConstruct], EnterpriseMenu.prototype, \"init\", null);\n return EnterpriseMenu;\n}(BeanStub);\nvar __extends$Q = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$x = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar CSS_MENU = 'ag-menu';\nvar CSS_CONTEXT_MENU_OPEN = 'ag-context-menu-open';\nvar ContextMenuFactory = /** @class */function (_super) {\n __extends$Q(ContextMenuFactory, _super);\n function ContextMenuFactory() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ContextMenuFactory.prototype.hideActiveMenu = function () {\n this.destroyBean(this.activeMenu);\n };\n ContextMenuFactory.prototype.getMenuItems = function (node, column, value) {\n var defaultMenuOptions = [];\n if (_.exists(node) && ModuleRegistry.isRegistered(ModuleNames.ClipboardModule)) {\n if (column) {\n // only makes sense if column exists, could have originated from a row\n defaultMenuOptions.push('copy', 'copyWithHeaders', 'copyWithGroupHeaders', 'paste', 'separator');\n }\n }\n if (this.gridOptionsWrapper.isEnableCharts() && ModuleRegistry.isRegistered(ModuleNames.RangeSelectionModule) && ModuleRegistry.isRegistered(ModuleNames.GridChartsModule)) {\n if (this.columnModel.isPivotMode()) {\n defaultMenuOptions.push('pivotChart');\n }\n if (this.rangeService && !this.rangeService.isEmpty()) {\n defaultMenuOptions.push('chartRange');\n }\n }\n if (_.exists(node)) {\n // if user clicks a cell\n var csvModuleMissing = !ModuleRegistry.isRegistered(ModuleNames.CsvExportModule);\n var excelModuleMissing = !ModuleRegistry.isRegistered(ModuleNames.ExcelExportModule);\n var suppressExcel = this.gridOptionsWrapper.isSuppressExcelExport() || excelModuleMissing;\n var suppressCsv = this.gridOptionsWrapper.isSuppressCsvExport() || csvModuleMissing;\n var onIPad = _.isIOSUserAgent();\n var anyExport = !onIPad && (!suppressExcel || !suppressCsv);\n if (anyExport) {\n defaultMenuOptions.push('export');\n }\n }\n if (this.gridOptionsWrapper.getContextMenuItemsFunc()) {\n var userFunc = this.gridOptionsWrapper.getContextMenuItemsFunc();\n var params = {\n node: node,\n column: column,\n value: value,\n defaultItems: defaultMenuOptions.length ? defaultMenuOptions : undefined\n };\n return userFunc ? userFunc(params) : undefined;\n }\n return defaultMenuOptions;\n };\n ContextMenuFactory.prototype.onContextMenu = function (mouseEvent, touchEvent, rowNode, column, value, anchorToElement) {\n // to allow us to debug in chrome, we ignore the event if ctrl is pressed.\n // not everyone wants this, so first 'if' below allows to turn this hack off.\n if (!this.gridOptionsWrapper.isAllowContextMenuWithControlKey()) {\n // then do the check\n if (mouseEvent && (mouseEvent.ctrlKey || mouseEvent.metaKey)) {\n return;\n }\n }\n // need to do this regardless of context menu showing or not, so doing\n // before the isSuppressContextMenu() check\n if (mouseEvent) {\n this.blockMiddleClickScrollsIfNeeded(mouseEvent);\n }\n if (this.gridOptionsWrapper.isSuppressContextMenu()) {\n return;\n }\n var eventOrTouch = mouseEvent ? mouseEvent : touchEvent.touches[0];\n if (this.showMenu(rowNode, column, value, eventOrTouch, anchorToElement)) {\n var event_1 = mouseEvent ? mouseEvent : touchEvent;\n event_1.preventDefault();\n }\n };\n ContextMenuFactory.prototype.blockMiddleClickScrollsIfNeeded = function (mouseEvent) {\n // if we don't do this, then middle click will never result in a 'click' event, as 'mousedown'\n // will be consumed by the browser to mean 'scroll' (as you can scroll with the middle mouse\n // button in the browser). so this property allows the user to receive middle button clicks if\n // they want.\n var gridOptionsWrapper = this.gridOptionsWrapper;\n var which = mouseEvent.which;\n if (gridOptionsWrapper.isSuppressMiddleClickScrolls() && which === 2) {\n mouseEvent.preventDefault();\n }\n };\n ContextMenuFactory.prototype.showMenu = function (node, column, value, mouseEvent, anchorToElement) {\n var _this = this;\n var menuItems = this.getMenuItems(node, column, value);\n var eGridBodyGui = this.ctrlsService.getGridBodyCtrl().getGui();\n if (menuItems === undefined || _.missingOrEmpty(menuItems)) {\n return false;\n }\n var menu = new ContextMenu(menuItems);\n this.createBean(menu);\n var eMenuGui = menu.getGui();\n var positionParams = {\n column: column,\n rowNode: node,\n type: 'contextMenu',\n mouseEvent: mouseEvent,\n ePopup: eMenuGui,\n // move one pixel away so that accidentally double clicking\n // won't show the browser's contextmenu\n nudgeY: 1\n };\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var addPopupRes = this.popupService.addPopup({\n modal: true,\n eChild: eMenuGui,\n closeOnEsc: true,\n closedCallback: function () {\n eGridBodyGui.classList.remove(CSS_CONTEXT_MENU_OPEN);\n _this.destroyBean(menu);\n },\n click: mouseEvent,\n positionCallback: function () {\n _this.popupService.positionPopupUnderMouseEvent(Object.assign({}, {\n nudgeX: _this.gridOptionsWrapper.isEnableRtl() ? (eMenuGui.offsetWidth + 1) * -1 : 1\n }, positionParams));\n },\n // so when browser is scrolled down, or grid is scrolled, context menu stays with cell\n anchorToElement: anchorToElement,\n ariaLabel: translate('ariaLabelContextMenu', 'Context Menu')\n });\n if (addPopupRes) {\n eGridBodyGui.classList.add(CSS_CONTEXT_MENU_OPEN);\n menu.afterGuiAttached({\n container: 'contextMenu',\n hidePopup: addPopupRes.hideFunc\n });\n }\n // there should never be an active menu at this point, however it was found\n // that you could right click a second time just 1 or 2 pixels from the first\n // click, and another menu would pop up. so somehow the logic for closing the\n // first menu (clicking outside should close it) was glitchy somehow. an easy\n // way to avoid this is just remove the old context menu here if it exists.\n if (this.activeMenu) {\n this.hideActiveMenu();\n }\n this.activeMenu = menu;\n menu.addEventListener(BeanStub.EVENT_DESTROYED, function () {\n if (_this.activeMenu === menu) {\n _this.activeMenu = null;\n }\n });\n // hide the popup if something gets selected\n if (addPopupRes) {\n menu.addEventListener(AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED, addPopupRes.hideFunc);\n }\n return true;\n };\n __decorate$x([Autowired('popupService')], ContextMenuFactory.prototype, \"popupService\", void 0);\n __decorate$x([Optional('rangeService')], ContextMenuFactory.prototype, \"rangeService\", void 0);\n __decorate$x([Autowired('ctrlsService')], ContextMenuFactory.prototype, \"ctrlsService\", void 0);\n __decorate$x([Autowired('columnModel')], ContextMenuFactory.prototype, \"columnModel\", void 0);\n ContextMenuFactory = __decorate$x([Bean('contextMenuFactory')], ContextMenuFactory);\n return ContextMenuFactory;\n}(BeanStub);\nvar ContextMenu = /** @class */function (_super) {\n __extends$Q(ContextMenu, _super);\n function ContextMenu(menuItems) {\n var _this = _super.call(this, /* html */\"
\") || this;\n _this.menuList = null;\n _this.focusedCell = null;\n _this.menuItems = menuItems;\n return _this;\n }\n ContextMenu.prototype.addMenuItems = function () {\n var _this = this;\n var menuList = this.createManagedBean(new AgMenuList());\n var menuItemsMapped = this.menuItemMapper.mapWithStockItems(this.menuItems, null);\n menuList.addMenuItems(menuItemsMapped);\n this.appendChild(menuList);\n this.menuList = menuList;\n menuList.addEventListener(AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED, function (e) {\n return _this.dispatchEvent(e);\n });\n };\n ContextMenu.prototype.afterGuiAttached = function (params) {\n if (params.hidePopup) {\n this.addDestroyFunc(params.hidePopup);\n }\n this.focusedCell = this.focusService.getFocusedCell();\n if (this.menuList) {\n this.focusService.focusInto(this.menuList.getGui());\n }\n };\n ContextMenu.prototype.restoreFocusedCell = function () {\n var currentFocusedCell = this.focusService.getFocusedCell();\n if (currentFocusedCell && this.focusedCell && this.cellPositionUtils.equals(currentFocusedCell, this.focusedCell)) {\n var _a = this.focusedCell,\n rowIndex = _a.rowIndex,\n rowPinned = _a.rowPinned,\n column = _a.column;\n var doc = this.gridOptionsWrapper.getDocument();\n if (doc.activeElement === doc.body) {\n this.focusService.setFocusedCell({\n rowIndex: rowIndex,\n column: column,\n rowPinned: rowPinned,\n forceBrowserFocus: true\n });\n }\n }\n };\n ContextMenu.prototype.destroy = function () {\n this.restoreFocusedCell();\n _super.prototype.destroy.call(this);\n };\n __decorate$x([Autowired('menuItemMapper')], ContextMenu.prototype, \"menuItemMapper\", void 0);\n __decorate$x([Autowired('focusService')], ContextMenu.prototype, \"focusService\", void 0);\n __decorate$x([Autowired('cellPositionUtils')], ContextMenu.prototype, \"cellPositionUtils\", void 0);\n __decorate$x([PostConstruct], ContextMenu.prototype, \"addMenuItems\", null);\n return ContextMenu;\n}(Component);\nvar __extends$P = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$w = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar MenuItemMapper = /** @class */function (_super) {\n __extends$P(MenuItemMapper, _super);\n function MenuItemMapper() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MenuItemMapper.prototype.mapWithStockItems = function (originalList, column) {\n var _this = this;\n if (!originalList) {\n return [];\n }\n var resultList = [];\n originalList.forEach(function (menuItemOrString) {\n var result;\n if (typeof menuItemOrString === 'string') {\n result = _this.getStockMenuItem(menuItemOrString, column);\n } else {\n result = menuItemOrString;\n }\n // if no mapping, can happen when module is not loaded but user tries to use module anyway\n if (!result) {\n return;\n }\n var resultDef = result;\n var subMenu = resultDef.subMenu;\n if (subMenu && subMenu instanceof Array) {\n resultDef.subMenu = _this.mapWithStockItems(resultDef.subMenu, column);\n }\n if (result != null) {\n resultList.push(result);\n }\n });\n return resultList;\n };\n MenuItemMapper.prototype.getStockMenuItem = function (key, column) {\n var _this = this;\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var skipHeaderOnAutoSize = this.gridOptionsWrapper.isSkipHeaderOnAutoSize();\n switch (key) {\n case 'pinSubMenu':\n return {\n name: localeTextFunc('pinColumn', 'Pin Column'),\n icon: _.createIconNoSpan('menuPin', this.gridOptionsWrapper, null),\n subMenu: ['pinLeft', 'pinRight', 'clearPinned']\n };\n case 'pinLeft':\n return {\n name: localeTextFunc('pinLeft', 'Pin Left'),\n action: function () {\n return _this.columnModel.setColumnPinned(column, Constants.PINNED_LEFT, \"contextMenu\");\n },\n checked: !!column && column.isPinnedLeft()\n };\n case 'pinRight':\n return {\n name: localeTextFunc('pinRight', 'Pin Right'),\n action: function () {\n return _this.columnModel.setColumnPinned(column, Constants.PINNED_RIGHT, \"contextMenu\");\n },\n checked: !!column && column.isPinnedRight()\n };\n case 'clearPinned':\n return {\n name: localeTextFunc('noPin', 'No Pin'),\n action: function () {\n return _this.columnModel.setColumnPinned(column, null, \"contextMenu\");\n },\n checked: !!column && !column.isPinned()\n };\n case 'valueAggSubMenu':\n if (ModuleRegistry.assertRegistered(ModuleNames.RowGroupingModule, 'Aggregation from Menu')) {\n return {\n name: localeTextFunc('valueAggregation', 'Value Aggregation'),\n icon: _.createIconNoSpan('menuValue', this.gridOptionsWrapper, null),\n subMenu: this.createAggregationSubMenu(column)\n };\n } else {\n return null;\n }\n case 'autoSizeThis':\n return {\n name: localeTextFunc('autosizeThiscolumn', 'Autosize This Column'),\n action: function () {\n return _this.columnModel.autoSizeColumn(column, skipHeaderOnAutoSize, \"contextMenu\");\n }\n };\n case 'autoSizeAll':\n return {\n name: localeTextFunc('autosizeAllColumns', 'Autosize All Columns'),\n action: function () {\n return _this.columnModel.autoSizeAllColumns(skipHeaderOnAutoSize, \"contextMenu\");\n }\n };\n case 'rowGroup':\n return {\n name: localeTextFunc('groupBy', 'Group by') + ' ' + _.escapeString(this.columnModel.getDisplayNameForColumn(column, 'header')),\n action: function () {\n return _this.columnModel.addRowGroupColumn(column, \"contextMenu\");\n },\n icon: _.createIconNoSpan('menuAddRowGroup', this.gridOptionsWrapper, null)\n };\n case 'rowUnGroup':\n return {\n name: localeTextFunc('ungroupBy', 'Un-Group by') + ' ' + _.escapeString(this.columnModel.getDisplayNameForColumn(column, 'header')),\n action: function () {\n return _this.columnModel.removeRowGroupColumn(column, \"contextMenu\");\n },\n icon: _.createIconNoSpan('menuRemoveRowGroup', this.gridOptionsWrapper, null)\n };\n case 'resetColumns':\n return {\n name: localeTextFunc('resetColumns', 'Reset Columns'),\n action: function () {\n return _this.columnModel.resetColumnState(\"contextMenu\");\n }\n };\n case 'expandAll':\n return {\n name: localeTextFunc('expandAll', 'Expand All'),\n action: function () {\n return _this.gridApi.expandAll();\n }\n };\n case 'contractAll':\n return {\n name: localeTextFunc('collapseAll', 'Collapse All'),\n action: function () {\n return _this.gridApi.collapseAll();\n }\n };\n case 'copy':\n if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, 'Copy from Menu')) {\n return {\n name: localeTextFunc('copy', 'Copy'),\n shortcut: localeTextFunc('ctrlC', 'Ctrl+C'),\n icon: _.createIconNoSpan('clipboardCopy', this.gridOptionsWrapper, null),\n action: function () {\n return _this.clipboardService.copyToClipboard();\n }\n };\n } else {\n return null;\n }\n case 'copyWithHeaders':\n if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, 'Copy with Headers from Menu')) {\n return {\n name: localeTextFunc('copyWithHeaders', 'Copy with Headers'),\n // shortcut: localeTextFunc('ctrlC','Ctrl+C'),\n icon: _.createIconNoSpan('clipboardCopy', this.gridOptionsWrapper, null),\n action: function () {\n return _this.clipboardService.copyToClipboard({\n includeHeaders: true\n });\n }\n };\n } else {\n return null;\n }\n case 'copyWithGroupHeaders':\n if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, 'Copy with Group Headers from Menu')) {\n return {\n name: localeTextFunc('copyWithGroupHeaders', 'Copy with Group Headers'),\n // shortcut: localeTextFunc('ctrlC','Ctrl+C'),\n icon: _.createIconNoSpan('clipboardCopy', this.gridOptionsWrapper, null),\n action: function () {\n return _this.clipboardService.copyToClipboard({\n includeHeaders: true,\n includeGroupHeaders: true\n });\n }\n };\n } else {\n return null;\n }\n case 'paste':\n if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, 'Paste from Clipboard')) {\n return {\n name: localeTextFunc('paste', 'Paste'),\n shortcut: localeTextFunc('ctrlV', 'Ctrl+V'),\n disabled: true,\n icon: _.createIconNoSpan('clipboardPaste', this.gridOptionsWrapper, null),\n action: function () {\n return _this.clipboardService.pasteFromClipboard();\n }\n };\n } else {\n return null;\n }\n case 'export':\n var exportSubMenuItems = [];\n var csvModuleLoaded = ModuleRegistry.isRegistered(ModuleNames.CsvExportModule);\n var excelModuleLoaded = ModuleRegistry.isRegistered(ModuleNames.ExcelExportModule);\n if (!this.gridOptionsWrapper.isSuppressCsvExport() && csvModuleLoaded) {\n exportSubMenuItems.push('csvExport');\n }\n if (!this.gridOptionsWrapper.isSuppressExcelExport() && excelModuleLoaded) {\n exportSubMenuItems.push('excelExport');\n }\n return {\n name: localeTextFunc('export', 'Export'),\n subMenu: exportSubMenuItems,\n icon: _.createIconNoSpan('save', this.gridOptionsWrapper, null)\n };\n case 'csvExport':\n return {\n name: localeTextFunc('csvExport', 'CSV Export'),\n icon: _.createIconNoSpan('csvExport', this.gridOptionsWrapper, null),\n action: function () {\n return _this.gridApi.exportDataAsCsv({});\n }\n };\n case 'excelExport':\n return {\n name: localeTextFunc('excelExport', 'Excel Export'),\n icon: _.createIconNoSpan('excelExport', this.gridOptionsWrapper, null),\n action: function () {\n return _this.gridApi.exportDataAsExcel();\n }\n };\n case 'separator':\n return 'separator';\n default:\n var chartMenuItem = this.getChartItems(key);\n if (chartMenuItem) {\n return chartMenuItem;\n } else {\n console.warn(\"AG Grid: unknown menu item type \" + key);\n return null;\n }\n }\n };\n MenuItemMapper.prototype.getChartItems = function (key) {\n var _this = this;\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var pivotChartMenuItem = function (localeKey, defaultText, chartType) {\n return {\n name: localeTextFunc(localeKey, defaultText),\n action: function () {\n return _this.chartService.createPivotChart({\n chartType: chartType\n });\n }\n };\n };\n var rangeChartMenuItem = function (localeKey, defaultText, chartType) {\n return {\n name: localeTextFunc(localeKey, defaultText),\n action: function () {\n return _this.chartService.createChartFromCurrentRange(chartType);\n }\n };\n };\n switch (key) {\n case 'pivotChart':\n return {\n name: localeTextFunc('pivotChart', 'Pivot Chart'),\n subMenu: ['pivotColumnChart', 'pivotBarChart', 'pivotPieChart', 'pivotLineChart', 'pivotXYChart', 'pivotAreaChart'],\n icon: _.createIconNoSpan('chart', this.gridOptionsWrapper, null)\n };\n case 'chartRange':\n return {\n name: localeTextFunc('chartRange', 'Chart Range'),\n subMenu: ['rangeColumnChart', 'rangeBarChart', 'rangePieChart', 'rangeLineChart', 'rangeXYChart', 'rangeAreaChart', 'rangeHistogramChart', 'rangeCombinationChart'],\n icon: _.createIconNoSpan('chart', this.gridOptionsWrapper, null)\n };\n case 'pivotColumnChart':\n return {\n name: localeTextFunc('columnChart', 'Column'),\n subMenu: ['pivotGroupedColumn', 'pivotStackedColumn', 'pivotNormalizedColumn']\n };\n case 'pivotGroupedColumn':\n return pivotChartMenuItem('groupedColumn', 'Grouped‎', 'groupedColumn');\n case 'pivotStackedColumn':\n return pivotChartMenuItem('stackedColumn', 'Stacked‎', 'stackedColumn');\n case 'pivotNormalizedColumn':\n return pivotChartMenuItem('normalizedColumn', '100% Stacked‎', 'normalizedColumn');\n case 'rangeColumnChart':\n return {\n name: localeTextFunc('columnChart', 'Column'),\n subMenu: ['rangeGroupedColumn', 'rangeStackedColumn', 'rangeNormalizedColumn']\n };\n case 'rangeGroupedColumn':\n return rangeChartMenuItem('groupedColumn', 'Grouped‎', 'groupedColumn');\n case 'rangeStackedColumn':\n return rangeChartMenuItem('stackedColumn', 'Stacked‎', 'stackedColumn');\n case 'rangeNormalizedColumn':\n return rangeChartMenuItem('normalizedColumn', '100% Stacked‎', 'normalizedColumn');\n case 'pivotBarChart':\n return {\n name: localeTextFunc('barChart', 'Bar'),\n subMenu: ['pivotGroupedBar', 'pivotStackedBar', 'pivotNormalizedBar']\n };\n case 'pivotGroupedBar':\n return pivotChartMenuItem('groupedBar', 'Grouped‎', 'groupedBar');\n case 'pivotStackedBar':\n return pivotChartMenuItem('stackedBar', 'Stacked‎', 'stackedBar');\n case 'pivotNormalizedBar':\n return pivotChartMenuItem('normalizedBar', '100% Stacked‎', 'normalizedBar');\n case 'rangeBarChart':\n return {\n name: localeTextFunc('barChart', 'Bar'),\n subMenu: ['rangeGroupedBar', 'rangeStackedBar', 'rangeNormalizedBar']\n };\n case 'rangeGroupedBar':\n return rangeChartMenuItem('groupedBar', 'Grouped‎', 'groupedBar');\n case 'rangeStackedBar':\n return rangeChartMenuItem('stackedBar', 'Stacked‎', 'stackedBar');\n case 'rangeNormalizedBar':\n return rangeChartMenuItem('normalizedBar', '100% Stacked‎', 'normalizedBar');\n case 'pivotPieChart':\n return {\n name: localeTextFunc('pieChart', 'Pie'),\n subMenu: ['pivotPie', 'pivotDoughnut']\n };\n case 'pivotPie':\n return pivotChartMenuItem('pie', 'Pie‎', 'pie');\n case 'pivotDoughnut':\n return pivotChartMenuItem('doughnut', 'Doughnut‎', 'doughnut');\n case 'rangePieChart':\n return {\n name: localeTextFunc('pieChart', 'Pie'),\n subMenu: ['rangePie', 'rangeDoughnut']\n };\n case 'rangePie':\n return rangeChartMenuItem('pie', 'Pie‎', 'pie');\n case 'rangeDoughnut':\n return rangeChartMenuItem('doughnut', 'Doughnut‎', 'doughnut');\n case 'pivotLineChart':\n return pivotChartMenuItem('line', 'Line‎', 'line');\n case 'rangeLineChart':\n return rangeChartMenuItem('line', 'Line‎', 'line');\n case 'pivotXYChart':\n return {\n name: localeTextFunc('xyChart', 'X Y (Scatter)'),\n subMenu: ['pivotScatter', 'pivotBubble']\n };\n case 'pivotScatter':\n return pivotChartMenuItem('scatter', 'Scatter‎', 'scatter');\n case 'pivotBubble':\n return pivotChartMenuItem('bubble', 'Bubble‎', 'bubble');\n case 'rangeXYChart':\n return {\n name: localeTextFunc('xyChart', 'X Y (Scatter)'),\n subMenu: ['rangeScatter', 'rangeBubble']\n };\n case 'rangeScatter':\n return rangeChartMenuItem('scatter', 'Scatter‎', 'scatter');\n case 'rangeBubble':\n return rangeChartMenuItem('bubble', 'Bubble‎', 'bubble');\n case 'pivotAreaChart':\n return {\n name: localeTextFunc('areaChart', 'Area'),\n subMenu: ['pivotArea', 'pivotStackedArea', 'pivotNormalizedArea']\n };\n case 'pivotArea':\n return pivotChartMenuItem('area', 'Area‎', 'area');\n case 'pivotStackedArea':\n return pivotChartMenuItem('stackedArea', 'Stacked‎', 'stackedArea');\n case 'pivotNormalizedArea':\n return pivotChartMenuItem('normalizedArea', '100% Stacked‎', 'normalizedArea');\n case 'rangeAreaChart':\n return {\n name: localeTextFunc('areaChart', 'Area'),\n subMenu: ['rangeArea', 'rangeStackedArea', 'rangeNormalizedArea']\n };\n case 'rangeArea':\n return rangeChartMenuItem('area', 'Area‎', 'area');\n case 'rangeStackedArea':\n return rangeChartMenuItem('stackedArea', 'Stacked‎', 'stackedArea');\n case 'rangeNormalizedArea':\n return rangeChartMenuItem('normalizedArea', '100% Stacked‎', 'normalizedArea');\n case 'rangeHistogramChart':\n return rangeChartMenuItem('histogramChart', 'Histogram‎', 'histogram');\n case 'rangeColumnLineCombo':\n return rangeChartMenuItem('columnLineCombo', 'Column & Line‎', 'columnLineCombo');\n case 'rangeAreaColumnCombo':\n return rangeChartMenuItem('AreaColumnCombo', 'Area & Column‎', 'areaColumnCombo');\n case 'rangeCombinationChart':\n return {\n name: localeTextFunc('combinationChart', 'Combination'),\n subMenu: ['rangeColumnLineCombo', 'rangeAreaColumnCombo']\n };\n default:\n return null;\n }\n };\n MenuItemMapper.prototype.createAggregationSubMenu = function (column) {\n var _this = this;\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var columnToUse;\n if (column.isPrimary()) {\n columnToUse = column;\n } else {\n var pivotValueColumn = column.getColDef().pivotValueColumn;\n columnToUse = _.exists(pivotValueColumn) ? pivotValueColumn : undefined;\n }\n var result = [];\n if (columnToUse) {\n var columnIsAlreadyAggValue_1 = columnToUse.isValueActive();\n var funcNames = this.aggFuncService.getFuncNames(columnToUse);\n funcNames.forEach(function (funcName) {\n result.push({\n name: localeTextFunc(funcName, funcName),\n action: function () {\n _this.columnModel.setColumnAggFunc(columnToUse, funcName, \"contextMenu\");\n _this.columnModel.addValueColumn(columnToUse, \"contextMenu\");\n },\n checked: columnIsAlreadyAggValue_1 && columnToUse.getAggFunc() === funcName\n });\n });\n }\n return result;\n };\n __decorate$w([Autowired('columnModel')], MenuItemMapper.prototype, \"columnModel\", void 0);\n __decorate$w([Autowired('gridApi')], MenuItemMapper.prototype, \"gridApi\", void 0);\n __decorate$w([Optional('clipboardService')], MenuItemMapper.prototype, \"clipboardService\", void 0);\n __decorate$w([Optional('aggFuncService')], MenuItemMapper.prototype, \"aggFuncService\", void 0);\n __decorate$w([Optional('chartService')], MenuItemMapper.prototype, \"chartService\", void 0);\n MenuItemMapper = __decorate$w([Bean('menuItemMapper')], MenuItemMapper);\n return MenuItemMapper;\n}(BeanStub);\nvar MenuModule = {\n moduleName: ModuleNames.MenuModule,\n beans: [EnterpriseMenuFactory, ContextMenuFactory, MenuItemMapper],\n dependantModules: [EnterpriseCoreModule]\n};\nvar __extends$O = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign$3 = undefined && undefined.__assign || function () {\n __assign$3 = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$3.apply(this, arguments);\n};\nvar __decorate$v = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar MultiFilter = /** @class */function (_super) {\n __extends$O(MultiFilter, _super);\n function MultiFilter() {\n var _this = _super.call(this, /* html */\"
\") || this;\n _this.filterDefs = [];\n _this.filters = [];\n _this.guiDestroyFuncs = [];\n _this.activeFilterIndices = [];\n _this.lastActivatedMenuItem = null;\n _this.afterFiltersReadyFuncs = [];\n return _this;\n }\n MultiFilter.prototype.postConstruct = function () {\n var _this = this;\n this.initialiseTabGuard({\n onFocusIn: function (e) {\n return _this.onFocusIn(e);\n }\n });\n };\n MultiFilter.getFilterDefs = function (params) {\n var filters = params.filters;\n return filters && filters.length > 0 ? filters : [{\n filter: 'agTextColumnFilter'\n }, {\n filter: 'agSetColumnFilter'\n }];\n };\n MultiFilter.prototype.init = function (params) {\n var _this = this;\n this.params = params;\n this.filterDefs = MultiFilter.getFilterDefs(params);\n var column = params.column,\n filterChangedCallback = params.filterChangedCallback;\n this.column = column;\n this.filterChangedCallback = filterChangedCallback;\n var filterPromises = [];\n this.filterDefs.forEach(function (filterDef, index) {\n var filterPromise = _this.createFilter(filterDef, index);\n if (filterPromise != null) {\n filterPromises.push(filterPromise);\n }\n });\n // we have to refresh the GUI here to ensure that Angular components are not rendered in odd places\n return AgPromise.all(filterPromises).then(function (filters) {\n _this.filters = filters;\n _this.refreshGui('columnMenu');\n _this.afterFiltersReadyFuncs.forEach(function (f) {\n return f();\n });\n _this.afterFiltersReadyFuncs.length = 0;\n });\n };\n MultiFilter.prototype.refreshGui = function (container) {\n var _this = this;\n if (container === this.lastOpenedInContainer) {\n return;\n }\n this.removeAllChildrenExceptTabGuards();\n this.destroyChildren();\n this.filters.forEach(function (filter, index) {\n if (index > 0) {\n _this.appendChild(_.loadTemplate(/* html */\"
\"));\n }\n var filterDef = _this.filterDefs[index];\n var filterTitle = _this.getFilterTitle(filter, filterDef);\n var filterGui;\n if (filterDef.display === 'subMenu' && container !== 'toolPanel') {\n // prevent sub-menu being used in tool panel\n var menuItem = _this.insertFilterMenu(filter, filterTitle);\n filterGui = menuItem.getGui();\n } else if (filterDef.display === 'subMenu' || filterDef.display === 'accordion') {\n // sub-menus should appear as groups in the tool panel\n var group = _this.insertFilterGroup(filter, filterTitle);\n filterGui = group.getGui();\n } else {\n // display inline\n filterGui = filter.getGui();\n }\n _this.appendChild(filterGui);\n });\n this.lastOpenedInContainer = container;\n };\n MultiFilter.prototype.getFilterTitle = function (filter, filterDef) {\n if (filterDef.title != null) {\n return filterDef.title;\n }\n var filterWithoutType = filter;\n return typeof filterWithoutType.getFilterTitle === 'function' ? filterWithoutType.getFilterTitle() : 'Filter';\n };\n MultiFilter.prototype.destroyChildren = function () {\n this.guiDestroyFuncs.forEach(function (func) {\n return func();\n });\n this.guiDestroyFuncs.length = 0;\n };\n MultiFilter.prototype.insertFilterMenu = function (filter, name) {\n var _this = this;\n var menuItem = this.createBean(new AgMenuItemComponent({\n name: name,\n subMenu: filter,\n cssClasses: ['ag-multi-filter-menu-item'],\n isCompact: true,\n isAnotherSubMenuOpen: function () {\n return false;\n }\n }));\n menuItem.setParentComponent(this);\n this.guiDestroyFuncs.push(function () {\n return _this.destroyBean(menuItem);\n });\n this.addManagedListener(menuItem, AgMenuItemComponent.EVENT_MENU_ITEM_ACTIVATED, function (event) {\n if (_this.lastActivatedMenuItem && _this.lastActivatedMenuItem !== event.menuItem) {\n _this.lastActivatedMenuItem.deactivate();\n }\n _this.lastActivatedMenuItem = event.menuItem;\n });\n menuItem.addGuiEventListener('focusin', function () {\n return menuItem.activate();\n });\n menuItem.addGuiEventListener('focusout', function () {\n if (!menuItem.isSubMenuOpen()) {\n menuItem.deactivate();\n }\n });\n return menuItem;\n };\n MultiFilter.prototype.insertFilterGroup = function (filter, title) {\n var _this = this;\n var group = this.createBean(new AgGroupComponent({\n title: title,\n cssIdentifier: 'multi-filter'\n }));\n this.guiDestroyFuncs.push(function () {\n return _this.destroyBean(group);\n });\n group.addItem(filter.getGui());\n group.toggleGroupExpand(false);\n if (filter.afterGuiAttached) {\n var params_1 = {\n container: this.lastOpenedInContainer,\n suppressFocus: true\n };\n group.addManagedListener(group, AgGroupComponent.EVENT_EXPANDED, function () {\n return filter.afterGuiAttached(params_1);\n });\n }\n return group;\n };\n MultiFilter.prototype.isFilterActive = function () {\n return this.filters.some(function (filter) {\n return filter.isFilterActive();\n });\n };\n MultiFilter.prototype.getLastActiveFilterIndex = function () {\n return this.activeFilterIndices.length > 0 ? this.activeFilterIndices[this.activeFilterIndices.length - 1] : null;\n };\n MultiFilter.prototype.doesFilterPass = function (params, filterToSkip) {\n var rowPasses = true;\n this.filters.forEach(function (filter) {\n if (!rowPasses || filter === filterToSkip || !filter.isFilterActive()) {\n return;\n }\n rowPasses = filter.doesFilterPass(params);\n });\n return rowPasses;\n };\n MultiFilter.prototype.getFilterType = function () {\n return 'multi';\n };\n MultiFilter.prototype.getModelFromUi = function () {\n var model = {\n filterType: this.getFilterType(),\n filterModels: this.filters.map(function (filter) {\n var providedFilter = filter;\n if (typeof providedFilter.getModelFromUi === 'function') {\n return providedFilter.getModelFromUi();\n }\n return null;\n })\n };\n return model;\n };\n MultiFilter.prototype.getModel = function () {\n if (!this.isFilterActive()) {\n return null;\n }\n var model = {\n filterType: this.getFilterType(),\n filterModels: this.filters.map(function (filter) {\n if (filter.isFilterActive()) {\n return filter.getModel();\n }\n return null;\n })\n };\n return model;\n };\n MultiFilter.prototype.setModel = function (model) {\n var _this = this;\n var setFilterModel = function (filter, filterModel) {\n return new AgPromise(function (resolve) {\n var promise = filter.setModel(filterModel);\n promise ? promise.then(function () {\n return resolve();\n }) : resolve();\n });\n };\n var promises = [];\n if (model == null) {\n promises = this.filters.map(function (filter, index) {\n var res = setFilterModel(filter, null);\n _this.updateActiveList(index);\n return res;\n });\n } else {\n this.filters.forEach(function (filter, index) {\n var filterModel = model.filterModels.length > index ? model.filterModels[index] : null;\n var res = setFilterModel(filter, filterModel);\n promises.push(res);\n _this.updateActiveList(index);\n });\n }\n return AgPromise.all(promises).then(function () {});\n };\n MultiFilter.prototype.applyModel = function () {\n var result = false;\n this.filters.forEach(function (filter) {\n if (filter instanceof ProvidedFilter) {\n result = filter.applyModel() || result;\n }\n });\n return result;\n };\n MultiFilter.prototype.getChildFilterInstance = function (index) {\n return this.filters[index];\n };\n MultiFilter.prototype.afterGuiAttached = function (params) {\n if (params) {\n this.refreshGui(params.container);\n }\n var filters = this.params.filters;\n var suppressFocus = filters && filters.some(function (filter) {\n return filter.display && filter.display !== 'inline';\n });\n this.executeFunctionIfExists('afterGuiAttached', __assign$3(__assign$3({}, params || {}), {\n suppressFocus: suppressFocus\n }));\n var eDocument = this.gridOptionsWrapper.getDocument();\n var activeEl = eDocument.activeElement;\n // if suppress focus is true, we might run into two scenarios:\n // 1 - we are loading the filter for the first time and the component isn't ready,\n // which means the document will have focus.\n // 2 - The focus will be somewhere inside the component due to auto focus\n // In both cases we need to force the focus somewhere valid but outside the filter.\n if (suppressFocus && (activeEl === eDocument.body || this.getGui().contains(activeEl))) {\n // reset focus to the top of the container, and blur\n this.forceFocusOutOfContainer(true);\n }\n };\n MultiFilter.prototype.onAnyFilterChanged = function () {\n this.executeFunctionIfExists('onAnyFilterChanged');\n };\n MultiFilter.prototype.onNewRowsLoaded = function () {\n this.executeFunctionIfExists('onNewRowsLoaded');\n };\n MultiFilter.prototype.destroy = function () {\n var _this = this;\n this.filters.forEach(function (filter) {\n filter.setModel(null);\n _this.destroyBean(filter);\n });\n this.filters.length = 0;\n this.destroyChildren();\n _super.prototype.destroy.call(this);\n };\n MultiFilter.prototype.executeFunctionIfExists = function (name) {\n var params = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n params[_i - 1] = arguments[_i];\n }\n // The first filter is always the \"dominant\" one. By iterating in reverse order we ensure the first filter\n // always gets the last say\n _.forEachReverse(this.filters, function (filter) {\n var func = filter[name];\n if (typeof func === 'function') {\n func.apply(filter, params);\n }\n });\n };\n MultiFilter.prototype.createFilter = function (filterDef, index) {\n var _this = this;\n var _a = this.params,\n filterModifiedCallback = _a.filterModifiedCallback,\n doesRowPassOtherFilter = _a.doesRowPassOtherFilter;\n var filterInstance;\n var filterParams = __assign$3(__assign$3({}, this.filterManager.createFilterParams(this.column, this.column.getColDef())), {\n filterModifiedCallback: filterModifiedCallback,\n filterChangedCallback: function (additionalEventAttributes) {\n _this.executeWhenAllFiltersReady(function () {\n return _this.filterChanged(index, additionalEventAttributes);\n });\n },\n doesRowPassOtherFilter: function (node) {\n return doesRowPassOtherFilter(node) && _this.doesFilterPass({\n node: node,\n data: node.data\n }, filterInstance);\n }\n });\n var compDetails = this.userComponentFactory.getFilterDetails(filterDef, filterParams, 'agTextColumnFilter');\n if (!compDetails) {\n return null;\n }\n var filterPromise = compDetails.newAgStackInstance();\n if (filterPromise) {\n filterPromise.then(function (filter) {\n return filterInstance = filter;\n });\n }\n return filterPromise;\n };\n MultiFilter.prototype.executeWhenAllFiltersReady = function (action) {\n if (this.filters && this.filters.length > 0) {\n action();\n } else {\n this.afterFiltersReadyFuncs.push(action);\n }\n };\n MultiFilter.prototype.updateActiveList = function (index) {\n var changedFilter = this.filters[index];\n _.removeFromArray(this.activeFilterIndices, index);\n if (changedFilter.isFilterActive()) {\n this.activeFilterIndices.push(index);\n }\n };\n MultiFilter.prototype.filterChanged = function (index, additionalEventAttributes) {\n this.updateActiveList(index);\n this.filterChangedCallback(additionalEventAttributes);\n var changedFilter = this.filters[index];\n this.filters.forEach(function (filter) {\n if (filter === changedFilter) {\n return;\n }\n if (typeof filter.onAnyFilterChanged === 'function') {\n filter.onAnyFilterChanged();\n }\n });\n };\n MultiFilter.prototype.onFocusIn = function (e) {\n if (this.lastActivatedMenuItem != null && !this.lastActivatedMenuItem.getGui().contains(e.target)) {\n this.lastActivatedMenuItem.deactivate();\n this.lastActivatedMenuItem = null;\n }\n return true;\n };\n __decorate$v([Autowired('filterManager')], MultiFilter.prototype, \"filterManager\", void 0);\n __decorate$v([Autowired('userComponentFactory')], MultiFilter.prototype, \"userComponentFactory\", void 0);\n __decorate$v([PostConstruct], MultiFilter.prototype, \"postConstruct\", null);\n return MultiFilter;\n}(TabGuardComp);\nvar __extends$N = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign$2 = undefined && undefined.__assign || function () {\n __assign$2 = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$2.apply(this, arguments);\n};\nvar __decorate$u = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar MultiFloatingFilterComp = /** @class */function (_super) {\n __extends$N(MultiFloatingFilterComp, _super);\n function MultiFloatingFilterComp() {\n var _this = _super.call(this, /* html */\"
\") || this;\n _this.floatingFilters = [];\n return _this;\n }\n MultiFloatingFilterComp.prototype.init = function (params) {\n var _this = this;\n this.params = params;\n var filterParams = params.filterParams;\n var floatingFilterPromises = [];\n MultiFilter.getFilterDefs(filterParams).forEach(function (filterDef, index) {\n var floatingFilterParams = __assign$2(__assign$2({}, params), {\n // set the parent filter instance for each floating filter to the relevant child filter instance\n parentFilterInstance: function (callback) {\n _this.parentMultiFilterInstance(function (parent) {\n var child = parent.getChildFilterInstance(index);\n if (child == null) {\n return;\n }\n callback(child);\n });\n }\n });\n var floatingFilterPromise = _this.createFloatingFilter(filterDef, floatingFilterParams);\n if (floatingFilterPromise != null) {\n floatingFilterPromises.push(floatingFilterPromise);\n }\n });\n return AgPromise.all(floatingFilterPromises).then(function (floatingFilters) {\n floatingFilters.forEach(function (floatingFilter, index) {\n _this.floatingFilters.push(floatingFilter);\n var gui = floatingFilter.getGui();\n _this.appendChild(gui);\n if (index > 0) {\n _.setDisplayed(gui, false);\n }\n });\n });\n };\n MultiFloatingFilterComp.prototype.onParentModelChanged = function (model, event) {\n var _this = this;\n // We don't want to update the floating filter if the floating filter caused the change,\n // because the UI is already in sync. if we didn't do this, the UI would behave strangely\n // as it would be updating as the user is typing\n if (event && event.afterFloatingFilter) {\n return;\n }\n this.parentMultiFilterInstance(function (parent) {\n if (model == null) {\n _this.floatingFilters.forEach(function (filter, i) {\n filter.onParentModelChanged(null, event);\n _.setDisplayed(filter.getGui(), i === 0);\n });\n } else {\n var lastActiveFloatingFilterIndex_1 = parent.getLastActiveFilterIndex();\n _this.floatingFilters.forEach(function (filter, i) {\n var filterModel = model.filterModels.length > i ? model.filterModels[i] : null;\n filter.onParentModelChanged(filterModel, event);\n var shouldShow = lastActiveFloatingFilterIndex_1 == null ? i === 0 : i === lastActiveFloatingFilterIndex_1;\n _.setDisplayed(filter.getGui(), shouldShow);\n });\n }\n });\n };\n MultiFloatingFilterComp.prototype.destroy = function () {\n this.destroyBeans(this.floatingFilters);\n this.floatingFilters.length = 0;\n _super.prototype.destroy.call(this);\n };\n MultiFloatingFilterComp.prototype.createFloatingFilter = function (filterDef, params) {\n var defaultComponentName = this.userComponentFactory.getDefaultFloatingFilterType(filterDef) || 'agTextColumnFloatingFilter';\n var compDetails = this.userComponentFactory.getFloatingFilterCompDetails(filterDef, params, defaultComponentName);\n return compDetails ? compDetails.newAgStackInstance() : null;\n };\n MultiFloatingFilterComp.prototype.parentMultiFilterInstance = function (cb) {\n this.params.parentFilterInstance(function (parent) {\n if (!(parent instanceof MultiFilter)) {\n throw new Error('AG Grid - MultiFloatingFilterComp expects MultiFilter as it\\'s parent');\n }\n cb(parent);\n });\n };\n __decorate$u([Autowired('userComponentFactory')], MultiFloatingFilterComp.prototype, \"userComponentFactory\", void 0);\n return MultiFloatingFilterComp;\n}(Component);\nvar MultiFilterModule = {\n moduleName: ModuleNames.MultiFilterModule,\n beans: [],\n userComponents: [{\n componentName: 'agMultiColumnFilter',\n componentClass: MultiFilter\n }, {\n componentName: 'agMultiColumnFloatingFilter',\n componentClass: MultiFloatingFilterComp\n }],\n dependantModules: [EnterpriseCoreModule]\n};\nvar __extends$M = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$t = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar RichSelectRow = /** @class */function (_super) {\n __extends$M(RichSelectRow, _super);\n function RichSelectRow(params) {\n var _this = _super.call(this, /* html */\"
\") || this;\n _this.params = params;\n return _this;\n }\n RichSelectRow.prototype.setState = function (value, valueFormatted, selected) {\n var rendererSuccessful = this.populateWithRenderer(value, valueFormatted);\n if (!rendererSuccessful) {\n this.populateWithoutRenderer(value, valueFormatted);\n }\n this.updateSelected(selected);\n };\n RichSelectRow.prototype.updateSelected = function (selected) {\n this.addOrRemoveCssClass('ag-rich-select-row-selected', selected);\n };\n RichSelectRow.prototype.populateWithoutRenderer = function (value, valueFormatted) {\n var valueFormattedExits = valueFormatted !== null && valueFormatted !== undefined;\n var valueToRender = valueFormattedExits ? valueFormatted : value;\n if (_.exists(valueToRender) && valueToRender !== '') {\n // not using innerHTML to prevent injection of HTML\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML#Security_considerations\n this.getGui().textContent = valueToRender.toString();\n } else {\n // putting in blank, so if missing, at least the user can click on it\n this.getGui().innerHTML = ' ';\n }\n };\n RichSelectRow.prototype.populateWithRenderer = function (value, valueFormatted) {\n var _this = this;\n // bad coder here - we are not populating all values of the cellRendererParams\n var params = {\n value: value,\n valueFormatted: valueFormatted,\n api: this.gridOptionsWrapper.getApi()\n };\n var compDetails = this.userComponentFactory.getCellRendererDetails(this.params, params);\n var cellRendererPromise = compDetails ? compDetails.newAgStackInstance() : undefined;\n if (cellRendererPromise != null) {\n _.bindCellRendererToHtmlElement(cellRendererPromise, this.getGui());\n } else {\n this.getGui().innerText = params.valueFormatted != null ? params.valueFormatted : params.value;\n }\n if (cellRendererPromise) {\n cellRendererPromise.then(function (childComponent) {\n _this.addDestroyFunc(function () {\n _this.getContext().destroyBean(childComponent);\n });\n });\n return true;\n }\n return false;\n };\n __decorate$t([Autowired('userComponentFactory')], RichSelectRow.prototype, \"userComponentFactory\", void 0);\n return RichSelectRow;\n}(Component);\nvar __extends$L = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$s = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar RichSelectCellEditor = /** @class */function (_super) {\n __extends$L(RichSelectCellEditor, _super);\n function RichSelectCellEditor() {\n var _this = _super.call(this, RichSelectCellEditor.TEMPLATE) || this;\n _this.selectionConfirmed = false;\n _this.searchString = '';\n return _this;\n }\n RichSelectCellEditor.prototype.init = function (params) {\n this.params = params;\n this.selectedValue = params.value;\n this.originalSelectedValue = params.value;\n this.focusAfterAttached = params.cellStartedEdit;\n var icon = _.createIconNoSpan('smallDown', this.gridOptionsWrapper);\n icon.classList.add('ag-rich-select-value-icon');\n this.eValue.appendChild(icon);\n this.virtualList = this.createManagedBean(new VirtualList('rich-select'));\n this.virtualList.setComponentCreator(this.createRowComponent.bind(this));\n this.eList.appendChild(this.virtualList.getGui());\n if (_.exists(this.params.cellHeight)) {\n this.virtualList.setRowHeight(this.params.cellHeight);\n }\n this.renderSelectedValue();\n if (_.missing(params.values)) {\n console.warn('AG Grid: richSelectCellEditor requires values for it to work');\n return;\n }\n var values = params.values;\n this.virtualList.setModel({\n getRowCount: function () {\n return values.length;\n },\n getRow: function (index) {\n return values[index];\n }\n });\n this.addGuiEventListener('keydown', this.onKeyDown.bind(this));\n var virtualListGui = this.virtualList.getGui();\n this.addManagedListener(virtualListGui, 'click', this.onClick.bind(this));\n this.addManagedListener(virtualListGui, 'mousemove', this.onMouseMove.bind(this));\n var debounceDelay = _.exists(params.searchDebounceDelay) ? params.searchDebounceDelay : 300;\n this.clearSearchString = _.debounce(this.clearSearchString, debounceDelay);\n if (_.exists(params.charPress)) {\n this.searchText(params.charPress);\n }\n };\n RichSelectCellEditor.prototype.onKeyDown = function (event) {\n var key = event.key;\n event.preventDefault();\n switch (key) {\n case KeyCode.ENTER:\n this.onEnterKeyDown();\n break;\n case KeyCode.TAB:\n this.confirmSelection();\n break;\n case KeyCode.DOWN:\n case KeyCode.UP:\n this.onNavigationKeyPressed(event, key);\n break;\n default:\n this.searchText(event);\n }\n };\n RichSelectCellEditor.prototype.confirmSelection = function () {\n this.selectionConfirmed = true;\n };\n RichSelectCellEditor.prototype.onEnterKeyDown = function () {\n this.confirmSelection();\n this.params.stopEditing();\n };\n RichSelectCellEditor.prototype.onNavigationKeyPressed = function (event, key) {\n // if we don't preventDefault the page body and/or grid scroll will move.\n event.preventDefault();\n var oldIndex = this.params.values.indexOf(this.selectedValue);\n var newIndex = key === KeyCode.UP ? oldIndex - 1 : oldIndex + 1;\n if (newIndex >= 0 && newIndex < this.params.values.length) {\n var valueToSelect = this.params.values[newIndex];\n this.setSelectedValue(valueToSelect);\n }\n };\n RichSelectCellEditor.prototype.searchText = function (key) {\n if (typeof key !== 'string') {\n var keyString = key.key;\n if (keyString === KeyCode.BACKSPACE) {\n this.searchString = this.searchString.slice(0, -1);\n keyString = '';\n } else if (!_.isEventFromPrintableCharacter(key)) {\n return;\n }\n this.searchText(keyString);\n return;\n }\n this.searchString += key;\n this.runSearch();\n this.clearSearchString();\n };\n RichSelectCellEditor.prototype.runSearch = function () {\n var _this = this;\n var values = this.params.values;\n var searchStrings;\n if (typeof values[0] === 'number' || typeof values[0] === 'string') {\n searchStrings = values.map(String);\n }\n if (typeof values[0] === 'object' && this.params.colDef.keyCreator) {\n searchStrings = values.map(function (value) {\n var keyParams = {\n value: value,\n colDef: _this.params.colDef,\n column: _this.params.column,\n node: _this.params.node,\n data: _this.params.data,\n api: _this.gridOptionsWrapper.getApi(),\n columnApi: _this.gridOptionsWrapper.getColumnApi(),\n context: _this.gridOptionsWrapper.getContext()\n };\n return _this.params.colDef.keyCreator(keyParams);\n });\n }\n if (!searchStrings) {\n return;\n }\n var topSuggestion = _.fuzzySuggestions(this.searchString, searchStrings, true, true)[0];\n if (!topSuggestion) {\n return;\n }\n var topSuggestionIndex = searchStrings.indexOf(topSuggestion);\n var topValue = values[topSuggestionIndex];\n this.setSelectedValue(topValue);\n };\n RichSelectCellEditor.prototype.clearSearchString = function () {\n this.searchString = '';\n };\n RichSelectCellEditor.prototype.renderSelectedValue = function () {\n var _this = this;\n var valueFormatted = this.params.formatValue(this.selectedValue);\n var eValue = this.eValue;\n var params = {\n value: this.selectedValue,\n valueFormatted: valueFormatted,\n api: this.gridOptionsWrapper.getApi()\n };\n var compDetails = this.userComponentFactory.getCellRendererDetails(this.params, params);\n var promise = compDetails ? compDetails.newAgStackInstance() : undefined;\n if (promise) {\n _.bindCellRendererToHtmlElement(promise, eValue);\n promise.then(function (renderer) {\n _this.addDestroyFunc(function () {\n return _this.getContext().destroyBean(renderer);\n });\n });\n } else {\n if (_.exists(this.selectedValue)) {\n eValue.innerText = valueFormatted;\n } else {\n _.clearElement(eValue);\n }\n }\n };\n RichSelectCellEditor.prototype.setSelectedValue = function (value) {\n if (this.selectedValue === value) {\n return;\n }\n var index = this.params.values.indexOf(value);\n if (index === -1) {\n return;\n }\n this.selectedValue = value;\n this.virtualList.ensureIndexVisible(index);\n this.virtualList.forEachRenderedRow(function (cmp, idx) {\n cmp.updateSelected(index === idx);\n });\n this.virtualList.focusRow(index);\n };\n RichSelectCellEditor.prototype.createRowComponent = function (value) {\n var valueFormatted = this.params.formatValue(value);\n var row = new RichSelectRow(this.params);\n this.getContext().createBean(row);\n row.setState(value, valueFormatted, value === this.selectedValue);\n return row;\n };\n RichSelectCellEditor.prototype.onMouseMove = function (mouseEvent) {\n var rect = this.virtualList.getGui().getBoundingClientRect();\n var scrollTop = this.virtualList.getScrollTop();\n var mouseY = mouseEvent.clientY - rect.top + scrollTop;\n var row = Math.floor(mouseY / this.virtualList.getRowHeight());\n var value = this.params.values[row];\n // not using utils.exist() as want empty string test to pass\n if (value !== undefined) {\n this.setSelectedValue(value);\n }\n };\n RichSelectCellEditor.prototype.onClick = function () {\n this.confirmSelection();\n this.params.stopEditing();\n };\n // we need to have the gui attached before we can draw the virtual rows, as the\n // virtual row logic needs info about the gui state\n RichSelectCellEditor.prototype.afterGuiAttached = function () {\n var selectedIndex = this.params.values.indexOf(this.selectedValue);\n // we have to call this here to get the list to have the right height, ie\n // otherwise it would not have scrolls yet and ensureIndexVisible would do nothing\n this.virtualList.refresh();\n if (selectedIndex >= 0) {\n this.virtualList.ensureIndexVisible(selectedIndex);\n }\n // we call refresh again, as the list could of moved, and we need to render the new rows\n this.virtualList.refresh();\n if (this.focusAfterAttached) {\n var indexToSelect = selectedIndex !== -1 ? selectedIndex : 0;\n if (this.params.values.length) {\n this.virtualList.focusRow(indexToSelect);\n } else {\n this.getGui().focus();\n }\n }\n };\n RichSelectCellEditor.prototype.getValue = function () {\n // NOTE: we don't use valueParser for Set Filter. The user should provide values that are to be\n // set into the data. valueParser only really makese sense when the user is typing in text (not picking\n // form a set).\n return this.selectionConfirmed ? this.selectedValue : this.originalSelectedValue;\n };\n // tab index is needed so we can focus, which is needed for keyboard events\n RichSelectCellEditor.TEMPLATE = \"
\\n
\\n
\\n
\";\n __decorate$s([Autowired('userComponentFactory')], RichSelectCellEditor.prototype, \"userComponentFactory\", void 0);\n __decorate$s([RefSelector('eValue')], RichSelectCellEditor.prototype, \"eValue\", void 0);\n __decorate$s([RefSelector('eList')], RichSelectCellEditor.prototype, \"eList\", void 0);\n return RichSelectCellEditor;\n}(PopupComponent);\nvar RichSelectModule = {\n moduleName: ModuleNames.RichSelectModule,\n beans: [],\n userComponents: [{\n componentName: 'agRichSelect',\n componentClass: RichSelectCellEditor\n }, {\n componentName: 'agRichSelectCellEditor',\n componentClass: RichSelectCellEditor\n }],\n dependantModules: [EnterpriseCoreModule]\n};\nvar __extends$K = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$r = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar ServerSideRowModel = /** @class */function (_super) {\n __extends$K(ServerSideRowModel, _super);\n function ServerSideRowModel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.onRowHeightChanged_debounced = _.debounce(_this.onRowHeightChanged.bind(_this), 100);\n _this.pauseStoreUpdateListening = false;\n _this.started = false;\n return _this;\n }\n // we don't implement as lazy row heights is not supported in this row model\n ServerSideRowModel.prototype.ensureRowHeightsValid = function () {\n return false;\n };\n ServerSideRowModel.prototype.start = function () {\n this.started = true;\n var datasource = this.gridOptionsWrapper.getServerSideDatasource();\n if (datasource) {\n this.setDatasource(datasource);\n }\n };\n ServerSideRowModel.prototype.destroyDatasource = function () {\n if (!this.datasource) {\n return;\n }\n if (this.datasource.destroy) {\n this.datasource.destroy();\n }\n this.rowRenderer.datasourceChanged();\n this.datasource = undefined;\n };\n ServerSideRowModel.prototype.addEventListeners = function () {\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onColumnEverything.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_STORE_UPDATED, this.onStoreUpdated.bind(this));\n var resetListener = this.resetRootStore.bind(this);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, resetListener);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_CHANGED, resetListener);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, resetListener);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, resetListener);\n this.verifyProps();\n };\n ServerSideRowModel.prototype.verifyProps = function () {\n if (this.gridOptionsWrapper.getInitialGroupOrderComparator() != null) {\n var message_1 = \"AG Grid: initialGroupOrderComparator cannot be used with Server Side Row Model. If using Full Store, then provide the rows to the grid in the desired sort order. If using Infinite Scroll, then sorting is done on the server side, nothing to do with the client.\";\n _.doOnce(function () {\n return console.warn(message_1);\n }, 'SSRM.InitialGroupOrderComparator');\n }\n if (this.gridOptionsWrapper.isRowSelection() && this.gridOptionsWrapper.getRowIdFunc() == null) {\n var message_2 = \"AG Grid: getRowId callback must be provided for Server Side Row Model selection to work correctly.\";\n _.doOnce(function () {\n return console.warn(message_2);\n }, 'SSRM.SelectionNeedsRowNodeIdFunc');\n }\n };\n ServerSideRowModel.prototype.setDatasource = function (datasource) {\n // sometimes React, due to async, can call gridApi.setDatasource() before we have started.\n // this happens when React app does this:\n // useEffect(() => setDatasource(ds), []);\n // thus if we set the datasource before the grid UI has finished initialising, we do not set it,\n // and the ssrm.start() method will set the datasoure when the grid is ready.\n if (!this.started) {\n return;\n }\n this.destroyDatasource();\n this.datasource = datasource;\n this.resetRootStore();\n };\n ServerSideRowModel.prototype.isLastRowIndexKnown = function () {\n var cache = this.getRootStore();\n if (!cache) {\n return false;\n }\n return cache.isLastRowIndexKnown();\n };\n ServerSideRowModel.prototype.onColumnEverything = function () {\n // this is a hack for one customer only, so they can suppress the resetting of the columns.\n // The problem the customer had was they were api.setColumnDefs() after the data source came\n // back with data. So this stops the reload from the grid after the data comes back.\n // Once we have \"AG-1591 Allow delta changes to columns\" fixed, then this hack can be taken out.\n if (this.gridOptionsWrapper.isSuppressEnterpriseResetOnNewColumns()) {\n return;\n }\n // every other customer can continue as normal and have it working!!!\n // if first time, alwasy reset\n if (!this.storeParams) {\n this.resetRootStore();\n return;\n }\n // check if anything pertaining to fetching data has changed, and if it has, reset, but if\n // it has not, don't reset\n var rowGroupColumnVos = this.columnsToValueObjects(this.columnModel.getRowGroupColumns());\n var valueColumnVos = this.columnsToValueObjects(this.columnModel.getValueColumns());\n var pivotColumnVos = this.columnsToValueObjects(this.columnModel.getPivotColumns());\n var sortModelDifferent = !_.jsonEquals(this.storeParams.sortModel, this.sortController.getSortModel());\n var rowGroupDifferent = !_.jsonEquals(this.storeParams.rowGroupCols, rowGroupColumnVos);\n var pivotDifferent = !_.jsonEquals(this.storeParams.pivotCols, pivotColumnVos);\n var valuesDifferent = !_.jsonEquals(this.storeParams.valueCols, valueColumnVos);\n var resetRequired = sortModelDifferent || rowGroupDifferent || pivotDifferent || valuesDifferent;\n if (resetRequired) {\n this.resetRootStore();\n }\n };\n ServerSideRowModel.prototype.destroyRootStore = function () {\n if (!this.rootNode || !this.rootNode.childStore) {\n return;\n }\n this.rootNode.childStore = this.destroyBean(this.rootNode.childStore);\n this.nodeManager.clear();\n };\n ServerSideRowModel.prototype.refreshAfterSort = function (newSortModel, params) {\n if (this.storeParams) {\n this.storeParams.sortModel = newSortModel;\n }\n var rootStore = this.getRootStore();\n if (!rootStore) {\n return;\n }\n rootStore.refreshAfterSort(params);\n this.onStoreUpdated();\n };\n ServerSideRowModel.prototype.resetRootStore = function () {\n this.destroyRootStore();\n this.rootNode = new RowNode(this.beans);\n this.rootNode.group = true;\n this.rootNode.level = -1;\n if (this.datasource) {\n this.storeParams = this.createStoreParams();\n this.rootNode.childStore = this.createBean(this.storeFactory.createStore(this.storeParams, this.rootNode));\n this.updateRowIndexesAndBounds();\n }\n // this event shows/hides 'no rows' overlay\n var rowDataChangedEvent = {\n type: Events.EVENT_ROW_DATA_UPDATED\n };\n this.eventService.dispatchEvent(rowDataChangedEvent);\n // this gets the row to render rows (or remove the previously rendered rows, as it's blank to start).\n // important to NOT pass in an event with keepRenderedRows or animate, as we want the renderer\n // to treat the rows as new rows, as it's all new data\n this.dispatchModelUpdated(true);\n };\n ServerSideRowModel.prototype.columnsToValueObjects = function (columns) {\n var _this = this;\n return columns.map(function (col) {\n return {\n id: col.getId(),\n aggFunc: col.getAggFunc(),\n displayName: _this.columnModel.getDisplayNameForColumn(col, 'model'),\n field: col.getColDef().field\n };\n });\n };\n ServerSideRowModel.prototype.createStoreParams = function () {\n var rowGroupColumnVos = this.columnsToValueObjects(this.columnModel.getRowGroupColumns());\n var valueColumnVos = this.columnsToValueObjects(this.columnModel.getValueColumns());\n var pivotColumnVos = this.columnsToValueObjects(this.columnModel.getPivotColumns());\n var dynamicRowHeight = this.gridOptionsWrapper.isDynamicRowHeight();\n var params = {\n // the columns the user has grouped and aggregated by\n valueCols: valueColumnVos,\n rowGroupCols: rowGroupColumnVos,\n pivotCols: pivotColumnVos,\n pivotMode: this.columnModel.isPivotMode(),\n // sort and filter model\n filterModel: this.filterManager.getFilterModel(),\n sortModel: this.sortListener.extractSortModel(),\n datasource: this.datasource,\n lastAccessedSequence: new NumberSequence(),\n // blockSize: blockSize == null ? 100 : blockSize,\n dynamicRowHeight: dynamicRowHeight\n };\n return params;\n };\n ServerSideRowModel.prototype.getParams = function () {\n return this.storeParams;\n };\n ServerSideRowModel.prototype.dispatchModelUpdated = function (reset) {\n if (reset === void 0) {\n reset = false;\n }\n var modelUpdatedEvent = {\n type: Events.EVENT_MODEL_UPDATED,\n animate: !reset,\n keepRenderedRows: !reset,\n newPage: false,\n newData: false\n };\n this.eventService.dispatchEvent(modelUpdatedEvent);\n };\n ServerSideRowModel.prototype.onStoreUpdated = function () {\n // sometimes if doing a batch update, we do the batch first,\n // then call onStoreUpdated manually. eg expandAll() method.\n if (this.pauseStoreUpdateListening) {\n return;\n }\n this.updateRowIndexesAndBounds();\n this.dispatchModelUpdated();\n };\n /** This method is debounced. It is used for row auto-height. If we don't debounce,\n * then the Row Models will end up recalculating each row position\n * for each row height change and result in the Row Renderer laying out rows.\n * This is particularly bad if using print layout, and showing eg 1,000 rows,\n * each row will change it's height, causing Row Model to update 1,000 times.\n */\n ServerSideRowModel.prototype.onRowHeightChangedDebounced = function () {\n this.onRowHeightChanged_debounced();\n };\n ServerSideRowModel.prototype.onRowHeightChanged = function () {\n this.updateRowIndexesAndBounds();\n this.dispatchModelUpdated();\n };\n ServerSideRowModel.prototype.updateRowIndexesAndBounds = function () {\n var rootStore = this.getRootStore();\n if (!rootStore) {\n return;\n }\n rootStore.setDisplayIndexes(new NumberSequence(), {\n value: 0\n });\n };\n ServerSideRowModel.prototype.retryLoads = function () {\n var rootStore = this.getRootStore();\n if (!rootStore) {\n return;\n }\n rootStore.retryLoads();\n this.onStoreUpdated();\n };\n ServerSideRowModel.prototype.getRow = function (index) {\n var rootStore = this.getRootStore();\n if (!rootStore) {\n return undefined;\n }\n return rootStore.getRowUsingDisplayIndex(index);\n };\n ServerSideRowModel.prototype.expandAll = function (value) {\n // if we don't pause store updating, we are needlessly\n // recalculating row-indexes etc, and also getting rendering\n // engine to re-render (listens on ModelUpdated event)\n this.pauseStoreUpdateListening = true;\n this.forEachNode(function (node) {\n if (node.group && !node.stub) {\n node.setExpanded(value);\n }\n });\n this.pauseStoreUpdateListening = false;\n this.onStoreUpdated();\n };\n ServerSideRowModel.prototype.refreshAfterFilter = function (newFilterModel, params) {\n if (this.storeParams) {\n this.storeParams.filterModel = newFilterModel;\n }\n var rootStore = this.getRootStore();\n if (!rootStore) {\n return;\n }\n rootStore.refreshAfterFilter(params);\n this.onStoreUpdated();\n };\n ServerSideRowModel.prototype.getRootStore = function () {\n if (this.rootNode && this.rootNode.childStore) {\n return this.rootNode.childStore;\n }\n };\n ServerSideRowModel.prototype.getRowCount = function () {\n var rootStore = this.getRootStore();\n if (!rootStore) {\n return 0;\n }\n return rootStore.getDisplayIndexEnd();\n };\n ServerSideRowModel.prototype.getTopLevelRowCount = function () {\n var rootStore = this.getRootStore();\n if (!rootStore) {\n return 1;\n }\n return rootStore.getRowCount();\n };\n ServerSideRowModel.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {\n var rootStore = this.getRootStore();\n if (!rootStore) {\n return topLevelIndex;\n }\n return rootStore.getTopLevelRowDisplayedIndex(topLevelIndex);\n };\n ServerSideRowModel.prototype.getRowBounds = function (index) {\n var rootStore = this.getRootStore();\n if (!rootStore) {\n var rowHeight = this.gridOptionsWrapper.getRowHeightAsNumber();\n return {\n rowTop: 0,\n rowHeight: rowHeight\n };\n }\n return rootStore.getRowBounds(index);\n };\n ServerSideRowModel.prototype.getRowIndexAtPixel = function (pixel) {\n var rootStore = this.getRootStore();\n if (pixel <= 0 || !rootStore) {\n return 0;\n }\n return rootStore.getRowIndexAtPixel(pixel);\n };\n ServerSideRowModel.prototype.isEmpty = function () {\n return false;\n };\n ServerSideRowModel.prototype.isRowsToRender = function () {\n return this.getRootStore() != null && this.getRowCount() > 0;\n };\n ServerSideRowModel.prototype.getType = function () {\n return Constants.ROW_MODEL_TYPE_SERVER_SIDE;\n };\n ServerSideRowModel.prototype.forEachNode = function (callback) {\n var rootStore = this.getRootStore();\n if (!rootStore) {\n return;\n }\n rootStore.forEachNodeDeep(callback);\n };\n ServerSideRowModel.prototype.forEachNodeAfterFilterAndSort = function (callback) {\n var rootStore = this.getRootStore();\n if (!rootStore) {\n return;\n }\n rootStore.forEachNodeDeepAfterFilterAndSort(callback);\n };\n ServerSideRowModel.prototype.executeOnStore = function (route, callback) {\n var rootStore = this.getRootStore();\n if (!rootStore) {\n return;\n }\n var storeToExecuteOn = rootStore.getChildStore(route);\n if (storeToExecuteOn) {\n callback(storeToExecuteOn);\n }\n };\n ServerSideRowModel.prototype.refreshStore = function (params) {\n if (params === void 0) {\n params = {};\n }\n var route = params.route ? params.route : [];\n this.executeOnStore(route, function (store) {\n return store.refreshStore(params.purge == true);\n });\n };\n ServerSideRowModel.prototype.getStoreState = function () {\n var res = [];\n var rootStore = this.getRootStore();\n if (rootStore) {\n rootStore.addStoreStates(res);\n }\n return res;\n };\n ServerSideRowModel.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n if (_.exists(lastInRange) && firstInRange.parent !== lastInRange.parent) {\n return [];\n }\n return firstInRange.parent.childStore.getRowNodesInRange(lastInRange, firstInRange);\n };\n ServerSideRowModel.prototype.getRowNode = function (id) {\n var result;\n this.forEachNode(function (rowNode) {\n if (rowNode.id === id) {\n result = rowNode;\n }\n if (rowNode.detailNode && rowNode.detailNode.id === id) {\n result = rowNode.detailNode;\n }\n });\n return result;\n };\n ServerSideRowModel.prototype.isRowPresent = function (rowNode) {\n var foundRowNode = this.getRowNode(rowNode.id);\n return !!foundRowNode;\n };\n __decorate$r([Autowired('columnModel')], ServerSideRowModel.prototype, \"columnModel\", void 0);\n __decorate$r([Autowired('filterManager')], ServerSideRowModel.prototype, \"filterManager\", void 0);\n __decorate$r([Autowired('sortController')], ServerSideRowModel.prototype, \"sortController\", void 0);\n __decorate$r([Autowired('rowRenderer')], ServerSideRowModel.prototype, \"rowRenderer\", void 0);\n __decorate$r([Autowired('ssrmSortService')], ServerSideRowModel.prototype, \"sortListener\", void 0);\n __decorate$r([Autowired('ssrmNodeManager')], ServerSideRowModel.prototype, \"nodeManager\", void 0);\n __decorate$r([Autowired('ssrmStoreFactory')], ServerSideRowModel.prototype, \"storeFactory\", void 0);\n __decorate$r([Autowired('beans')], ServerSideRowModel.prototype, \"beans\", void 0);\n __decorate$r([PreDestroy], ServerSideRowModel.prototype, \"destroyDatasource\", null);\n __decorate$r([PostConstruct], ServerSideRowModel.prototype, \"addEventListeners\", null);\n __decorate$r([PreDestroy], ServerSideRowModel.prototype, \"destroyRootStore\", null);\n ServerSideRowModel = __decorate$r([Bean('rowModel')], ServerSideRowModel);\n return ServerSideRowModel;\n}(BeanStub);\nvar __extends$J = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$q = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar StoreUtils = /** @class */function (_super) {\n __extends$J(StoreUtils, _super);\n function StoreUtils() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StoreUtils.prototype.loadFromDatasource = function (p) {\n var storeParams = p.storeParams,\n parentBlock = p.parentBlock,\n parentNode = p.parentNode;\n var groupKeys = parentNode.getGroupKeys();\n if (!storeParams.datasource) {\n return;\n }\n var request = {\n startRow: p.startRow,\n endRow: p.endRow,\n rowGroupCols: storeParams.rowGroupCols,\n valueCols: storeParams.valueCols,\n pivotCols: storeParams.pivotCols,\n pivotMode: storeParams.pivotMode,\n groupKeys: groupKeys,\n filterModel: storeParams.filterModel,\n sortModel: storeParams.sortModel\n };\n var getRowsParams = {\n successCallback: p.successCallback,\n success: p.success,\n failCallback: p.failCallback,\n fail: p.fail,\n request: request,\n parentNode: p.parentNode,\n api: this.gridApi,\n columnApi: this.columnApi,\n context: this.gridOptionsWrapper.getContext()\n };\n window.setTimeout(function () {\n if (!storeParams.datasource || !parentBlock.isAlive()) {\n // failCallback() is important, to reduce the 'RowNodeBlockLoader.activeBlockLoadsCount' count\n p.failCallback();\n return;\n }\n storeParams.datasource.getRows(getRowsParams);\n }, 0);\n };\n StoreUtils.prototype.getChildStore = function (keys, currentCache, findNodeFunc) {\n if (_.missingOrEmpty(keys)) {\n return currentCache;\n }\n var nextKey = keys[0];\n var nextNode = findNodeFunc(nextKey);\n if (nextNode) {\n var keyListForNextLevel = keys.slice(1, keys.length);\n var nextStore = nextNode.childStore;\n return nextStore ? nextStore.getChildStore(keyListForNextLevel) : null;\n }\n return null;\n };\n StoreUtils.prototype.isServerRefreshNeeded = function (parentRowNode, rowGroupCols, params) {\n if (params.valueColChanged || params.secondaryColChanged) {\n return true;\n }\n var level = parentRowNode.level + 1;\n var grouping = level < rowGroupCols.length;\n var leafNodes = !grouping;\n if (leafNodes) {\n return true;\n }\n var colIdThisGroup = rowGroupCols[level].id;\n var actionOnThisGroup = params.changedColumns.indexOf(colIdThisGroup) > -1;\n if (actionOnThisGroup) {\n return true;\n }\n var allCols = this.columnModel.getAllGridColumns();\n var affectedGroupCols = allCols\n // find all impacted cols which also a group display column\n .filter(function (col) {\n return col.getColDef().showRowGroup && params.changedColumns.includes(col.getId());\n }).map(function (col) {\n return col.getColDef().showRowGroup;\n })\n // if displaying all groups, or displaying the effected col for this group, refresh\n .some(function (group) {\n return group === true || group === colIdThisGroup;\n });\n return affectedGroupCols;\n };\n __decorate$q([Autowired('columnApi')], StoreUtils.prototype, \"columnApi\", void 0);\n __decorate$q([Autowired('columnModel')], StoreUtils.prototype, \"columnModel\", void 0);\n __decorate$q([Autowired('gridApi')], StoreUtils.prototype, \"gridApi\", void 0);\n StoreUtils = __decorate$q([Bean('ssrmStoreUtils')], StoreUtils);\n return StoreUtils;\n}(BeanStub);\nvar __extends$I = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$p = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar BlockUtils = /** @class */function (_super) {\n __extends$I(BlockUtils, _super);\n function BlockUtils() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n BlockUtils.prototype.postConstruct = function () {\n this.rowHeight = this.gridOptionsWrapper.getRowHeightAsNumber();\n this.usingTreeData = this.gridOptionsWrapper.isTreeData();\n this.usingMasterDetail = this.gridOptionsWrapper.isMasterDetail();\n };\n BlockUtils.prototype.createRowNode = function (params) {\n var rowNode = new RowNode(this.beans);\n var rowHeight = params.rowHeight != null ? params.rowHeight : this.rowHeight;\n rowNode.setRowHeight(rowHeight);\n rowNode.group = params.group;\n rowNode.leafGroup = params.leafGroup;\n rowNode.level = params.level;\n rowNode.uiLevel = params.level;\n rowNode.parent = params.parent;\n // stub gets set to true here, and then false when this rowNode gets it's data\n rowNode.stub = true;\n if (rowNode.group) {\n rowNode.expanded = false;\n rowNode.field = params.field;\n rowNode.rowGroupColumn = params.rowGroupColumn;\n }\n return rowNode;\n };\n BlockUtils.prototype.destroyRowNodes = function (rowNodes) {\n var _this = this;\n if (rowNodes) {\n rowNodes.forEach(function (row) {\n return _this.destroyRowNode(row);\n });\n }\n };\n BlockUtils.prototype.destroyRowNode = function (rowNode, preserveStore) {\n if (preserveStore === void 0) {\n preserveStore = false;\n }\n if (rowNode.childStore && !preserveStore) {\n this.destroyBean(rowNode.childStore);\n rowNode.childStore = null;\n }\n // this is needed, so row render knows to fade out the row, otherwise it\n // sees row top is present, and thinks the row should be shown. maybe\n // rowNode should have a flag on whether it is visible???\n rowNode.clearRowTopAndRowIndex();\n if (rowNode.id != null) {\n this.nodeManager.removeNode(rowNode);\n }\n };\n BlockUtils.prototype.setTreeGroupInfo = function (rowNode) {\n var isGroupFunc = this.gridOptionsWrapper.getIsServerSideGroupFunc();\n var getKeyFunc = this.gridOptionsWrapper.getServerSideGroupKeyFunc();\n if (isGroupFunc != null) {\n rowNode.setGroup(isGroupFunc(rowNode.data));\n if (rowNode.group && getKeyFunc != null) {\n rowNode.key = getKeyFunc(rowNode.data);\n }\n }\n if (!rowNode.group && rowNode.childStore != null) {\n this.destroyBean(rowNode.childStore);\n rowNode.childStore = null;\n }\n };\n BlockUtils.prototype.setRowGroupInfo = function (rowNode) {\n rowNode.key = this.valueService.getValue(rowNode.rowGroupColumn, rowNode);\n if (rowNode.key === null || rowNode.key === undefined) {\n _.doOnce(function () {\n console.warn(\"AG Grid: null and undefined values are not allowed for server side row model keys\");\n if (rowNode.rowGroupColumn) {\n console.warn(\"column = \" + rowNode.rowGroupColumn.getId());\n }\n console.warn(\"data is \", rowNode.data);\n }, 'ServerSideBlock-CannotHaveNullOrUndefinedForKey');\n }\n };\n BlockUtils.prototype.setMasterDetailInfo = function (rowNode) {\n var isMasterFunc = this.gridOptionsWrapper.getIsRowMasterFunc();\n if (isMasterFunc != null) {\n rowNode.master = isMasterFunc(rowNode.data);\n } else {\n rowNode.master = true;\n }\n };\n BlockUtils.prototype.updateDataIntoRowNode = function (rowNode, data) {\n rowNode.updateData(data);\n if (this.usingTreeData) {\n this.setTreeGroupInfo(rowNode);\n } else if (rowNode.group) ;else if (this.usingMasterDetail) ;\n };\n BlockUtils.prototype.setDataIntoRowNode = function (rowNode, data, defaultId, cachedRowHeight) {\n rowNode.stub = false;\n if (_.exists(data)) {\n rowNode.setDataAndId(data, defaultId);\n if (this.usingTreeData) {\n this.setTreeGroupInfo(rowNode);\n } else if (rowNode.group) {\n this.setRowGroupInfo(rowNode);\n } else if (this.usingMasterDetail) {\n this.setMasterDetailInfo(rowNode);\n }\n } else {\n rowNode.setDataAndId(undefined, undefined);\n rowNode.key = null;\n }\n if (this.usingTreeData || rowNode.group) {\n this.setGroupDataIntoRowNode(rowNode);\n this.setChildCountIntoRowNode(rowNode);\n }\n // this needs to be done AFTER setGroupDataIntoRowNode(), as the height can depend on the group data\n // getting set, if it's a group node and colDef.autoHeight=true\n if (_.exists(data)) {\n rowNode.setRowHeight(this.gridOptionsWrapper.getRowHeightForNode(rowNode, false, cachedRowHeight).height);\n }\n };\n BlockUtils.prototype.setChildCountIntoRowNode = function (rowNode) {\n var getChildCount = this.gridOptionsWrapper.getChildCountFunc();\n if (getChildCount) {\n rowNode.allChildrenCount = getChildCount(rowNode.data);\n }\n };\n BlockUtils.prototype.setGroupDataIntoRowNode = function (rowNode) {\n var _this = this;\n var groupDisplayCols = this.columnModel.getGroupDisplayColumns();\n var usingTreeData = this.gridOptionsWrapper.isTreeData();\n groupDisplayCols.forEach(function (col) {\n if (rowNode.groupData == null) {\n rowNode.groupData = {};\n }\n if (usingTreeData) {\n rowNode.groupData[col.getColId()] = rowNode.key;\n } else if (col.isRowGroupDisplayed(rowNode.rowGroupColumn.getId())) {\n var groupValue = _this.valueService.getValue(rowNode.rowGroupColumn, rowNode);\n rowNode.groupData[col.getColId()] = groupValue;\n }\n });\n };\n BlockUtils.prototype.clearDisplayIndex = function (rowNode) {\n rowNode.clearRowTopAndRowIndex();\n var hasChildStore = rowNode.group && _.exists(rowNode.childStore);\n if (hasChildStore) {\n var childStore = rowNode.childStore;\n childStore.clearDisplayIndexes();\n }\n var hasDetailNode = rowNode.master && rowNode.detailNode;\n if (hasDetailNode) {\n rowNode.detailNode.clearRowTopAndRowIndex();\n }\n };\n BlockUtils.prototype.setDisplayIndex = function (rowNode, displayIndexSeq, nextRowTop) {\n // set this row\n rowNode.setRowIndex(displayIndexSeq.next());\n rowNode.setRowTop(nextRowTop.value);\n nextRowTop.value += rowNode.rowHeight;\n // set child for master / detail\n var hasDetailRow = rowNode.master;\n if (hasDetailRow) {\n if (rowNode.expanded && rowNode.detailNode) {\n rowNode.detailNode.setRowIndex(displayIndexSeq.next());\n rowNode.detailNode.setRowTop(nextRowTop.value);\n nextRowTop.value += rowNode.detailNode.rowHeight;\n } else if (rowNode.detailNode) {\n rowNode.detailNode.clearRowTopAndRowIndex();\n }\n }\n // set children for SSRM child rows\n var hasChildStore = rowNode.group && _.exists(rowNode.childStore);\n if (hasChildStore) {\n var childStore = rowNode.childStore;\n if (rowNode.expanded) {\n childStore.setDisplayIndexes(displayIndexSeq, nextRowTop);\n } else {\n // we need to clear the row tops, as the row renderer depends on\n // this to know if the row should be faded out\n childStore.clearDisplayIndexes();\n }\n }\n };\n BlockUtils.prototype.binarySearchForDisplayIndex = function (displayRowIndex, rowNodes) {\n var bottomPointer = 0;\n var topPointer = rowNodes.length - 1;\n if (_.missing(topPointer) || _.missing(bottomPointer)) {\n console.warn(\"AG Grid: error: topPointer = \" + topPointer + \", bottomPointer = \" + bottomPointer);\n return undefined;\n }\n while (true) {\n var midPointer = Math.floor((bottomPointer + topPointer) / 2);\n var currentRowNode = rowNodes[midPointer];\n // first check current row for index\n if (currentRowNode.rowIndex === displayRowIndex) {\n return currentRowNode;\n }\n // then check if current row contains a detail row with the index\n var expandedMasterRow = currentRowNode.master && currentRowNode.expanded;\n var detailNode = currentRowNode.detailNode;\n if (expandedMasterRow && detailNode && detailNode.rowIndex === displayRowIndex) {\n return currentRowNode.detailNode;\n }\n // then check if child cache contains index\n var childStore = currentRowNode.childStore;\n if (currentRowNode.expanded && childStore && childStore.isDisplayIndexInStore(displayRowIndex)) {\n return childStore.getRowUsingDisplayIndex(displayRowIndex);\n }\n // otherwise adjust pointers to continue searching for index\n if (currentRowNode.rowIndex < displayRowIndex) {\n bottomPointer = midPointer + 1;\n } else if (currentRowNode.rowIndex > displayRowIndex) {\n topPointer = midPointer - 1;\n } else {\n console.warn(\"AG Grid: error: unable to locate rowIndex = \" + displayRowIndex + \" in cache\");\n return undefined;\n }\n }\n };\n BlockUtils.prototype.extractRowBounds = function (rowNode, index) {\n var extractRowBounds = function (currentRowNode) {\n return {\n rowHeight: currentRowNode.rowHeight,\n rowTop: currentRowNode.rowTop\n };\n };\n if (rowNode.rowIndex === index) {\n return extractRowBounds(rowNode);\n }\n if (rowNode.group && rowNode.expanded && _.exists(rowNode.childStore)) {\n var childStore = rowNode.childStore;\n if (childStore.isDisplayIndexInStore(index)) {\n return childStore.getRowBounds(index);\n }\n } else if (rowNode.master && rowNode.expanded && _.exists(rowNode.detailNode)) {\n if (rowNode.detailNode.rowIndex === index) {\n return extractRowBounds(rowNode.detailNode);\n }\n }\n };\n BlockUtils.prototype.getIndexAtPixel = function (rowNode, pixel) {\n // first check if pixel is in range of current row\n if (rowNode.isPixelInRange(pixel)) {\n return rowNode.rowIndex;\n }\n // then check if current row contains a detail row with pixel in range\n var expandedMasterRow = rowNode.master && rowNode.expanded;\n var detailNode = rowNode.detailNode;\n if (expandedMasterRow && detailNode && detailNode.isPixelInRange(pixel)) {\n return rowNode.detailNode.rowIndex;\n }\n // then check if it's a group row with a child cache with pixel in range\n if (rowNode.group && rowNode.expanded && _.exists(rowNode.childStore)) {\n var childStore = rowNode.childStore;\n if (childStore.isPixelInRange(pixel)) {\n return childStore.getRowIndexAtPixel(pixel);\n }\n }\n return null;\n // pixel is not within this row node or it's children / detail, so return undefined\n };\n BlockUtils.prototype.createNodeIdPrefix = function (parentRowNode) {\n var parts = [];\n var rowNode = parentRowNode;\n // pull keys from all parent nodes, but do not include the root node\n while (rowNode && rowNode.level >= 0) {\n parts.push(rowNode.key);\n rowNode = rowNode.parent;\n }\n if (parts.length > 0) {\n return parts.reverse().join('-');\n }\n // no prefix, so node id's are left as they are\n return undefined;\n };\n BlockUtils.prototype.checkOpenByDefault = function (rowNode) {\n if (!rowNode.isExpandable()) {\n return;\n }\n var userFunc = this.gridOptionsWrapper.getIsServerSideGroupOpenByDefaultFunc();\n if (!userFunc) {\n return;\n }\n var params = {\n data: rowNode.data,\n rowNode: rowNode\n };\n var userFuncRes = userFunc(params);\n if (userFuncRes) {\n // we do this in a timeout, so that we don't expand a row node while in the middle\n // of setting up rows, setting up rows is complex enough without another chunk of work\n // getting added to the call stack. this is also helpful as openByDefault may or may\n // not happen (so makes setting up rows more deterministic by expands never happening)\n // and also checkOpenByDefault is shard with both store types, so easier control how it\n // impacts things by keeping it in new VM turn.\n window.setTimeout(function () {\n return rowNode.setExpanded(true);\n }, 0);\n }\n };\n __decorate$p([Autowired('valueService')], BlockUtils.prototype, \"valueService\", void 0);\n __decorate$p([Autowired('columnModel')], BlockUtils.prototype, \"columnModel\", void 0);\n __decorate$p([Autowired('ssrmNodeManager')], BlockUtils.prototype, \"nodeManager\", void 0);\n __decorate$p([Autowired('beans')], BlockUtils.prototype, \"beans\", void 0);\n __decorate$p([PostConstruct], BlockUtils.prototype, \"postConstruct\", null);\n BlockUtils = __decorate$p([Bean('ssrmBlockUtils')], BlockUtils);\n return BlockUtils;\n}(BeanStub);\nvar __decorate$o = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar NodeManager = /** @class */function () {\n function NodeManager() {\n this.rowNodes = {};\n }\n NodeManager.prototype.addRowNode = function (rowNode) {\n var id = rowNode.id;\n if (this.rowNodes[id]) {\n console.warn(\"AG Grid: Duplicate node id \" + rowNode.id + \". Row ID's are provided via the getRowId() callback. Please modify the getRowId() callback code to provide unique row id values.\");\n console.warn('first instance', this.rowNodes[id].data);\n console.warn('second instance', rowNode.data);\n }\n this.rowNodes[id] = rowNode;\n };\n NodeManager.prototype.removeNode = function (rowNode) {\n var id = rowNode.id;\n if (this.rowNodes[id]) {\n this.rowNodes[id] = undefined;\n }\n };\n NodeManager.prototype.clear = function () {\n this.rowNodes = {};\n };\n __decorate$o([PreDestroy], NodeManager.prototype, \"clear\", null);\n NodeManager = __decorate$o([Bean('ssrmNodeManager')], NodeManager);\n return NodeManager;\n}();\nvar __extends$H = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$n = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar TransactionManager = /** @class */function (_super) {\n __extends$H(TransactionManager, _super);\n function TransactionManager() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.asyncTransactions = [];\n return _this;\n }\n TransactionManager.prototype.postConstruct = function () {\n // only want to be active if SSRM active, otherwise would be interfering with other row models\n if (!this.gridOptionsWrapper.isRowModelServerSide()) {\n return;\n }\n };\n TransactionManager.prototype.applyTransactionAsync = function (transaction, callback) {\n if (this.asyncTransactionsTimeout == null) {\n this.scheduleExecuteAsync();\n }\n this.asyncTransactions.push({\n transaction: transaction,\n callback: callback\n });\n };\n TransactionManager.prototype.scheduleExecuteAsync = function () {\n var _this = this;\n var waitMillis = this.gridOptionsWrapper.getAsyncTransactionWaitMillis();\n this.asyncTransactionsTimeout = window.setTimeout(function () {\n _this.executeAsyncTransactions();\n }, waitMillis);\n };\n TransactionManager.prototype.executeAsyncTransactions = function () {\n var _this = this;\n if (!this.asyncTransactions) {\n return;\n }\n var resultFuncs = [];\n var resultsForEvent = [];\n var transactionsToRetry = [];\n var atLeastOneTransactionApplied = false;\n this.asyncTransactions.forEach(function (txWrapper) {\n var result;\n _this.serverSideRowModel.executeOnStore(txWrapper.transaction.route, function (cache) {\n result = cache.applyTransaction(txWrapper.transaction);\n });\n if (result == undefined) {\n result = {\n status: ServerSideTransactionResultStatus.StoreNotFound\n };\n }\n resultsForEvent.push(result);\n var retryTransaction = result.status == ServerSideTransactionResultStatus.StoreLoading;\n if (retryTransaction) {\n transactionsToRetry.push(txWrapper);\n return;\n }\n if (txWrapper.callback) {\n resultFuncs.push(function () {\n return txWrapper.callback(result);\n });\n }\n if (result.status === ServerSideTransactionResultStatus.Applied) {\n atLeastOneTransactionApplied = true;\n }\n });\n // do callbacks in next VM turn so it's async\n if (resultFuncs.length > 0) {\n window.setTimeout(function () {\n resultFuncs.forEach(function (func) {\n return func();\n });\n }, 0);\n }\n this.asyncTransactionsTimeout = undefined;\n // this will be empty list if nothing to retry\n this.asyncTransactions = transactionsToRetry;\n if (atLeastOneTransactionApplied) {\n this.valueCache.onDataChanged();\n this.eventService.dispatchEvent({\n type: Events.EVENT_STORE_UPDATED\n });\n }\n if (resultsForEvent.length > 0) {\n var event_1 = {\n type: Events.EVENT_ASYNC_TRANSACTIONS_FLUSHED,\n results: resultsForEvent\n };\n this.eventService.dispatchEvent(event_1);\n }\n };\n TransactionManager.prototype.flushAsyncTransactions = function () {\n // the timeout could be missing, if we are flushing due to row data loaded\n if (this.asyncTransactionsTimeout != null) {\n clearTimeout(this.asyncTransactionsTimeout);\n }\n this.executeAsyncTransactions();\n };\n TransactionManager.prototype.applyTransaction = function (transaction) {\n var _this = this;\n var res;\n this.serverSideRowModel.executeOnStore(transaction.route, function (store) {\n res = store.applyTransaction(transaction);\n });\n if (res) {\n this.valueCache.onDataChanged();\n this.eventService.dispatchEvent({\n type: Events.EVENT_STORE_UPDATED\n });\n if (res.update && res.update.length) {\n // this set timeout is necessary to queue behind the listener for EVENT_STORE_UPDATED in ssrm which recalculates the rowIndexes\n // if the rowIndex isn't calculated first the binarySearchForDisplayIndex will not be able to find the required rows\n setTimeout(function () {\n // refresh the full width rows\n _this.rowRenderer.refreshFullWidthRows(res.update);\n }, 0);\n }\n return res;\n } else {\n return {\n status: ServerSideTransactionResultStatus.StoreNotFound\n };\n }\n };\n __decorate$n([Autowired('rowNodeBlockLoader')], TransactionManager.prototype, \"rowNodeBlockLoader\", void 0);\n __decorate$n([Autowired('valueCache')], TransactionManager.prototype, \"valueCache\", void 0);\n __decorate$n([Autowired('rowModel')], TransactionManager.prototype, \"serverSideRowModel\", void 0);\n __decorate$n([Autowired('rowRenderer')], TransactionManager.prototype, \"rowRenderer\", void 0);\n __decorate$n([PostConstruct], TransactionManager.prototype, \"postConstruct\", null);\n TransactionManager = __decorate$n([Bean('ssrmTransactionManager')], TransactionManager);\n return TransactionManager;\n}(BeanStub);\nvar __extends$G = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$m = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar ExpandListener = /** @class */function (_super) {\n __extends$G(ExpandListener, _super);\n function ExpandListener() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ExpandListener.prototype.postConstruct = function () {\n // only want to be active if SSRM active, otherwise would be interfering with other row models\n if (!this.gridOptionsWrapper.isRowModelServerSide()) {\n return;\n }\n this.addManagedListener(this.eventService, Events.EVENT_ROW_GROUP_OPENED, this.onRowGroupOpened.bind(this));\n };\n ExpandListener.prototype.onRowGroupOpened = function (event) {\n var rowNode = event.node;\n if (rowNode.expanded) {\n if (rowNode.master) {\n this.createDetailNode(rowNode);\n } else if (_.missing(rowNode.childStore)) {\n var storeParams = this.serverSideRowModel.getParams();\n rowNode.childStore = this.createBean(this.storeFactory.createStore(storeParams, rowNode));\n }\n } else if (this.gridOptionsWrapper.isPurgeClosedRowNodes() && _.exists(rowNode.childStore)) {\n rowNode.childStore = this.destroyBean(rowNode.childStore);\n }\n var storeUpdatedEvent = {\n type: Events.EVENT_STORE_UPDATED\n };\n this.eventService.dispatchEvent(storeUpdatedEvent);\n };\n ExpandListener.prototype.createDetailNode = function (masterNode) {\n if (_.exists(masterNode.detailNode)) {\n return masterNode.detailNode;\n }\n var detailNode = new RowNode(this.beans);\n detailNode.detail = true;\n detailNode.selectable = false;\n detailNode.parent = masterNode;\n if (_.exists(masterNode.id)) {\n detailNode.id = 'detail_' + masterNode.id;\n }\n detailNode.data = masterNode.data;\n detailNode.level = masterNode.level + 1;\n var defaultDetailRowHeight = 200;\n var rowHeight = this.gridOptionsWrapper.getRowHeightForNode(detailNode).height;\n detailNode.rowHeight = rowHeight ? rowHeight : defaultDetailRowHeight;\n masterNode.detailNode = detailNode;\n return detailNode;\n };\n __decorate$m([Autowired('rowModel')], ExpandListener.prototype, \"serverSideRowModel\", void 0);\n __decorate$m([Autowired('ssrmStoreFactory')], ExpandListener.prototype, \"storeFactory\", void 0);\n __decorate$m([Autowired('beans')], ExpandListener.prototype, \"beans\", void 0);\n __decorate$m([PostConstruct], ExpandListener.prototype, \"postConstruct\", null);\n ExpandListener = __decorate$m([Bean('ssrmExpandListener')], ExpandListener);\n return ExpandListener;\n}(BeanStub);\nvar __extends$F = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$l = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar SortListener = /** @class */function (_super) {\n __extends$F(SortListener, _super);\n function SortListener() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SortListener.prototype.postConstruct = function () {\n // only want to be active if SSRM active, otherwise would be interfering with other row models\n if (!this.gridOptionsWrapper.isRowModelServerSide()) {\n return;\n }\n this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n };\n SortListener.prototype.extractSortModel = function () {\n var sortModel = this.sortController.getSortModel();\n // when using tree data we just return the sort model with the 'ag-Grid-AutoColumn' as is, i.e not broken out\n // into it's constitute group columns as they are not defined up front and can vary per node.\n if (this.gridOptionsWrapper.isTreeData()) {\n return sortModel;\n }\n // it autoCol is active, we don't want to send this to the server. instead we want to\n // send the\n this.replaceAutoGroupColumnWithActualRowGroupColumns(sortModel);\n this.removeMultiColumnPrefixOnColumnIds(sortModel);\n return sortModel;\n };\n SortListener.prototype.removeMultiColumnPrefixOnColumnIds = function (sortModel) {\n if (this.gridOptionsWrapper.isGroupMultiAutoColumn()) {\n var multiColumnPrefix = Constants.GROUP_AUTO_COLUMN_ID + \"-\";\n for (var i = 0; i < sortModel.length; ++i) {\n if (sortModel[i].colId.indexOf(multiColumnPrefix) > -1) {\n sortModel[i].colId = sortModel[i].colId.substr(multiColumnPrefix.length);\n }\n }\n }\n };\n SortListener.prototype.replaceAutoGroupColumnWithActualRowGroupColumns = function (sortModel) {\n // find index of auto group column in sort model\n var autoGroupSortModel = sortModel.find(function (sm) {\n return sm.colId == Constants.GROUP_AUTO_COLUMN_ID;\n });\n // replace auto column with individual group columns\n if (autoGroupSortModel) {\n // remove auto group column\n var autoGroupIndex = sortModel.indexOf(autoGroupSortModel);\n _.removeFromArray(sortModel, autoGroupSortModel);\n var isNotInSortModel = function (col) {\n return sortModel.filter(function (sm) {\n return sm.colId === col.getColId();\n }).length == 0;\n };\n var mapColumnToSortModel = function (col) {\n return {\n colId: col.getId(),\n sort: autoGroupSortModel.sort\n };\n };\n var newModels = this.columnModel.getRowGroupColumns().filter(isNotInSortModel).map(mapColumnToSortModel);\n _.insertArrayIntoArray(sortModel, newModels, autoGroupIndex);\n }\n };\n SortListener.prototype.onSortChanged = function () {\n var storeParams = this.serverSideRowModel.getParams();\n if (!storeParams) {\n return;\n } // params is undefined if no datasource set\n var newSortModel = this.extractSortModel();\n var oldSortModel = storeParams.sortModel;\n var changedColumns = this.findChangedColumnsInSort(newSortModel, oldSortModel);\n var valueColChanged = this.listenerUtils.isSortingWithValueColumn(changedColumns);\n var secondaryColChanged = this.listenerUtils.isSortingWithSecondaryColumn(changedColumns);\n var params = {\n valueColChanged: valueColChanged,\n secondaryColChanged: secondaryColChanged,\n changedColumns: changedColumns\n };\n this.serverSideRowModel.refreshAfterSort(newSortModel, params);\n };\n // returns back all the cols that were effected by the sorting. eg if we were sorting by col A,\n // and now we are sorting by col B, the list of impacted cols should be A and B. so if a cache\n // is impacted by sorting on A or B then it needs to be refreshed. this includes where the cache\n // was previously sorted by A and then the A sort now needs to be cleared.\n SortListener.prototype.findChangedColumnsInSort = function (newSortModel, oldSortModel) {\n var allColsInBothSorts = [];\n [newSortModel, oldSortModel].forEach(function (sortModel) {\n if (sortModel) {\n var ids = sortModel.map(function (sm) {\n return sm.colId;\n });\n allColsInBothSorts = allColsInBothSorts.concat(ids);\n }\n });\n var differentSorts = function (oldSortItem, newSortItem) {\n var oldSort = oldSortItem ? oldSortItem.sort : null;\n var newSort = newSortItem ? newSortItem.sort : null;\n return oldSort !== newSort;\n };\n var differentIndexes = function (oldSortItem, newSortItem) {\n var oldIndex = oldSortItem ? oldSortModel.indexOf(oldSortItem) : -1;\n var newIndex = newSortItem ? newSortModel.indexOf(newSortItem) : -1;\n return oldIndex !== newIndex;\n };\n return allColsInBothSorts.filter(function (colId) {\n var oldSortItem = oldSortModel.find(function (sm) {\n return sm.colId === colId;\n });\n var newSortItem = newSortModel.find(function (sm) {\n return sm.colId === colId;\n });\n return differentSorts(oldSortItem, newSortItem) || differentIndexes(oldSortItem, newSortItem);\n });\n };\n __decorate$l([Autowired('sortController')], SortListener.prototype, \"sortController\", void 0);\n __decorate$l([Autowired('columnModel')], SortListener.prototype, \"columnModel\", void 0);\n __decorate$l([Autowired('rowModel')], SortListener.prototype, \"serverSideRowModel\", void 0);\n __decorate$l([Autowired('ssrmListenerUtils')], SortListener.prototype, \"listenerUtils\", void 0);\n __decorate$l([PostConstruct], SortListener.prototype, \"postConstruct\", null);\n SortListener = __decorate$l([Bean('ssrmSortService')], SortListener);\n return SortListener;\n}(BeanStub);\nvar __extends$E = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$k = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar FilterListener = /** @class */function (_super) {\n __extends$E(FilterListener, _super);\n function FilterListener() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FilterListener.prototype.postConstruct = function () {\n // only want to be active if SSRM active, otherwise would be interfering with other row models\n if (!this.gridOptionsWrapper.isRowModelServerSide()) {\n return;\n }\n this.addManagedListener(this.eventService, Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n };\n FilterListener.prototype.onFilterChanged = function () {\n var storeParams = this.serverSideRowModel.getParams();\n if (!storeParams) {\n return;\n } // params is undefined if no datasource set\n var newModel = this.filterManager.getFilterModel();\n var oldModel = storeParams ? storeParams.filterModel : {};\n var changedColumns = this.findChangedColumns(newModel, oldModel);\n var valueColChanged = this.listenerUtils.isSortingWithValueColumn(changedColumns);\n var secondaryColChanged = this.listenerUtils.isSortingWithSecondaryColumn(changedColumns);\n var params = {\n valueColChanged: valueColChanged,\n secondaryColChanged: secondaryColChanged,\n changedColumns: changedColumns\n };\n this.serverSideRowModel.refreshAfterFilter(newModel, params);\n };\n FilterListener.prototype.findChangedColumns = function (oldModel, newModel) {\n var allColKeysMap = {};\n Object.keys(oldModel).forEach(function (key) {\n return allColKeysMap[key] = true;\n });\n Object.keys(newModel).forEach(function (key) {\n return allColKeysMap[key] = true;\n });\n var res = [];\n Object.keys(allColKeysMap).forEach(function (key) {\n var oldJson = JSON.stringify(oldModel[key]);\n var newJson = JSON.stringify(newModel[key]);\n var filterChanged = oldJson != newJson;\n if (filterChanged) {\n res.push(key);\n }\n });\n return res;\n };\n __decorate$k([Autowired('rowModel')], FilterListener.prototype, \"serverSideRowModel\", void 0);\n __decorate$k([Autowired('filterManager')], FilterListener.prototype, \"filterManager\", void 0);\n __decorate$k([Autowired('ssrmListenerUtils')], FilterListener.prototype, \"listenerUtils\", void 0);\n __decorate$k([PostConstruct], FilterListener.prototype, \"postConstruct\", null);\n FilterListener = __decorate$k([Bean('ssrmFilterListener')], FilterListener);\n return FilterListener;\n}(BeanStub);\nvar __extends$D = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$j = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __param$1 = undefined && undefined.__param || function (paramIndex, decorator) {\n return function (target, key) {\n decorator(target, key, paramIndex);\n };\n};\nvar __values$1 = undefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar InfiniteStoreBlock = /** @class */function (_super) {\n __extends$D(InfiniteStoreBlock, _super);\n function InfiniteStoreBlock(blockNumber, parentRowNode, ssrmParams, storeParams, parentStore) {\n var _this = _super.call(this, blockNumber) || this;\n _this.ssrmParams = ssrmParams;\n _this.storeParams = storeParams;\n _this.parentRowNode = parentRowNode;\n // we don't need to calculate these now, as the inputs don't change,\n // however it makes the code easier to read if we work them out up front\n _this.startRow = blockNumber * storeParams.cacheBlockSize;\n _this.parentStore = parentStore;\n _this.level = parentRowNode.level + 1;\n _this.groupLevel = ssrmParams.rowGroupCols ? _this.level < ssrmParams.rowGroupCols.length : undefined;\n _this.leafGroup = ssrmParams.rowGroupCols ? _this.level === ssrmParams.rowGroupCols.length - 1 : false;\n return _this;\n }\n InfiniteStoreBlock.prototype.postConstruct = function () {\n this.usingTreeData = this.gridOptionsWrapper.isTreeData();\n if (!this.usingTreeData && this.groupLevel) {\n var groupColVo = this.ssrmParams.rowGroupCols[this.level];\n this.groupField = groupColVo.field;\n this.rowGroupColumn = this.columnModel.getRowGroupColumns()[this.level];\n }\n this.nodeIdPrefix = this.blockUtils.createNodeIdPrefix(this.parentRowNode);\n this.setData([]);\n };\n InfiniteStoreBlock.prototype.isDisplayIndexInBlock = function (displayIndex) {\n return displayIndex >= this.displayIndexStart && displayIndex < this.displayIndexEnd;\n };\n InfiniteStoreBlock.prototype.isBlockBefore = function (displayIndex) {\n return displayIndex >= this.displayIndexEnd;\n };\n InfiniteStoreBlock.prototype.getDisplayIndexStart = function () {\n return this.displayIndexStart;\n };\n InfiniteStoreBlock.prototype.getDisplayIndexEnd = function () {\n return this.displayIndexEnd;\n };\n InfiniteStoreBlock.prototype.getBlockHeightPx = function () {\n return this.blockHeightPx;\n };\n InfiniteStoreBlock.prototype.getBlockTopPx = function () {\n return this.blockTopPx;\n };\n InfiniteStoreBlock.prototype.isGroupLevel = function () {\n return this.groupLevel;\n };\n InfiniteStoreBlock.prototype.getGroupField = function () {\n return this.groupField;\n };\n InfiniteStoreBlock.prototype.prefixId = function (id) {\n if (this.nodeIdPrefix != null) {\n return this.nodeIdPrefix + '-' + id;\n } else {\n return id.toString();\n }\n };\n InfiniteStoreBlock.prototype.getBlockStateJson = function () {\n return {\n id: this.prefixId(this.getId()),\n state: {\n blockNumber: this.getId(),\n startRow: this.startRow,\n endRow: this.startRow + this.storeParams.cacheBlockSize,\n pageStatus: this.getState()\n }\n };\n };\n InfiniteStoreBlock.prototype.isAnyNodeOpen = function () {\n var openNodeCount = this.rowNodes.filter(function (node) {\n return node.expanded;\n }).length;\n return openNodeCount > 0;\n };\n // this method is repeated, see forEachRowNode, why?\n InfiniteStoreBlock.prototype.forEachNode = function (callback, sequence, includeChildren, filterAndSort) {\n if (sequence === void 0) {\n sequence = new NumberSequence();\n }\n this.rowNodes.forEach(function (rowNode) {\n callback(rowNode, sequence.next());\n // this will only every happen for server side row model, as infinite\n // row model doesn't have groups\n if (includeChildren && rowNode.childStore) {\n var childStore = rowNode.childStore;\n if (filterAndSort) {\n childStore.forEachNodeDeepAfterFilterAndSort(callback, sequence);\n } else {\n childStore.forEachNodeDeep(callback, sequence);\n }\n }\n });\n };\n InfiniteStoreBlock.prototype.forEachNodeDeep = function (callback, sequence) {\n this.forEachNode(callback, sequence, true, false);\n };\n InfiniteStoreBlock.prototype.forEachNodeAfterFilterAndSort = function (callback, sequence) {\n this.forEachNode(callback, sequence, true, true);\n };\n InfiniteStoreBlock.prototype.forEachNodeShallow = function (callback, sequence) {\n this.forEachNode(callback, sequence, false, false);\n };\n InfiniteStoreBlock.prototype.getLastAccessed = function () {\n return this.lastAccessed;\n };\n InfiniteStoreBlock.prototype.getRowUsingLocalIndex = function (rowIndex) {\n return this.rowNodes[rowIndex - this.startRow];\n };\n InfiniteStoreBlock.prototype.touchLastAccessed = function () {\n this.lastAccessed = this.ssrmParams.lastAccessedSequence.next();\n };\n InfiniteStoreBlock.prototype.processServerFail = function () {\n this.parentStore.onBlockLoadFailed(this);\n };\n InfiniteStoreBlock.prototype.retryLoads = function () {\n if (this.getState() === RowNodeBlock.STATE_FAILED) {\n this.setStateWaitingToLoad();\n this.rowNodeBlockLoader.checkBlockToLoad();\n this.setData();\n }\n this.forEachNodeShallow(function (node) {\n if (node.childStore) {\n node.childStore.retryLoads();\n }\n });\n };\n InfiniteStoreBlock.prototype.processServerResult = function (params) {\n this.parentStore.onBlockLoaded(this, params);\n };\n InfiniteStoreBlock.prototype.setData = function (rows, failedLoad) {\n var _this = this;\n if (rows === void 0) {\n rows = [];\n }\n if (failedLoad === void 0) {\n failedLoad = false;\n }\n this.destroyRowNodes();\n var storeRowCount = this.parentStore.getRowCount();\n var startRow = this.getId() * this.storeParams.cacheBlockSize;\n var endRow = Math.min(startRow + this.storeParams.cacheBlockSize, storeRowCount);\n var rowsToCreate = endRow - startRow;\n // when using autoHeight, we default the row heights to a height to fill the old height of the block.\n // we only ever do this to autoHeight, as we could be setting invalid heights (especially if different\n // number of rows in the block due to a filter, less rows would mean bigger rows), and autoHeight is\n // the only pattern that will automatically correct this. we check for visible autoHeight cols,\n // to omit the case where all autoHeight cols are hidden.\n var showingAutoHeightCols = this.columnModel.getAllDisplayedAutoHeightCols().length > 0;\n var cachedBlockHeight = showingAutoHeightCols ? this.parentStore.getCachedBlockHeight(this.getId()) : undefined;\n var cachedRowHeight = cachedBlockHeight ? Math.round(cachedBlockHeight / rowsToCreate) : undefined;\n var _loop_1 = function (i) {\n var dataLoadedForThisRow = i < rows.length;\n var getNodeWithData = function (existingNode) {\n // if there's not an existing node to reuse, create a fresh node\n var rowNode = existingNode !== null && existingNode !== void 0 ? existingNode : _this.blockUtils.createRowNode({\n field: _this.groupField,\n group: _this.groupLevel,\n leafGroup: _this.leafGroup,\n level: _this.level,\n parent: _this.parentRowNode,\n rowGroupColumn: _this.rowGroupColumn,\n rowHeight: cachedRowHeight\n });\n if (dataLoadedForThisRow) {\n var data = rows[i];\n if (!!existingNode) {\n _this.blockUtils.updateDataIntoRowNode(rowNode, data);\n } else {\n var defaultId = _this.prefixId(_this.startRow + i);\n _this.blockUtils.setDataIntoRowNode(rowNode, data, defaultId, cachedRowHeight);\n _this.blockUtils.checkOpenByDefault(rowNode);\n }\n _this.parentStore.removeDuplicateNode(rowNode.id);\n _this.nodeManager.addRowNode(rowNode);\n _this.allNodesMap[rowNode.id] = rowNode;\n }\n if (failedLoad) {\n rowNode.failedLoad = true;\n }\n return rowNode;\n };\n var getRowIdFunc = this_1.gridOptionsWrapper.getRowIdFunc();\n var row = void 0;\n if (getRowIdFunc && dataLoadedForThisRow) {\n var data = rows[i];\n var parentKeys = this_1.parentRowNode.getGroupKeys();\n var id = getRowIdFunc({\n data: data,\n level: this_1.level,\n parentKeys: parentKeys.length > 0 ? parentKeys : undefined\n });\n var cachedRow = this_1.parentStore.retrieveNodeFromCache(id);\n row = getNodeWithData(cachedRow);\n }\n if (!row) {\n row = getNodeWithData();\n }\n this_1.rowNodes.push(row);\n };\n var this_1 = this;\n for (var i = 0; i < rowsToCreate; i++) {\n _loop_1(i);\n }\n };\n // to safeguard the grid against duplicate nodes, when a row is loaded, we check\n // for another row in the same cache. if another row does exist, we delete it.\n // this covers for when user refreshes the store (which typically happens after a\n // data change) and the same row ends up coming back in a different block, and the\n // new block finishes refreshing before the old block has finished refreshing.\n InfiniteStoreBlock.prototype.removeDuplicateNode = function (id) {\n // we don't remove duplicates if this block is loaded, as that's a duplicate ID.\n // we are only interested in removing rows in blocks that are in the middle of a refresh,\n // ie two blocks, A and B, both are refreshed (as in the same cache) but A comes back\n // first and some rows have moved from B to A, we must remove the old rows from B.\n // however if B is not also getting refreshed (ie it's loaded) this is a bug\n // we need to tell the application about, as they provided duplicate ID's (done in Node Manager)\n if (this.getState() == RowNodeBlock.STATE_LOADED) {\n return;\n }\n var rowNode = this.allNodesMap[id];\n if (!rowNode) {\n return;\n }\n this.blockUtils.destroyRowNode(rowNode);\n var index = this.rowNodes.indexOf(rowNode);\n var stubRowNode = this.blockUtils.createRowNode({\n field: this.groupField,\n group: this.groupLevel,\n leafGroup: this.leafGroup,\n level: this.level,\n parent: this.parentRowNode,\n rowGroupColumn: this.rowGroupColumn\n });\n this.rowNodes[index] = stubRowNode;\n };\n InfiniteStoreBlock.prototype.refresh = function () {\n if (this.getState() !== RowNodeBlock.STATE_WAITING_TO_LOAD) {\n this.setStateWaitingToLoad();\n }\n };\n InfiniteStoreBlock.prototype.destroyRowNodes = function () {\n var _this = this;\n var _a;\n (_a = this.rowNodes) === null || _a === void 0 ? void 0 : _a.forEach(function (row) {\n var isStoreCachingNode = _this.parentStore.isNodeCached(row.id);\n _this.blockUtils.destroyRowNode(row, isStoreCachingNode);\n });\n this.rowNodes = [];\n this.allNodesMap = {};\n };\n InfiniteStoreBlock.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('ServerSideBlock');\n };\n InfiniteStoreBlock.prototype.getRowUsingDisplayIndex = function (displayRowIndex) {\n this.touchLastAccessed();\n var res = this.blockUtils.binarySearchForDisplayIndex(displayRowIndex, this.rowNodes);\n return res;\n };\n InfiniteStoreBlock.prototype.loadFromDatasource = function () {\n this.storeUtils.loadFromDatasource({\n startRow: this.startRow,\n endRow: this.startRow + this.storeParams.cacheBlockSize,\n parentBlock: this,\n parentNode: this.parentRowNode,\n storeParams: this.ssrmParams,\n successCallback: this.pageLoaded.bind(this, this.getVersion()),\n success: this.success.bind(this, this.getVersion()),\n failCallback: this.pageLoadFailed.bind(this, this.getVersion()),\n fail: this.pageLoadFailed.bind(this, this.getVersion())\n });\n };\n InfiniteStoreBlock.prototype.isPixelInRange = function (pixel) {\n return pixel >= this.blockTopPx && pixel < this.blockTopPx + this.blockHeightPx;\n };\n InfiniteStoreBlock.prototype.getRowBounds = function (index) {\n var e_1, _a;\n this.touchLastAccessed();\n var res;\n try {\n for (var _b = __values$1(this.rowNodes), _c = _b.next(); !_c.done; _c = _b.next()) {\n var rowNode = _c.value;\n res = this.blockUtils.extractRowBounds(rowNode, index);\n if (res != null) {\n break;\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n return res;\n };\n InfiniteStoreBlock.prototype.getRowIndexAtPixel = function (pixel) {\n var e_2, _a;\n this.touchLastAccessed();\n var res = null;\n try {\n for (var _b = __values$1(this.rowNodes), _c = _b.next(); !_c.done; _c = _b.next()) {\n var rowNode = _c.value;\n res = this.blockUtils.getIndexAtPixel(rowNode, pixel);\n if (res != null) {\n break;\n }\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n return res;\n };\n InfiniteStoreBlock.prototype.clearDisplayIndexes = function () {\n var _this = this;\n this.displayIndexEnd = undefined;\n this.displayIndexStart = undefined;\n this.rowNodes.forEach(function (rowNode) {\n return _this.blockUtils.clearDisplayIndex(rowNode);\n });\n };\n InfiniteStoreBlock.prototype.setDisplayIndexes = function (displayIndexSeq, nextRowTop) {\n var _this = this;\n this.displayIndexStart = displayIndexSeq.peek();\n this.blockTopPx = nextRowTop.value;\n this.rowNodes.forEach(function (rowNode) {\n return _this.blockUtils.setDisplayIndex(rowNode, displayIndexSeq, nextRowTop);\n });\n this.displayIndexEnd = displayIndexSeq.peek();\n this.blockHeightPx = nextRowTop.value - this.blockTopPx;\n };\n __decorate$j([Autowired('columnModel')], InfiniteStoreBlock.prototype, \"columnModel\", void 0);\n __decorate$j([Autowired('ssrmStoreUtils')], InfiniteStoreBlock.prototype, \"storeUtils\", void 0);\n __decorate$j([Autowired('ssrmBlockUtils')], InfiniteStoreBlock.prototype, \"blockUtils\", void 0);\n __decorate$j([Autowired('ssrmNodeManager')], InfiniteStoreBlock.prototype, \"nodeManager\", void 0);\n __decorate$j([Autowired('rowNodeBlockLoader')], InfiniteStoreBlock.prototype, \"rowNodeBlockLoader\", void 0);\n __decorate$j([PostConstruct], InfiniteStoreBlock.prototype, \"postConstruct\", null);\n __decorate$j([PreDestroy], InfiniteStoreBlock.prototype, \"destroyRowNodes\", null);\n __decorate$j([__param$1(0, Qualifier('loggerFactory'))], InfiniteStoreBlock.prototype, \"setBeans\", null);\n return InfiniteStoreBlock;\n}(RowNodeBlock);\nvar __extends$C = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$i = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar __param = undefined && undefined.__param || function (paramIndex, decorator) {\n return function (target, key) {\n decorator(target, key, paramIndex);\n };\n};\nvar FindResult = /*#__PURE__*/function (FindResult) {\n FindResult[FindResult[\"FOUND\"] = 0] = \"FOUND\";\n FindResult[FindResult[\"CONTINUE_FIND\"] = 1] = \"CONTINUE_FIND\";\n FindResult[FindResult[\"BREAK_FIND\"] = 2] = \"BREAK_FIND\";\n return FindResult;\n}(FindResult || {});\nvar InfiniteStore = /** @class */function (_super) {\n __extends$C(InfiniteStore, _super);\n function InfiniteStore(ssrmParams, storeParams, parentRowNode) {\n var _this = _super.call(this) || this;\n _this.blocks = {};\n _this.blockHeights = {};\n _this.lastRowIndexKnown = false;\n // this will always be zero for the top level cache only,\n // all the other ones change as the groups open and close\n _this.displayIndexStart = 0;\n _this.displayIndexEnd = 0; // not sure if setting this one to zero is necessary\n _this.cacheTopPixel = 0;\n _this.info = {};\n _this.refreshedNodeCache = {};\n _this.ssrmParams = ssrmParams;\n _this.storeParams = storeParams;\n _this.parentRowNode = parentRowNode;\n return _this;\n }\n InfiniteStore.prototype.postConstruct = function () {\n this.defaultRowHeight = this.gridOptionsWrapper.getRowHeightAsNumber();\n var isRootStore = this.parentRowNode.level === -1;\n var initialRowCount = isRootStore ? this.gridOptionsWrapper.getServerSideInitialRowCount() : InfiniteStore.INITIAL_ROW_COUNT;\n this.rowCount = initialRowCount;\n };\n InfiniteStore.prototype.destroyAllBlocks = function () {\n var _this = this;\n this.getBlocksInOrder().forEach(function (block) {\n return _this.destroyBlock(block);\n });\n this.blockUtils.destroyRowNodes(Object.values(this.refreshedNodeCache));\n };\n InfiniteStore.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('ServerSideCache');\n };\n InfiniteStore.prototype.getRowCount = function () {\n return this.rowCount;\n };\n InfiniteStore.prototype.isLastRowIndexKnown = function () {\n return this.lastRowIndexKnown;\n };\n InfiniteStore.prototype.retryLoads = function () {\n this.getBlocksInOrder().forEach(function (block) {\n return block.retryLoads();\n });\n };\n InfiniteStore.prototype.onBlockLoadFailed = function (block) {\n block.setData([], true);\n this.fireCacheUpdatedEvent();\n };\n InfiniteStore.prototype.onBlockLoaded = function (block, params) {\n this.logger.log(\"onPageLoaded: page = \" + block.getId() + \", lastRow = \" + params.rowCount);\n var info = params.storeInfo || params.groupLevelInfo;\n if (info) {\n Object.assign(this.info, info);\n }\n if (!params.rowData) {\n var message_1 = 'AG Grid: \"params.rowData\" is missing from Server-Side Row Model success() callback. Please use the \"rowData\" attribute. If no data is returned, set an empty list.';\n _.doOnce(function () {\n return console.warn(message_1, params);\n }, 'InfiniteStore.noData');\n }\n var finalRowCount = params.rowCount != null && params.rowCount >= 0 ? params.rowCount : undefined;\n // if we are not active, then we ignore all events, otherwise we could end up getting the\n // grid to refresh even though we are no longer the active cache\n if (!this.isAlive()) {\n return;\n }\n this.checkRowCount(block, finalRowCount);\n block.setData(params.rowData);\n // if the virtualRowCount is shortened, then it's possible blocks exist that are no longer\n // in the valid range. so we must remove these. this can happen if the datasource returns a\n // result and sets lastRow to something less than virtualRowCount (can happen if user scrolls\n // down, server reduces dataset size).\n this.destroyAllBlocksPastVirtualRowCount();\n this.fireCacheUpdatedEvent();\n };\n InfiniteStore.prototype.purgeBlocksIfNeeded = function (blockToExclude) {\n var _this = this;\n // we exclude checking for the page just created, as this has yet to be accessed and hence\n // the lastAccessed stamp will not be updated for the first time yet\n var blocksForPurging = this.getBlocksInOrder().filter(function (b) {\n return b != blockToExclude;\n });\n var lastAccessedComparator = function (a, b) {\n return b.getLastAccessed() - a.getLastAccessed();\n };\n blocksForPurging.sort(lastAccessedComparator);\n // we remove (maxBlocksInCache - 1) as we already excluded the 'just created' page.\n // in other words, after the splice operation below, we have taken out the blocks\n // we want to keep, which means we are left with blocks that we can potentially purge\n var maxBlocksProvided = this.storeParams.maxBlocksInCache > 0;\n var blocksToKeep = maxBlocksProvided ? this.storeParams.maxBlocksInCache - 1 : null;\n var emptyBlocksToKeep = InfiniteStore.MAX_EMPTY_BLOCKS_TO_KEEP - 1;\n blocksForPurging.forEach(function (block, index) {\n var purgeBecauseBlockEmpty = block.getState() === InfiniteStoreBlock.STATE_WAITING_TO_LOAD && index >= emptyBlocksToKeep;\n var purgeBecauseCacheFull = maxBlocksProvided ? index >= blocksToKeep : false;\n if (purgeBecauseBlockEmpty || purgeBecauseCacheFull) {\n // we never purge blocks if they are open, as purging them would mess up with\n // our indexes, it would be very messy to restore the purged block to it's\n // previous state if it had open children.\n if (block.isAnyNodeOpen()) {\n return;\n }\n // if the block currently has rows been displayed, then don't remove it either.\n // this can happen if user has maxBlocks=2, and blockSize=5 (thus 10 max rows in cache)\n // but the screen is showing 20 rows, so at least 4 blocks are needed.\n if (_this.isBlockCurrentlyDisplayed(block)) {\n return;\n }\n // don't want to loose keyboard focus, so keyboard navigation can continue. so keep focused blocks.\n if (_this.isBlockFocused(block)) {\n return;\n }\n // at this point, block is not needed, and no open nodes, so burn baby burn\n _this.destroyBlock(block);\n }\n });\n };\n InfiniteStore.prototype.isBlockFocused = function (block) {\n var focusedCell = this.focusService.getFocusCellToUseAfterRefresh();\n if (!focusedCell) {\n return false;\n }\n if (focusedCell.rowPinned != null) {\n return false;\n }\n var blockIndexStart = block.getDisplayIndexStart();\n var blockIndexEnd = block.getDisplayIndexEnd();\n if (blockIndexEnd == null || blockIndexStart == null) {\n return false;\n }\n var hasFocus = focusedCell.rowIndex >= blockIndexStart && focusedCell.rowIndex < blockIndexEnd;\n return hasFocus;\n };\n InfiniteStore.prototype.isBlockCurrentlyDisplayed = function (block) {\n var startIndex = block.getDisplayIndexStart();\n var endIndex = block.getDisplayIndexEnd() - 1;\n return this.rowRenderer.isRangeInRenderedViewport(startIndex, endIndex);\n };\n InfiniteStore.prototype.removeDuplicateNode = function (id) {\n this.getBlocksInOrder().forEach(function (block) {\n return block.removeDuplicateNode(id);\n });\n };\n InfiniteStore.prototype.checkRowCount = function (block, lastRow) {\n // if client provided a last row, we always use it, as it could change between server calls\n // if user deleted data and then called refresh on the grid.\n if (typeof lastRow === 'number' && lastRow >= 0) {\n this.rowCount = lastRow;\n this.lastRowIndexKnown = true;\n } else if (!this.lastRowIndexKnown) {\n // otherwise, see if we need to add some virtual rows\n var lastRowIndex = (block.getId() + 1) * this.storeParams.cacheBlockSize;\n var lastRowIndexPlusOverflow = lastRowIndex + InfiniteStore.OVERFLOW_SIZE;\n if (this.rowCount < lastRowIndexPlusOverflow) {\n this.rowCount = lastRowIndexPlusOverflow;\n }\n }\n };\n InfiniteStore.prototype.forEachNodeDeep = function (callback, sequence) {\n if (sequence === void 0) {\n sequence = new NumberSequence();\n }\n this.getBlocksInOrder().forEach(function (block) {\n return block.forEachNodeDeep(callback, sequence);\n });\n };\n InfiniteStore.prototype.forEachNodeDeepAfterFilterAndSort = function (callback, sequence) {\n if (sequence === void 0) {\n sequence = new NumberSequence();\n }\n this.getBlocksInOrder().forEach(function (block) {\n return block.forEachNodeAfterFilterAndSort(callback, sequence);\n });\n };\n InfiniteStore.prototype.getBlocksInOrder = function () {\n // get all page id's as NUMBERS (not strings, as we need to sort as numbers) and in descending order\n var blockComparator = function (a, b) {\n return a.getId() - b.getId();\n };\n var blocks = _.getAllValuesInObject(this.blocks).sort(blockComparator);\n return blocks;\n };\n InfiniteStore.prototype.destroyBlock = function (block) {\n delete this.blocks[block.getId()];\n this.destroyBean(block);\n this.rowNodeBlockLoader.removeBlock(block);\n };\n // gets called 1) row count changed 2) cache purged 3) items inserted\n InfiniteStore.prototype.fireCacheUpdatedEvent = function () {\n // this results in row model firing ModelUpdated.\n // server side row model also updates the row indexes first\n var event = {\n type: Events.EVENT_STORE_UPDATED\n };\n this.eventService.dispatchEvent(event);\n };\n InfiniteStore.prototype.destroyAllBlocksPastVirtualRowCount = function () {\n var _this = this;\n var blocksToDestroy = [];\n this.getBlocksInOrder().forEach(function (block) {\n var startRow = block.getId() * _this.storeParams.cacheBlockSize;\n if (startRow >= _this.rowCount) {\n blocksToDestroy.push(block);\n }\n });\n if (blocksToDestroy.length > 0) {\n blocksToDestroy.forEach(function (block) {\n return _this.destroyBlock(block);\n });\n }\n };\n InfiniteStore.prototype.refreshStore = function (purge) {\n var noBlocksToRefresh = this.getRowCount() == 0;\n if (noBlocksToRefresh || purge) {\n this.resetStore();\n } else {\n this.refreshBlocks();\n }\n this.fireCacheUpdatedEvent();\n };\n InfiniteStore.prototype.isNodeCached = function (id) {\n return !!this.refreshedNodeCache[id];\n };\n InfiniteStore.prototype.retrieveNodeFromCache = function (id) {\n var node = this.refreshedNodeCache[id];\n if (node) {\n delete this.refreshedNodeCache[id];\n }\n return node;\n };\n InfiniteStore.prototype.buildRowNodeCache = function () {\n var rowCache = {};\n this.getBlocksInOrder().forEach(function (block) {\n block.rowNodes.forEach(function (row) {\n if (row.group) {\n rowCache[row.id] = row;\n }\n });\n });\n this.refreshedNodeCache = rowCache;\n };\n InfiniteStore.prototype.refreshBlocks = function () {\n this.buildRowNodeCache();\n this.getBlocksInOrder().forEach(function (block) {\n block.refresh();\n });\n this.lastRowIndexKnown = false;\n this.rowNodeBlockLoader.checkBlockToLoad();\n };\n InfiniteStore.prototype.resetStore = function () {\n this.destroyAllBlocks();\n this.lastRowIndexKnown = false;\n // if zero rows in the cache, we need to get the SSRM to start asking for rows again.\n // otherwise if set to zero rows last time, and we don't update the row count, then after\n // the purge there will still be zero rows, meaning the SSRM won't request any rows.\n // to kick things off, at least one row needs to be asked for.\n if (this.columnModel.isAutoRowHeightActive() || this.rowCount === 0) {\n this.rowCount = InfiniteStore.INITIAL_ROW_COUNT;\n }\n };\n InfiniteStore.prototype.getRowNodesInRange = function (firstInRange, lastInRange) {\n var result = [];\n var lastBlockId = -1;\n var inActiveRange = false;\n // if only one node passed, we start the selection at the top\n if (_.missing(firstInRange)) {\n inActiveRange = true;\n }\n var foundGapInSelection = false;\n this.getBlocksInOrder().forEach(function (block) {\n if (foundGapInSelection) {\n return;\n }\n if (inActiveRange && lastBlockId + 1 !== block.getId()) {\n foundGapInSelection = true;\n return;\n }\n lastBlockId = block.getId();\n block.forEachNodeShallow(function (rowNode) {\n var hitFirstOrLast = rowNode === firstInRange || rowNode === lastInRange;\n if (inActiveRange || hitFirstOrLast) {\n result.push(rowNode);\n }\n if (hitFirstOrLast) {\n inActiveRange = !inActiveRange;\n }\n });\n });\n // inActiveRange will be still true if we never hit the second rowNode\n var invalidRange = foundGapInSelection || inActiveRange;\n return invalidRange ? [] : result;\n };\n InfiniteStore.prototype.findBlockAndExecute = function (matchBlockFunc, blockFoundFunc, blockNotFoundFunc) {\n var blockFound = false;\n var breakSearch = false;\n var lastBlock = null;\n var res;\n this.getBlocksInOrder().forEach(function (block) {\n if (blockFound || breakSearch) {\n return;\n }\n var comparatorResult = matchBlockFunc(block);\n if (comparatorResult == FindResult.FOUND) {\n res = blockFoundFunc(block);\n blockFound = true;\n } else if (comparatorResult == FindResult.CONTINUE_FIND) {\n lastBlock = block;\n } else if (comparatorResult == FindResult.BREAK_FIND) {\n breakSearch = true;\n }\n });\n if (!blockFound) {\n res = blockNotFoundFunc(lastBlock);\n }\n return res;\n };\n InfiniteStore.prototype.getRowBounds = function (index) {\n var _this = this;\n var matchBlockFunc = function (block) {\n if (block.isDisplayIndexInBlock(index)) {\n return FindResult.FOUND;\n } else {\n return block.isBlockBefore(index) ? FindResult.CONTINUE_FIND : FindResult.BREAK_FIND;\n }\n };\n var blockFoundFunc = function (foundBlock) {\n return foundBlock.getRowBounds(index);\n };\n var blockNotFoundFunc = function (previousBlock) {\n var nextRowTop;\n var nextRowIndex;\n if (previousBlock !== null) {\n nextRowTop = previousBlock.getBlockTopPx() + previousBlock.getBlockHeightPx();\n nextRowIndex = previousBlock.getDisplayIndexEnd();\n } else {\n nextRowTop = _this.cacheTopPixel;\n nextRowIndex = _this.displayIndexStart;\n }\n var rowsBetween = index - nextRowIndex;\n return {\n rowHeight: _this.defaultRowHeight,\n rowTop: nextRowTop + rowsBetween * _this.defaultRowHeight\n };\n };\n return this.findBlockAndExecute(matchBlockFunc, blockFoundFunc, blockNotFoundFunc);\n };\n InfiniteStore.prototype.getRowIndexAtPixel = function (pixel) {\n var _this = this;\n var matchBlockFunc = function (block) {\n if (block.isPixelInRange(pixel)) {\n return FindResult.FOUND;\n } else {\n return block.getBlockTopPx() < pixel ? FindResult.CONTINUE_FIND : FindResult.BREAK_FIND;\n }\n };\n var blockFoundFunc = function (foundBlock) {\n return foundBlock.getRowIndexAtPixel(pixel);\n };\n var blockNotFoundFunc = function (previousBlock) {\n var nextRowTop;\n var nextRowIndex;\n if (previousBlock) {\n nextRowTop = previousBlock.getBlockTopPx() + previousBlock.getBlockHeightPx();\n nextRowIndex = previousBlock.getDisplayIndexEnd();\n } else {\n nextRowTop = _this.cacheTopPixel;\n nextRowIndex = _this.displayIndexStart;\n }\n // we start at the last loaded block before this block, and go down\n // block by block, adding in the block sizes (using cached sizes if available)\n // until we get to a block that does should have the pixel\n var blockSize = _this.storeParams.cacheBlockSize;\n var defaultBlockHeight = _this.defaultRowHeight * blockSize;\n var nextBlockId = previousBlock ? previousBlock.getId() + 1 : 0;\n var getBlockDetails = function (id) {\n var cachedBlockHeight = _this.getCachedBlockHeight(id);\n var blockHeight = cachedBlockHeight != null ? cachedBlockHeight : defaultBlockHeight;\n var pixelInBlock = pixel <= blockHeight + nextRowTop;\n return {\n height: blockHeight,\n pixelInBlock: pixelInBlock\n };\n };\n var blockDetails = getBlockDetails(nextBlockId);\n while (!blockDetails.pixelInBlock) {\n nextRowTop += blockDetails.height;\n nextRowIndex += blockSize;\n nextBlockId++;\n blockDetails = getBlockDetails(nextBlockId);\n }\n var pixelsBetween = pixel - nextRowTop;\n var rowHeight = blockDetails.height / blockSize;\n var rowsBetween = Math.floor(pixelsBetween / rowHeight) | 0;\n return nextRowIndex + rowsBetween;\n };\n var result = this.findBlockAndExecute(matchBlockFunc, blockFoundFunc, blockNotFoundFunc);\n var lastAllowedIndex = this.getDisplayIndexEnd() - 1;\n result = Math.min(result, lastAllowedIndex);\n return result;\n };\n InfiniteStore.prototype.clearDisplayIndexes = function () {\n this.displayIndexStart = undefined;\n this.displayIndexEnd = undefined;\n this.getBlocksInOrder().forEach(function (block) {\n return block.clearDisplayIndexes();\n });\n };\n InfiniteStore.prototype.setDisplayIndexes = function (displayIndexSeq, nextRowTop) {\n var _this = this;\n this.displayIndexStart = displayIndexSeq.peek();\n this.cacheTopPixel = nextRowTop.value;\n var lastBlockId = -1;\n var blockSize = this.storeParams.cacheBlockSize;\n this.getBlocksInOrder().forEach(function (currentBlock) {\n // if we skipped blocks, then we need to skip the row indexes. we assume that all missing\n // blocks are made up of closed RowNodes only (if they were groups), as we never expire from\n // the cache if any row nodes are open.\n var blockId = currentBlock.getId();\n var blocksSkippedCount = blockId - lastBlockId - 1;\n var rowsSkippedCount = blocksSkippedCount * blockSize;\n if (rowsSkippedCount > 0) {\n displayIndexSeq.skip(rowsSkippedCount);\n }\n for (var i = 1; i <= blocksSkippedCount; i++) {\n var blockToAddId = blockId - i;\n if (_.exists(_this.blockHeights[blockToAddId])) {\n nextRowTop.value += _this.blockHeights[blockToAddId];\n } else {\n nextRowTop.value += blockSize * _this.defaultRowHeight;\n }\n }\n lastBlockId = blockId;\n currentBlock.setDisplayIndexes(displayIndexSeq, nextRowTop);\n _this.blockHeights[blockId] = currentBlock.getBlockHeightPx();\n });\n // if any blocks missing at the end, need to increase the row index for them also\n // eg if block size = 10, we have total rows of 25 (indexes 0 .. 24), but first 2 blocks loaded (because\n // last row was ejected from cache), then:\n // lastVisitedRow = 19, virtualRowCount = 25, rows not accounted for = 5 (24 - 19)\n var lastVisitedRow = (lastBlockId + 1) * blockSize - 1;\n var rowCount = this.getRowCount();\n var rowsNotAccountedFor = rowCount - lastVisitedRow - 1;\n if (rowsNotAccountedFor > 0) {\n displayIndexSeq.skip(rowsNotAccountedFor);\n nextRowTop.value += rowsNotAccountedFor * this.defaultRowHeight;\n }\n this.displayIndexEnd = displayIndexSeq.peek();\n this.cacheHeightPixels = nextRowTop.value - this.cacheTopPixel;\n };\n // gets called in a) init() above and b) by the grid\n InfiniteStore.prototype.getRowUsingDisplayIndex = function (displayRowIndex, dontCreateBlock) {\n var _this = this;\n if (dontCreateBlock === void 0) {\n dontCreateBlock = false;\n }\n // this can happen if asking for a row that doesn't exist in the model,\n // eg if a cell range is selected, and the user filters so rows no longer exists\n if (!this.isDisplayIndexInStore(displayRowIndex)) {\n return undefined;\n }\n var matchBlockFunc = function (block) {\n if (block.isDisplayIndexInBlock(displayRowIndex)) {\n return FindResult.FOUND;\n } else {\n return block.isBlockBefore(displayRowIndex) ? FindResult.CONTINUE_FIND : FindResult.BREAK_FIND;\n }\n };\n var blockFoundFunc = function (foundBlock) {\n return foundBlock.getRowUsingDisplayIndex(displayRowIndex);\n };\n var blockNotFoundFunc = function (previousBlock) {\n if (dontCreateBlock) {\n return;\n }\n var blockNumber;\n var displayIndexStart;\n var nextRowTop;\n var blockSize = _this.storeParams.cacheBlockSize;\n // because missing blocks are always fully closed, we can work out\n // the start index of the block we want by hopping from the closest block,\n // as we know the row count in closed blocks is equal to the page size\n if (previousBlock) {\n blockNumber = previousBlock.getId() + 1;\n displayIndexStart = previousBlock.getDisplayIndexEnd();\n nextRowTop = previousBlock.getBlockHeightPx() + previousBlock.getBlockTopPx();\n var isInRange = function () {\n return displayRowIndex >= displayIndexStart && displayRowIndex < displayIndexStart + blockSize;\n };\n while (!isInRange()) {\n displayIndexStart += blockSize;\n var cachedBlockHeight = _this.blockHeights[blockNumber];\n if (_.exists(cachedBlockHeight)) {\n nextRowTop += cachedBlockHeight;\n } else {\n nextRowTop += _this.defaultRowHeight * blockSize;\n }\n blockNumber++;\n }\n } else {\n var localIndex = displayRowIndex - _this.displayIndexStart;\n blockNumber = Math.floor(localIndex / blockSize);\n displayIndexStart = _this.displayIndexStart + blockNumber * blockSize;\n nextRowTop = _this.cacheTopPixel + blockNumber * blockSize * _this.defaultRowHeight;\n }\n _this.logger.log(\"block missing, rowIndex = \" + displayRowIndex + \", creating #\" + blockNumber + \", displayIndexStart = \" + displayIndexStart);\n var newBlock = _this.createBlock(blockNumber, displayIndexStart, {\n value: nextRowTop\n });\n return newBlock.getRowUsingDisplayIndex(displayRowIndex);\n };\n return this.findBlockAndExecute(matchBlockFunc, blockFoundFunc, blockNotFoundFunc);\n };\n InfiniteStore.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {\n var blockSize = this.storeParams.cacheBlockSize;\n var blockId = Math.floor(topLevelIndex / blockSize);\n var matchBlockFunc = function (block) {\n if (block.getId() === blockId) {\n return FindResult.FOUND;\n }\n return block.getId() < blockId ? FindResult.CONTINUE_FIND : FindResult.BREAK_FIND;\n };\n var blockFoundFunc = function (foundBlock) {\n var rowNode = foundBlock.getRowUsingLocalIndex(topLevelIndex);\n return rowNode.rowIndex;\n };\n var blockNotFoundFunc = function (previousBlock) {\n if (!previousBlock) {\n return topLevelIndex;\n }\n // note: the local index is the same as the top level index, two terms for same thing\n //\n // get index of the last row before this row\n // eg if blocksize = 100, then:\n // last row of first block is 99 (100 * 1) -1;\n // last row of second block is 199 (100 * 2) -1;\n var lastRowTopLevelIndex = blockSize * (previousBlock.getId() + 1) - 1;\n // get the last top level node in the block before the wanted block. this will be the last\n // loaded displayed top level node.\n var lastRowNode = previousBlock.getRowUsingLocalIndex(lastRowTopLevelIndex);\n // we want the index of the last displayed node, not just the top level node, so if the last top level node\n // is open, we get the index of the last displayed child node.\n var lastDisplayedNodeIndexInBlockBefore;\n if (lastRowNode.expanded && lastRowNode.childStore) {\n var serverSideCache = lastRowNode.childStore;\n lastDisplayedNodeIndexInBlockBefore = serverSideCache.getDisplayIndexEnd() - 1;\n } else if (lastRowNode.expanded && lastRowNode.detailNode) {\n lastDisplayedNodeIndexInBlockBefore = lastRowNode.detailNode.rowIndex;\n } else {\n lastDisplayedNodeIndexInBlockBefore = lastRowNode.rowIndex;\n }\n // we are guaranteed no rows are open. so the difference between the topTopIndex will be the\n // same as the difference between the displayed index\n var indexDiff = topLevelIndex - lastRowTopLevelIndex;\n return lastDisplayedNodeIndexInBlockBefore + indexDiff;\n };\n return this.findBlockAndExecute(matchBlockFunc, blockFoundFunc, blockNotFoundFunc);\n };\n InfiniteStore.prototype.addStoreStates = function (result) {\n result.push({\n infiniteScroll: true,\n route: this.parentRowNode.getGroupKeys(),\n rowCount: this.rowCount,\n lastRowIndexKnown: this.lastRowIndexKnown,\n info: this.info,\n maxBlocksInCache: this.storeParams.maxBlocksInCache,\n cacheBlockSize: this.storeParams.cacheBlockSize\n });\n this.forEachChildStoreShallow(function (childStore) {\n return childStore.addStoreStates(result);\n });\n };\n InfiniteStore.prototype.getCachedBlockHeight = function (blockNumber) {\n return this.blockHeights[blockNumber];\n };\n InfiniteStore.prototype.createBlock = function (blockNumber, displayIndex, nextRowTop) {\n var block = this.createBean(new InfiniteStoreBlock(blockNumber, this.parentRowNode, this.ssrmParams, this.storeParams, this));\n block.setDisplayIndexes(new NumberSequence(displayIndex), nextRowTop);\n this.blocks[block.getId()] = block;\n this.purgeBlocksIfNeeded(block);\n this.rowNodeBlockLoader.addBlock(block);\n return block;\n };\n InfiniteStore.prototype.getDisplayIndexEnd = function () {\n return this.displayIndexEnd;\n };\n InfiniteStore.prototype.isDisplayIndexInStore = function (displayIndex) {\n if (this.getRowCount() === 0) {\n return false;\n }\n return displayIndex >= this.displayIndexStart && displayIndex < this.displayIndexEnd;\n };\n InfiniteStore.prototype.applyTransaction = function (transaction) {\n return {\n status: ServerSideTransactionResultStatus.StoreWrongType\n };\n };\n InfiniteStore.prototype.getChildStore = function (keys) {\n var _this = this;\n var findNodeCallback = function (key) {\n var nextNode = null;\n _this.getBlocksInOrder().forEach(function (block) {\n block.forEachNodeShallow(function (rowNode) {\n if (rowNode.key == key) {\n nextNode = rowNode;\n }\n }, new NumberSequence());\n });\n return nextNode;\n };\n return this.storeUtils.getChildStore(keys, this, findNodeCallback);\n };\n InfiniteStore.prototype.isPixelInRange = function (pixel) {\n if (this.getRowCount() === 0) {\n return false;\n }\n return pixel >= this.cacheTopPixel && pixel < this.cacheTopPixel + this.cacheHeightPixels;\n };\n InfiniteStore.prototype.refreshAfterFilter = function (params) {\n var serverFiltersAllLevels = this.gridOptionsWrapper.isServerSideFilterAllLevels();\n if (serverFiltersAllLevels || this.storeUtils.isServerRefreshNeeded(this.parentRowNode, this.ssrmParams.rowGroupCols, params)) {\n this.resetStore();\n return;\n }\n // call refreshAfterSort on children, as we did not purge.\n // if we did purge, no need to do this as all children were destroyed\n this.forEachChildStoreShallow(function (store) {\n return store.refreshAfterFilter(params);\n });\n };\n InfiniteStore.prototype.refreshAfterSort = function (params) {\n var serverSortsAllLevels = this.gridOptionsWrapper.isServerSideSortAllLevels();\n if (serverSortsAllLevels || this.storeUtils.isServerRefreshNeeded(this.parentRowNode, this.ssrmParams.rowGroupCols, params)) {\n this.resetStore();\n return;\n }\n // call refreshAfterSort on children, as we did not purge.\n // if we did purge, no need to do this as all children were destroyed\n this.forEachChildStoreShallow(function (store) {\n return store.refreshAfterSort(params);\n });\n };\n InfiniteStore.prototype.forEachChildStoreShallow = function (callback) {\n this.getBlocksInOrder().forEach(function (block) {\n if (block.isGroupLevel()) {\n var innerCallback = function (rowNode) {\n var nextCache = rowNode.childStore;\n if (nextCache) {\n callback(nextCache);\n }\n };\n block.forEachNodeShallow(innerCallback, new NumberSequence());\n }\n });\n };\n // this property says how many empty blocks should be in a cache, eg if scrolls down fast and creates 10\n // blocks all for loading, the grid will only load the last 2 - it will assume the blocks the user quickly\n // scrolled over are not needed to be loaded.\n InfiniteStore.MAX_EMPTY_BLOCKS_TO_KEEP = 2;\n InfiniteStore.INITIAL_ROW_COUNT = 1;\n InfiniteStore.OVERFLOW_SIZE = 1;\n __decorate$i([Autowired('rowRenderer')], InfiniteStore.prototype, \"rowRenderer\", void 0);\n __decorate$i([Autowired('rowNodeBlockLoader')], InfiniteStore.prototype, \"rowNodeBlockLoader\", void 0);\n __decorate$i([Autowired('ssrmStoreUtils')], InfiniteStore.prototype, \"storeUtils\", void 0);\n __decorate$i([Autowired(\"focusService\")], InfiniteStore.prototype, \"focusService\", void 0);\n __decorate$i([Autowired(\"columnModel\")], InfiniteStore.prototype, \"columnModel\", void 0);\n __decorate$i([Autowired('ssrmBlockUtils')], InfiniteStore.prototype, \"blockUtils\", void 0);\n __decorate$i([PostConstruct], InfiniteStore.prototype, \"postConstruct\", null);\n __decorate$i([PreDestroy], InfiniteStore.prototype, \"destroyAllBlocks\", null);\n __decorate$i([__param(0, Qualifier('loggerFactory'))], InfiniteStore.prototype, \"setBeans\", null);\n return InfiniteStore;\n}(BeanStub);\nvar __extends$B = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$h = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar FullStore = /** @class */function (_super) {\n __extends$B(FullStore, _super);\n function FullStore(ssrmParams, storeParams, parentRowNode) {\n var _this =\n // finite block represents a cache with just one block, thus 0 is the id, it's the first block\n _super.call(this, 0) || this;\n _this.nodeIdSequence = new NumberSequence();\n _this.info = {};\n _this.ssrmParams = ssrmParams;\n _this.parentRowNode = parentRowNode;\n _this.level = parentRowNode.level + 1;\n _this.groupLevel = ssrmParams.rowGroupCols ? _this.level < ssrmParams.rowGroupCols.length : undefined;\n _this.leafGroup = ssrmParams.rowGroupCols ? _this.level === ssrmParams.rowGroupCols.length - 1 : false;\n return _this;\n }\n FullStore.prototype.postConstruct = function () {\n var _this = this;\n this.usingTreeData = this.gridOptionsWrapper.isTreeData();\n this.nodeIdPrefix = this.blockUtils.createNodeIdPrefix(this.parentRowNode);\n if (!this.usingTreeData && this.groupLevel) {\n var groupColVo = this.ssrmParams.rowGroupCols[this.level];\n this.groupField = groupColVo.field;\n this.rowGroupColumn = this.columnModel.getRowGroupColumns()[this.level];\n }\n var initialRowCount = 1;\n var isRootStore = this.parentRowNode.level === -1;\n var userInitialRowCount = this.gridOptionsWrapper.getServerSideInitialRowCount();\n if (isRootStore && userInitialRowCount !== undefined) {\n initialRowCount = userInitialRowCount;\n }\n this.initialiseRowNodes(initialRowCount);\n this.rowNodeBlockLoader.addBlock(this);\n this.addDestroyFunc(function () {\n return _this.rowNodeBlockLoader.removeBlock(_this);\n });\n };\n FullStore.prototype.destroyRowNodes = function () {\n this.blockUtils.destroyRowNodes(this.allRowNodes);\n this.allRowNodes = [];\n this.nodesAfterSort = [];\n this.nodesAfterFilter = [];\n this.allNodesMap = {};\n };\n FullStore.prototype.initialiseRowNodes = function (loadingRowsCount, failedLoad) {\n if (failedLoad === void 0) {\n failedLoad = false;\n }\n this.destroyRowNodes();\n for (var i = 0; i < loadingRowsCount; i++) {\n var loadingRowNode = this.blockUtils.createRowNode({\n field: this.groupField,\n group: this.groupLevel,\n leafGroup: this.leafGroup,\n level: this.level,\n parent: this.parentRowNode,\n rowGroupColumn: this.rowGroupColumn\n });\n if (failedLoad) {\n loadingRowNode.failedLoad = true;\n }\n this.allRowNodes.push(loadingRowNode);\n this.nodesAfterFilter.push(loadingRowNode);\n this.nodesAfterSort.push(loadingRowNode);\n }\n };\n FullStore.prototype.getBlockStateJson = function () {\n return {\n id: this.nodeIdPrefix ? this.nodeIdPrefix : '',\n state: this.getState()\n };\n };\n FullStore.prototype.loadFromDatasource = function () {\n this.storeUtils.loadFromDatasource({\n startRow: undefined,\n endRow: undefined,\n parentBlock: this,\n parentNode: this.parentRowNode,\n storeParams: this.ssrmParams,\n successCallback: this.pageLoaded.bind(this, this.getVersion()),\n success: this.success.bind(this, this.getVersion()),\n failCallback: this.pageLoadFailed.bind(this, this.getVersion()),\n fail: this.pageLoadFailed.bind(this, this.getVersion())\n });\n };\n FullStore.prototype.getStartRow = function () {\n return 0; // always zero as not in a cache\n };\n FullStore.prototype.getEndRow = function () {\n return this.nodesAfterSort.length;\n };\n FullStore.prototype.createDataNode = function (data, index) {\n var rowNode = this.blockUtils.createRowNode({\n field: this.groupField,\n group: this.groupLevel,\n leafGroup: this.leafGroup,\n level: this.level,\n parent: this.parentRowNode,\n rowGroupColumn: this.rowGroupColumn\n });\n if (index != null) {\n _.insertIntoArray(this.allRowNodes, rowNode, index);\n } else {\n this.allRowNodes.push(rowNode);\n }\n var defaultId = this.prefixId(this.nodeIdSequence.next());\n this.blockUtils.setDataIntoRowNode(rowNode, data, defaultId, undefined);\n this.nodeManager.addRowNode(rowNode);\n this.blockUtils.checkOpenByDefault(rowNode);\n this.allNodesMap[rowNode.id] = rowNode;\n return rowNode;\n };\n FullStore.prototype.prefixId = function (id) {\n if (this.nodeIdPrefix) {\n return this.nodeIdPrefix + '-' + id;\n } else {\n return id.toString();\n }\n };\n FullStore.prototype.processServerFail = function () {\n this.initialiseRowNodes(1, true);\n this.fireStoreUpdatedEvent();\n this.flushAsyncTransactions();\n };\n FullStore.prototype.processServerResult = function (params) {\n if (!this.isAlive()) {\n return;\n }\n var info = params.storeInfo || params.groupLevelInfo;\n if (info) {\n Object.assign(this.info, info);\n }\n var nodesToRecycle = this.allRowNodes.length > 0 ? this.allNodesMap : undefined;\n this.allRowNodes = [];\n this.nodesAfterSort = [];\n this.nodesAfterFilter = [];\n this.allNodesMap = {};\n if (!params.rowData) {\n var message_1 = 'AG Grid: \"params.data\" is missing from Server-Side Row Model success() callback. Please use the \"data\" attribute. If no data is returned, set an empty list.';\n _.doOnce(function () {\n return console.warn(message_1, params);\n }, 'FullStore.noData');\n }\n this.createOrRecycleNodes(nodesToRecycle, params.rowData);\n if (nodesToRecycle) {\n this.blockUtils.destroyRowNodes(_.getAllValuesInObject(nodesToRecycle));\n }\n this.filterAndSortNodes();\n this.fireStoreUpdatedEvent();\n this.flushAsyncTransactions();\n };\n FullStore.prototype.createOrRecycleNodes = function (nodesToRecycle, rowData) {\n var _this = this;\n if (!rowData) {\n return;\n }\n var lookupNodeToRecycle = function (data) {\n if (!nodesToRecycle) {\n return undefined;\n }\n var getRowIdFunc = _this.gridOptionsWrapper.getRowIdFunc();\n if (!getRowIdFunc) {\n return undefined;\n }\n var parentKeys = _this.parentRowNode.getGroupKeys();\n var level = _this.level;\n var id = getRowIdFunc({\n data: data,\n parentKeys: parentKeys.length > 0 ? parentKeys : undefined,\n level: level\n });\n var foundNode = nodesToRecycle[id];\n if (!foundNode) {\n return undefined;\n }\n delete nodesToRecycle[id];\n return foundNode;\n };\n var recycleNode = function (rowNode, dataItem) {\n _this.allNodesMap[rowNode.id] = rowNode;\n _this.blockUtils.updateDataIntoRowNode(rowNode, dataItem);\n _this.allRowNodes.push(rowNode);\n };\n rowData.forEach(function (dataItem) {\n var nodeToRecycle = lookupNodeToRecycle(dataItem);\n if (nodeToRecycle) {\n recycleNode(nodeToRecycle, dataItem);\n } else {\n _this.createDataNode(dataItem);\n }\n });\n };\n FullStore.prototype.flushAsyncTransactions = function () {\n var _this = this;\n // we want to update the store with any outstanding transactions straight away,\n // as otherwise if waitTimeMillis is large (eg 5s), then the user could be looking\n // at old data for a few seconds before the transactions is applied, which isn't what\n // you would expect when we advertise 'transaction is applied when data is loaded'.\n // we do this in a timeout as flushAsyncTransactions expects the grid to be in a settled\n // state, not in the middle of loading rows! keeps the VM Turns more simple and deterministic.\n window.setTimeout(function () {\n return _this.transactionManager.flushAsyncTransactions();\n }, 0);\n };\n FullStore.prototype.filterAndSortNodes = function () {\n this.filterRowNodes();\n this.sortRowNodes();\n };\n FullStore.prototype.sortRowNodes = function () {\n var serverIsSorting = this.gridOptionsWrapper.isServerSideSortAllLevels() || this.gridOptionsWrapper.isServerSideSortOnServer();\n var sortOptions = this.sortController.getSortOptions();\n var noSortApplied = !sortOptions || sortOptions.length == 0;\n if (serverIsSorting || noSortApplied) {\n this.nodesAfterSort = this.nodesAfterFilter;\n return;\n }\n this.nodesAfterSort = this.rowNodeSorter.doFullSort(this.nodesAfterFilter, sortOptions);\n };\n FullStore.prototype.filterRowNodes = function () {\n var _this = this;\n var serverIsFiltering = this.gridOptionsWrapper.isServerSideFilterAllLevels() || this.gridOptionsWrapper.isServerSideFilterOnServer();\n // filtering for InFullStore only works at lowest level details.\n // reason is the logic for group filtering was to difficult to work out how it should work at time of writing.\n var groupLevel = this.groupLevel;\n if (serverIsFiltering || groupLevel) {\n this.nodesAfterFilter = this.allRowNodes;\n return;\n }\n this.nodesAfterFilter = this.allRowNodes.filter(function (rowNode) {\n return _this.filterManager.doesRowPassFilter({\n rowNode: rowNode\n });\n });\n };\n FullStore.prototype.clearDisplayIndexes = function () {\n var _this = this;\n this.displayIndexStart = undefined;\n this.displayIndexEnd = undefined;\n this.allRowNodes.forEach(function (rowNode) {\n return _this.blockUtils.clearDisplayIndex(rowNode);\n });\n };\n FullStore.prototype.getDisplayIndexEnd = function () {\n return this.displayIndexEnd;\n };\n FullStore.prototype.isDisplayIndexInStore = function (displayIndex) {\n if (this.getRowCount() === 0) {\n return false;\n }\n return displayIndex >= this.displayIndexStart && displayIndex < this.displayIndexEnd;\n };\n FullStore.prototype.setDisplayIndexes = function (displayIndexSeq, nextRowTop) {\n var _this = this;\n this.displayIndexStart = displayIndexSeq.peek();\n this.topPx = nextRowTop.value;\n var visibleNodeIds = {};\n // set on all visible nodes\n this.nodesAfterSort.forEach(function (rowNode) {\n _this.blockUtils.setDisplayIndex(rowNode, displayIndexSeq, nextRowTop);\n visibleNodeIds[rowNode.id] = true;\n });\n // and clear on all non-visible nodes\n this.allRowNodes.forEach(function (rowNode) {\n if (!visibleNodeIds[rowNode.id]) {\n _this.blockUtils.clearDisplayIndex(rowNode);\n }\n });\n this.displayIndexEnd = displayIndexSeq.peek();\n this.heightPx = nextRowTop.value - this.topPx;\n };\n FullStore.prototype.forEachNodeDeep = function (callback, sequence) {\n if (sequence === void 0) {\n sequence = new NumberSequence();\n }\n this.allRowNodes.forEach(function (rowNode) {\n callback(rowNode, sequence.next());\n var childCache = rowNode.childStore;\n if (childCache) {\n childCache.forEachNodeDeep(callback, sequence);\n }\n });\n };\n FullStore.prototype.forEachNodeDeepAfterFilterAndSort = function (callback, sequence) {\n if (sequence === void 0) {\n sequence = new NumberSequence();\n }\n this.nodesAfterSort.forEach(function (rowNode) {\n callback(rowNode, sequence.next());\n var childCache = rowNode.childStore;\n if (childCache) {\n childCache.forEachNodeDeepAfterFilterAndSort(callback, sequence);\n }\n });\n };\n FullStore.prototype.getRowUsingDisplayIndex = function (displayRowIndex) {\n // this can happen if asking for a row that doesn't exist in the model,\n // eg if a cell range is selected, and the user filters so rows no longer exists\n if (!this.isDisplayIndexInStore(displayRowIndex)) {\n return undefined;\n }\n var res = this.blockUtils.binarySearchForDisplayIndex(displayRowIndex, this.nodesAfterSort);\n return res;\n };\n FullStore.prototype.getRowBounds = function (index) {\n for (var i = 0; i < this.nodesAfterSort.length; i++) {\n var rowNode = this.nodesAfterSort[i];\n var res = this.blockUtils.extractRowBounds(rowNode, index);\n if (res) {\n return res;\n }\n }\n return null;\n };\n FullStore.prototype.isPixelInRange = function (pixel) {\n return pixel >= this.topPx && pixel < this.topPx + this.heightPx;\n };\n FullStore.prototype.getRowIndexAtPixel = function (pixel) {\n var _this = this;\n // if pixel before block, return first row\n var pixelBeforeThisStore = pixel <= this.topPx;\n if (pixelBeforeThisStore) {\n var firstNode = this.nodesAfterSort[0];\n return firstNode.rowIndex;\n }\n // if pixel after store, return last row, however the last\n // row could be a child store\n var pixelAfterThisStore = pixel >= this.topPx + this.heightPx;\n if (pixelAfterThisStore) {\n var lastRowNode = this.nodesAfterSort[this.nodesAfterSort.length - 1];\n var lastRowNodeBottomPx = lastRowNode.rowTop + lastRowNode.rowHeight;\n if (pixel >= lastRowNodeBottomPx && lastRowNode.expanded) {\n if (lastRowNode.childStore && lastRowNode.childStore.getRowCount() > 0) {\n return lastRowNode.childStore.getRowIndexAtPixel(pixel);\n }\n if (lastRowNode.detailNode) {\n return lastRowNode.detailNode.rowIndex;\n }\n }\n return lastRowNode.rowIndex;\n }\n var res = null;\n this.nodesAfterSort.forEach(function (rowNode) {\n var res2 = _this.blockUtils.getIndexAtPixel(rowNode, pixel);\n if (res2 != null) {\n res = res2;\n }\n });\n var pixelIsPastLastRow = res == null;\n if (pixelIsPastLastRow) {\n return this.displayIndexEnd - 1;\n }\n return res;\n };\n FullStore.prototype.getChildStore = function (keys) {\n var _this = this;\n return this.storeUtils.getChildStore(keys, this, function (key) {\n var rowNode = _this.allRowNodes.find(function (currentRowNode) {\n return currentRowNode.key == key;\n });\n return rowNode;\n });\n };\n FullStore.prototype.forEachChildStoreShallow = function (callback) {\n this.allRowNodes.forEach(function (rowNode) {\n var childStore = rowNode.childStore;\n if (childStore) {\n callback(childStore);\n }\n });\n };\n FullStore.prototype.refreshAfterFilter = function (params) {\n var serverIsFiltering = this.gridOptionsWrapper.isServerSideFilterOnServer();\n var storeIsImpacted = this.storeUtils.isServerRefreshNeeded(this.parentRowNode, this.ssrmParams.rowGroupCols, params);\n var serverIsFilteringAllLevels = this.gridOptionsWrapper.isServerSideFilterAllLevels();\n if (serverIsFilteringAllLevels || serverIsFiltering && storeIsImpacted) {\n this.refreshStore(true);\n this.sortRowNodes();\n return;\n }\n this.filterRowNodes();\n this.sortRowNodes();\n this.forEachChildStoreShallow(function (store) {\n return store.refreshAfterFilter(params);\n });\n };\n FullStore.prototype.refreshAfterSort = function (params) {\n var serverIsSorting = this.gridOptionsWrapper.isServerSideSortOnServer();\n var storeIsImpacted = this.storeUtils.isServerRefreshNeeded(this.parentRowNode, this.ssrmParams.rowGroupCols, params);\n var serverIsSortingAllLevels = this.gridOptionsWrapper.isServerSideSortAllLevels();\n if (serverIsSortingAllLevels || serverIsSorting && storeIsImpacted) {\n this.refreshStore(true);\n this.filterRowNodes();\n return;\n }\n this.filterRowNodes();\n this.sortRowNodes();\n this.forEachChildStoreShallow(function (store) {\n return store.refreshAfterSort(params);\n });\n };\n FullStore.prototype.applyTransaction = function (transaction) {\n // we only apply transactions to loaded state\n switch (this.getState()) {\n case RowNodeBlock.STATE_FAILED:\n return {\n status: ServerSideTransactionResultStatus.StoreLoadingFailed\n };\n case RowNodeBlock.STATE_LOADING:\n return {\n status: ServerSideTransactionResultStatus.StoreLoading\n };\n case RowNodeBlock.STATE_WAITING_TO_LOAD:\n return {\n status: ServerSideTransactionResultStatus.StoreWaitingToLoad\n };\n }\n var applyCallback = this.gridOptionsWrapper.getIsApplyServerSideTransactionFunc();\n if (applyCallback) {\n var params = {\n transaction: transaction,\n parentNode: this.parentRowNode,\n storeInfo: this.info,\n groupLevelInfo: this.info\n };\n var apply = applyCallback(params);\n if (!apply) {\n return {\n status: ServerSideTransactionResultStatus.Cancelled\n };\n }\n }\n var res = {\n status: ServerSideTransactionResultStatus.Applied,\n remove: [],\n update: [],\n add: []\n };\n var nodesToUnselect = [];\n this.executeAdd(transaction, res);\n this.executeRemove(transaction, res, nodesToUnselect);\n this.executeUpdate(transaction, res, nodesToUnselect);\n this.filterAndSortNodes();\n this.updateSelection(nodesToUnselect);\n return res;\n };\n FullStore.prototype.updateSelection = function (nodesToUnselect) {\n var selectionChanged = nodesToUnselect.length > 0;\n if (selectionChanged) {\n nodesToUnselect.forEach(function (rowNode) {\n rowNode.setSelected(false, false, true);\n });\n var event_1 = {\n type: Events.EVENT_SELECTION_CHANGED\n };\n this.eventService.dispatchEvent(event_1);\n }\n };\n FullStore.prototype.executeAdd = function (rowDataTran, rowNodeTransaction) {\n var _this = this;\n var add = rowDataTran.add,\n addIndex = rowDataTran.addIndex;\n if (_.missingOrEmpty(add)) {\n return;\n }\n var useIndex = typeof addIndex === 'number' && addIndex >= 0;\n if (useIndex) {\n // items get inserted in reverse order for index insertion\n add.reverse().forEach(function (item) {\n var newRowNode = _this.createDataNode(item, addIndex);\n rowNodeTransaction.add.push(newRowNode);\n });\n } else {\n add.forEach(function (item) {\n var newRowNode = _this.createDataNode(item);\n rowNodeTransaction.add.push(newRowNode);\n });\n }\n };\n FullStore.prototype.executeRemove = function (rowDataTran, rowNodeTransaction, nodesToUnselect) {\n var _this = this;\n var remove = rowDataTran.remove;\n if (remove == null) {\n return;\n }\n var rowIdsRemoved = {};\n remove.forEach(function (item) {\n var rowNode = _this.lookupRowNode(item);\n if (!rowNode) {\n return;\n }\n // do delete - setting 'suppressFinishActions = true' to ensure EVENT_SELECTION_CHANGED is not raised for\n // each row node updated, instead it is raised once by the calling code if any selected nodes exist.\n if (rowNode.isSelected()) {\n nodesToUnselect.push(rowNode);\n }\n // so row renderer knows to fade row out (and not reposition it)\n rowNode.clearRowTopAndRowIndex();\n // NOTE: were we could remove from allLeaveChildren, however _.removeFromArray() is expensive, especially\n // if called multiple times (eg deleting lots of rows) and if allLeafChildren is a large list\n rowIdsRemoved[rowNode.id] = true;\n // _.removeFromArray(this.rootNode.allLeafChildren, rowNode);\n delete _this.allNodesMap[rowNode.id];\n rowNodeTransaction.remove.push(rowNode);\n _this.nodeManager.removeNode(rowNode);\n });\n this.allRowNodes = this.allRowNodes.filter(function (rowNode) {\n return !rowIdsRemoved[rowNode.id];\n });\n };\n FullStore.prototype.executeUpdate = function (rowDataTran, rowNodeTransaction, nodesToUnselect) {\n var _this = this;\n var update = rowDataTran.update;\n if (update == null) {\n return;\n }\n update.forEach(function (item) {\n var rowNode = _this.lookupRowNode(item);\n if (!rowNode) {\n return;\n }\n rowNode.updateData(item);\n if (!rowNode.selectable && rowNode.isSelected()) {\n nodesToUnselect.push(rowNode);\n }\n rowNodeTransaction.update.push(rowNode);\n });\n };\n FullStore.prototype.lookupRowNode = function (data) {\n var getRowIdFunc = this.gridOptionsWrapper.getRowIdFunc();\n var rowNode;\n if (getRowIdFunc != null) {\n // find rowNode using id\n var level = this.level;\n var parentKeys = this.parentRowNode.getGroupKeys();\n var id = getRowIdFunc({\n data: data,\n parentKeys: parentKeys.length > 0 ? parentKeys : undefined,\n level: level\n });\n rowNode = this.allNodesMap[id];\n if (!rowNode) {\n console.error(\"AG Grid: could not find row id=\" + id + \", data item was not found for this id\");\n return null;\n }\n } else {\n // find rowNode using object references\n rowNode = this.allRowNodes.find(function (currentRowNode) {\n return currentRowNode.data === data;\n });\n if (!rowNode) {\n console.error(\"AG Grid: could not find data item as object was not found\", data);\n return null;\n }\n }\n return rowNode;\n };\n FullStore.prototype.addStoreStates = function (result) {\n result.push({\n infiniteScroll: false,\n route: this.parentRowNode.getGroupKeys(),\n rowCount: this.allRowNodes.length,\n info: this.info\n });\n this.forEachChildStoreShallow(function (childStore) {\n return childStore.addStoreStates(result);\n });\n };\n FullStore.prototype.refreshStore = function (purge) {\n if (purge) {\n var loadingRowsToShow = this.nodesAfterSort ? this.nodesAfterSort.length : 1;\n this.initialiseRowNodes(loadingRowsToShow);\n }\n this.scheduleLoad();\n this.fireStoreUpdatedEvent();\n };\n FullStore.prototype.retryLoads = function () {\n if (this.getState() === RowNodeBlock.STATE_FAILED) {\n this.initialiseRowNodes(1);\n this.scheduleLoad();\n }\n this.forEachChildStoreShallow(function (store) {\n return store.retryLoads();\n });\n };\n FullStore.prototype.scheduleLoad = function () {\n this.setStateWaitingToLoad();\n this.rowNodeBlockLoader.checkBlockToLoad();\n };\n // gets called 1) row count changed 2) cache purged 3) items inserted\n FullStore.prototype.fireStoreUpdatedEvent = function () {\n // this results in row model firing ModelUpdated.\n // server side row model also updates the row indexes first\n var event = {\n type: Events.EVENT_STORE_UPDATED\n };\n this.eventService.dispatchEvent(event);\n };\n FullStore.prototype.getRowCount = function () {\n return this.nodesAfterSort.length;\n };\n FullStore.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {\n var rowNode = this.nodesAfterSort[topLevelIndex];\n return rowNode.rowIndex;\n };\n FullStore.prototype.isLastRowIndexKnown = function () {\n return this.getState() == RowNodeBlock.STATE_LOADED;\n };\n FullStore.prototype.getRowNodesInRange = function (firstInRange, lastInRange) {\n var result = [];\n var inActiveRange = false;\n // if only one node passed, we start the selection at the top\n if (_.missing(firstInRange)) {\n inActiveRange = true;\n }\n this.nodesAfterSort.forEach(function (rowNode) {\n var hitFirstOrLast = rowNode === firstInRange || rowNode === lastInRange;\n if (inActiveRange || hitFirstOrLast) {\n result.push(rowNode);\n }\n if (hitFirstOrLast) {\n inActiveRange = !inActiveRange;\n }\n });\n // inActiveRange will be still true if we never hit the second rowNode\n var invalidRange = inActiveRange;\n return invalidRange ? [] : result;\n };\n __decorate$h([Autowired('ssrmStoreUtils')], FullStore.prototype, \"storeUtils\", void 0);\n __decorate$h([Autowired('ssrmBlockUtils')], FullStore.prototype, \"blockUtils\", void 0);\n __decorate$h([Autowired('columnModel')], FullStore.prototype, \"columnModel\", void 0);\n __decorate$h([Autowired('rowNodeBlockLoader')], FullStore.prototype, \"rowNodeBlockLoader\", void 0);\n __decorate$h([Autowired('rowNodeSorter')], FullStore.prototype, \"rowNodeSorter\", void 0);\n __decorate$h([Autowired('sortController')], FullStore.prototype, \"sortController\", void 0);\n __decorate$h([Autowired('ssrmNodeManager')], FullStore.prototype, \"nodeManager\", void 0);\n __decorate$h([Autowired('filterManager')], FullStore.prototype, \"filterManager\", void 0);\n __decorate$h([Autowired('ssrmTransactionManager')], FullStore.prototype, \"transactionManager\", void 0);\n __decorate$h([PostConstruct], FullStore.prototype, \"postConstruct\", null);\n __decorate$h([PreDestroy], FullStore.prototype, \"destroyRowNodes\", null);\n return FullStore;\n}(RowNodeBlock);\nvar __decorate$g = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar StoreFactory = /** @class */function () {\n function StoreFactory() {}\n StoreFactory.prototype.createStore = function (ssrmParams, parentNode) {\n var storeParams = this.getStoreParams(ssrmParams, parentNode);\n var CacheClass = storeParams.infiniteScroll ? InfiniteStore : FullStore;\n return new CacheClass(ssrmParams, storeParams, parentNode);\n };\n StoreFactory.prototype.getStoreParams = function (ssrmParams, parentNode) {\n var userStoreParams = this.getLevelSpecificParams(parentNode);\n // if user provided overrideParams, we take infiniteScroll from there if it exists\n var infiniteScroll = this.isInfiniteScroll(userStoreParams);\n var cacheBlockSize = this.getBlockSize(infiniteScroll, userStoreParams);\n var maxBlocksInCache = this.getMaxBlocksInCache(infiniteScroll, ssrmParams, userStoreParams);\n var storeParams = {\n infiniteScroll: infiniteScroll,\n cacheBlockSize: cacheBlockSize,\n maxBlocksInCache: maxBlocksInCache\n };\n return storeParams;\n };\n StoreFactory.prototype.getMaxBlocksInCache = function (infiniteScroll, ssrmParams, userStoreParams) {\n if (!infiniteScroll) {\n return undefined;\n }\n var maxBlocksInCache = userStoreParams && userStoreParams.maxBlocksInCache != null ? userStoreParams.maxBlocksInCache : this.gridOptionsWrapper.getMaxBlocksInCache();\n var maxBlocksActive = maxBlocksInCache != null && maxBlocksInCache >= 0;\n if (!maxBlocksActive) {\n return undefined;\n }\n if (ssrmParams.dynamicRowHeight) {\n var message_1 = 'AG Grid: Server Side Row Model does not support Dynamic Row Height and Cache Purging. ' + 'Either a) remove getRowHeight() callback or b) remove maxBlocksInCache property. Purging has been disabled.';\n _.doOnce(function () {\n return console.warn(message_1);\n }, 'storeFactory.maxBlocksInCache.dynamicRowHeight');\n return undefined;\n }\n if (this.columnModel.isAutoRowHeightActive()) {\n var message_2 = 'AG Grid: Server Side Row Model does not support Auto Row Height and Cache Purging. ' + 'Either a) remove colDef.autoHeight or b) remove maxBlocksInCache property. Purging has been disabled.';\n _.doOnce(function () {\n return console.warn(message_2);\n }, 'storeFactory.maxBlocksInCache.autoRowHeightActive');\n return undefined;\n }\n return maxBlocksInCache;\n };\n StoreFactory.prototype.getBlockSize = function (infiniteScroll, userStoreParams) {\n if (!infiniteScroll) {\n return undefined;\n }\n var blockSize = userStoreParams && userStoreParams.cacheBlockSize != null ? userStoreParams.cacheBlockSize : this.gridOptionsWrapper.getCacheBlockSize();\n if (blockSize != null && blockSize > 0) {\n return blockSize;\n } else {\n return 100;\n }\n };\n StoreFactory.prototype.getLevelSpecificParams = function (parentNode) {\n var callback = this.gridOptionsWrapper.getServerSideGroupLevelParamsFunc();\n if (!callback) {\n return undefined;\n }\n var params = {\n level: parentNode.level + 1,\n parentRowNode: parentNode.level >= 0 ? parentNode : undefined,\n rowGroupColumns: this.columnModel.getRowGroupColumns(),\n pivotColumns: this.columnModel.getPivotColumns(),\n pivotMode: this.columnModel.isPivotMode()\n };\n var res = callback(params);\n if (res.storeType != null) {\n res.infiniteScroll = res.storeType === \"partial\";\n }\n return res;\n };\n StoreFactory.prototype.isInfiniteScroll = function (storeParams) {\n var res = storeParams && storeParams.infiniteScroll != null ? storeParams.infiniteScroll : this.gridOptionsWrapper.isServerSideInfiniteScroll();\n return res;\n };\n __decorate$g([Autowired('gridOptionsWrapper')], StoreFactory.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$g([Autowired('columnModel')], StoreFactory.prototype, \"columnModel\", void 0);\n StoreFactory = __decorate$g([Bean('ssrmStoreFactory')], StoreFactory);\n return StoreFactory;\n}();\nvar __decorate$f = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar ListenerUtils = /** @class */function () {\n function ListenerUtils() {}\n ListenerUtils.prototype.isSortingWithValueColumn = function (changedColumnsInSort) {\n var valueColIds = this.columnModel.getValueColumns().map(function (col) {\n return col.getColId();\n });\n for (var i = 0; i < changedColumnsInSort.length; i++) {\n if (valueColIds.indexOf(changedColumnsInSort[i]) > -1) {\n return true;\n }\n }\n return false;\n };\n ListenerUtils.prototype.isSortingWithSecondaryColumn = function (changedColumnsInSort) {\n if (!this.columnModel.getSecondaryColumns()) {\n return false;\n }\n var secondaryColIds = this.columnModel.getSecondaryColumns().map(function (col) {\n return col.getColId();\n });\n for (var i = 0; i < changedColumnsInSort.length; i++) {\n if (secondaryColIds.indexOf(changedColumnsInSort[i]) > -1) {\n return true;\n }\n }\n return false;\n };\n __decorate$f([Autowired('columnModel')], ListenerUtils.prototype, \"columnModel\", void 0);\n ListenerUtils = __decorate$f([Bean('ssrmListenerUtils')], ListenerUtils);\n return ListenerUtils;\n}();\nvar ServerSideRowModelModule = {\n moduleName: ModuleNames.ServerSideRowModelModule,\n rowModels: {\n serverSide: ServerSideRowModel\n },\n beans: [ExpandListener, SortListener, StoreUtils, BlockUtils, NodeManager, TransactionManager, FilterListener, StoreFactory, ListenerUtils],\n dependantModules: [EnterpriseCoreModule]\n};\nvar NULL_SUBSTITUTE$1 = '____';\nvar ClientSideValuesExtractor = /** @class */function () {\n function ClientSideValuesExtractor(rowModel, filterParams, caseFormat) {\n this.rowModel = rowModel;\n this.filterParams = filterParams;\n this.caseFormat = caseFormat;\n }\n ClientSideValuesExtractor.prototype.extractUniqueValues = function (predicate) {\n var _this = this;\n var values = {};\n var keyCreator = this.filterParams.colDef.keyCreator;\n var addValue = function (value) {\n // NOTE: We don't care about the keys later on (only values in the dictionary are\n // returned), so as long as we use a non-conflicting key for the `null` value this\n // will behave correctly.\n var valueKey = value != null ? _this.caseFormat(value) : NULL_SUBSTITUTE$1;\n if (valueKey && values[valueKey] == null) {\n values[valueKey] = value;\n }\n };\n this.rowModel.forEachLeafNode(function (node) {\n // only pull values from rows that have data. this means we skip filler group nodes.\n if (!node.data || !predicate(node)) {\n return;\n }\n var _a = _this.filterParams,\n api = _a.api,\n colDef = _a.colDef,\n column = _a.column,\n columnApi = _a.columnApi,\n context = _a.context;\n var value = _this.filterParams.valueGetter({\n api: api,\n colDef: colDef,\n column: column,\n columnApi: columnApi,\n context: context,\n data: node.data,\n getValue: function (field) {\n return node.data[field];\n },\n node: node\n });\n if (keyCreator) {\n var params = {\n value: value,\n colDef: _this.filterParams.colDef,\n column: _this.filterParams.column,\n node: node,\n data: node.data,\n api: _this.filterParams.api,\n columnApi: _this.filterParams.columnApi,\n context: _this.filterParams.context\n };\n value = keyCreator(params);\n }\n value = _.makeNull(value);\n if (value != null && Array.isArray(value)) {\n value.forEach(function (x) {\n var formatted = _.toStringOrNull(_.makeNull(x));\n addValue(formatted);\n });\n } else {\n addValue(_.toStringOrNull(value));\n }\n });\n return _.values(values);\n };\n return ClientSideValuesExtractor;\n}();\nvar SetFilterModelValuesType = /*#__PURE__*/function (SetFilterModelValuesType) {\n SetFilterModelValuesType[SetFilterModelValuesType[\"PROVIDED_LIST\"] = 0] = \"PROVIDED_LIST\";\n SetFilterModelValuesType[SetFilterModelValuesType[\"PROVIDED_CALLBACK\"] = 1] = \"PROVIDED_CALLBACK\";\n SetFilterModelValuesType[SetFilterModelValuesType[\"TAKEN_FROM_GRID_VALUES\"] = 2] = \"TAKEN_FROM_GRID_VALUES\";\n return SetFilterModelValuesType;\n}(SetFilterModelValuesType || {});\nvar NULL_SUBSTITUTE = '____';\nvar SetValueModel = /** @class */function () {\n function SetValueModel(filterParams, setIsLoading, valueFormatterService, translate, caseFormat) {\n var _this = this;\n this.filterParams = filterParams;\n this.setIsLoading = setIsLoading;\n this.valueFormatterService = valueFormatterService;\n this.translate = translate;\n this.caseFormat = caseFormat;\n this.localEventService = new EventService();\n this.miniFilterText = null;\n // The lookup for a set is much faster than the lookup for an array, especially when the length of the array is\n // thousands of records long, so where lookups are important we use a set.\n /** Values provided to the filter for use. */\n this.providedValues = null;\n /** All possible values for the filter, sorted if required. */\n this.allValues = [];\n /** Remaining values when filters from other columns have been applied. */\n this.availableValues = new Set();\n /** All values that are currently displayed, after the mini-filter has been applied. */\n this.displayedValues = [];\n /** Values that have been selected for this filter. */\n this.selectedValues = new Set();\n this.initialised = false;\n var column = filterParams.column,\n colDef = filterParams.colDef,\n textFormatter = filterParams.textFormatter,\n doesRowPassOtherFilter = filterParams.doesRowPassOtherFilter,\n suppressSorting = filterParams.suppressSorting,\n comparator = filterParams.comparator,\n rowModel = filterParams.rowModel,\n values = filterParams.values;\n filterParams.caseSensitive;\n this.column = column;\n this.formatter = textFormatter || TextFilter.DEFAULT_FORMATTER;\n this.doesRowPassOtherFilters = doesRowPassOtherFilter;\n this.suppressSorting = suppressSorting || false;\n this.comparator = comparator || colDef.comparator || _.defaultComparator;\n if (rowModel.getType() === Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n this.clientSideValuesExtractor = new ClientSideValuesExtractor(rowModel, this.filterParams, this.caseFormat);\n }\n if (values == null) {\n this.valuesType = SetFilterModelValuesType.TAKEN_FROM_GRID_VALUES;\n } else {\n this.valuesType = Array.isArray(values) ? SetFilterModelValuesType.PROVIDED_LIST : SetFilterModelValuesType.PROVIDED_CALLBACK;\n this.providedValues = values;\n }\n this.updateAllValues().then(function (updatedValues) {\n return _this.resetSelectionState(updatedValues || []);\n });\n }\n SetValueModel.prototype.addEventListener = function (eventType, listener, async) {\n this.localEventService.addEventListener(eventType, listener, async);\n };\n SetValueModel.prototype.removeEventListener = function (eventType, listener, async) {\n this.localEventService.removeEventListener(eventType, listener, async);\n };\n /**\n * Re-fetches the values used in the filter from the value source.\n * If keepSelection is false, the filter selection will be reset to everything selected,\n * otherwise the current selection will be preserved.\n */\n SetValueModel.prototype.refreshValues = function () {\n var currentModel = this.getModel();\n this.updateAllValues();\n // ensure model is updated for new values\n return this.setModel(currentModel);\n };\n /**\n * Overrides the current values being used for the set filter.\n * If keepSelection is false, the filter selection will be reset to everything selected,\n * otherwise the current selection will be preserved.\n */\n SetValueModel.prototype.overrideValues = function (valuesToUse) {\n var _this = this;\n return new AgPromise(function (resolve) {\n // wait for any existing values to be populated before overriding\n _this.allValuesPromise.then(function () {\n _this.valuesType = SetFilterModelValuesType.PROVIDED_LIST;\n _this.providedValues = valuesToUse;\n _this.refreshValues().then(function () {\n return resolve();\n });\n });\n });\n };\n SetValueModel.prototype.refreshAfterAnyFilterChanged = function () {\n var _this = this;\n return this.showAvailableOnly() ? this.allValuesPromise.then(function (values) {\n return _this.updateAvailableValues(values || []);\n }) : AgPromise.resolve();\n };\n SetValueModel.prototype.isInitialised = function () {\n return this.initialised;\n };\n SetValueModel.prototype.updateAllValues = function () {\n var _this = this;\n this.allValuesPromise = new AgPromise(function (resolve) {\n switch (_this.valuesType) {\n case SetFilterModelValuesType.TAKEN_FROM_GRID_VALUES:\n case SetFilterModelValuesType.PROVIDED_LIST:\n {\n var values = _this.valuesType === SetFilterModelValuesType.TAKEN_FROM_GRID_VALUES ? _this.getValuesFromRows(false) : _this.uniqueUnsortedStringArray(_this.providedValues);\n var sortedValues = _this.sortValues(values || []);\n _this.allValues = sortedValues;\n resolve(sortedValues);\n break;\n }\n case SetFilterModelValuesType.PROVIDED_CALLBACK:\n {\n _this.setIsLoading(true);\n var callback_1 = _this.providedValues;\n var _a = _this.filterParams,\n columnApi = _a.columnApi,\n api = _a.api,\n context = _a.context,\n column = _a.column,\n colDef = _a.colDef;\n var params_1 = {\n success: function (values) {\n var processedValues = _this.uniqueUnsortedStringArray(values || []);\n _this.setIsLoading(false);\n var sortedValues = _this.sortValues(processedValues || []);\n _this.allValues = sortedValues;\n resolve(sortedValues);\n },\n colDef: colDef,\n column: column,\n columnApi: columnApi,\n api: api,\n context: context\n };\n window.setTimeout(function () {\n return callback_1(params_1);\n }, 0);\n break;\n }\n default:\n throw new Error('Unrecognised valuesType');\n }\n });\n this.allValuesPromise.then(function (values) {\n return _this.updateAvailableValues(values || []);\n }).then(function () {\n return _this.initialised = true;\n });\n return this.allValuesPromise;\n };\n SetValueModel.prototype.setValuesType = function (value) {\n this.valuesType = value;\n };\n SetValueModel.prototype.getValuesType = function () {\n return this.valuesType;\n };\n SetValueModel.prototype.isValueAvailable = function (value) {\n return this.availableValues.has(value);\n };\n SetValueModel.prototype.showAvailableOnly = function () {\n return this.valuesType === SetFilterModelValuesType.TAKEN_FROM_GRID_VALUES;\n };\n SetValueModel.prototype.updateAvailableValues = function (allValues) {\n var availableValues = this.showAvailableOnly() ? this.sortValues(this.getValuesFromRows(true)) : allValues;\n this.availableValues = _.convertToSet(availableValues);\n this.localEventService.dispatchEvent({\n type: SetValueModel.EVENT_AVAILABLE_VALUES_CHANGED\n });\n this.updateDisplayedValues();\n };\n SetValueModel.prototype.sortValues = function (values) {\n if (this.suppressSorting) {\n return values;\n }\n if (!this.filterParams.excelMode || values.indexOf(null) < 0) {\n return values.sort(this.comparator);\n }\n // ensure the blank value always appears last\n return values.filter(function (v) {\n return v != null;\n }).sort(this.comparator).concat(null);\n };\n SetValueModel.prototype.getValuesFromRows = function (removeUnavailableValues) {\n var _this = this;\n if (removeUnavailableValues === void 0) {\n removeUnavailableValues = false;\n }\n if (!this.clientSideValuesExtractor) {\n console.error('AG Grid: Set Filter cannot initialise because you are using a row model that does not contain all rows in the browser. Either use a different filter type, or configure Set Filter such that you provide it with values');\n return [];\n }\n var predicate = function (node) {\n return !removeUnavailableValues || _this.doesRowPassOtherFilters(node);\n };\n return this.clientSideValuesExtractor.extractUniqueValues(predicate);\n };\n /** Sets mini filter value. Returns true if it changed from last value, otherwise false. */\n SetValueModel.prototype.setMiniFilter = function (value) {\n value = _.makeNull(value);\n if (this.miniFilterText === value) {\n //do nothing if filter has not changed\n return false;\n }\n this.miniFilterText = value;\n this.updateDisplayedValues();\n return true;\n };\n SetValueModel.prototype.getMiniFilter = function () {\n return this.miniFilterText;\n };\n SetValueModel.prototype.updateDisplayedValues = function () {\n var _this = this;\n // if no filter, just display all available values\n if (this.miniFilterText == null) {\n this.displayedValues = _.values(this.availableValues);\n return;\n }\n // if filter present, we filter down the list\n this.displayedValues = [];\n // to allow for case insensitive searches, upper-case both filter text and value\n var formattedFilterText = this.caseFormat(this.formatter(this.miniFilterText) || '');\n var matchesFilter = function (valueToCheck) {\n return valueToCheck != null && _this.caseFormat(valueToCheck).indexOf(formattedFilterText) >= 0;\n };\n this.availableValues.forEach(function (value) {\n if (value == null) {\n if (_this.filterParams.excelMode && matchesFilter(_this.translate('blanks'))) {\n _this.displayedValues.push(value);\n }\n } else {\n var textFormatterValue = _this.formatter(value);\n // TODO: should this be applying the text formatter *after* the value formatter?\n var valueFormatterValue = _this.valueFormatterService.formatValue(_this.column, null, textFormatterValue, _this.filterParams.valueFormatter, false);\n if (matchesFilter(textFormatterValue) || matchesFilter(valueFormatterValue)) {\n _this.displayedValues.push(value);\n }\n }\n });\n };\n SetValueModel.prototype.getDisplayedValueCount = function () {\n return this.displayedValues.length;\n };\n SetValueModel.prototype.getDisplayedValue = function (index) {\n return this.displayedValues[index];\n };\n SetValueModel.prototype.hasSelections = function () {\n return this.filterParams.defaultToNothingSelected ? this.selectedValues.size > 0 : this.allValues.length !== this.selectedValues.size;\n };\n SetValueModel.prototype.getValues = function () {\n return this.allValues.slice();\n };\n SetValueModel.prototype.selectAllMatchingMiniFilter = function (clearExistingSelection) {\n var _this = this;\n if (clearExistingSelection === void 0) {\n clearExistingSelection = false;\n }\n if (this.miniFilterText == null) {\n // ensure everything is selected\n this.selectedValues = _.convertToSet(this.allValues);\n } else {\n // ensure everything that matches the mini filter is selected\n if (clearExistingSelection) {\n this.selectedValues.clear();\n }\n this.displayedValues.forEach(function (value) {\n return _this.selectedValues.add(value);\n });\n }\n };\n SetValueModel.prototype.deselectAllMatchingMiniFilter = function () {\n var _this = this;\n if (this.miniFilterText == null) {\n // ensure everything is deselected\n this.selectedValues.clear();\n } else {\n // ensure everything that matches the mini filter is deselected\n this.displayedValues.forEach(function (value) {\n return _this.selectedValues.delete(value);\n });\n }\n };\n SetValueModel.prototype.selectValue = function (value) {\n this.selectedValues.add(value);\n };\n SetValueModel.prototype.deselectValue = function (value) {\n if (this.filterParams.excelMode && this.isEverythingVisibleSelected()) {\n // ensure we're starting from the correct \"everything selected\" state\n this.resetSelectionState(this.displayedValues);\n }\n this.selectedValues.delete(value);\n };\n SetValueModel.prototype.isValueSelected = function (value) {\n return this.selectedValues.has(value);\n };\n SetValueModel.prototype.isEverythingVisibleSelected = function () {\n var _this = this;\n return this.displayedValues.filter(function (it) {\n return _this.isValueSelected(it);\n }).length === this.displayedValues.length;\n };\n SetValueModel.prototype.isNothingVisibleSelected = function () {\n var _this = this;\n return this.displayedValues.filter(function (it) {\n return _this.isValueSelected(it);\n }).length === 0;\n };\n SetValueModel.prototype.getModel = function () {\n return this.hasSelections() ? _.values(this.selectedValues) : null;\n };\n SetValueModel.prototype.setModel = function (model) {\n var _this = this;\n return this.allValuesPromise.then(function (values) {\n if (model == null) {\n _this.resetSelectionState(values || []);\n } else {\n // select all values from the model that exist in the filter\n _this.selectedValues.clear();\n var allValues_1 = _this.uniqueValues(values || []);\n model.forEach(function (value) {\n var allValue = allValues_1[_this.uniqueKey(value)];\n if (allValue !== undefined) {\n _this.selectedValues.add(allValue);\n }\n });\n }\n });\n };\n SetValueModel.prototype.uniqueUnsortedStringArray = function (values) {\n var _this = this;\n var stringifiedResults = _.toStrings(values);\n if (!stringifiedResults) {\n return [];\n }\n var uniqueValues = this.uniqueValues(stringifiedResults);\n /*\n * It is not possible to simply use Object.values(uniqueValues) here as the keys inside uniqueValues could be numeric.\n * Javascript objects sort numeric keys and do not fully respect the insert order, as such to trust the results are unsorted\n * we need to reference the order of the original array as done here.\n */\n return stringifiedResults.map(_.makeNull).filter(function (value) {\n var key = _this.uniqueKey(value);\n if (key in uniqueValues) {\n delete uniqueValues[key];\n return true;\n }\n return false;\n });\n };\n SetValueModel.prototype.uniqueValues = function (values) {\n var _this = this;\n // Honour case-sensitivity setting for matching purposes here, preserving original casing\n // in the selectedValues output.\n var uniqueValues = {};\n (values || []).forEach(function (rawValue) {\n var value = _.makeNull(rawValue);\n var key = _this.uniqueKey(value);\n if (uniqueValues[key] === undefined) {\n uniqueValues[key] = value;\n }\n });\n return uniqueValues;\n };\n SetValueModel.prototype.uniqueKey = function (v) {\n return v == null ? NULL_SUBSTITUTE : this.caseFormat(v);\n };\n SetValueModel.prototype.resetSelectionState = function (values) {\n if (this.filterParams.defaultToNothingSelected) {\n this.selectedValues.clear();\n } else {\n this.selectedValues = _.convertToSet(values || []);\n }\n };\n SetValueModel.EVENT_AVAILABLE_VALUES_CHANGED = 'availableValuesChanged';\n return SetValueModel;\n}();\nvar __extends$A = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$e = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar SetFilterListItem = /** @class */function (_super) {\n __extends$A(SetFilterListItem, _super);\n function SetFilterListItem(value, params, translate, isSelected) {\n var _this = _super.call(this, SetFilterListItem.TEMPLATE) || this;\n _this.value = value;\n _this.params = params;\n _this.translate = translate;\n _this.isSelected = isSelected;\n return _this;\n }\n SetFilterListItem.prototype.init = function () {\n var _this = this;\n this.render();\n this.eCheckbox.setValue(this.isSelected, true);\n this.eCheckbox.setDisabled(!!this.params.readOnly);\n if (!!this.params.readOnly) {\n // Don't add event listeners if we're read-only.\n return;\n }\n this.eCheckbox.onValueChange(function (value) {\n var parsedValue = value || false;\n _this.isSelected = parsedValue;\n var event = {\n type: SetFilterListItem.EVENT_SELECTION_CHANGED,\n isSelected: parsedValue\n };\n _this.dispatchEvent(event);\n });\n };\n SetFilterListItem.prototype.toggleSelected = function () {\n if (!!this.params.readOnly) {\n return;\n }\n this.isSelected = !this.isSelected;\n this.eCheckbox.setValue(this.isSelected);\n };\n SetFilterListItem.prototype.render = function () {\n var column = this.params.column;\n var value = this.value;\n var formattedValue = null;\n if (typeof value === 'function') {\n value = value();\n } else {\n formattedValue = this.getFormattedValue(this.params, column, value);\n }\n if (this.params.showTooltips) {\n var tooltipValue = formattedValue != null ? formattedValue : value;\n this.setTooltip(tooltipValue);\n }\n var params = {\n value: value,\n valueFormatted: formattedValue,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext(),\n colDef: this.params.colDef,\n column: this.params.column\n };\n this.renderCell(params);\n };\n SetFilterListItem.prototype.getTooltipParams = function () {\n var res = _super.prototype.getTooltipParams.call(this);\n res.location = 'setFilterValue';\n res.colDef = this.getComponentHolder();\n return res;\n };\n SetFilterListItem.prototype.getFormattedValue = function (filterParams, column, value) {\n var formatter = filterParams && filterParams.valueFormatter;\n return this.valueFormatterService.formatValue(column, null, value, formatter, false);\n };\n SetFilterListItem.prototype.renderCell = function (params) {\n var _this = this;\n var compDetails = this.userComponentFactory.getSetFilterCellRendererDetails(this.params, params);\n var cellRendererPromise = compDetails ? compDetails.newAgStackInstance() : undefined;\n if (cellRendererPromise == null) {\n var valueToRender = params.valueFormatted == null ? params.value : params.valueFormatted;\n this.eCheckbox.setLabel(valueToRender == null ? this.translate('blanks') : valueToRender);\n return;\n }\n cellRendererPromise.then(function (component) {\n if (component) {\n _this.eCheckbox.setLabel(component.getGui());\n _this.addDestroyFunc(function () {\n return _this.destroyBean(component);\n });\n }\n });\n };\n SetFilterListItem.prototype.getComponentHolder = function () {\n return this.params.column.getColDef();\n };\n SetFilterListItem.EVENT_SELECTION_CHANGED = 'selectionChanged';\n SetFilterListItem.TEMPLATE = \"\\n
\\n \\n
\";\n __decorate$e([Autowired('valueFormatterService')], SetFilterListItem.prototype, \"valueFormatterService\", void 0);\n __decorate$e([Autowired('userComponentFactory')], SetFilterListItem.prototype, \"userComponentFactory\", void 0);\n __decorate$e([RefSelector('eCheckbox')], SetFilterListItem.prototype, \"eCheckbox\", void 0);\n __decorate$e([PostConstruct], SetFilterListItem.prototype, \"init\", null);\n return SetFilterListItem;\n}(Component);\nvar DEFAULT_LOCALE_TEXT = {\n loadingOoo: 'Loading...',\n blanks: '(Blanks)',\n searchOoo: 'Search...',\n selectAll: '(Select All)',\n selectAllSearchResults: '(Select All Search Results)',\n noMatches: 'No matches.'\n};\nvar __extends$z = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$d = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar SetFilter = /** @class */function (_super) {\n __extends$z(SetFilter, _super);\n function SetFilter() {\n var _this = _super.call(this, 'setFilter') || this;\n _this.valueModel = null;\n _this.setFilterParams = null;\n _this.virtualList = null;\n _this.caseSensitive = false;\n // To make the filtering super fast, we store the values in an object, and check for the boolean value.\n // Although Set would be a more natural choice of data structure, its performance across browsers is\n // significantly worse than using an object: https://jsbench.me/hdk91jbw1h/\n _this.appliedModelValues = null;\n return _this;\n }\n SetFilter.prototype.postConstruct = function () {\n _super.prototype.postConstruct.call(this);\n this.positionableFeature = new PositionableFeature(this.eSetFilterList, {\n forcePopupParentAsOffsetParent: true\n });\n this.createBean(this.positionableFeature);\n };\n // unlike the simple filters, nothing in the set filter UI shows/hides.\n // maybe this method belongs in abstractSimpleFilter???\n SetFilter.prototype.updateUiVisibility = function () {};\n SetFilter.prototype.createBodyTemplate = function () {\n return /* html */\"\\n
\\n
\" + this.translateForSetFilter('loadingOoo') + \"
\\n \\n
\" + this.translateForSetFilter('noMatches') + \"
\\n
\\n
\";\n };\n SetFilter.prototype.handleKeyDown = function (e) {\n _super.prototype.handleKeyDown.call(this, e);\n if (e.defaultPrevented) {\n return;\n }\n switch (e.key) {\n case KeyCode.SPACE:\n this.handleKeySpace(e);\n break;\n case KeyCode.ENTER:\n this.handleKeyEnter(e);\n break;\n }\n };\n SetFilter.prototype.handleKeySpace = function (e) {\n var eDocument = this.gridOptionsWrapper.getDocument();\n if (!this.eSetFilterList.contains(eDocument.activeElement) || !this.virtualList) {\n return;\n }\n var currentItem = this.virtualList.getLastFocusedRow();\n if (currentItem == null) {\n return;\n }\n var component = this.virtualList.getComponentAt(currentItem);\n if (component == null) {\n return;\n }\n e.preventDefault();\n var readOnly = (this.setFilterParams || {}).readOnly;\n if (!!readOnly) {\n return;\n }\n component.toggleSelected();\n };\n SetFilter.prototype.handleKeyEnter = function (e) {\n if (!this.setFilterParams) {\n return;\n }\n var _a = this.setFilterParams || {},\n excelMode = _a.excelMode,\n readOnly = _a.readOnly;\n if (!excelMode || !!readOnly) {\n return;\n }\n e.preventDefault();\n // in Excel Mode, hitting Enter is the same as pressing the Apply button\n this.onBtApply(false, false, e);\n if (this.setFilterParams.excelMode === 'mac') {\n // in Mac version, select all the input text\n this.eMiniFilter.getInputElement().select();\n }\n };\n SetFilter.prototype.getCssIdentifier = function () {\n return 'set-filter';\n };\n SetFilter.prototype.setModelAndRefresh = function (values) {\n var _this = this;\n return this.valueModel ? this.valueModel.setModel(values).then(function () {\n return _this.refresh();\n }) : AgPromise.resolve();\n };\n SetFilter.prototype.resetUiToDefaults = function () {\n this.setMiniFilter(null);\n return this.setModelAndRefresh(null);\n };\n SetFilter.prototype.setModelIntoUi = function (model) {\n this.setMiniFilter(null);\n var values = model == null ? null : model.values;\n return this.setModelAndRefresh(values);\n };\n SetFilter.prototype.getModelFromUi = function () {\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n var values = this.valueModel.getModel();\n if (!values) {\n return null;\n }\n return {\n values: values,\n filterType: this.getFilterType()\n };\n };\n SetFilter.prototype.getFilterType = function () {\n return 'set';\n };\n SetFilter.prototype.getValueModel = function () {\n return this.valueModel;\n };\n SetFilter.prototype.areModelsEqual = function (a, b) {\n // both are missing\n if (a == null && b == null) {\n return true;\n }\n return a != null && b != null && _.areEqual(a.values, b.values);\n };\n SetFilter.prototype.setParams = function (params) {\n var _this = this;\n this.applyExcelModeOptions(params);\n _super.prototype.setParams.call(this, params);\n this.setFilterParams = params;\n this.caseSensitive = params.caseSensitive || false;\n this.valueModel = new SetValueModel(params, function (loading) {\n return _this.showOrHideLoadingScreen(loading);\n }, this.valueFormatterService, function (key) {\n return _this.translateForSetFilter(key);\n }, function (v) {\n return _this.caseFormat(v);\n });\n this.initialiseFilterBodyUi();\n this.addEventListenersForDataChanges();\n };\n SetFilter.prototype.applyExcelModeOptions = function (params) {\n // apply default options to match Excel behaviour, unless they have already been specified\n if (params.excelMode === 'windows') {\n if (!params.buttons) {\n params.buttons = ['apply', 'cancel'];\n }\n if (params.closeOnApply == null) {\n params.closeOnApply = true;\n }\n } else if (params.excelMode === 'mac') {\n if (!params.buttons) {\n params.buttons = ['reset'];\n }\n if (params.applyMiniFilterWhileTyping == null) {\n params.applyMiniFilterWhileTyping = true;\n }\n if (params.debounceMs == null) {\n params.debounceMs = 500;\n }\n }\n };\n SetFilter.prototype.addEventListenersForDataChanges = function () {\n var _this = this;\n if (!this.isValuesTakenFromGrid()) {\n return;\n }\n this.addManagedListener(this.eventService, Events.EVENT_CELL_VALUE_CHANGED, function (event) {\n // only interested in changes to do with this column\n if (_this.setFilterParams && event.column === _this.setFilterParams.column) {\n _this.syncAfterDataChange();\n }\n });\n };\n SetFilter.prototype.syncAfterDataChange = function () {\n var _this = this;\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n var promise = this.valueModel.refreshValues();\n return promise.then(function () {\n _this.refresh();\n _this.onBtApply(false, true);\n });\n };\n SetFilter.prototype.showOrHideLoadingScreen = function (isLoading) {\n _.setDisplayed(this.eFilterLoading, isLoading);\n };\n SetFilter.prototype.initialiseFilterBodyUi = function () {\n this.initVirtualList();\n this.initMiniFilter();\n };\n SetFilter.prototype.initVirtualList = function () {\n var _this = this;\n if (!this.setFilterParams) {\n throw new Error('Set filter params have not been provided.');\n }\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var filterListName = translate('ariaFilterList', 'Filter List');\n var virtualList = this.virtualList = this.createBean(new VirtualList('filter', 'listbox', filterListName));\n var eSetFilterList = this.getRefElement('eSetFilterList');\n if (eSetFilterList) {\n eSetFilterList.appendChild(virtualList.getGui());\n }\n var cellHeight = this.setFilterParams.cellHeight;\n if (cellHeight != null) {\n virtualList.setRowHeight(cellHeight);\n }\n virtualList.setComponentCreator(function (value) {\n return _this.createSetListItem(value);\n });\n var model;\n if (this.setFilterParams.suppressSelectAll) {\n model = new ModelWrapper(this.valueModel);\n } else {\n model = new ModelWrapperWithSelectAll(this.valueModel, function () {\n return _this.isSelectAllSelected();\n });\n }\n virtualList.setModel(model);\n };\n SetFilter.prototype.getSelectAllLabel = function () {\n if (!this.setFilterParams) {\n throw new Error('Set filter params have not been provided.');\n }\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n var key = this.valueModel.getMiniFilter() == null || !this.setFilterParams.excelMode ? 'selectAll' : 'selectAllSearchResults';\n return this.translateForSetFilter(key);\n };\n SetFilter.prototype.createSetListItem = function (value) {\n var _this = this;\n if (!this.setFilterParams) {\n throw new Error('Set filter params have not been provided.');\n }\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n var listItem;\n if (value === SetFilter.SELECT_ALL_VALUE) {\n listItem = this.createBean(new SetFilterListItem(function () {\n return _this.getSelectAllLabel();\n }, this.setFilterParams, function (key) {\n return _this.translateForSetFilter(key);\n }, this.isSelectAllSelected()));\n listItem.addEventListener(SetFilterListItem.EVENT_SELECTION_CHANGED, function (e) {\n return _this.onSelectAll(e.isSelected);\n });\n return listItem;\n }\n listItem = this.createBean(new SetFilterListItem(value, this.setFilterParams, function (key) {\n return _this.translateForSetFilter(key);\n }, this.valueModel.isValueSelected(value)));\n listItem.addEventListener(SetFilterListItem.EVENT_SELECTION_CHANGED, function (e) {\n return _this.onItemSelected(value, e.isSelected);\n });\n return listItem;\n };\n SetFilter.prototype.initMiniFilter = function () {\n var _this = this;\n if (!this.setFilterParams) {\n throw new Error('Set filter params have not been provided.');\n }\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n var _a = this,\n eMiniFilter = _a.eMiniFilter,\n gridOptionsWrapper = _a.gridOptionsWrapper;\n var translate = gridOptionsWrapper.getLocaleTextFunc();\n eMiniFilter.setDisplayed(!this.setFilterParams.suppressMiniFilter);\n eMiniFilter.setValue(this.valueModel.getMiniFilter());\n eMiniFilter.onValueChange(function () {\n return _this.onMiniFilterInput();\n });\n eMiniFilter.setInputAriaLabel(translate('ariaSearchFilterValues', 'Search filter values'));\n this.addManagedListener(eMiniFilter.getInputElement(), 'keypress', function (e) {\n return _this.onMiniFilterKeyPress(e);\n });\n };\n // we need to have the GUI attached before we can draw the virtual rows, as the\n // virtual row logic needs info about the GUI state\n SetFilter.prototype.afterGuiAttached = function (params) {\n if (!this.setFilterParams) {\n throw new Error('Set filter params have not been provided.');\n }\n _super.prototype.afterGuiAttached.call(this, params);\n if (this.setFilterParams.excelMode) {\n this.resetUiToActiveModel();\n this.showOrHideResults();\n }\n this.refreshVirtualList();\n var eMiniFilter = this.eMiniFilter;\n eMiniFilter.setInputPlaceholder(this.translateForSetFilter('searchOoo'));\n if (!params || !params.suppressFocus) {\n eMiniFilter.getFocusableElement().focus();\n }\n var resizable = !!(params && params.container === 'floatingFilter');\n var resizableObject;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n resizableObject = {\n bottom: true,\n bottomLeft: true,\n left: true\n };\n } else {\n resizableObject = {\n bottom: true,\n bottomRight: true,\n right: true\n };\n }\n if (resizable) {\n this.positionableFeature.restoreLastSize();\n this.positionableFeature.setResizable(resizableObject);\n } else {\n this.positionableFeature.removeSizeFromEl();\n this.positionableFeature.setResizable(false);\n }\n };\n SetFilter.prototype.applyModel = function () {\n var _this = this;\n if (!this.setFilterParams) {\n throw new Error('Set filter params have not been provided.');\n }\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n if (this.setFilterParams.excelMode && this.valueModel.isEverythingVisibleSelected()) {\n // In Excel, if the filter is applied with all visible values selected, then any active filter on the\n // column is removed. This ensures the filter is removed in this situation.\n this.valueModel.selectAllMatchingMiniFilter();\n }\n var result = _super.prototype.applyModel.call(this);\n // keep appliedModelValues in sync with the applied model\n var appliedModel = this.getModel();\n if (appliedModel) {\n this.appliedModelValues = appliedModel.values.reduce(function (values, value) {\n values[_this.caseFormat(String(value))] = true;\n return values;\n }, {});\n } else {\n this.appliedModelValues = null;\n }\n return result;\n };\n SetFilter.prototype.isModelValid = function (model) {\n return this.setFilterParams && this.setFilterParams.excelMode ? model == null || model.values.length > 0 : true;\n };\n SetFilter.prototype.doesFilterPass = function (params) {\n var _this = this;\n if (!this.setFilterParams || !this.valueModel || !this.appliedModelValues) {\n return true;\n }\n var node = params.node,\n data = params.data;\n var _a = this.setFilterParams,\n valueGetter = _a.valueGetter,\n keyCreator = _a.colDef.keyCreator,\n api = _a.api,\n colDef = _a.colDef,\n column = _a.column,\n columnApi = _a.columnApi,\n context = _a.context;\n var value = valueGetter({\n api: api,\n colDef: colDef,\n column: column,\n columnApi: columnApi,\n context: context,\n data: data,\n getValue: function (field) {\n return data[field];\n },\n node: node\n });\n if (keyCreator) {\n var keyParams = {\n value: value,\n colDef: colDef,\n column: column,\n node: node,\n data: data,\n api: api,\n columnApi: columnApi,\n context: context\n };\n value = keyCreator(keyParams);\n }\n value = _.makeNull(value);\n if (Array.isArray(value)) {\n return value.some(function (v) {\n return _this.appliedModelValues[_this.caseFormat(String(_.makeNull(v)))] === true;\n });\n }\n // Comparing against a value performs better than just checking for undefined\n // https://jsbench.me/hdk91jbw1h/\n return this.appliedModelValues[this.caseFormat(String(value))] === true;\n };\n SetFilter.prototype.onNewRowsLoaded = function () {\n if (!this.isValuesTakenFromGrid()) {\n return;\n }\n this.syncAfterDataChange();\n };\n SetFilter.prototype.isValuesTakenFromGrid = function () {\n if (!this.valueModel) {\n return false;\n }\n var valuesType = this.valueModel.getValuesType();\n return valuesType === SetFilterModelValuesType.TAKEN_FROM_GRID_VALUES;\n };\n //noinspection JSUnusedGlobalSymbols\n /**\n * Public method provided so the user can change the value of the filter once\n * the filter has been already started\n * @param options The options to use.\n */\n SetFilter.prototype.setFilterValues = function (options) {\n var _this = this;\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n this.valueModel.overrideValues(options).then(function () {\n _this.refresh();\n _this.onUiChanged();\n });\n };\n //noinspection JSUnusedGlobalSymbols\n /**\n * Public method provided so the user can reset the values of the filter once that it has started.\n */\n SetFilter.prototype.resetFilterValues = function () {\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n this.valueModel.setValuesType(SetFilterModelValuesType.TAKEN_FROM_GRID_VALUES);\n this.syncAfterDataChange();\n };\n SetFilter.prototype.refreshFilterValues = function () {\n var _this = this;\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n // the model is still being initialised\n if (!this.valueModel.isInitialised()) {\n return;\n }\n this.valueModel.refreshValues().then(function () {\n _this.refresh();\n _this.onUiChanged();\n });\n };\n SetFilter.prototype.onAnyFilterChanged = function () {\n var _this = this;\n // don't block the current action when updating the values for this filter\n setTimeout(function () {\n if (!_this.isAlive()) {\n return;\n }\n if (!_this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n _this.valueModel.refreshAfterAnyFilterChanged().then(function () {\n return _this.refresh();\n });\n }, 0);\n };\n SetFilter.prototype.onMiniFilterInput = function () {\n if (!this.setFilterParams) {\n throw new Error('Set filter params have not been provided.');\n }\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n if (!this.valueModel.setMiniFilter(this.eMiniFilter.getValue())) {\n return;\n }\n var _a = this.setFilterParams || {},\n applyMiniFilterWhileTyping = _a.applyMiniFilterWhileTyping,\n readOnly = _a.readOnly;\n if (!readOnly && applyMiniFilterWhileTyping) {\n this.filterOnAllVisibleValues(false);\n } else {\n this.updateUiAfterMiniFilterChange();\n }\n };\n SetFilter.prototype.updateUiAfterMiniFilterChange = function () {\n if (!this.setFilterParams) {\n throw new Error('Set filter params have not been provided.');\n }\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n var _a = this.setFilterParams || {},\n excelMode = _a.excelMode,\n readOnly = _a.readOnly;\n if (excelMode == null || !!readOnly) {\n this.refresh();\n } else if (this.valueModel.getMiniFilter() == null) {\n this.resetUiToActiveModel();\n } else {\n this.valueModel.selectAllMatchingMiniFilter(true);\n this.refresh();\n this.onUiChanged();\n }\n this.showOrHideResults();\n };\n SetFilter.prototype.showOrHideResults = function () {\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n var hideResults = this.valueModel.getMiniFilter() != null && this.valueModel.getDisplayedValueCount() < 1;\n _.setDisplayed(this.eNoMatches, hideResults);\n _.setDisplayed(this.eSetFilterList, !hideResults);\n };\n SetFilter.prototype.resetUiToActiveModel = function () {\n var _this = this;\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n this.eMiniFilter.setValue(null, true);\n this.valueModel.setMiniFilter(null);\n this.setModelIntoUi(this.getModel()).then(function () {\n return _this.onUiChanged(false, 'prevent');\n });\n };\n SetFilter.prototype.onMiniFilterKeyPress = function (e) {\n var _a = this.setFilterParams || {},\n excelMode = _a.excelMode,\n readOnly = _a.readOnly;\n if (e.key === KeyCode.ENTER && !excelMode && !readOnly) {\n this.filterOnAllVisibleValues();\n }\n };\n SetFilter.prototype.filterOnAllVisibleValues = function (applyImmediately) {\n if (applyImmediately === void 0) {\n applyImmediately = true;\n }\n var readOnly = (this.setFilterParams || {}).readOnly;\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n if (!!readOnly) {\n throw new Error('Unable to filter in readOnly mode.');\n }\n this.valueModel.selectAllMatchingMiniFilter(true);\n this.refresh();\n this.onUiChanged(false, applyImmediately ? 'immediately' : 'debounce');\n this.showOrHideResults();\n };\n SetFilter.prototype.focusRowIfAlive = function (rowIndex) {\n var _this = this;\n if (rowIndex == null) {\n return;\n }\n window.setTimeout(function () {\n if (!_this.virtualList) {\n throw new Error('Virtual list has not been created.');\n }\n if (_this.isAlive()) {\n _this.virtualList.focusRow(rowIndex);\n }\n }, 0);\n };\n SetFilter.prototype.onSelectAll = function (isSelected) {\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n if (!this.virtualList) {\n throw new Error('Virtual list has not been created.');\n }\n if (isSelected) {\n this.valueModel.selectAllMatchingMiniFilter();\n } else {\n this.valueModel.deselectAllMatchingMiniFilter();\n }\n var focusedRow = this.virtualList.getLastFocusedRow();\n this.refresh();\n this.onUiChanged();\n this.focusRowIfAlive(focusedRow);\n };\n SetFilter.prototype.onItemSelected = function (value, isSelected) {\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n if (!this.virtualList) {\n throw new Error('Virtual list has not been created.');\n }\n if (isSelected) {\n this.valueModel.selectValue(value);\n } else {\n this.valueModel.deselectValue(value);\n }\n var focusedRow = this.virtualList.getLastFocusedRow();\n this.refresh();\n this.onUiChanged();\n this.focusRowIfAlive(focusedRow);\n };\n SetFilter.prototype.setMiniFilter = function (newMiniFilter) {\n this.eMiniFilter.setValue(newMiniFilter);\n this.onMiniFilterInput();\n };\n SetFilter.prototype.getMiniFilter = function () {\n return this.valueModel ? this.valueModel.getMiniFilter() : null;\n };\n SetFilter.prototype.refresh = function () {\n if (!this.virtualList) {\n throw new Error('Virtual list has not been created.');\n }\n this.virtualList.refresh();\n };\n SetFilter.prototype.getValues = function () {\n return this.valueModel ? this.valueModel.getValues() : [];\n };\n SetFilter.prototype.refreshVirtualList = function () {\n if (this.setFilterParams && this.setFilterParams.refreshValuesOnOpen) {\n this.refreshFilterValues();\n } else {\n this.refresh();\n }\n };\n SetFilter.prototype.translateForSetFilter = function (key) {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n return translate(key, DEFAULT_LOCALE_TEXT[key]);\n };\n SetFilter.prototype.isSelectAllSelected = function () {\n if (!this.setFilterParams || !this.valueModel) {\n return false;\n }\n if (!this.setFilterParams.defaultToNothingSelected) {\n // everything selected by default\n if (this.valueModel.hasSelections() && this.valueModel.isNothingVisibleSelected()) {\n return false;\n }\n if (this.valueModel.isEverythingVisibleSelected()) {\n return true;\n }\n } else {\n // nothing selected by default\n if (this.valueModel.hasSelections() && this.valueModel.isEverythingVisibleSelected()) {\n return true;\n }\n if (this.valueModel.isNothingVisibleSelected()) {\n return false;\n }\n }\n // returning `undefined` means the checkbox status is indeterminate.\n return undefined;\n };\n SetFilter.prototype.destroy = function () {\n if (this.virtualList != null) {\n this.virtualList.destroy();\n this.virtualList = null;\n }\n _super.prototype.destroy.call(this);\n };\n SetFilter.prototype.caseFormat = function (valueToFormat) {\n if (valueToFormat == null || typeof valueToFormat !== 'string') {\n return valueToFormat;\n }\n return this.caseSensitive ? valueToFormat : valueToFormat.toUpperCase();\n };\n SetFilter.SELECT_ALL_VALUE = '__AG_SELECT_ALL__';\n __decorate$d([RefSelector('eMiniFilter')], SetFilter.prototype, \"eMiniFilter\", void 0);\n __decorate$d([RefSelector('eFilterLoading')], SetFilter.prototype, \"eFilterLoading\", void 0);\n __decorate$d([RefSelector('eSetFilterList')], SetFilter.prototype, \"eSetFilterList\", void 0);\n __decorate$d([RefSelector('eFilterNoMatches')], SetFilter.prototype, \"eNoMatches\", void 0);\n __decorate$d([Autowired('valueFormatterService')], SetFilter.prototype, \"valueFormatterService\", void 0);\n return SetFilter;\n}(ProvidedFilter);\nvar ModelWrapper = /** @class */function () {\n function ModelWrapper(model) {\n this.model = model;\n }\n ModelWrapper.prototype.getRowCount = function () {\n return this.model.getDisplayedValueCount();\n };\n ModelWrapper.prototype.getRow = function (index) {\n return this.model.getDisplayedValue(index);\n };\n ModelWrapper.prototype.isRowSelected = function (index) {\n return this.model.isValueSelected(this.getRow(index));\n };\n return ModelWrapper;\n}();\nvar ModelWrapperWithSelectAll = /** @class */function () {\n function ModelWrapperWithSelectAll(model, isSelectAllSelected) {\n this.model = model;\n this.isSelectAllSelected = isSelectAllSelected;\n }\n ModelWrapperWithSelectAll.prototype.getRowCount = function () {\n return this.model.getDisplayedValueCount() + 1;\n };\n ModelWrapperWithSelectAll.prototype.getRow = function (index) {\n return index === 0 ? SetFilter.SELECT_ALL_VALUE : this.model.getDisplayedValue(index - 1);\n };\n ModelWrapperWithSelectAll.prototype.isRowSelected = function (index) {\n return index === 0 ? this.isSelectAllSelected() : this.model.isValueSelected(this.getRow(index));\n };\n return ModelWrapperWithSelectAll;\n}();\nvar __extends$y = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$c = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar SetFloatingFilterComp = /** @class */function (_super) {\n __extends$y(SetFloatingFilterComp, _super);\n function SetFloatingFilterComp() {\n var _this = _super.call(this, /* html */\"\\n
\\n \\n
\") || this;\n _this.availableValuesListenerAdded = false;\n return _this;\n }\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n SetFloatingFilterComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n SetFloatingFilterComp.prototype.init = function (params) {\n var displayName = this.columnModel.getDisplayNameForColumn(params.column, 'header', true);\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n this.eFloatingFilterText.setDisabled(true).setInputAriaLabel(displayName + \" \" + translate('ariaFilterInput', 'Filter Input')).addGuiEventListener('click', function () {\n return params.showParentFilter();\n });\n this.params = params;\n };\n SetFloatingFilterComp.prototype.onParentModelChanged = function (parentModel) {\n this.updateFloatingFilterText(parentModel);\n };\n SetFloatingFilterComp.prototype.parentSetFilterInstance = function (cb) {\n this.params.parentFilterInstance(function (filter) {\n if (!(filter instanceof SetFilter)) {\n throw new Error('AG Grid - SetFloatingFilter expects SetFilter as it\\'s parent');\n }\n cb(filter);\n });\n };\n SetFloatingFilterComp.prototype.addAvailableValuesListener = function () {\n var _this = this;\n this.parentSetFilterInstance(function (setFilter) {\n var setValueModel = setFilter.getValueModel();\n if (!setValueModel) {\n return;\n }\n // unlike other filters, what we show in the floating filter can be different, even\n // if another filter changes. this is due to how set filter restricts its values based\n // on selections in other filters, e.g. if you filter Language to English, then the set filter\n // on Country will only show English speaking countries. Thus the list of items to show\n // in the floating filter can change.\n _this.addManagedListener(setValueModel, SetValueModel.EVENT_AVAILABLE_VALUES_CHANGED, function () {\n return _this.updateFloatingFilterText();\n });\n });\n this.availableValuesListenerAdded = true;\n };\n SetFloatingFilterComp.prototype.updateFloatingFilterText = function (parentModel) {\n var _this = this;\n if (!this.availableValuesListenerAdded) {\n this.addAvailableValuesListener();\n }\n this.parentSetFilterInstance(function (setFilter) {\n var values = (parentModel || setFilter.getModel() || {}).values;\n var valueModel = setFilter.getValueModel();\n if (values == null || valueModel == null) {\n _this.eFloatingFilterText.setValue('');\n return;\n }\n var localeTextFunc = _this.gridOptionsWrapper.getLocaleTextFunc();\n var availableValues = values.filter(function (v) {\n return valueModel.isValueAvailable(v);\n });\n // format all the values, if a formatter is provided\n var formattedValues = availableValues.map(function (value) {\n var _a = _this.params,\n column = _a.column,\n filterParams = _a.filterParams;\n var formattedValue = _this.valueFormatterService.formatValue(column, null, value, filterParams.valueFormatter, false);\n var valueToRender = formattedValue != null ? formattedValue : value;\n return valueToRender == null ? localeTextFunc('blanks', DEFAULT_LOCALE_TEXT.blanks) : valueToRender;\n });\n var arrayToDisplay = formattedValues.length > 10 ? formattedValues.slice(0, 10).concat('...') : formattedValues;\n var valuesString = \"(\" + formattedValues.length + \") \" + arrayToDisplay.join(',');\n _this.eFloatingFilterText.setValue(valuesString);\n });\n };\n __decorate$c([RefSelector('eFloatingFilterText')], SetFloatingFilterComp.prototype, \"eFloatingFilterText\", void 0);\n __decorate$c([Autowired('valueFormatterService')], SetFloatingFilterComp.prototype, \"valueFormatterService\", void 0);\n __decorate$c([Autowired('columnModel')], SetFloatingFilterComp.prototype, \"columnModel\", void 0);\n return SetFloatingFilterComp;\n}(Component);\nvar SetFilterModule = {\n moduleName: ModuleNames.SetFilterModule,\n beans: [],\n userComponents: [{\n componentName: 'agSetColumnFilter',\n componentClass: SetFilter\n }, {\n componentName: 'agSetColumnFloatingFilter',\n componentClass: SetFloatingFilterComp\n }],\n dependantModules: [EnterpriseCoreModule]\n};\nvar __extends$x = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$b = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar StatusBarService = /** @class */function (_super) {\n __extends$x(StatusBarService, _super);\n // tslint:disable-next-line\n function StatusBarService() {\n var _this = _super.call(this) || this;\n _this.allComponents = {};\n return _this;\n }\n StatusBarService.prototype.registerStatusPanel = function (key, component) {\n this.allComponents[key] = component;\n };\n StatusBarService.prototype.getStatusPanel = function (key) {\n return this.allComponents[key];\n };\n StatusBarService = __decorate$b([Bean('statusBarService')], StatusBarService);\n return StatusBarService;\n}(BeanStub);\nvar __extends$w = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$a = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar StatusBar = /** @class */function (_super) {\n __extends$w(StatusBar, _super);\n function StatusBar() {\n return _super.call(this, StatusBar.TEMPLATE) || this;\n }\n StatusBar.prototype.postConstruct = function () {\n if (this.gridOptions.statusBar && this.gridOptions.statusBar.statusPanels) {\n var leftStatusPanelComponents = this.gridOptions.statusBar.statusPanels.filter(function (componentConfig) {\n return componentConfig.align === 'left';\n });\n this.createAndRenderComponents(leftStatusPanelComponents, this.eStatusBarLeft);\n var centerStatusPanelComponents = this.gridOptions.statusBar.statusPanels.filter(function (componentConfig) {\n return componentConfig.align === 'center';\n });\n this.createAndRenderComponents(centerStatusPanelComponents, this.eStatusBarCenter);\n var rightStatusPanelComponents = this.gridOptions.statusBar.statusPanels.filter(function (componentConfig) {\n return !componentConfig.align || componentConfig.align === 'right';\n });\n this.createAndRenderComponents(rightStatusPanelComponents, this.eStatusBarRight);\n } else {\n this.setDisplayed(false);\n }\n };\n StatusBar.prototype.createAndRenderComponents = function (statusBarComponents, ePanelComponent) {\n var _this = this;\n var componentDetails = [];\n statusBarComponents.forEach(function (componentConfig) {\n var params = {};\n var compDetails = _this.userComponentFactory.getStatusPanelCompDetails(componentConfig, params);\n var promise = compDetails.newAgStackInstance();\n if (!promise) {\n return;\n }\n componentDetails.push({\n // default to the component name if no key supplied\n key: componentConfig.key || componentConfig.statusPanel,\n promise: promise\n });\n });\n AgPromise.all(componentDetails.map(function (details) {\n return details.promise;\n })).then(function () {\n componentDetails.forEach(function (componentDetail) {\n componentDetail.promise.then(function (component) {\n var destroyFunc = function () {\n _this.getContext().destroyBean(component);\n };\n if (_this.isAlive()) {\n _this.statusBarService.registerStatusPanel(componentDetail.key, component);\n ePanelComponent.appendChild(component.getGui());\n _this.addDestroyFunc(destroyFunc);\n } else {\n destroyFunc();\n }\n });\n });\n });\n };\n StatusBar.TEMPLATE = \"
\\n
\\n
\\n
\\n
\";\n __decorate$a([Autowired('gridOptions')], StatusBar.prototype, \"gridOptions\", void 0);\n __decorate$a([Autowired('userComponentFactory')], StatusBar.prototype, \"userComponentFactory\", void 0);\n __decorate$a([Autowired('statusBarService')], StatusBar.prototype, \"statusBarService\", void 0);\n __decorate$a([RefSelector('eStatusBarLeft')], StatusBar.prototype, \"eStatusBarLeft\", void 0);\n __decorate$a([RefSelector('eStatusBarCenter')], StatusBar.prototype, \"eStatusBarCenter\", void 0);\n __decorate$a([RefSelector('eStatusBarRight')], StatusBar.prototype, \"eStatusBarRight\", void 0);\n __decorate$a([PostConstruct], StatusBar.prototype, \"postConstruct\", null);\n return StatusBar;\n}(Component);\nvar __extends$v = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$9 = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar NameValueComp = /** @class */function (_super) {\n __extends$v(NameValueComp, _super);\n function NameValueComp() {\n return _super.call(this, NameValueComp.TEMPLATE) || this;\n }\n NameValueComp.prototype.setLabel = function (key, defaultValue) {\n // we want to hide until the first value comes in\n this.setDisplayed(false);\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n this.eLabel.innerHTML = localeTextFunc(key, defaultValue);\n };\n NameValueComp.prototype.setValue = function (value) {\n this.eValue.innerHTML = value;\n };\n NameValueComp.TEMPLATE = \"
\\n : \\n \\n
\";\n __decorate$9([RefSelector('eLabel')], NameValueComp.prototype, \"eLabel\", void 0);\n __decorate$9([RefSelector('eValue')], NameValueComp.prototype, \"eValue\", void 0);\n return NameValueComp;\n}(Component);\nvar __extends$u = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$8 = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar TotalAndFilteredRowsComp = /** @class */function (_super) {\n __extends$u(TotalAndFilteredRowsComp, _super);\n function TotalAndFilteredRowsComp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TotalAndFilteredRowsComp.prototype.postConstruct = function () {\n // this component is only really useful with client side row model\n if (this.gridApi.getModel().getType() !== 'clientSide') {\n console.warn(\"AG Grid: agTotalAndFilteredRowCountComponent should only be used with the client side row model.\");\n return;\n }\n this.setLabel('totalAndFilteredRows', 'Rows');\n this.addCssClass('ag-status-panel');\n this.addCssClass('ag-status-panel-total-and-filtered-row-count');\n this.setDisplayed(true);\n this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, this.onDataChanged.bind(this));\n this.onDataChanged();\n };\n TotalAndFilteredRowsComp.prototype.onDataChanged = function () {\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var thousandSeparator = localeTextFunc('thousandSeparator', ',');\n var decimalSeparator = localeTextFunc('decimalSeparator', '.');\n var rowCount = _.formatNumberCommas(this.getFilteredRowCountValue(), thousandSeparator, decimalSeparator);\n var totalRowCount = _.formatNumberCommas(this.getTotalRowCount(), thousandSeparator, decimalSeparator);\n if (rowCount === totalRowCount) {\n this.setValue(rowCount);\n } else {\n var localeTextFunc_1 = this.gridOptionsWrapper.getLocaleTextFunc();\n this.setValue(rowCount + \" \" + localeTextFunc_1('of', 'of') + \" \" + totalRowCount);\n }\n };\n TotalAndFilteredRowsComp.prototype.getFilteredRowCountValue = function () {\n var filteredRowCount = 0;\n this.gridApi.forEachNodeAfterFilter(function (node) {\n if (!node.group) {\n filteredRowCount++;\n }\n });\n return filteredRowCount;\n };\n TotalAndFilteredRowsComp.prototype.getTotalRowCount = function () {\n var totalRowCount = 0;\n this.gridApi.forEachNode(function (node) {\n if (!node.group) {\n totalRowCount++;\n }\n });\n return totalRowCount;\n };\n TotalAndFilteredRowsComp.prototype.init = function () {};\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n TotalAndFilteredRowsComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n __decorate$8([Autowired('gridApi')], TotalAndFilteredRowsComp.prototype, \"gridApi\", void 0);\n __decorate$8([PostConstruct], TotalAndFilteredRowsComp.prototype, \"postConstruct\", null);\n return TotalAndFilteredRowsComp;\n}(NameValueComp);\nvar __extends$t = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$7 = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar FilteredRowsComp = /** @class */function (_super) {\n __extends$t(FilteredRowsComp, _super);\n function FilteredRowsComp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FilteredRowsComp.prototype.postConstruct = function () {\n this.setLabel('filteredRows', 'Filtered');\n // this component is only really useful with client side row model\n if (this.gridApi.getModel().getType() !== 'clientSide') {\n console.warn(\"AG Grid: agFilteredRowCountComponent should only be used with the client side row model.\");\n return;\n }\n this.addCssClass('ag-status-panel');\n this.addCssClass('ag-status-panel-filtered-row-count');\n this.setDisplayed(true);\n var listener = this.onDataChanged.bind(this);\n this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, listener);\n listener();\n };\n FilteredRowsComp.prototype.onDataChanged = function () {\n var totalRowCountValue = this.getTotalRowCountValue();\n var filteredRowCountValue = this.getFilteredRowCountValue();\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var thousandSeparator = localeTextFunc('thousandSeparator', ',');\n var decimalSeparator = localeTextFunc('decimalSeparator', '.');\n this.setValue(_.formatNumberCommas(filteredRowCountValue, thousandSeparator, decimalSeparator));\n this.setDisplayed(totalRowCountValue !== filteredRowCountValue);\n };\n FilteredRowsComp.prototype.getTotalRowCountValue = function () {\n var totalRowCount = 0;\n this.gridApi.forEachNode(function (node) {\n return totalRowCount += 1;\n });\n return totalRowCount;\n };\n FilteredRowsComp.prototype.getFilteredRowCountValue = function () {\n var filteredRowCount = 0;\n this.gridApi.forEachNodeAfterFilter(function (node) {\n if (!node.group) {\n filteredRowCount += 1;\n }\n });\n return filteredRowCount;\n };\n FilteredRowsComp.prototype.init = function () {};\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n FilteredRowsComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n __decorate$7([Autowired('gridApi')], FilteredRowsComp.prototype, \"gridApi\", void 0);\n __decorate$7([PostConstruct], FilteredRowsComp.prototype, \"postConstruct\", null);\n return FilteredRowsComp;\n}(NameValueComp);\nvar __extends$s = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$6 = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar TotalRowsComp = /** @class */function (_super) {\n __extends$s(TotalRowsComp, _super);\n function TotalRowsComp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TotalRowsComp.prototype.postConstruct = function () {\n this.setLabel('totalRows', 'Total Rows');\n // this component is only really useful with client side row model\n if (this.gridApi.getModel().getType() !== 'clientSide') {\n console.warn(\"AG Grid: agTotalRowCountComponent should only be used with the client side row model.\");\n return;\n }\n this.addCssClass('ag-status-panel');\n this.addCssClass('ag-status-panel-total-row-count');\n this.setDisplayed(true);\n this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, this.onDataChanged.bind(this));\n this.onDataChanged();\n };\n TotalRowsComp.prototype.onDataChanged = function () {\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var thousandSeparator = localeTextFunc('thousandSeparator', ',');\n var decimalSeparator = localeTextFunc('decimalSeparator', '.');\n this.setValue(_.formatNumberCommas(this.getRowCountValue(), thousandSeparator, decimalSeparator));\n };\n TotalRowsComp.prototype.getRowCountValue = function () {\n var totalRowCount = 0;\n this.gridApi.forEachLeafNode(function (node) {\n return totalRowCount += 1;\n });\n return totalRowCount;\n };\n TotalRowsComp.prototype.init = function () {};\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n TotalRowsComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n __decorate$6([Autowired('gridApi')], TotalRowsComp.prototype, \"gridApi\", void 0);\n __decorate$6([PostConstruct], TotalRowsComp.prototype, \"postConstruct\", null);\n return TotalRowsComp;\n}(NameValueComp);\nvar __extends$r = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$5 = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar SelectedRowsComp = /** @class */function (_super) {\n __extends$r(SelectedRowsComp, _super);\n function SelectedRowsComp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SelectedRowsComp.prototype.postConstruct = function () {\n if (!this.isValidRowModel()) {\n console.warn(\"AG Grid: agSelectedRowCountComponent should only be used with the client and server side row model.\");\n return;\n }\n this.setLabel('selectedRows', 'Selected');\n this.addCssClass('ag-status-panel');\n this.addCssClass('ag-status-panel-selected-row-count');\n var selectedRowCount = this.gridApi.getSelectedRows().length;\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var thousandSeparator = localeTextFunc('thousandSeparator', ',');\n var decimalSeparator = localeTextFunc('decimalSeparator', '.');\n this.setValue(_.formatNumberCommas(selectedRowCount, thousandSeparator, decimalSeparator));\n this.setDisplayed(selectedRowCount > 0);\n var eventListener = this.onRowSelectionChanged.bind(this);\n this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, eventListener);\n this.addManagedListener(this.eventService, Events.EVENT_SELECTION_CHANGED, eventListener);\n };\n SelectedRowsComp.prototype.isValidRowModel = function () {\n // this component is only really useful with client or server side rowmodels\n var rowModelType = this.gridApi.getModel().getType();\n return rowModelType === 'clientSide' || rowModelType === 'serverSide';\n };\n SelectedRowsComp.prototype.onRowSelectionChanged = function () {\n var selectedRowCount = this.gridApi.getSelectedRows().length;\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var thousandSeparator = localeTextFunc('thousandSeparator', ',');\n var decimalSeparator = localeTextFunc('decimalSeparator', '.');\n this.setValue(_.formatNumberCommas(selectedRowCount, thousandSeparator, decimalSeparator));\n this.setDisplayed(selectedRowCount > 0);\n };\n SelectedRowsComp.prototype.init = function () {};\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n SelectedRowsComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n __decorate$5([Autowired('gridApi')], SelectedRowsComp.prototype, \"gridApi\", void 0);\n __decorate$5([PostConstruct], SelectedRowsComp.prototype, \"postConstruct\", null);\n return SelectedRowsComp;\n}(NameValueComp);\nvar __extends$q = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$4 = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar AggregationComp = /** @class */function (_super) {\n __extends$q(AggregationComp, _super);\n function AggregationComp() {\n return _super.call(this, AggregationComp.TEMPLATE) || this;\n }\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n AggregationComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n AggregationComp.prototype.postConstruct = function () {\n if (!this.isValidRowModel()) {\n console.warn(\"AG Grid: agAggregationComponent should only be used with the client and server side row model.\");\n return;\n }\n this.avgAggregationComp.setLabel('avg', 'Average');\n this.countAggregationComp.setLabel('count', 'Count');\n this.minAggregationComp.setLabel('min', 'Min');\n this.maxAggregationComp.setLabel('max', 'Max');\n this.sumAggregationComp.setLabel('sum', 'Sum');\n this.addManagedListener(this.eventService, Events.EVENT_RANGE_SELECTION_CHANGED, this.onRangeSelectionChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, this.onRangeSelectionChanged.bind(this));\n };\n AggregationComp.prototype.isValidRowModel = function () {\n // this component is only really useful with client or server side rowmodels\n var rowModelType = this.gridApi.getModel().getType();\n return rowModelType === 'clientSide' || rowModelType === 'serverSide';\n };\n AggregationComp.prototype.init = function () {};\n AggregationComp.prototype.setAggregationComponentValue = function (aggFuncName, value, visible) {\n var statusBarValueComponent = this.getAggregationValueComponent(aggFuncName);\n if (_.exists(statusBarValueComponent) && statusBarValueComponent) {\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var thousandSeparator = localeTextFunc('thousandSeparator', ',');\n var decimalSeparator = localeTextFunc('decimalSeparator', '.');\n statusBarValueComponent.setValue(_.formatNumberTwoDecimalPlacesAndCommas(value, thousandSeparator, decimalSeparator));\n statusBarValueComponent.setDisplayed(visible);\n }\n };\n AggregationComp.prototype.getAggregationValueComponent = function (aggFuncName) {\n // converts user supplied agg name to our reference - eg: sum => sumAggregationComp\n var refComponentName = aggFuncName + \"AggregationComp\";\n // if the user has specified the agAggregationPanelComp but no aggFuncs we show the all\n // if the user has specified the agAggregationPanelComp and aggFuncs, then we only show the aggFuncs listed\n var statusBarValueComponent = null;\n var aggregationPanelConfig = _.exists(this.gridOptions.statusBar) && this.gridOptions.statusBar ? this.gridOptions.statusBar.statusPanels.find(function (panel) {\n return panel.statusPanel === 'agAggregationComponent';\n }) : null;\n if (_.exists(aggregationPanelConfig) && aggregationPanelConfig) {\n // a little defensive here - if no statusPanelParams show it, if componentParams we also expect aggFuncs\n if (!_.exists(aggregationPanelConfig.statusPanelParams) || _.exists(aggregationPanelConfig.statusPanelParams) && _.exists(aggregationPanelConfig.statusPanelParams.aggFuncs) && _.exists(aggregationPanelConfig.statusPanelParams.aggFuncs.find(function (func) {\n return func === aggFuncName;\n }))) {\n statusBarValueComponent = this[refComponentName];\n }\n } else {\n // components not specified - assume we can show this component\n statusBarValueComponent = this[refComponentName];\n }\n // either we can't find it (which would indicate a typo or similar user side), or the user has deliberately\n // not listed the component in aggFuncs\n return statusBarValueComponent;\n };\n AggregationComp.prototype.onRangeSelectionChanged = function () {\n var _this = this;\n var cellRanges = this.rangeService ? this.rangeService.getCellRanges() : undefined;\n var sum = 0;\n var count = 0;\n var numberCount = 0;\n var min = null;\n var max = null;\n var cellsSoFar = {};\n if (cellRanges && !_.missingOrEmpty(cellRanges)) {\n cellRanges.forEach(function (cellRange) {\n var currentRow = _this.rangeService.getRangeStartRow(cellRange);\n var lastRow = _this.rangeService.getRangeEndRow(cellRange);\n while (true) {\n var finishedAllRows = _.missing(currentRow) || !currentRow || _this.rowPositionUtils.before(lastRow, currentRow);\n if (finishedAllRows || !currentRow || !cellRange.columns) {\n break;\n }\n cellRange.columns.forEach(function (col) {\n if (currentRow === null) {\n return;\n }\n // we only want to include each cell once, in case a cell is in multiple ranges\n var cellId = _this.cellPositionUtils.createId({\n rowPinned: currentRow.rowPinned,\n column: col,\n rowIndex: currentRow.rowIndex\n });\n if (cellsSoFar[cellId]) {\n return;\n }\n cellsSoFar[cellId] = true;\n var rowNode = _this.rowRenderer.getRowNode(currentRow);\n if (_.missing(rowNode)) {\n return;\n }\n var value = _this.valueService.getValue(col, rowNode);\n // if empty cell, skip it, doesn't impact count or anything\n if (_.missing(value) || value === '') {\n return;\n }\n // see if value is wrapped, can happen when doing count() or avg() functions\n if (typeof value === 'object' && 'value' in value) {\n value = value.value;\n }\n if (typeof value === 'string') {\n value = Number(value);\n }\n if (typeof value === 'number' && !isNaN(value)) {\n sum += value;\n if (max === null || value > max) {\n max = value;\n }\n if (min === null || value < min) {\n min = value;\n }\n numberCount++;\n }\n count++;\n });\n currentRow = _this.cellNavigationService.getRowBelow(currentRow);\n }\n });\n }\n var gotResult = count > 1;\n var gotNumberResult = numberCount > 1;\n // we show count even if no numbers\n this.setAggregationComponentValue('count', count, gotResult);\n // show if numbers found\n this.setAggregationComponentValue('sum', sum, gotNumberResult);\n this.setAggregationComponentValue('min', min, gotNumberResult);\n this.setAggregationComponentValue('max', max, gotNumberResult);\n this.setAggregationComponentValue('avg', sum / numberCount, gotNumberResult);\n };\n AggregationComp.TEMPLATE = \"
\\n \\n \\n \\n \\n \\n
\";\n __decorate$4([Optional('rangeService')], AggregationComp.prototype, \"rangeService\", void 0);\n __decorate$4([Autowired('valueService')], AggregationComp.prototype, \"valueService\", void 0);\n __decorate$4([Autowired('cellNavigationService')], AggregationComp.prototype, \"cellNavigationService\", void 0);\n __decorate$4([Autowired('rowRenderer')], AggregationComp.prototype, \"rowRenderer\", void 0);\n __decorate$4([Autowired('gridOptions')], AggregationComp.prototype, \"gridOptions\", void 0);\n __decorate$4([Autowired('gridApi')], AggregationComp.prototype, \"gridApi\", void 0);\n __decorate$4([Autowired('cellPositionUtils')], AggregationComp.prototype, \"cellPositionUtils\", void 0);\n __decorate$4([Autowired('rowPositionUtils')], AggregationComp.prototype, \"rowPositionUtils\", void 0);\n __decorate$4([RefSelector('sumAggregationComp')], AggregationComp.prototype, \"sumAggregationComp\", void 0);\n __decorate$4([RefSelector('countAggregationComp')], AggregationComp.prototype, \"countAggregationComp\", void 0);\n __decorate$4([RefSelector('minAggregationComp')], AggregationComp.prototype, \"minAggregationComp\", void 0);\n __decorate$4([RefSelector('maxAggregationComp')], AggregationComp.prototype, \"maxAggregationComp\", void 0);\n __decorate$4([RefSelector('avgAggregationComp')], AggregationComp.prototype, \"avgAggregationComp\", void 0);\n __decorate$4([PostConstruct], AggregationComp.prototype, \"postConstruct\", null);\n return AggregationComp;\n}(Component);\nvar StatusBarModule = {\n moduleName: ModuleNames.StatusBarModule,\n beans: [StatusBarService],\n agStackComponents: [{\n componentName: 'AgStatusBar',\n componentClass: StatusBar\n }, {\n componentName: 'AgNameValue',\n componentClass: NameValueComp\n }],\n userComponents: [{\n componentName: 'agAggregationComponent',\n componentClass: AggregationComp\n }, {\n componentName: 'agSelectedRowCountComponent',\n componentClass: SelectedRowsComp\n }, {\n componentName: 'agTotalRowCountComponent',\n componentClass: TotalRowsComp\n }, {\n componentName: 'agFilteredRowCountComponent',\n componentClass: FilteredRowsComp\n }, {\n componentName: 'agTotalAndFilteredRowCountComponent',\n componentClass: TotalAndFilteredRowsComp\n }],\n dependantModules: [EnterpriseCoreModule]\n};\nvar __extends$p = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$3 = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar ViewportRowModel = /** @class */function (_super) {\n __extends$p(ViewportRowModel, _super);\n function ViewportRowModel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // rowRenderer tells us these\n _this.firstRow = -1;\n _this.lastRow = -1;\n // datasource tells us this\n _this.rowCount = -1;\n _this.rowNodesByIndex = {};\n return _this;\n }\n // we don't implement as lazy row heights is not supported in this row model\n ViewportRowModel.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) {\n return false;\n };\n ViewportRowModel.prototype.init = function () {\n this.rowHeight = this.gridOptionsWrapper.getRowHeightAsNumber();\n this.addManagedListener(this.eventService, Events.EVENT_VIEWPORT_CHANGED, this.onViewportChanged.bind(this));\n };\n ViewportRowModel.prototype.start = function () {\n if (this.gridOptionsWrapper.getViewportDatasource()) {\n this.setViewportDatasource(this.gridOptionsWrapper.getViewportDatasource());\n }\n };\n ViewportRowModel.prototype.isLastRowIndexKnown = function () {\n return true;\n };\n ViewportRowModel.prototype.destroyDatasource = function () {\n if (!this.viewportDatasource) {\n return;\n }\n if (this.viewportDatasource.destroy) {\n this.viewportDatasource.destroy();\n }\n this.rowRenderer.datasourceChanged();\n this.firstRow = -1;\n this.lastRow = -1;\n };\n ViewportRowModel.prototype.calculateFirstRow = function (firstRenderedRow) {\n var bufferSize = this.gridOptionsWrapper.getViewportRowModelBufferSize();\n var pageSize = this.gridOptionsWrapper.getViewportRowModelPageSize();\n var afterBuffer = firstRenderedRow - bufferSize;\n if (afterBuffer < 0) {\n return 0;\n }\n return Math.floor(afterBuffer / pageSize) * pageSize;\n };\n ViewportRowModel.prototype.calculateLastRow = function (lastRenderedRow) {\n if (lastRenderedRow === -1) {\n return lastRenderedRow;\n }\n var bufferSize = this.gridOptionsWrapper.getViewportRowModelBufferSize();\n var pageSize = this.gridOptionsWrapper.getViewportRowModelPageSize();\n var afterBuffer = lastRenderedRow + bufferSize;\n var result = Math.ceil(afterBuffer / pageSize) * pageSize;\n var lastRowIndex = this.rowCount - 1;\n return Math.min(result, lastRowIndex);\n };\n ViewportRowModel.prototype.onViewportChanged = function (event) {\n var newFirst = this.calculateFirstRow(event.firstRow);\n var newLast = this.calculateLastRow(event.lastRow);\n if (this.firstRow !== newFirst || this.lastRow !== newLast) {\n this.firstRow = newFirst;\n this.lastRow = newLast;\n this.purgeRowsNotInViewport();\n if (this.viewportDatasource) {\n this.viewportDatasource.setViewportRange(this.firstRow, this.lastRow);\n }\n }\n };\n ViewportRowModel.prototype.purgeRowsNotInViewport = function () {\n var _this = this;\n Object.keys(this.rowNodesByIndex).forEach(function (indexStr) {\n var index = parseInt(indexStr, 10);\n if (index < _this.firstRow || index > _this.lastRow) {\n if (_this.isRowFocused(index)) {\n return;\n }\n delete _this.rowNodesByIndex[index];\n }\n });\n };\n ViewportRowModel.prototype.isRowFocused = function (rowIndex) {\n var focusedCell = this.focusService.getFocusCellToUseAfterRefresh();\n if (!focusedCell) {\n return false;\n }\n if (focusedCell.rowPinned != null) {\n return false;\n }\n var hasFocus = focusedCell.rowIndex === rowIndex;\n return hasFocus;\n };\n ViewportRowModel.prototype.setViewportDatasource = function (viewportDatasource) {\n this.destroyDatasource();\n this.viewportDatasource = viewportDatasource;\n this.rowCount = 0;\n if (!viewportDatasource.init) {\n console.warn('AG Grid: viewport is missing init method.');\n } else {\n viewportDatasource.init({\n setRowCount: this.setRowCount.bind(this),\n setRowData: this.setRowData.bind(this),\n getRow: this.getRow.bind(this)\n });\n }\n };\n ViewportRowModel.prototype.getType = function () {\n return Constants.ROW_MODEL_TYPE_VIEWPORT;\n };\n ViewportRowModel.prototype.getRow = function (rowIndex) {\n if (!this.rowNodesByIndex[rowIndex]) {\n this.rowNodesByIndex[rowIndex] = this.createBlankRowNode(rowIndex);\n }\n return this.rowNodesByIndex[rowIndex];\n };\n ViewportRowModel.prototype.getRowNode = function (id) {\n var result;\n this.forEachNode(function (rowNode) {\n if (rowNode.id === id) {\n result = rowNode;\n }\n });\n return result;\n };\n ViewportRowModel.prototype.getRowCount = function () {\n return this.rowCount;\n };\n ViewportRowModel.prototype.getRowIndexAtPixel = function (pixel) {\n if (this.rowHeight !== 0) {\n // avoid divide by zero error\n return Math.floor(pixel / this.rowHeight);\n }\n return 0;\n };\n ViewportRowModel.prototype.getRowBounds = function (index) {\n return {\n rowHeight: this.rowHeight,\n rowTop: this.rowHeight * index\n };\n };\n ViewportRowModel.prototype.getTopLevelRowCount = function () {\n return this.getRowCount();\n };\n ViewportRowModel.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {\n return topLevelIndex;\n };\n ViewportRowModel.prototype.isEmpty = function () {\n return this.rowCount > 0;\n };\n ViewportRowModel.prototype.isRowsToRender = function () {\n return this.rowCount > 0;\n };\n ViewportRowModel.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n var firstIndex = _.missing(firstInRange) ? 0 : firstInRange.rowIndex;\n var lastIndex = lastInRange.rowIndex;\n var firstNodeOutOfRange = firstIndex < this.firstRow || firstIndex > this.lastRow;\n var lastNodeOutOfRange = lastIndex < this.firstRow || lastIndex > this.lastRow;\n if (firstNodeOutOfRange || lastNodeOutOfRange) {\n return [];\n }\n var result = [];\n var startIndex = firstIndex <= lastIndex ? firstIndex : lastIndex;\n var endIndex = firstIndex <= lastIndex ? lastIndex : firstIndex;\n for (var i = startIndex; i <= endIndex; i++) {\n result.push(this.rowNodesByIndex[i]);\n }\n return result;\n };\n ViewportRowModel.prototype.forEachNode = function (callback) {\n var _this = this;\n var callbackCount = 0;\n Object.keys(this.rowNodesByIndex).forEach(function (indexStr) {\n var index = parseInt(indexStr, 10);\n var rowNode = _this.rowNodesByIndex[index];\n callback(rowNode, callbackCount);\n callbackCount++;\n });\n };\n ViewportRowModel.prototype.setRowData = function (rowData) {\n var _this = this;\n _.iterateObject(rowData, function (indexStr, dataItem) {\n var index = parseInt(indexStr, 10);\n // we should never keep rows that we didn't specifically ask for, this\n // guarantees the contract we have with the server.\n if (index >= _this.firstRow && index <= _this.lastRow) {\n var rowNode = _this.rowNodesByIndex[index];\n // the abnormal case is we requested a row even though the grid didn't need it\n // as a result of the paging and buffer (ie the row is off screen), in which\n // case we need to create a new node now\n if (_.missing(rowNode)) {\n rowNode = _this.createBlankRowNode(index);\n _this.rowNodesByIndex[index] = rowNode;\n }\n // now we deffo have a row node, so set in the details\n // if the grid already asked for this row (the normal case), then we would\n // of put a placeholder node in place.\n rowNode.setDataAndId(dataItem, index.toString());\n }\n });\n };\n ViewportRowModel.prototype.createBlankRowNode = function (rowIndex) {\n var rowNode = new RowNode(this.beans);\n rowNode.setRowHeight(this.rowHeight);\n rowNode.setRowTop(this.rowHeight * rowIndex);\n rowNode.setRowIndex(rowIndex);\n return rowNode;\n };\n ViewportRowModel.prototype.setRowCount = function (rowCount, keepRenderedRows) {\n if (keepRenderedRows === void 0) {\n keepRenderedRows = false;\n }\n if (rowCount === this.rowCount) {\n return;\n }\n this.rowCount = rowCount;\n var event = {\n type: Events.EVENT_MODEL_UPDATED,\n newData: false,\n newPage: false,\n keepRenderedRows: keepRenderedRows,\n animate: false\n };\n this.eventService.dispatchEvent(event);\n };\n ViewportRowModel.prototype.isRowPresent = function (rowNode) {\n var foundRowNode = this.getRowNode(rowNode.id);\n return !!foundRowNode;\n };\n __decorate$3([Autowired('rowRenderer')], ViewportRowModel.prototype, \"rowRenderer\", void 0);\n __decorate$3([Autowired('focusService')], ViewportRowModel.prototype, \"focusService\", void 0);\n __decorate$3([Autowired('beans')], ViewportRowModel.prototype, \"beans\", void 0);\n __decorate$3([PostConstruct], ViewportRowModel.prototype, \"init\", null);\n __decorate$3([PreDestroy], ViewportRowModel.prototype, \"destroyDatasource\", null);\n ViewportRowModel = __decorate$3([Bean('rowModel')], ViewportRowModel);\n return ViewportRowModel;\n}(BeanStub);\nvar ViewportRowModelModule = {\n moduleName: ModuleNames.ViewportRowModelModule,\n rowModels: {\n viewport: ViewportRowModel\n },\n dependantModules: [EnterpriseCoreModule]\n};\n\n// For small data structs like a bounding box, objects are superior to arrays\n// in terms of performance (by 3-4% in Chrome 71, Safari 12 and by 20% in Firefox 64).\n// They are also self descriptive and harder to abuse.\n// For example, one has to do:\n// `ctx.strokeRect(bbox.x, bbox.y, bbox.width, bbox.height);`\n// rather than become enticed by the much slower:\n// `ctx.strokeRect(...bbox);`\n// https://jsperf.com/array-vs-object-create-access\nvar BBox = /** @class */function () {\n function BBox(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n BBox.prototype.isValid = function () {\n return isFinite(this.x) && isFinite(this.y) && isFinite(this.width) && isFinite(this.height);\n };\n BBox.prototype.dilate = function (value) {\n this.x -= value;\n this.y -= value;\n this.width += value * 2;\n this.height += value * 2;\n };\n BBox.prototype.containsPoint = function (x, y) {\n return x >= this.x && x <= this.x + this.width && y >= this.y && y <= this.y + this.height;\n };\n BBox.prototype.render = function (ctx, params) {\n if (params === void 0) {\n params = BBox.noParams;\n }\n ctx.save();\n if (params.resetTransform) {\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n }\n ctx.strokeStyle = params.strokeStyle || 'cyan';\n ctx.lineWidth = params.lineWidth || 1;\n ctx.strokeRect(this.x, this.y, this.width, this.height);\n if (params.label) {\n ctx.fillStyle = params.fillStyle || 'black';\n ctx.textBaseline = 'bottom';\n ctx.fillText(params.label, this.x, this.y);\n }\n ctx.restore();\n };\n BBox.noParams = {};\n return BBox;\n}();\nvar __read$6 = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\n/**\n * As of Jan 8, 2019, Firefox still doesn't implement\n * `getTransform(): DOMMatrix;`\n * `setTransform(transform?: DOMMatrix2DInit)`\n * in the `CanvasRenderingContext2D`.\n * Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=928150\n * IE11 and Edge 44 also don't have the support.\n * Thus this class, to keep track of the current transform and\n * combine transformations.\n * Standards:\n * https://html.spec.whatwg.org/dev/canvas.html\n * https://www.w3.org/TR/geometry-1/\n */\nvar Matrix = /** @class */function () {\n function Matrix(elements) {\n if (elements === void 0) {\n elements = [1, 0, 0, 1, 0, 0];\n }\n this.elements = elements;\n }\n Matrix.prototype.setElements = function (elements) {\n var e = this.elements;\n // `this.elements = elements.slice()` is 4-5 times slower\n // (in Chrome 71 and FF 64) than manually copying elements,\n // since slicing allocates new memory.\n // The performance of passing parameters individually\n // vs as an array is about the same in both browsers, so we\n // go with a single (array of elements) parameter, because\n // `setElements(elements)` and `setElements([a, b, c, d, e, f])`\n // calls give us roughly the same performance, versus\n // `setElements(...elements)` and `setElements(a, b, c, d, e, f)`,\n // where the spread operator causes a 20-30x performance drop\n // (30x when compiled to ES5's `.apply(this, elements)`\n // 20x when used natively).\n e[0] = elements[0];\n e[1] = elements[1];\n e[2] = elements[2];\n e[3] = elements[3];\n e[4] = elements[4];\n e[5] = elements[5];\n return this;\n };\n Matrix.prototype.setIdentityElements = function () {\n var e = this.elements;\n e[0] = 1;\n e[1] = 0;\n e[2] = 0;\n e[3] = 1;\n e[4] = 0;\n e[5] = 0;\n return this;\n };\n Object.defineProperty(Matrix.prototype, \"identity\", {\n get: function () {\n var e = this.elements;\n return e[0] === 1 && e[1] === 0 && e[2] === 0 && e[3] === 1 && e[4] === 0 && e[5] === 0;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"a\", {\n get: function () {\n return this.elements[0];\n },\n set: function (value) {\n this.elements[0] = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"b\", {\n get: function () {\n return this.elements[1];\n },\n set: function (value) {\n this.elements[1] = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"c\", {\n get: function () {\n return this.elements[2];\n },\n set: function (value) {\n this.elements[2] = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"d\", {\n get: function () {\n return this.elements[3];\n },\n set: function (value) {\n this.elements[3] = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"e\", {\n get: function () {\n return this.elements[4];\n },\n set: function (value) {\n this.elements[4] = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"f\", {\n get: function () {\n return this.elements[5];\n },\n set: function (value) {\n this.elements[5] = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Performs the AxB matrix multiplication and saves the result\n * to `C`, if given, or to `A` otherwise.\n */\n Matrix.prototype.AxB = function (A, B, C) {\n var _a = __read$6(A, 6),\n m11 = _a[0],\n m12 = _a[1],\n m21 = _a[2],\n m22 = _a[3],\n m31 = _a[4],\n m32 = _a[5];\n var _b = __read$6(B, 6),\n o11 = _b[0],\n o12 = _b[1],\n o21 = _b[2],\n o22 = _b[3],\n o31 = _b[4],\n o32 = _b[5];\n C = C || A;\n C[0] = m11 * o11 + m21 * o12;\n C[1] = m12 * o11 + m22 * o12;\n C[2] = m11 * o21 + m21 * o22;\n C[3] = m12 * o21 + m22 * o22;\n C[4] = m11 * o31 + m21 * o32 + m31;\n C[5] = m12 * o31 + m22 * o32 + m32;\n };\n /**\n * The `other` matrix gets post-multiplied to the current matrix.\n * Returns the current matrix.\n * @param other\n */\n Matrix.prototype.multiplySelf = function (other) {\n this.AxB(this.elements, other.elements);\n return this;\n };\n /**\n * The `other` matrix gets post-multiplied to the current matrix.\n * Returns a new matrix.\n * @param other\n */\n Matrix.prototype.multiply = function (other) {\n var elements = new Array(6);\n this.AxB(this.elements, other.elements, elements);\n return new Matrix(elements);\n };\n Matrix.prototype.preMultiplySelf = function (other) {\n this.AxB(other.elements, this.elements, this.elements);\n return this;\n };\n /**\n * Returns the inverse of this matrix as a new matrix.\n */\n Matrix.prototype.inverse = function () {\n var _a = __read$6(this.elements, 6),\n a = _a[0],\n b = _a[1],\n c = _a[2],\n d = _a[3],\n e = _a[4],\n f = _a[5];\n var rD = 1 / (a * d - b * c); // reciprocal of determinant\n a *= rD;\n b *= rD;\n c *= rD;\n d *= rD;\n return new Matrix([d, -b, -c, a, c * f - d * e, b * e - a * f]);\n };\n /**\n * Save the inverse of this matrix to the given matrix.\n */\n Matrix.prototype.inverseTo = function (other) {\n var _a = __read$6(this.elements, 6),\n a = _a[0],\n b = _a[1],\n c = _a[2],\n d = _a[3],\n e = _a[4],\n f = _a[5];\n var rD = 1 / (a * d - b * c); // reciprocal of determinant\n a *= rD;\n b *= rD;\n c *= rD;\n d *= rD;\n other.setElements([d, -b, -c, a, c * f - d * e, b * e - a * f]);\n return this;\n };\n Matrix.prototype.invertSelf = function () {\n var elements = this.elements;\n var _a = __read$6(elements, 6),\n a = _a[0],\n b = _a[1],\n c = _a[2],\n d = _a[3],\n e = _a[4],\n f = _a[5];\n var rD = 1 / (a * d - b * c); // reciprocal of determinant\n a *= rD;\n b *= rD;\n c *= rD;\n d *= rD;\n elements[0] = d;\n elements[1] = -b;\n elements[2] = -c;\n elements[3] = a;\n elements[4] = c * f - d * e;\n elements[5] = b * e - a * f;\n return this;\n };\n Matrix.prototype.clone = function () {\n return new Matrix(this.elements.slice());\n };\n Matrix.prototype.transformPoint = function (x, y) {\n var e = this.elements;\n return {\n x: x * e[0] + y * e[2] + e[4],\n y: x * e[1] + y * e[3] + e[5]\n };\n };\n Matrix.prototype.transformBBox = function (bbox, radius, target) {\n if (radius === void 0) {\n radius = 0;\n }\n var elements = this.elements;\n var xx = elements[0];\n var xy = elements[1];\n var yx = elements[2];\n var yy = elements[3];\n var h_w = bbox.width * 0.5;\n var h_h = bbox.height * 0.5;\n var cx = bbox.x + h_w;\n var cy = bbox.y + h_h;\n var w, h;\n if (radius) {\n h_w -= radius;\n h_h -= radius;\n var sx = Math.sqrt(xx * xx + yx * yx);\n var sy = Math.sqrt(xy * xy + yy * yy);\n w = Math.abs(h_w * xx) + Math.abs(h_h * yx) + Math.abs(sx * radius);\n h = Math.abs(h_w * xy) + Math.abs(h_h * yy) + Math.abs(sy * radius);\n } else {\n w = Math.abs(h_w * xx) + Math.abs(h_h * yx);\n h = Math.abs(h_w * xy) + Math.abs(h_h * yy);\n }\n if (!target) {\n target = new BBox(0, 0, 0, 0);\n }\n target.x = cx * xx + cy * yx + elements[4] - w;\n target.y = cx * xy + cy * yy + elements[5] - h;\n target.width = w + w;\n target.height = h + h;\n return target;\n };\n Matrix.prototype.toContext = function (ctx) {\n // It's fair to say that matrix multiplications are not cheap.\n // However, updating path definitions on every frame isn't either, so\n // it may be cheaper to just translate paths. It's also fair to\n // say, that most paths will have to be re-rendered anyway, say\n // rectangle paths in a bar chart, where an animation would happen when\n // the data set changes and existing bars are morphed into new ones.\n // Or a pie chart, where old sectors are also morphed into new ones.\n // Same for the line chart. The only plausible case where translating\n // existing paths would be enough, is the scatter chart, where marker\n // icons, typically circles, stay the same size. But if circle radii\n // are bound to some data points, even circle paths would have to be\n // updated. And thus it makes sense to optimize for fewer matrix\n // transforms, where transform matrices of paths are mostly identity\n // matrices and `x`/`y`, `centerX`/`centerY` and similar properties\n // are used to define a path at specific coordinates. And only groups\n // are used to collectively apply a transform to a set of nodes.\n // If the matrix is mostly identity (95% of the time),\n // the `if (this.isIdentity)` check can make this call 3-4 times\n // faster on average: https://jsperf.com/matrix-check-first-vs-always-set\n if (this.identity) {\n return;\n }\n var e = this.elements;\n ctx.transform(e[0], e[1], e[2], e[3], e[4], e[5]);\n };\n Matrix.flyweight = function (elements) {\n if (elements) {\n if (elements instanceof Matrix) {\n Matrix.matrix.setElements(elements.elements);\n } else {\n Matrix.matrix.setElements(elements);\n }\n } else {\n Matrix.matrix.setIdentityElements();\n }\n return Matrix.matrix;\n };\n Matrix.matrix = new Matrix();\n return Matrix;\n}();\nfunction createId(instance) {\n var constructor = instance.constructor;\n var className = constructor.className;\n if (!className) {\n throw new Error(\"The \" + constructor + \" is missing the 'className' property.\");\n }\n return className + '-' + (constructor.id = (constructor.id || 0) + 1);\n}\nvar __read$5 = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar PointerEvents = /*#__PURE__*/function (PointerEvents) {\n PointerEvents[PointerEvents[\"All\"] = 0] = \"All\";\n PointerEvents[PointerEvents[\"None\"] = 1] = \"None\";\n return PointerEvents;\n}(PointerEvents || {});\n/**\n * Abstract scene graph node.\n * Each node can have zero or one parent and belong to zero or one scene.\n */\nvar Node = /** @class */function () {\n function Node() {\n /**\n * Unique node ID in the form `ClassName-NaturalNumber`.\n */\n this.id = createId(this);\n /**\n * Some number to identify this node, typically within a `Group` node.\n * Usually this will be some enum value used as a selector.\n */\n this.tag = NaN;\n /**\n * To simplify the type system (especially in Selections) we don't have the `Parent` node\n * (one that has children). Instead, we mimic HTML DOM, where any node can have children.\n * But we still need to distinguish regular leaf nodes from container leafs somehow.\n */\n this.isContainerNode = false;\n this._children = [];\n // Used to check for duplicate nodes.\n this.childSet = {}; // new Set()\n // These matrices may need to have package level visibility\n // for performance optimization purposes.\n this.matrix = new Matrix();\n this.inverseMatrix = new Matrix();\n this._dirtyTransform = false;\n this._scalingX = 1;\n this._scalingY = 1;\n /**\n * The center of scaling.\n * The default value of `null` means the scaling center will be\n * determined automatically, as the center of the bounding box\n * of a node.\n */\n this._scalingCenterX = null;\n this._scalingCenterY = null;\n this._rotationCenterX = null;\n this._rotationCenterY = null;\n /**\n * Rotation angle in radians.\n * The value is set as is. No normalization to the [-180, 180) or [0, 360)\n * interval is performed.\n */\n this._rotation = 0;\n this._translationX = 0;\n this._translationY = 0;\n /**\n * Each time a property of the node that effects how it renders changes\n * the `dirty` property of the node should be set to `true`. The change\n * to the `dirty` property of the node will propagate up to its parents\n * and eventually to the scene, at which point an animation frame callback\n * will be scheduled to rerender the scene and its nodes and reset the `dirty`\n * flags of all nodes and the {@link Scene._dirty | Scene} back to `false`.\n * Since changes to node properties are not rendered immediately, it's possible\n * to change as many properties on as many nodes as needed and the rendering\n * will still only happen once in the next animation frame callback.\n * The animation frame callback is only scheduled if it hasn't been already.\n */\n this._dirty = true;\n this._visible = true;\n this.pointerEvents = PointerEvents.All;\n }\n /**\n * This is meaningfully faster than `instanceof` and should be the preferred way\n * of checking inside loops.\n * @param node\n */\n Node.isNode = function (node) {\n return node ? node.matrix !== undefined : false;\n };\n Node.prototype._setScene = function (value) {\n this._scene = value;\n var children = this.children;\n var n = children.length;\n for (var i = 0; i < n; i++) {\n children[i]._setScene(value);\n }\n };\n Object.defineProperty(Node.prototype, \"scene\", {\n get: function () {\n return this._scene;\n },\n enumerable: true,\n configurable: true\n });\n Node.prototype._setParent = function (value) {\n this._parent = value;\n };\n Object.defineProperty(Node.prototype, \"parent\", {\n get: function () {\n return this._parent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"children\", {\n get: function () {\n return this._children;\n },\n enumerable: true,\n configurable: true\n });\n Node.prototype.countChildren = function (depth) {\n if (depth === void 0) {\n depth = Node.MAX_SAFE_INTEGER;\n }\n if (depth <= 0) {\n return 0;\n }\n var children = this.children;\n var n = children.length;\n var size = n;\n for (var i = 0; i < n; i++) {\n size += children[i].countChildren(depth - 1);\n }\n return size;\n };\n /**\n * Appends one or more new node instances to this parent.\n * If one needs to:\n * - move a child to the end of the list of children\n * - move a child from one parent to another (including parents in other scenes)\n * one should use the {@link insertBefore} method instead.\n * @param nodes A node or nodes to append.\n */\n Node.prototype.append = function (nodes) {\n // Passing a single parameter to an open-ended version of `append`\n // would be 30-35% slower than this.\n if (Node.isNode(nodes)) {\n nodes = [nodes];\n }\n // The function takes an array rather than having open-ended\n // arguments like `...nodes: Node[]` because the latter is\n // transpiled to a function where the `arguments` object\n // is copied to a temporary array inside a loop.\n // So an array is created either way. And if we already have\n // an array of nodes we want to add, we have to use the prohibitively\n // expensive spread operator to pass it to the function,\n // and, on top of that, the copy of the `arguments` is still made.\n var n = nodes.length;\n for (var i = 0; i < n; i++) {\n var node = nodes[i];\n if (node.parent) {\n throw new Error(node + \" already belongs to another parent: \" + node.parent + \".\");\n }\n if (node.scene) {\n throw new Error(node + \" already belongs a scene: \" + node.scene + \".\");\n }\n if (this.childSet[node.id]) {\n // Cast to `any` to avoid `Property 'name' does not exist on type 'Function'`.\n throw new Error(\"Duplicate \" + node.constructor.name + \" node: \" + node);\n }\n this._children.push(node);\n this.childSet[node.id] = true;\n node._setParent(this);\n node._setScene(this.scene);\n }\n this.dirty = true;\n };\n Node.prototype.appendChild = function (node) {\n if (node.parent) {\n throw new Error(node + \" already belongs to another parent: \" + node.parent + \".\");\n }\n if (node.scene) {\n throw new Error(node + \" already belongs to a scene: \" + node.scene + \".\");\n }\n if (this.childSet[node.id]) {\n // Cast to `any` to avoid `Property 'name' does not exist on type 'Function'`.\n throw new Error(\"Duplicate \" + node.constructor.name + \" node: \" + node);\n }\n this._children.push(node);\n this.childSet[node.id] = true;\n node._setParent(this);\n node._setScene(this.scene);\n this.dirty = true;\n return node;\n };\n Node.prototype.removeChild = function (node) {\n if (node.parent === this) {\n var i = this.children.indexOf(node);\n if (i >= 0) {\n this._children.splice(i, 1);\n delete this.childSet[node.id];\n node._setParent();\n node._setScene();\n this.dirty = true;\n return node;\n }\n }\n throw new Error(\"The node to be removed is not a child of this node.\");\n };\n /**\n * Inserts the node `node` before the existing child node `nextNode`.\n * If `nextNode` is null, insert `node` at the end of the list of children.\n * If the `node` belongs to another parent, it is first removed.\n * Returns the `node`.\n * @param node\n * @param nextNode\n */\n Node.prototype.insertBefore = function (node, nextNode) {\n var parent = node.parent;\n if (node.parent) {\n node.parent.removeChild(node);\n }\n if (nextNode && nextNode.parent === this) {\n var i = this.children.indexOf(nextNode);\n if (i >= 0) {\n this._children.splice(i, 0, node);\n this.childSet[node.id] = true;\n node._setParent(this);\n node._setScene(this.scene);\n } else {\n throw new Error(nextNode + \" has \" + parent + \" as the parent, \" + \"but is not in its list of children.\");\n }\n this.dirty = true;\n } else {\n this.append(node);\n }\n return node;\n };\n Object.defineProperty(Node.prototype, \"nextSibling\", {\n get: function () {\n var parent = this.parent;\n if (parent) {\n var children = parent.children;\n var index = children.indexOf(this);\n if (index >= 0 && index <= children.length - 1) {\n return children[index + 1];\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Node.prototype.transformPoint = function (x, y) {\n var matrix = Matrix.flyweight(this.matrix);\n var parent = this.parent;\n while (parent) {\n matrix.preMultiplySelf(parent.matrix);\n parent = parent.parent;\n }\n return matrix.invertSelf().transformPoint(x, y);\n };\n Node.prototype.inverseTransformPoint = function (x, y) {\n var matrix = Matrix.flyweight(this.matrix);\n var parent = this.parent;\n while (parent) {\n matrix.preMultiplySelf(parent.matrix);\n parent = parent.parent;\n }\n return matrix.transformPoint(x, y);\n };\n Object.defineProperty(Node.prototype, \"dirtyTransform\", {\n get: function () {\n return this._dirtyTransform;\n },\n set: function (value) {\n this._dirtyTransform = value;\n if (value) {\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"scalingX\", {\n get: function () {\n return this._scalingX;\n },\n set: function (value) {\n if (this._scalingX !== value) {\n this._scalingX = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"scalingY\", {\n get: function () {\n return this._scalingY;\n },\n set: function (value) {\n if (this._scalingY !== value) {\n this._scalingY = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"scalingCenterX\", {\n get: function () {\n return this._scalingCenterX;\n },\n set: function (value) {\n if (this._scalingCenterX !== value) {\n this._scalingCenterX = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"scalingCenterY\", {\n get: function () {\n return this._scalingCenterY;\n },\n set: function (value) {\n if (this._scalingCenterY !== value) {\n this._scalingCenterY = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"rotationCenterX\", {\n get: function () {\n return this._rotationCenterX;\n },\n set: function (value) {\n if (this._rotationCenterX !== value) {\n this._rotationCenterX = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"rotationCenterY\", {\n get: function () {\n return this._rotationCenterY;\n },\n set: function (value) {\n if (this._rotationCenterY !== value) {\n this._rotationCenterY = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"rotation\", {\n get: function () {\n return this._rotation;\n },\n set: function (value) {\n if (this._rotation !== value) {\n this._rotation = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"rotationDeg\", {\n get: function () {\n return this.rotation / Math.PI * 180;\n },\n /**\n * For performance reasons the rotation angle's internal representation\n * is in radians. Therefore, don't expect to get the same number you set.\n * Even with integer angles about a quarter of them from 0 to 359 cannot\n * be converted to radians and back without precision loss.\n * For example:\n *\n * node.rotationDeg = 11;\n * console.log(node.rotationDeg); // 10.999999999999998\n *\n * @param value Rotation angle in degrees.\n */\n set: function (value) {\n this.rotation = value / 180 * Math.PI;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"translationX\", {\n get: function () {\n return this._translationX;\n },\n set: function (value) {\n if (this._translationX !== value) {\n this._translationX = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"translationY\", {\n get: function () {\n return this._translationY;\n },\n set: function (value) {\n if (this._translationY !== value) {\n this._translationY = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Node.prototype.containsPoint = function (x, y) {\n return false;\n };\n /**\n * Hit testing method.\n * Recursively checks if the given point is inside this node or any of its children.\n * Returns the first matching node or `undefined`.\n * Nodes that render later (show on top) are hit tested first.\n * @param x\n * @param y\n */\n Node.prototype.pickNode = function (x, y) {\n if (!this.visible || this.pointerEvents === PointerEvents.None || !this.containsPoint(x, y)) {\n return;\n }\n var children = this.children;\n if (children.length) {\n // Nodes added later should be hit-tested first,\n // as they are rendered on top of the previously added nodes.\n for (var i = children.length - 1; i >= 0; i--) {\n var hit = children[i].pickNode(x, y);\n if (hit) {\n return hit;\n }\n }\n } else if (!this.isContainerNode) {\n // a leaf node, but not a container leaf\n return this;\n }\n };\n Node.prototype.computeBBox = function () {\n return;\n };\n Node.prototype.computeBBoxCenter = function () {\n var bbox = this.computeBBox && this.computeBBox();\n if (bbox) {\n return [bbox.x + bbox.width * 0.5, bbox.y + bbox.height * 0.5];\n }\n return [0, 0];\n };\n Node.prototype.computeTransformMatrix = function () {\n // TODO: transforms without center of scaling and rotation correspond directly\n // to `setAttribute('transform', 'translate(tx, ty) rotate(rDeg) scale(sx, sy)')`\n // in SVG. Our use cases will mostly require positioning elements (rects, circles)\n // within a group, rotating groups at right angles (e.g. for axis) and translating\n // groups. We shouldn't even need `scale(1, -1)` (invert vertically), since this\n // can be done using D3-like scales already by inverting the output range.\n // So for now, just assume that centers of scaling and rotation are at the origin.\n // const [bbcx, bbcy] = this.computeBBoxCenter();\n var _a = __read$5([0, 0], 2),\n bbcx = _a[0],\n bbcy = _a[1];\n var sx = this.scalingX;\n var sy = this.scalingY;\n var scx;\n var scy;\n if (sx === 1 && sy === 1) {\n scx = 0;\n scy = 0;\n } else {\n scx = this.scalingCenterX === null ? bbcx : this.scalingCenterX;\n scy = this.scalingCenterY === null ? bbcy : this.scalingCenterY;\n }\n var r = this.rotation;\n var cos = Math.cos(r);\n var sin = Math.sin(r);\n var rcx;\n var rcy;\n if (r === 0) {\n rcx = 0;\n rcy = 0;\n } else {\n rcx = this.rotationCenterX === null ? bbcx : this.rotationCenterX;\n rcy = this.rotationCenterY === null ? bbcy : this.rotationCenterY;\n }\n var tx = this.translationX;\n var ty = this.translationY;\n // The transform matrix `M` is a result of the following transformations:\n // 1) translate the center of scaling to the origin\n // 2) scale\n // 3) translate back\n // 4) translate the center of rotation to the origin\n // 5) rotate\n // 6) translate back\n // 7) translate\n // (7) (6) (5) (4) (3) (2) (1)\n // | 1 0 tx | | 1 0 rcx | | cos -sin 0 | | 1 0 -rcx | | 1 0 scx | | sx 0 0 | | 1 0 -scx |\n // M = | 0 1 ty | * | 0 1 rcy | * | sin cos 0 | * | 0 1 -rcy | * | 0 1 scy | * | 0 sy 0 | * | 0 1 -scy |\n // | 0 0 1 | | 0 0 1 | | 0 0 1 | | 0 0 1 | | 0 0 1 | | 0 0 0 | | 0 0 1 |\n // Translation after steps 1-4 above:\n var tx4 = scx * (1 - sx) - rcx;\n var ty4 = scy * (1 - sy) - rcy;\n this.dirtyTransform = false;\n this.matrix.setElements([cos * sx, sin * sx, -sin * sy, cos * sy, cos * tx4 - sin * ty4 + rcx + tx, sin * tx4 + cos * ty4 + rcy + ty]).inverseTo(this.inverseMatrix);\n };\n Object.defineProperty(Node.prototype, \"dirty\", {\n get: function () {\n return this._dirty;\n },\n set: function (value) {\n // TODO: check if we are already dirty (e.g. if (this._dirty !== value))\n // if we are, then all parents and the scene have been\n // notified already, and we are doing redundant work\n // (but test if this is indeed the case)\n this._dirty = value;\n if (value) {\n if (this.parent) {\n this.parent.dirty = true;\n } else if (this.scene) {\n this.scene.dirty = true;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"visible\", {\n get: function () {\n return this._visible;\n },\n set: function (value) {\n if (this._visible !== value) {\n this._visible = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Node.MAX_SAFE_INTEGER = Math.pow(2, 53) - 1; // Number.MAX_SAFE_INTEGER\n return Node;\n}();\nvar __extends$o = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar Group = /** @class */function (_super) {\n __extends$o(Group, _super);\n function Group() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.isContainerNode = true;\n _this._opacity = 1;\n return _this;\n }\n Object.defineProperty(Group.prototype, \"opacity\", {\n get: function () {\n return this._opacity;\n },\n set: function (value) {\n value = Math.min(1, Math.max(0, value));\n if (this._opacity !== value) {\n this._opacity = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n // We consider a group to be boundless, thus any point belongs to it.\n Group.prototype.containsPoint = function (x, y) {\n return true;\n };\n Group.prototype.computeBBox = function () {\n var left = Infinity;\n var right = -Infinity;\n var top = Infinity;\n var bottom = -Infinity;\n if (this.dirtyTransform) {\n this.computeTransformMatrix();\n }\n this.children.forEach(function (child) {\n if (!child.visible) {\n return;\n }\n var bbox = child.computeBBox();\n if (!bbox) {\n return;\n }\n if (!(child instanceof Group)) {\n if (child.dirtyTransform) {\n child.computeTransformMatrix();\n }\n var matrix = Matrix.flyweight(child.matrix);\n var parent_1 = child.parent;\n while (parent_1) {\n matrix.preMultiplySelf(parent_1.matrix);\n parent_1 = parent_1.parent;\n }\n matrix.transformBBox(bbox, 0, bbox);\n }\n var x = bbox.x;\n var y = bbox.y;\n if (x < left) {\n left = x;\n }\n if (y < top) {\n top = y;\n }\n if (x + bbox.width > right) {\n right = x + bbox.width;\n }\n if (y + bbox.height > bottom) {\n bottom = y + bbox.height;\n }\n });\n return new BBox(left, top, right - left, bottom - top);\n };\n Group.prototype.render = function (ctx) {\n // A group can have `scaling`, `rotation`, `translation` properties\n // that are applied to the canvas context before children are rendered,\n // so all children can be transformed at once.\n if (this.dirtyTransform) {\n this.computeTransformMatrix();\n }\n this.matrix.toContext(ctx);\n var children = this.children;\n var n = children.length;\n ctx.globalAlpha *= this.opacity;\n for (var i = 0; i < n; i++) {\n var child = children[i];\n if (child.visible) {\n ctx.save();\n child.render(ctx);\n ctx.restore();\n }\n }\n // debug\n // this.computeBBox().render(ctx, {\n // label: this.id,\n // resetTransform: true,\n // fillStyle: 'rgba(0, 0, 0, 0.5)'\n // });\n };\n Group.className = 'Group';\n return Group;\n}(Node);\n\n/**\n * Creates a new object with a `parent` as its prototype\n * and copies properties from the `child` into it.\n * @param parent\n * @param child\n */\nfunction chainObjects(parent, child) {\n var obj = Object.create(parent);\n for (var prop in child) {\n if (child.hasOwnProperty(prop)) {\n obj[prop] = child[prop];\n }\n }\n return obj;\n}\nvar __extends$n = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar Shape = /** @class */function (_super) {\n __extends$n(Shape, _super);\n function Shape() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.lastInstanceId = 0;\n _this._fillOpacity = 1;\n _this._strokeOpacity = 1;\n _this._fill = Shape.defaultStyles.fill;\n /**\n * Note that `strokeStyle = null` means invisible stroke,\n * while `lineWidth = 0` means no stroke, and sometimes this can mean different things.\n * For example, a rect shape with an invisible stroke may not align to the pixel grid\n * properly because the stroke affects the rules of alignment, and arc shapes forming\n * a pie chart will have a gap between them if they have an invisible stroke, whereas\n * there would be not gap if there was no stroke at all.\n * The preferred way of making the stroke invisible is setting the `lineWidth` to zero,\n * unless specific looks that is achieved by having an invisible stroke is desired.\n */\n _this._stroke = Shape.defaultStyles.stroke;\n _this._strokeWidth = Shape.defaultStyles.strokeWidth;\n _this._lineDash = Shape.defaultStyles.lineDash;\n _this._lineDashOffset = Shape.defaultStyles.lineDashOffset;\n _this._lineCap = Shape.defaultStyles.lineCap;\n _this._lineJoin = Shape.defaultStyles.lineJoin;\n _this._opacity = Shape.defaultStyles.opacity;\n _this.onShadowChange = function () {\n _this.dirty = true;\n };\n _this._fillShadow = Shape.defaultStyles.fillShadow;\n _this._strokeShadow = Shape.defaultStyles.strokeShadow;\n return _this;\n }\n /**\n * Creates a light-weight instance of the given shape (that serves as a template).\n * The created instance only stores the properites set on the instance itself\n * and the rest of the properties come via the prototype chain from the template.\n * This can greatly reduce memory usage in cases where one has many simular shapes,\n * for example, circles of different size, position and color. The exact memory usage\n * reduction will depend on the size of the template and the number of own properties\n * set on its lightweight instances, but will typically be around an order of magnitude\n * or more.\n *\n * Note: template shapes are not supposed to be part of the scene graph (they should not\n * have a parent).\n *\n * @param template\n */\n Shape.createInstance = function (template) {\n var shape = Object.create(template);\n shape._setParent(undefined);\n shape.id = template.id + '-Instance-' + String(++template.lastInstanceId);\n return shape;\n };\n /**\n * Restores the default styles introduced by this subclass.\n */\n Shape.prototype.restoreOwnStyles = function () {\n var styles = this.constructor.defaultStyles;\n var keys = Object.getOwnPropertyNames(styles);\n // getOwnPropertyNames is about 2.5 times faster than\n // for..in with the hasOwnProperty check and in this\n // case, where most properties are inherited, can be\n // more then an order of magnitude faster.\n for (var i = 0, n = keys.length; i < n; i++) {\n var key = keys[i];\n this[key] = styles[key];\n }\n };\n Shape.prototype.restoreAllStyles = function () {\n var styles = this.constructor.defaultStyles;\n for (var property in styles) {\n this[property] = styles[property];\n }\n };\n /**\n * Restores the base class default styles that have been overridden by this subclass.\n */\n Shape.prototype.restoreOverriddenStyles = function () {\n var styles = this.constructor.defaultStyles;\n var protoStyles = Object.getPrototypeOf(styles);\n for (var property in styles) {\n if (styles.hasOwnProperty(property) && protoStyles.hasOwnProperty(property)) {\n this[property] = styles[property];\n }\n }\n };\n Object.defineProperty(Shape.prototype, \"fillOpacity\", {\n get: function () {\n return this._fillOpacity;\n },\n set: function (value) {\n if (this._fillOpacity !== value) {\n this._fillOpacity = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"strokeOpacity\", {\n get: function () {\n return this._strokeOpacity;\n },\n set: function (value) {\n if (this._strokeOpacity !== value) {\n this._strokeOpacity = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"fill\", {\n get: function () {\n return this._fill;\n },\n set: function (value) {\n if (this._fill !== value) {\n this._fill = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"stroke\", {\n get: function () {\n return this._stroke;\n },\n set: function (value) {\n if (this._stroke !== value) {\n this._stroke = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"strokeWidth\", {\n get: function () {\n return this._strokeWidth;\n },\n set: function (value) {\n if (this._strokeWidth !== value) {\n this._strokeWidth = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"alignment\", {\n // An offset value to align to the pixel grid.\n get: function () {\n return Math.floor(this.strokeWidth) % 2 / 2;\n },\n enumerable: true,\n configurable: true\n });\n // Returns the aligned `start` or `length` value.\n // For example: `start` could be `y` and `length` could be `height` of a rectangle.\n Shape.prototype.align = function (alignment, start, length) {\n if (length != undefined) {\n return Math.floor(length) + Math.floor(start % 1 + length % 1);\n }\n return Math.floor(start) + alignment;\n };\n Object.defineProperty(Shape.prototype, \"lineDash\", {\n get: function () {\n return this._lineDash;\n },\n set: function (value) {\n var oldValue = this._lineDash;\n if (oldValue !== value) {\n if (oldValue && value && oldValue.length === value.length) {\n var identical = true;\n var n = value.length;\n for (var i = 0; i < n; i++) {\n if (oldValue[i] !== value[i]) {\n identical = false;\n break;\n }\n }\n if (identical) {\n return;\n }\n }\n this._lineDash = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"lineDashOffset\", {\n get: function () {\n return this._lineDashOffset;\n },\n set: function (value) {\n if (this._lineDashOffset !== value) {\n this._lineDashOffset = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"lineCap\", {\n get: function () {\n return this._lineCap;\n },\n set: function (value) {\n if (this._lineCap !== value) {\n this._lineCap = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"lineJoin\", {\n get: function () {\n return this._lineJoin;\n },\n set: function (value) {\n if (this._lineJoin !== value) {\n this._lineJoin = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"opacity\", {\n get: function () {\n return this._opacity;\n },\n set: function (value) {\n value = Math.min(1, Math.max(0, value));\n if (this._opacity !== value) {\n this._opacity = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"fillShadow\", {\n get: function () {\n return this._fillShadow;\n },\n set: function (value) {\n var oldValue = this._fillShadow;\n if (oldValue !== value) {\n if (oldValue) {\n oldValue.removeEventListener('change', this.onShadowChange);\n }\n if (value) {\n value.addEventListener('change', this.onShadowChange);\n }\n this._fillShadow = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"strokeShadow\", {\n get: function () {\n return this._strokeShadow;\n },\n set: function (value) {\n var oldValue = this._strokeShadow;\n if (oldValue !== value) {\n if (oldValue) {\n oldValue.removeEventListener('change', this.onShadowChange);\n }\n if (value) {\n value.addEventListener('change', this.onShadowChange);\n }\n this._strokeShadow = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Shape.prototype.fillStroke = function (ctx) {\n if (!this.scene) {\n return;\n }\n var pixelRatio = this.scene.canvas.pixelRatio || 1;\n var globalAlpha = ctx.globalAlpha;\n if (this.fill) {\n ctx.fillStyle = this.fill;\n ctx.globalAlpha = globalAlpha * this.opacity * this.fillOpacity;\n // The canvas context scaling (depends on the device's pixel ratio)\n // has no effect on shadows, so we have to account for the pixel ratio\n // manually here.\n var fillShadow = this.fillShadow;\n if (fillShadow && fillShadow.enabled) {\n ctx.shadowColor = fillShadow.color;\n ctx.shadowOffsetX = fillShadow.xOffset * pixelRatio;\n ctx.shadowOffsetY = fillShadow.yOffset * pixelRatio;\n ctx.shadowBlur = fillShadow.blur * pixelRatio;\n }\n ctx.fill();\n }\n ctx.shadowColor = 'rgba(0, 0, 0, 0)';\n if (this.stroke && this.strokeWidth) {\n ctx.strokeStyle = this.stroke;\n ctx.globalAlpha = globalAlpha * this.opacity * this.strokeOpacity;\n ctx.lineWidth = this.strokeWidth;\n if (this.lineDash) {\n ctx.setLineDash(this.lineDash);\n }\n if (this.lineDashOffset) {\n ctx.lineDashOffset = this.lineDashOffset;\n }\n if (this.lineCap) {\n ctx.lineCap = this.lineCap;\n }\n if (this.lineJoin) {\n ctx.lineJoin = this.lineJoin;\n }\n var strokeShadow = this.strokeShadow;\n if (strokeShadow && strokeShadow.enabled) {\n ctx.shadowColor = strokeShadow.color;\n ctx.shadowOffsetX = strokeShadow.xOffset * pixelRatio;\n ctx.shadowOffsetY = strokeShadow.yOffset * pixelRatio;\n ctx.shadowBlur = strokeShadow.blur * pixelRatio;\n }\n ctx.stroke();\n }\n };\n Shape.prototype.containsPoint = function (x, y) {\n return this.isPointInPath(x, y);\n };\n /**\n * Defaults for style properties. Note that properties that affect the position\n * and shape of the node are not considered style properties, for example:\n * `x`, `y`, `width`, `height`, `radius`, `rotation`, etc.\n * Can be used to reset to the original styling after some custom styling\n * has been applied (using the `restoreOwnStyles` and `restoreAllStyles` methods).\n * These static defaults are meant to be inherited by subclasses.\n */\n Shape.defaultStyles = chainObjects({}, {\n fill: 'black',\n stroke: undefined,\n strokeWidth: 0,\n lineDash: undefined,\n lineDashOffset: 0,\n lineCap: undefined,\n lineJoin: undefined,\n opacity: 1,\n fillShadow: undefined,\n strokeShadow: undefined\n });\n return Shape;\n}(Node);\n\n// @ts-ignore Suppress tsc error: Property 'sign' does not exist on type 'Math'\nvar sign = Math.sign ? Math.sign : function (x) {\n x = +x;\n if (x === 0 || isNaN(x)) {\n return x;\n }\n return x > 0 ? 1 : -1;\n};\n/**\n * Finds the roots of a parametric linear equation in `t`,\n * where `t` lies in the interval of `[0,1]`.\n */\nfunction linearRoot(a, b) {\n var t = -b / a;\n return a !== 0 && t >= 0 && t <= 1 ? [t] : [];\n}\n/**\n * Finds the roots of a parametric quadratic equation in `t`,\n * where `t` lies in the interval of `[0,1]`.\n */\nfunction quadraticRoots(a, b, c) {\n if (a === 0) {\n return linearRoot(b, c);\n }\n var D = b * b - 4 * a * c; // The polynomial's discriminant.\n var roots = [];\n if (D === 0) {\n // A single real root.\n var t = -b / (2 * a);\n if (t >= 0 && t <= 1) {\n roots.push(t);\n }\n } else if (D > 0) {\n // A pair of distinct real roots.\n var rD = Math.sqrt(D);\n var t1 = (-b - rD) / (2 * a);\n var t2 = (-b + rD) / (2 * a);\n if (t1 >= 0 && t1 <= 1) {\n roots.push(t1);\n }\n if (t2 >= 0 && t2 <= 1) {\n roots.push(t2);\n }\n }\n // else -> Complex roots.\n return roots;\n}\n/**\n * Finds the roots of a parametric cubic equation in `t`,\n * where `t` lies in the interval of `[0,1]`.\n * Returns an array of parametric intersection locations along the cubic,\n * excluding out-of-bounds intersections (before or after the end point\n * or in the imaginary plane).\n * An adaptation of http://www.particleincell.com/blog/2013/cubic-line-intersection/\n */\nfunction cubicRoots(a, b, c, d) {\n if (a === 0) {\n return quadraticRoots(b, c, d);\n }\n var A = b / a;\n var B = c / a;\n var C = d / a;\n var Q = (3 * B - A * A) / 9;\n var R = (9 * A * B - 27 * C - 2 * A * A * A) / 54;\n var D = Q * Q * Q + R * R; // The polynomial's discriminant.\n var third = 1 / 3;\n var roots = [];\n if (D >= 0) {\n // Complex or duplicate roots.\n var rD = Math.sqrt(D);\n var S = sign(R + rD) * Math.pow(Math.abs(R + rD), third);\n var T = sign(R - rD) * Math.pow(Math.abs(R - rD), third);\n var Im = Math.abs(Math.sqrt(3) * (S - T) / 2); // Complex part of the root pair.\n var t = -third * A + (S + T); // A real root.\n if (t >= 0 && t <= 1) {\n roots.push(t);\n }\n if (Im === 0) {\n var t_1 = -third * A - (S + T) / 2; // The real part of a complex root.\n if (t_1 >= 0 && t_1 <= 1) {\n roots.push(t_1);\n }\n }\n } else {\n // Distinct real roots.\n var theta = Math.acos(R / Math.sqrt(-Q * Q * Q));\n var thirdA = third * A;\n var twoSqrtQ = 2 * Math.sqrt(-Q);\n var t1 = twoSqrtQ * Math.cos(third * theta) - thirdA;\n var t2 = twoSqrtQ * Math.cos(third * (theta + 2 * Math.PI)) - thirdA;\n var t3 = twoSqrtQ * Math.cos(third * (theta + 4 * Math.PI)) - thirdA;\n if (t1 >= 0 && t1 <= 1) {\n roots.push(t1);\n }\n if (t2 >= 0 && t2 <= 1) {\n roots.push(t2);\n }\n if (t3 >= 0 && t3 <= 1) {\n roots.push(t3);\n }\n }\n return roots;\n}\n\n/**\n * Returns the intersection point for the given pair of line segments, or null,\n * if the segments are parallel or don't intersect.\n * Based on http://paulbourke.net/geometry/pointlineplane/\n */\nfunction segmentIntersection(ax1, ay1, ax2, ay2, bx1, by1, bx2, by2) {\n var d = (ax2 - ax1) * (by2 - by1) - (ay2 - ay1) * (bx2 - bx1);\n if (d === 0) {\n // The lines are parallel.\n return null;\n }\n var ua = ((bx2 - bx1) * (ay1 - by1) - (ax1 - bx1) * (by2 - by1)) / d;\n var ub = ((ax2 - ax1) * (ay1 - by1) - (ay2 - ay1) * (ax1 - bx1)) / d;\n if (ua >= 0 && ua <= 1 && ub >= 0 && ub <= 1) {\n return {\n x: ax1 + ua * (ax2 - ax1),\n y: ay1 + ua * (ay2 - ay1)\n };\n }\n return null; // The intersection point is outside either or both segments.\n}\n/**\n * Returns intersection points of the given cubic curve and the line segment.\n * Takes in x/y components of cubic control points and line segment start/end points\n * as parameters.\n */\nfunction cubicSegmentIntersections(px1, py1, px2, py2, px3, py3, px4, py4, x1, y1, x2, y2) {\n var intersections = [];\n // Find line equation coefficients.\n var A = y1 - y2;\n var B = x2 - x1;\n var C = x1 * (y2 - y1) - y1 * (x2 - x1);\n // Find cubic Bezier curve equation coefficients from control points.\n var bx = bezierCoefficients(px1, px2, px3, px4);\n var by = bezierCoefficients(py1, py2, py3, py4);\n var a = A * bx[0] + B * by[0]; // t^3\n var b = A * bx[1] + B * by[1]; // t^2\n var c = A * bx[2] + B * by[2]; // t\n var d = A * bx[3] + B * by[3] + C; // 1\n var roots = cubicRoots(a, b, c, d);\n // Verify that the roots are within bounds of the linear segment.\n for (var i = 0; i < roots.length; i++) {\n var t = roots[i];\n var tt = t * t;\n var ttt = t * tt;\n // Find the cartesian plane coordinates for the parametric root `t`.\n var x = bx[0] * ttt + bx[1] * tt + bx[2] * t + bx[3];\n var y = by[0] * ttt + by[1] * tt + by[2] * t + by[3];\n // The parametric cubic roots we found are intersection points\n // with an infinite line, and so the x/y coordinates above are as well.\n // Make sure the x/y is also within the bounds of the given segment.\n var s = void 0;\n if (x1 !== x2) {\n s = (x - x1) / (x2 - x1);\n } else {\n // the line is vertical\n s = (y - y1) / (y2 - y1);\n }\n if (s >= 0 && s <= 1) {\n intersections.push({\n x: x,\n y: y\n });\n }\n }\n return intersections;\n}\n/**\n * Returns the given coordinates vector multiplied by the coefficient matrix\n * of the parametric cubic Bézier equation.\n */\nfunction bezierCoefficients(P1, P2, P3, P4) {\n return [-P1 + 3 * P2 - 3 * P3 + P4, 3 * P1 - 6 * P2 + 3 * P3, -3 * P1 + 3 * P2, P1 // | 1 0 0 0| |P4|\n ];\n}\nvar Path2D = /** @class */function () {\n function Path2D() {\n // The methods of this class will likely be called many times per animation frame,\n // and any allocation can trigger a GC cycle during animation, so we attempt\n // to minimize the number of allocations.\n this.commands = [];\n this.params = [];\n this._closedPath = false;\n }\n Path2D.prototype.moveTo = function (x, y) {\n if (this.xy) {\n this.xy[0] = x;\n this.xy[1] = y;\n } else {\n this.xy = [x, y];\n }\n this.commands.push('M');\n this.params.push(x, y);\n };\n Path2D.prototype.lineTo = function (x, y) {\n if (this.xy) {\n this.commands.push('L');\n this.params.push(x, y);\n this.xy[0] = x;\n this.xy[1] = y;\n } else {\n this.moveTo(x, y);\n }\n };\n Path2D.prototype.rect = function (x, y, width, height) {\n this.moveTo(x, y);\n this.lineTo(x + width, y);\n this.lineTo(x + width, y + height);\n this.lineTo(x, y + height);\n this.closePath();\n };\n /**\n * Adds an arc segment to the path definition.\n * https://www.w3.org/TR/SVG11/paths.html#PathDataEllipticalArcCommands\n * @param rx The major-axis radius.\n * @param ry The minor-axis radius.\n * @param rotation The x-axis rotation, expressed in radians.\n * @param fA The large arc flag. `1` to use angle > π.\n * @param fS The sweep flag. `1` for the arc that goes to `x`/`y` clockwise.\n * @param x2 The x coordinate to arc to.\n * @param y2 The y coordinate to arc to.\n */\n Path2D.prototype.arcTo = function (rx, ry, rotation, fA, fS, x2, y2) {\n // Convert from endpoint to center parametrization:\n // https://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes\n var xy = this.xy;\n if (!xy) {\n return;\n }\n if (rx < 0) {\n rx = -rx;\n }\n if (ry < 0) {\n ry = -ry;\n }\n var x1 = xy[0];\n var y1 = xy[1];\n var hdx = (x1 - x2) / 2;\n var hdy = (y1 - y2) / 2;\n var sinPhi = Math.sin(rotation);\n var cosPhi = Math.cos(rotation);\n var xp = cosPhi * hdx + sinPhi * hdy;\n var yp = -sinPhi * hdx + cosPhi * hdy;\n var ratX = xp / rx;\n var ratY = yp / ry;\n var lambda = ratX * ratX + ratY * ratY;\n var cx = (x1 + x2) / 2;\n var cy = (y1 + y2) / 2;\n var cpx = 0;\n var cpy = 0;\n if (lambda >= 1) {\n lambda = Math.sqrt(lambda);\n rx *= lambda;\n ry *= lambda;\n // me gives lambda == cpx == cpy == 0;\n } else {\n lambda = Math.sqrt(1 / lambda - 1);\n if (fA === fS) {\n lambda = -lambda;\n }\n cpx = lambda * rx * ratY;\n cpy = -lambda * ry * ratX;\n cx += cosPhi * cpx - sinPhi * cpy;\n cy += sinPhi * cpx + cosPhi * cpy;\n }\n var theta1 = Math.atan2((yp - cpy) / ry, (xp - cpx) / rx);\n var deltaTheta = Math.atan2((-yp - cpy) / ry, (-xp - cpx) / rx) - theta1;\n // if (fS) {\n // if (deltaTheta <= 0) {\n // deltaTheta += Math.PI * 2;\n // }\n // }\n // else {\n // if (deltaTheta >= 0) {\n // deltaTheta -= Math.PI * 2;\n // }\n // }\n this.cubicArc(cx, cy, rx, ry, rotation, theta1, theta1 + deltaTheta, 1 - fS);\n };\n /**\n * Approximates an elliptical arc with up to four cubic Bézier curves.\n * @param commands The string array to write SVG command letters to.\n * @param params The number array to write SVG command parameters (cubic control points) to.\n * @param cx The x-axis coordinate for the ellipse's center.\n * @param cy The y-axis coordinate for the ellipse's center.\n * @param rx The ellipse's major-axis radius.\n * @param ry The ellipse's minor-axis radius.\n * @param phi The rotation for this ellipse, expressed in radians.\n * @param theta1 The starting angle, measured clockwise from the positive x-axis and expressed in radians.\n * @param theta2 The ending angle, measured clockwise from the positive x-axis and expressed in radians.\n * @param anticlockwise The arc control points are always placed clockwise from `theta1` to `theta2`,\n * even when `theta1 > theta2`, unless this flag is set to `1`.\n */\n Path2D.cubicArc = function (commands, params, cx, cy, rx, ry, phi, theta1, theta2, anticlockwise) {\n if (anticlockwise) {\n var temp = theta1;\n theta1 = theta2;\n theta2 = temp;\n }\n var start = params.length;\n // See https://pomax.github.io/bezierinfo/#circles_cubic\n // Arc of unit circle (start angle = 0, end angle <= π/2) in cubic Bézier coordinates:\n // S = [1, 0]\n // C1 = [1, f]\n // C2 = [cos(θ) + f * sin(θ), sin(θ) - f * cos(θ)]\n // E = [cos(θ), sin(θ)]\n // f = 4/3 * tan(θ/4)\n var f90 = 0.5522847498307935; // f for θ = π/2 is 4/3 * (Math.sqrt(2) - 1)\n var sinTheta1 = Math.sin(theta1);\n var cosTheta1 = Math.cos(theta1);\n var sinPhi = Math.sin(phi);\n var cosPhi = Math.cos(phi);\n var rightAngle = Math.PI / 2;\n // Since we know how to draw an arc of a unit circle with a cubic Bézier,\n // to draw an elliptical arc with arbitrary rotation and radii we:\n // 1) rotate the Bézier coordinates that represent a circular arc by θ\n // 2) scale the circular arc separately along the x/y axes, making it elliptical\n // 3) rotate elliptical arc by φ\n // |cos(φ) -sin(φ)| |sx 0| |cos(θ) -sin(θ)| -> |xx xy|\n // |sin(φ) cos(φ)| | 0 sy| |sin(θ) cos(θ)| -> |yx yy|\n var xx = cosPhi * cosTheta1 * rx - sinPhi * sinTheta1 * ry;\n var yx = sinPhi * cosTheta1 * rx + cosPhi * sinTheta1 * ry;\n var xy = -cosPhi * sinTheta1 * rx - sinPhi * cosTheta1 * ry;\n var yy = -sinPhi * sinTheta1 * rx + cosPhi * cosTheta1 * ry;\n // TODO: what if delta between θ1 and θ2 is greater than 2π?\n // Always draw clockwise from θ1 to θ2.\n theta2 -= theta1;\n if (theta2 < 0) {\n theta2 += Math.PI * 2;\n }\n // Multiplying each point [x, y] by:\n // |xx xy cx| |x|\n // |yx yy cy| |y|\n // | 0 0 1| |1|\n // TODO: This move command may be redundant, if we are already at this point.\n // The coordinates of the point calculated here may differ ever so slightly\n // because of precision error.\n commands.push('M');\n params.push(xx + cx, yx + cy);\n while (theta2 >= rightAngle) {\n theta2 -= rightAngle;\n commands.push('C');\n // Temp workaround for https://bugs.chromium.org/p/chromium/issues/detail?id=993330\n // Revert this commit when fixed ^^.\n var lastX = xy + cx;\n params.push(xx + xy * f90 + cx, yx + yy * f90 + cy, xx * f90 + xy + cx, yx * f90 + yy + cy, Math.abs(lastX) < 1e-8 ? 0 : lastX, yy + cy);\n // Prepend π/2 rotation matrix.\n // |xx xy| | 0 1| -> | xy -xx|\n // |yx yy| |-1 0| -> | yy -yx|\n // [xx, yx, xy, yy] = [xy, yy, -xx, -yx];\n // Compared to swapping with a temp variable, destructuring is:\n // - 10% faster in Chrome 70\n // - 99% slower in Firefox 63\n // Temp variable solution is 45% faster in FF than Chrome.\n // https://jsperf.com/multi-swap\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1165569\n var temp = xx;\n xx = xy;\n xy = -temp;\n temp = yx;\n yx = yy;\n yy = -temp;\n }\n if (theta2) {\n var f = 4 / 3 * Math.tan(theta2 / 4);\n var sinPhi2 = Math.sin(theta2);\n var cosPhi2 = Math.cos(theta2);\n var C2x = cosPhi2 + f * sinPhi2;\n var C2y = sinPhi2 - f * cosPhi2;\n commands.push('C');\n // Temp workaround for https://bugs.chromium.org/p/chromium/issues/detail?id=993330\n // Revert this commit when fixed ^^.\n var lastX = xx * cosPhi2 + xy * sinPhi2 + cx;\n params.push(xx + xy * f + cx, yx + yy * f + cy, xx * C2x + xy * C2y + cx, yx * C2x + yy * C2y + cy, Math.abs(lastX) < 1e-8 ? 0 : lastX, yx * cosPhi2 + yy * sinPhi2 + cy);\n }\n if (anticlockwise) {\n for (var i = start, j = params.length - 2; i < j; i += 2, j -= 2) {\n var temp = params[i];\n params[i] = params[j];\n params[j] = temp;\n temp = params[i + 1];\n params[i + 1] = params[j + 1];\n params[j + 1] = temp;\n }\n }\n };\n Path2D.prototype.cubicArc = function (cx, cy, rx, ry, phi, theta1, theta2, anticlockwise) {\n var commands = this.commands;\n var params = this.params;\n var start = commands.length;\n Path2D.cubicArc(commands, params, cx, cy, rx, ry, phi, theta1, theta2, anticlockwise);\n var x = params[params.length - 2];\n var y = params[params.length - 1];\n if (this.xy) {\n commands[start] = 'L';\n this.xy[0] = x;\n this.xy[1] = y;\n } else {\n this.xy = [x, y];\n }\n };\n /**\n * Returns the `[x, y]` coordinates of the curve at `t`.\n * @param points `(n + 1) * 2` control point coordinates for a Bézier curve of n-th order.\n * @param t\n */\n Path2D.prototype.deCasteljau = function (points, t) {\n var n = points.length;\n if (n < 2 || n % 2 === 1) {\n throw new Error('Fewer than two points or not an even count.');\n } else if (n === 2 || t === 0) {\n return points.slice(0, 2);\n } else if (t === 1) {\n return points.slice(-2);\n } else {\n var newPoints = [];\n var last = n - 2;\n for (var i = 0; i < last; i += 2) {\n newPoints.push((1 - t) * points[i] + t * points[i + 2],\n // x\n (1 - t) * points[i + 1] + t * points[i + 3] // y\n );\n }\n return this.deCasteljau(newPoints, t);\n }\n };\n /**\n * Approximates the given curve using `n` line segments.\n * @param points `(n + 1) * 2` control point coordinates for a Bézier curve of n-th order.\n * @param n\n */\n Path2D.prototype.approximateCurve = function (points, n) {\n var xy = this.deCasteljau(points, 0);\n this.moveTo(xy[0], xy[1]);\n var step = 1 / n;\n for (var t = step; t <= 1; t += step) {\n var xy_1 = this.deCasteljau(points, t);\n this.lineTo(xy_1[0], xy_1[1]);\n }\n };\n /**\n * Adds a quadratic curve segment to the path definition.\n * Note: the given quadratic segment is converted and stored as a cubic one.\n * @param cx x-component of the curve's control point\n * @param cy y-component of the curve's control point\n * @param x x-component of the end point\n * @param y y-component of the end point\n */\n Path2D.prototype.quadraticCurveTo = function (cx, cy, x, y) {\n if (!this.xy) {\n this.moveTo(cx, cy);\n }\n // See https://pomax.github.io/bezierinfo/#reordering\n this.cubicCurveTo((this.xy[0] + 2 * cx) / 3, (this.xy[1] + 2 * cy) / 3,\n // 1/3 start + 2/3 control\n (2 * cx + x) / 3, (2 * cy + y) / 3,\n // 2/3 control + 1/3 end\n x, y);\n };\n Path2D.prototype.cubicCurveTo = function (cx1, cy1, cx2, cy2, x, y) {\n if (!this.xy) {\n this.moveTo(cx1, cy1);\n }\n this.commands.push('C');\n this.params.push(cx1, cy1, cx2, cy2, x, y);\n this.xy[0] = x;\n this.xy[1] = y;\n };\n Object.defineProperty(Path2D.prototype, \"closedPath\", {\n get: function () {\n return this._closedPath;\n },\n enumerable: true,\n configurable: true\n });\n Path2D.prototype.closePath = function () {\n if (this.xy) {\n this.xy = undefined;\n this.commands.push('Z');\n this._closedPath = true;\n }\n };\n Path2D.prototype.clear = function () {\n this.commands.length = 0;\n this.params.length = 0;\n this.xy = undefined;\n this._closedPath = false;\n };\n Path2D.prototype.isPointInPath = function (x, y) {\n var commands = this.commands;\n var params = this.params;\n var cn = commands.length;\n // Hit testing using ray casting method, where the ray's origin is some point\n // outside the path. In this case, an offscreen point that is remote enough, so that\n // even if the path itself is large and is partially offscreen, the ray's origin\n // will likely be outside the path anyway. To test if the given point is inside the\n // path or not, we cast a ray from the origin to the given point and check the number\n // of intersections of this segment with the path. If the number of intersections is\n // even, then the ray both entered and exited the path an equal number of times,\n // therefore the point is outside the path, and inside the path, if the number of\n // intersections is odd. Since the path is compound, we check if the ray segment\n // intersects with each of the path's segments, which can be either a line segment\n // (one or no intersection points) or a Bézier curve segment (up to 3 intersection\n // points).\n var ox = -10000;\n var oy = -10000;\n // the starting point of the current path\n var sx = NaN;\n var sy = NaN;\n // the previous point of the current path\n var px = 0;\n var py = 0;\n var intersectionCount = 0;\n for (var ci = 0, pi = 0; ci < cn; ci++) {\n switch (commands[ci]) {\n case 'M':\n if (!isNaN(sx)) {\n if (segmentIntersection(sx, sy, px, py, ox, oy, x, y)) {\n intersectionCount++;\n }\n }\n sx = px = params[pi++];\n sy = py = params[pi++];\n break;\n case 'L':\n if (segmentIntersection(px, py, px = params[pi++], py = params[pi++], ox, oy, x, y)) {\n intersectionCount++;\n }\n break;\n case 'C':\n intersectionCount += cubicSegmentIntersections(px, py, params[pi++], params[pi++], params[pi++], params[pi++], px = params[pi++], py = params[pi++], ox, oy, x, y).length;\n break;\n case 'Z':\n if (!isNaN(sx)) {\n if (segmentIntersection(sx, sy, px, py, ox, oy, x, y)) {\n intersectionCount++;\n }\n }\n break;\n }\n }\n return intersectionCount % 2 === 1;\n };\n Path2D.fromString = function (value) {\n var path = new Path2D();\n path.setFromString(value);\n return path;\n };\n /**\n * Split the SVG path at command letters,\n * then extract the command letter and parameters from each substring.\n * @param value\n */\n Path2D.parseSvgPath = function (value) {\n return value.trim().split(Path2D.splitCommandsRe).map(function (part) {\n var strParams = part.match(Path2D.matchParamsRe);\n return {\n command: part.substr(0, 1),\n params: strParams ? strParams.map(parseFloat) : []\n };\n });\n };\n Path2D.prettifySvgPath = function (value) {\n return Path2D.parseSvgPath(value).map(function (d) {\n return d.command + d.params.join(',');\n }).join('\\n');\n };\n /**\n * See https://www.w3.org/TR/SVG11/paths.html\n * @param value\n */\n Path2D.prototype.setFromString = function (value) {\n var _this = this;\n this.clear();\n var parts = Path2D.parseSvgPath(value);\n // Current point.\n var x;\n var y;\n // Last control point. Used to calculate the reflection point\n // for `S`, `s`, `T`, `t` commands.\n var cpx;\n var cpy;\n var lastCommand;\n function checkQuadraticCP() {\n if (!lastCommand.match(Path2D.quadraticCommandRe)) {\n cpx = x;\n cpy = y;\n }\n }\n function checkCubicCP() {\n if (!lastCommand.match(Path2D.cubicCommandRe)) {\n cpx = x;\n cpy = y;\n }\n }\n // But that will make compiler complain about x/y, cpx/cpy\n // being used without being set first.\n parts.forEach(function (part) {\n var p = part.params;\n var n = p.length;\n var i = 0;\n switch (part.command) {\n case 'M':\n _this.moveTo(x = p[i++], y = p[i++]);\n while (i < n) {\n _this.lineTo(x = p[i++], y = p[i++]);\n }\n break;\n case 'm':\n _this.moveTo(x += p[i++], y += p[i++]);\n while (i < n) {\n _this.lineTo(x += p[i++], y += p[i++]);\n }\n break;\n case 'L':\n while (i < n) {\n _this.lineTo(x = p[i++], y = p[i++]);\n }\n break;\n case 'l':\n while (i < n) {\n _this.lineTo(x += p[i++], y += p[i++]);\n }\n break;\n case 'C':\n while (i < n) {\n _this.cubicCurveTo(p[i++], p[i++], cpx = p[i++], cpy = p[i++], x = p[i++], y = p[i++]);\n }\n break;\n case 'c':\n while (i < n) {\n _this.cubicCurveTo(x + p[i++], y + p[i++], cpx = x + p[i++], cpy = y + p[i++], x += p[i++], y += p[i++]);\n }\n break;\n case 'S':\n checkCubicCP();\n while (i < n) {\n _this.cubicCurveTo(x + x - cpx, y + y - cpy, cpx = p[i++], cpy = p[i++], x = p[i++], y = p[i++]);\n }\n break;\n case 's':\n checkCubicCP();\n while (i < n) {\n _this.cubicCurveTo(x + x - cpx, y + y - cpy, cpx = x + p[i++], cpy = y + p[i++], x += p[i++], y += p[i++]);\n }\n break;\n case 'Q':\n while (i < n) {\n _this.quadraticCurveTo(cpx = p[i++], cpy = p[i++], x = p[i++], y = p[i++]);\n }\n break;\n case 'q':\n while (i < n) {\n _this.quadraticCurveTo(cpx = x + p[i++], cpy = y + p[i++], x += p[i++], y += p[i++]);\n }\n break;\n case 'T':\n checkQuadraticCP();\n while (i < n) {\n _this.quadraticCurveTo(cpx = x + x - cpx, cpy = y + y - cpy, x = p[i++], y = p[i++]);\n }\n break;\n case 't':\n checkQuadraticCP();\n while (i < n) {\n _this.quadraticCurveTo(cpx = x + x - cpx, cpy = y + y - cpy, x += p[i++], y += p[i++]);\n }\n break;\n case 'A':\n while (i < n) {\n _this.arcTo(p[i++], p[i++], p[i++] * Math.PI / 180, p[i++], p[i++], x = p[i++], y = p[i++]);\n }\n break;\n case 'a':\n while (i < n) {\n _this.arcTo(p[i++], p[i++], p[i++] * Math.PI / 180, p[i++], p[i++], x += p[i++], y += p[i++]);\n }\n break;\n case 'Z':\n case 'z':\n _this.closePath();\n break;\n case 'H':\n while (i < n) {\n _this.lineTo(x = p[i++], y);\n }\n break;\n case 'h':\n while (i < n) {\n _this.lineTo(x += p[i++], y);\n }\n break;\n case 'V':\n while (i < n) {\n _this.lineTo(x, y = p[i++]);\n }\n break;\n case 'v':\n while (i < n) {\n _this.lineTo(x, y += p[i++]);\n }\n break;\n }\n lastCommand = part.command;\n });\n };\n Path2D.prototype.toString = function () {\n var c = this.commands;\n var p = this.params;\n var cn = c.length;\n var out = [];\n for (var ci = 0, pi = 0; ci < cn; ci++) {\n switch (c[ci]) {\n case 'M':\n out.push('M' + p[pi++] + ',' + p[pi++]);\n break;\n case 'L':\n out.push('L' + p[pi++] + ',' + p[pi++]);\n break;\n case 'C':\n out.push('C' + p[pi++] + ',' + p[pi++] + ' ' + p[pi++] + ',' + p[pi++] + ' ' + p[pi++] + ',' + p[pi++]);\n break;\n case 'Z':\n out.push('Z');\n break;\n }\n }\n return out.join('');\n };\n Path2D.prototype.toPrettyString = function () {\n return Path2D.prettifySvgPath(this.toString());\n };\n Path2D.prototype.toSvg = function () {\n return Path2D.xmlDeclaration + \"\\n\\n \\n\";\n };\n Path2D.prototype.toDebugSvg = function () {\n var d = Path2D.prettifySvgPath(this.toString());\n return Path2D.xmlDeclaration + \"\\n\\n \\n\";\n };\n /**\n * Returns an array of sub-paths of this Path,\n * where each sub-path is represented exclusively by cubic segments.\n */\n Path2D.prototype.toCubicPaths = function () {\n // Each sub-path is an array of `(n * 3 + 1) * 2` numbers,\n // where `n` is the number of segments.\n var paths = [];\n var params = this.params;\n // current path\n var path;\n // the starting point of the current path\n var sx;\n var sy;\n // the previous point of the current path\n var px;\n var py;\n var i = 0; // current parameter\n this.commands.forEach(function (command) {\n switch (command) {\n case 'M':\n path = [sx = px = params[i++], sy = py = params[i++]];\n paths.push(path);\n break;\n case 'L':\n var x = params[i++];\n var y = params[i++];\n // Place control points along the line `a + (b - a) * t`\n // at t = 1/3 and 2/3:\n path.push((px + px + x) / 3, (py + py + y) / 3, (px + x + x) / 3, (py + y + y) / 3, px = x, py = y);\n break;\n case 'C':\n path.push(params[i++], params[i++], params[i++], params[i++], px = params[i++], py = params[i++]);\n break;\n case 'Z':\n path.push((px + px + sx) / 3, (py + py + sy) / 3, (px + sx + sx) / 3, (py + sy + sy) / 3, px = sx, py = sy);\n break;\n }\n });\n return paths;\n };\n Path2D.cubicPathToString = function (path) {\n var n = path.length;\n if (!(n % 2 === 0 && (n / 2 - 1) / 2 >= 1)) {\n throw new Error('Invalid path.');\n }\n return 'M' + path.slice(0, 2).join(',') + 'C' + path.slice(2).join(',');\n };\n Path2D.splitCommandsRe = /(?=[AaCcHhLlMmQqSsTtVvZz])/g;\n Path2D.matchParamsRe = /-?[0-9]*\\.?\\d+/g;\n Path2D.quadraticCommandRe = /[QqTt]/;\n Path2D.cubicCommandRe = /[CcSs]/;\n Path2D.xmlDeclaration = '';\n Path2D.xmlns = 'http://www.w3.org/2000/svg';\n return Path2D;\n}();\nvar __extends$m = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar Path = /** @class */function (_super) {\n __extends$m(Path, _super);\n function Path() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * Declare a path to retain for later rendering and hit testing\n * using custom Path2D class. Think of it as a TypeScript version\n * of the native Path2D (with some differences) that works in all browsers.\n */\n _this.path = new Path2D();\n /**\n * The path only has to be updated when certain attributes change.\n * For example, if transform attributes (such as `translationX`)\n * are changed, we don't have to update the path. The `dirtyPath` flag\n * is how we keep track if the path has to be updated or not.\n */\n _this._dirtyPath = true;\n /**\n * Path definition in SVG path syntax:\n * https://www.w3.org/TR/SVG11/paths.html#DAttribute\n */\n _this._svgPath = '';\n return _this;\n }\n Object.defineProperty(Path.prototype, \"dirtyPath\", {\n get: function () {\n return this._dirtyPath;\n },\n set: function (value) {\n if (this._dirtyPath !== value) {\n this._dirtyPath = value;\n if (value) {\n this.dirty = true;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Path.prototype, \"svgPath\", {\n get: function () {\n return this._svgPath;\n },\n set: function (value) {\n if (this._svgPath !== value) {\n this._svgPath = value;\n this.path.setFromString(value);\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Path.prototype.isPointInPath = function (x, y) {\n var point = this.transformPoint(x, y);\n return this.path.closedPath && this.path.isPointInPath(point.x, point.y);\n };\n Path.prototype.isPointInStroke = function (x, y) {\n return false;\n };\n Path.prototype.updatePath = function () {};\n Path.prototype.render = function (ctx) {\n var scene = this.scene;\n if (this.dirtyTransform) {\n this.computeTransformMatrix();\n }\n // if (scene.debug.renderBoundingBoxes) {\n // const bbox = this.computeBBox();\n // if (bbox) {\n // this.matrix.transformBBox(bbox).render(ctx);\n // }\n // }\n this.matrix.toContext(ctx);\n if (this.dirtyPath) {\n this.updatePath();\n this.dirtyPath = false;\n }\n scene.appendPath(this.path);\n this.fillStroke(ctx);\n this.dirty = false;\n };\n Path.className = 'Path';\n return Path;\n}(Shape);\nvar __extends$l = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar Line = /** @class */function (_super) {\n __extends$l(Line, _super);\n function Line() {\n var _this = _super.call(this) || this;\n _this._x1 = 0;\n _this._y1 = 0;\n _this._x2 = 0;\n _this._y2 = 0;\n _this.restoreOwnStyles();\n return _this;\n }\n Object.defineProperty(Line.prototype, \"x1\", {\n get: function () {\n // TODO: Investigate getter performance further in the context\n // of the scene graph.\n // In isolated benchmarks using a getter has the same\n // performance as a direct property access in Firefox 64.\n // But in Chrome 71 the getter is 60% slower than direct access.\n // Direct read is 4.5+ times slower in Chrome than it is in Firefox.\n // Property access and direct read have the same performance\n // in Safari 12, which is 2+ times faster than Firefox at this.\n // https://jsperf.com/es5-getters-setters-versus-getter-setter-methods/18\n // This is a know Chrome issue. They say it's not a regression, since\n // the behavior is observed since M60, but jsperf.com history shows the\n // 10x slowdown happened between Chrome 48 and Chrome 57.\n // https://bugs.chromium.org/p/chromium/issues/detail?id=908743\n return this._x1;\n },\n set: function (value) {\n if (this._x1 !== value) {\n this._x1 = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Line.prototype, \"y1\", {\n get: function () {\n return this._y1;\n },\n set: function (value) {\n if (this._y1 !== value) {\n this._y1 = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Line.prototype, \"x2\", {\n get: function () {\n return this._x2;\n },\n set: function (value) {\n if (this._x2 !== value) {\n this._x2 = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Line.prototype, \"y2\", {\n get: function () {\n return this._y2;\n },\n set: function (value) {\n if (this._y2 !== value) {\n this._y2 = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Line.prototype.computeBBox = function () {\n return new BBox(this.x1, this.y1, this.x2 - this.x1, this.y2 - this.y1);\n };\n Line.prototype.isPointInPath = function (x, y) {\n return false;\n };\n Line.prototype.isPointInStroke = function (x, y) {\n return false;\n };\n Line.prototype.render = function (ctx) {\n if (this.dirtyTransform) {\n this.computeTransformMatrix();\n }\n this.matrix.toContext(ctx);\n var x1 = this.x1;\n var y1 = this.y1;\n var x2 = this.x2;\n var y2 = this.y2;\n // Align to the pixel grid if the line is strictly vertical\n // or horizontal (but not both, i.e. a dot).\n if (x1 === x2) {\n var x = Math.round(x1) + Math.floor(this.strokeWidth) % 2 / 2;\n x1 = x;\n x2 = x;\n } else if (y1 === y2) {\n var y = Math.round(y1) + Math.floor(this.strokeWidth) % 2 / 2;\n y1 = y;\n y2 = y;\n }\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n this.fillStroke(ctx);\n this.dirty = false;\n };\n Line.className = 'Line';\n Line.defaultStyles = chainObjects(Shape.defaultStyles, {\n fill: undefined,\n strokeWidth: 1\n });\n return Line;\n}(Shape);\nvar __read$4 = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\n/**\n * Maps a discrete domain to a continuous numeric range.\n * See https://github.com/d3/d3-scale#band-scales for more info.\n */\nvar BandScale = /** @class */function () {\n function BandScale() {\n this.type = 'band';\n /**\n * Maps datum to its index in the {@link domain} array.\n * Used to check for duplicate datums (not allowed).\n */\n this.index = new Map();\n /**\n * The output range values for datum at each index.\n */\n this.ordinalRange = [];\n /**\n * Contains unique datums only. Since `{}` is used in place of `Map`\n * for IE11 compatibility, the datums are converted `toString` before\n * the uniqueness check.\n */\n this._domain = [];\n this._range = [0, 1];\n this._bandwidth = 1;\n /**\n * The ratio of the range that is reserved for space between bands.\n */\n this._paddingInner = 0;\n /**\n * The ratio of the range that is reserved for space before the first\n * and after the last band.\n */\n this._paddingOuter = 0;\n this._round = false;\n /**\n * How the leftover range is distributed.\n * `0.5` - equal distribution of space before the first and after the last band,\n * with bands effectively centered within the range.\n */\n this._align = 0.5;\n }\n Object.defineProperty(BandScale.prototype, \"domain\", {\n get: function () {\n return this._domain;\n },\n set: function (values) {\n var domain = this._domain;\n domain.length = 0;\n this.index = new Map();\n var index = this.index;\n // In case one wants to have duplicate domain values, for example, two 'Italy' categories,\n // one should use objects rather than strings for domain values like so:\n // { toString: () => 'Italy' }\n // { toString: () => 'Italy' }\n values.forEach(function (value) {\n if (index.get(value) === undefined) {\n index.set(value, domain.push(value) - 1);\n }\n });\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"range\", {\n get: function () {\n return this._range;\n },\n set: function (values) {\n this._range[0] = values[0];\n this._range[1] = values[1];\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n BandScale.prototype.ticks = function () {\n return this._domain;\n };\n BandScale.prototype.convert = function (d) {\n var i = this.index.get(d);\n if (i === undefined) {\n return NaN;\n }\n var r = this.ordinalRange[i];\n if (r === undefined) {\n return NaN;\n }\n return r;\n };\n Object.defineProperty(BandScale.prototype, \"bandwidth\", {\n get: function () {\n return this._bandwidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"padding\", {\n get: function () {\n return this._paddingInner;\n },\n set: function (value) {\n value = Math.max(0, Math.min(1, value));\n this._paddingInner = value;\n this._paddingOuter = value;\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"paddingInner\", {\n get: function () {\n return this._paddingInner;\n },\n set: function (value) {\n this._paddingInner = Math.max(0, Math.min(1, value)); // [0, 1]\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"paddingOuter\", {\n get: function () {\n return this._paddingOuter;\n },\n set: function (value) {\n this._paddingOuter = Math.max(0, Math.min(1, value)); // [0, 1]\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"round\", {\n get: function () {\n return this._round;\n },\n set: function (value) {\n this._round = value;\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"align\", {\n get: function () {\n return this._align;\n },\n set: function (value) {\n this._align = Math.max(0, Math.min(1, value)); // [0, 1]\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n BandScale.prototype.rescale = function () {\n var _a;\n var n = this._domain.length;\n if (!n) {\n return;\n }\n var _b = __read$4(this._range, 2),\n a = _b[0],\n b = _b[1];\n var reversed = b < a;\n if (reversed) {\n _a = __read$4([b, a], 2), a = _a[0], b = _a[1];\n }\n var step = (b - a) / Math.max(1, n - this._paddingInner + this._paddingOuter * 2);\n if (this._round) {\n step = Math.floor(step);\n }\n a += (b - a - step * (n - this._paddingInner)) * this._align;\n this._bandwidth = step * (1 - this._paddingInner);\n if (this._round) {\n a = Math.round(a);\n this._bandwidth = Math.round(this._bandwidth);\n }\n var values = [];\n for (var i = 0; i < n; i++) {\n values.push(a + step * i);\n }\n this.ordinalRange = reversed ? values.reverse() : values;\n };\n return BandScale;\n}();\nvar EnterNode = /** @class */function () {\n function EnterNode(parent, datum) {\n this.next = null;\n this.scene = parent.scene;\n this.parent = parent;\n this.datum = datum;\n }\n EnterNode.prototype.appendChild = function (node) {\n // This doesn't work without the `strict: true` in the `tsconfig.json`,\n // so we must have two `if` checks below, instead of this single one.\n // if (this.next && !Node.isNode(this.next)) {\n // throw new Error(`${this.next} is not a Node.`);\n // }\n if (this.next === null) {\n return this.parent.insertBefore(node, null);\n }\n if (!Node.isNode(this.next)) {\n throw new Error(this.next + \" is not a Node.\");\n }\n return this.parent.insertBefore(node, this.next);\n };\n EnterNode.prototype.insertBefore = function (node, nextNode) {\n return this.parent.insertBefore(node, nextNode);\n };\n return EnterNode;\n}();\n/**\n * G - type of the selected node(s).\n * GDatum - type of the datum of the selected node(s).\n * P - type of the parent node(s).\n * PDatum - type of the datum of the parent node(s).\n */\nvar Selection = /** @class */function () {\n function Selection(groups, parents) {\n this.groups = groups;\n this.parents = parents;\n }\n Selection.select = function (node) {\n return new Selection([[typeof node === 'function' ? node() : node]], [undefined]);\n };\n Selection.selectAll = function (nodes) {\n return new Selection([nodes == null ? [] : nodes], [undefined]);\n };\n /**\n * Creates new nodes, appends them to the nodes of this selection and returns them\n * as a new selection. The created nodes inherit the datums and the parents of the nodes\n * they replace.\n * @param Class The constructor function to use to create the new nodes.\n */\n Selection.prototype.append = function (Class) {\n return this.select(function (node) {\n return node.appendChild(new Class());\n });\n };\n /**\n * Same as the {@link append}, but accepts a custom creator function with the\n * {@link NodeSelector} signature rather than a constructor function.\n * @param creator\n */\n Selection.prototype.appendFn = function (creator) {\n return this.select(function (node, data, index, group) {\n return node.appendChild(creator(node, data, index, group));\n });\n };\n /**\n * Runs the given selector that returns a single node for every node in each group.\n * The original nodes are then replaced by the nodes returned by the selector\n * and returned as a new selection.\n * The selected nodes inherit the datums and the parents of the original nodes.\n */\n Selection.prototype.select = function (selector) {\n var groups = this.groups;\n var numGroups = groups.length;\n var subgroups = [];\n for (var j = 0; j < numGroups; j++) {\n var group = groups[j];\n var groupSize = group.length;\n var subgroup = subgroups[j] = new Array(groupSize);\n for (var i = 0; i < groupSize; i++) {\n var node = group[i];\n if (node) {\n var subnode = selector(node, node.datum, i, group);\n if (subnode) {\n subnode.datum = node.datum;\n }\n subgroup[i] = subnode;\n }\n // else this can be a group of the `enter` selection,\n // for example, with no nodes at the i-th position,\n // only nodes at the end of the group\n }\n }\n return new Selection(subgroups, this.parents);\n };\n /**\n * Same as {@link select}, but uses the given {@param Class} (constructor) as a selector.\n * @param Class The constructor function to use to find matching nodes.\n */\n Selection.prototype.selectByClass = function (Class) {\n return this.select(function (node) {\n if (Node.isNode(node)) {\n var children = node.children;\n var n = children.length;\n for (var i = 0; i < n; i++) {\n var child = children[i];\n if (child instanceof Class) {\n return child;\n }\n }\n }\n });\n };\n Selection.prototype.selectByTag = function (tag) {\n return this.select(function (node) {\n if (Node.isNode(node)) {\n var children = node.children;\n var n = children.length;\n for (var i = 0; i < n; i++) {\n var child = children[i];\n if (child.tag === tag) {\n return child;\n }\n }\n }\n });\n };\n Selection.prototype.selectAllByClass = function (Class) {\n return this.selectAll(function (node) {\n var nodes = [];\n if (Node.isNode(node)) {\n var children = node.children;\n var n = children.length;\n for (var i = 0; i < n; i++) {\n var child = children[i];\n if (child instanceof Class) {\n nodes.push(child);\n }\n }\n }\n return nodes;\n });\n };\n Selection.prototype.selectAllByTag = function (tag) {\n return this.selectAll(function (node) {\n var nodes = [];\n if (Node.isNode(node)) {\n var children = node.children;\n var n = children.length;\n for (var i = 0; i < n; i++) {\n var child = children[i];\n if (child.tag === tag) {\n nodes.push(child);\n }\n }\n }\n return nodes;\n });\n };\n Selection.prototype.selectNone = function () {\n return [];\n };\n /**\n * Runs the given selector that returns a group of nodes for every node in each group.\n * The original nodes are then replaced by the groups of nodes returned by the selector\n * and returned as a new selection. The original nodes become the parent nodes for each\n * group in the new selection. The selected nodes do not inherit the datums of the original nodes.\n * If called without any parameters, creates a new selection with an empty group for each\n * node in this selection.\n */\n Selection.prototype.selectAll = function (selectorAll) {\n if (!selectorAll) {\n selectorAll = this.selectNone;\n }\n // Each subgroup is populated with the selector (run on each group node) results.\n var subgroups = [];\n // In the new selection that we return, subgroups become groups,\n // and group nodes become parents.\n var parents = [];\n var groups = this.groups;\n var groupCount = groups.length;\n for (var j = 0; j < groupCount; j++) {\n var group = groups[j];\n var groupLength = group.length;\n for (var i = 0; i < groupLength; i++) {\n var node = group[i];\n if (node) {\n subgroups.push(selectorAll(node, node.datum, i, group));\n parents.push(node);\n }\n }\n }\n return new Selection(subgroups, parents);\n };\n /**\n * Runs the given callback for every node in this selection and returns this selection.\n * @param cb\n */\n Selection.prototype.each = function (cb) {\n var groups = this.groups;\n var numGroups = groups.length;\n for (var j = 0; j < numGroups; j++) {\n var group = groups[j];\n var groupSize = group.length;\n for (var i = 0; i < groupSize; i++) {\n var node = group[i];\n if (node) {\n cb(node, node.datum, i, group);\n }\n }\n }\n return this;\n };\n Selection.prototype.remove = function () {\n return this.each(function (node) {\n if (Node.isNode(node)) {\n var parent_1 = node.parent;\n if (parent_1) {\n parent_1.removeChild(node);\n }\n }\n });\n };\n Selection.prototype.merge = function (other) {\n var groups0 = this.groups;\n var groups1 = other.groups;\n var m0 = groups0.length;\n var m1 = groups1.length;\n var m = Math.min(m0, m1);\n var merges = new Array(m0);\n var j = 0;\n for (; j < m; j++) {\n var group0 = groups0[j];\n var group1 = groups1[j];\n var n = group0.length;\n var merge = merges[j] = new Array(n);\n for (var i = 0; i < n; i++) {\n var node = group0[i] || group1[i];\n merge[i] = node || undefined;\n }\n }\n for (; j < m0; j++) {\n merges[j] = groups0[j];\n }\n return new Selection(merges, this.parents);\n };\n /**\n * Return the first non-null element in this selection.\n * If the selection is empty, returns null.\n */\n Selection.prototype.node = function () {\n var groups = this.groups;\n var numGroups = groups.length;\n for (var j = 0; j < numGroups; j++) {\n var group = groups[j];\n var groupSize = group.length;\n for (var i = 0; i < groupSize; i++) {\n var node = group[i];\n if (node) {\n return node;\n }\n }\n }\n return null;\n };\n Selection.prototype.attr = function (name, value) {\n this.each(function (node) {\n node[name] = value;\n });\n return this;\n };\n Selection.prototype.attrFn = function (name, value) {\n this.each(function (node, datum, index, group) {\n node[name] = value(node, datum, index, group);\n });\n return this;\n };\n /**\n * Invokes the given function once, passing in this selection.\n * Returns this selection. Facilitates method chaining.\n * @param cb\n */\n Selection.prototype.call = function (cb) {\n cb(this);\n return this;\n };\n Object.defineProperty(Selection.prototype, \"size\", {\n /**\n * Returns the total number of nodes in this selection.\n */\n get: function () {\n var size = 0;\n this.each(function () {\n return size++;\n });\n return size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Selection.prototype, \"data\", {\n /**\n * Returns the array of data for the selected elements.\n */\n get: function () {\n var data = [];\n this.each(function (_, datum) {\n return data.push(datum);\n });\n return data;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Selection.prototype, \"enter\", {\n get: function () {\n return new Selection(this.enterGroups ? this.enterGroups : [[]], this.parents);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Selection.prototype, \"exit\", {\n get: function () {\n return new Selection(this.exitGroups ? this.exitGroups : [[]], this.parents);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Binds the given value to each selected node and returns this selection\n * with its {@link GDatum} type changed to the type of the given value.\n * This method doesn't compute a join and doesn't affect indexes or the enter and exit selections.\n * This method can also be used to clear bound data.\n * @param value\n */\n Selection.prototype.setDatum = function (value) {\n return this.each(function (node) {\n node.datum = value;\n });\n };\n Object.defineProperty(Selection.prototype, \"datum\", {\n /**\n * Returns the bound datum for the first non-null element in the selection.\n * This is generally useful only if you know the selection contains exactly one element.\n */\n get: function () {\n var node = this.node();\n return node ? node.datum : null;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Binds the specified array of values with the selected nodes, returning a new selection\n * that represents the _update_ selection: the nodes successfully bound to the values.\n * Also defines the {@link enter} and {@link exit} selections on the returned selection,\n * which can be used to add or remove the nodes to correspond to the new data.\n * The `values` is an array of values of a particular type, or a function that returns\n * an array of values for each group.\n * When values are assigned to the nodes, they are stored in the {@link Node.datum} property.\n * @param values\n * @param key\n */\n Selection.prototype.setData = function (values, key) {\n if (typeof values !== 'function') {\n var data_1 = values;\n values = function () {\n return data_1;\n };\n }\n var groups = this.groups;\n var parents = this.parents;\n var numGroups = groups.length;\n var updateGroups = new Array(numGroups);\n var enterGroups = new Array(numGroups);\n var exitGroups = new Array(numGroups);\n for (var j = 0; j < numGroups; j++) {\n var group = groups[j];\n var parent_2 = parents[j];\n if (!parent_2) {\n throw new Error(\"Group #\" + j + \" has no parent: \" + group);\n }\n var groupSize = group.length;\n var data = values(parent_2, parent_2.datum, j, parents);\n var dataSize = data.length;\n var enterGroup = enterGroups[j] = new Array(dataSize);\n var updateGroup = updateGroups[j] = new Array(dataSize);\n var exitGroup = exitGroups[j] = new Array(groupSize);\n if (key) {\n this.bindKey(parent_2, group, enterGroup, updateGroup, exitGroup, data, key);\n } else {\n this.bindIndex(parent_2, group, enterGroup, updateGroup, exitGroup, data);\n }\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0; i0 < dataSize; i0++) {\n var previous = enterGroup[i0];\n if (previous) {\n if (i0 >= i1) {\n i1 = i0 + 1;\n }\n var next = void 0;\n while (!(next = updateGroup[i1]) && i1 < dataSize) {\n i1++;\n }\n previous.next = next || null;\n }\n }\n }\n var result = new Selection(updateGroups, parents);\n result.enterGroups = enterGroups;\n result.exitGroups = exitGroups;\n return result;\n };\n Selection.prototype.bindIndex = function (parent, group, enter, update, exit, data) {\n var groupSize = group.length;\n var dataSize = data.length;\n var i = 0;\n for (; i < dataSize; i++) {\n var node = group[i];\n if (node) {\n node.datum = data[i];\n update[i] = node;\n } else {\n // more datums than group nodes\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n // more group nodes than datums\n for (; i < groupSize; i++) {\n var node = group[i];\n if (node) {\n exit[i] = node;\n }\n }\n };\n Selection.prototype.bindKey = function (parent, group, enter, update, exit, data, key) {\n var groupSize = group.length;\n var dataSize = data.length;\n var keyValues = new Array(groupSize);\n var nodeByKeyValue = {};\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (var i = 0; i < groupSize; i++) {\n var node = group[i];\n if (node) {\n var keyValue = keyValues[i] = Selection.keyPrefix + key(node, node.datum, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n // Compute the key for each datum.\n // If there is a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (var i = 0; i < dataSize; i++) {\n var keyValue = Selection.keyPrefix + key(parent, data[i], i, data);\n var node = nodeByKeyValue[keyValue];\n if (node) {\n update[i] = node;\n node.datum = data[i];\n nodeByKeyValue[keyValue] = undefined;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n // Add any remaining nodes that were not bound to data to exit.\n for (var i = 0; i < groupSize; i++) {\n var node = group[i];\n if (node && nodeByKeyValue[keyValues[i]] === node) {\n exit[i] = node;\n }\n }\n };\n Selection.keyPrefix = '$'; // Protect against keys like '__proto__'.\n return Selection;\n}();\n\n/**\n * Wraps the native Canvas element and overrides its CanvasRenderingContext2D to\n * provide resolution independent rendering based on `window.devicePixelRatio`.\n */\nvar HdpiCanvas = /** @class */function () {\n // The width/height attributes of the Canvas element default to\n // 300/150 according to w3.org.\n function HdpiCanvas(document, width, height) {\n if (document === void 0) {\n document = window.document;\n }\n if (width === void 0) {\n width = 600;\n }\n if (height === void 0) {\n height = 300;\n }\n this._container = undefined;\n // `NaN` is deliberate here, so that overrides are always applied\n // and the `resetTransform` inside the `resize` method works in IE11.\n this._pixelRatio = NaN;\n this._width = 100;\n this._height = 100;\n this.document = document;\n this.element = document.createElement('canvas');\n this.context = this.element.getContext('2d');\n this.element.style.userSelect = 'none';\n this.element.style.display = 'block';\n this.setPixelRatio();\n this.resize(width, height);\n }\n Object.defineProperty(HdpiCanvas.prototype, \"container\", {\n get: function () {\n return this._container;\n },\n set: function (value) {\n if (this._container !== value) {\n this.remove();\n if (value) {\n value.appendChild(this.element);\n }\n this._container = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n HdpiCanvas.prototype.remove = function () {\n var parentNode = this.element.parentNode;\n if (parentNode != null) {\n parentNode.removeChild(this.element);\n }\n };\n HdpiCanvas.prototype.destroy = function () {\n this.element.remove();\n this._canvas = undefined;\n Object.freeze(this);\n };\n HdpiCanvas.prototype.clear = function () {\n this.context.save();\n this.context.setTransform(1, 0, 0, 1, 0, 0);\n this.context.clearRect(0, 0, this.element.width, this.element.height);\n this.context.restore();\n };\n HdpiCanvas.prototype.toImage = function () {\n var img = this.document.createElement('img');\n img.src = this.getDataURL();\n return img;\n };\n HdpiCanvas.prototype.getDataURL = function (type) {\n return this.element.toDataURL(type);\n };\n /**\n * @param fileName The name of the file upon save. The `.png` extension is going to be added automatically.\n */\n HdpiCanvas.prototype.download = function (fileName) {\n fileName = ((fileName || '').trim() || 'image') + '.png';\n // Chart images saved as JPEG are a few times larger at 50% quality than PNG images,\n // so we don't support saving to JPEG.\n var type = 'image/png';\n var dataUrl = this.getDataURL(type);\n var document = this.document;\n var a = document.createElement('a');\n a.href = dataUrl;\n a.download = fileName;\n a.style.display = 'none';\n document.body.appendChild(a); // required for the `click` to work in Firefox\n a.click();\n document.body.removeChild(a);\n };\n Object.defineProperty(HdpiCanvas.prototype, \"pixelRatio\", {\n get: function () {\n return this._pixelRatio;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Changes the pixel ratio of the Canvas element to the given value,\n * or uses the window.devicePixelRatio (default), then resizes the Canvas\n * element accordingly (default).\n */\n HdpiCanvas.prototype.setPixelRatio = function (ratio) {\n var pixelRatio = ratio || window.devicePixelRatio;\n if (pixelRatio === this.pixelRatio) {\n return;\n }\n HdpiCanvas.overrideScale(this.context, pixelRatio);\n this._pixelRatio = pixelRatio;\n this.resize(this.width, this.height);\n };\n Object.defineProperty(HdpiCanvas.prototype, \"pixelated\", {\n get: function () {\n return this.element.style.imageRendering === 'pixelated';\n },\n set: function (value) {\n this.element.style.imageRendering = value ? 'pixelated' : 'auto';\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HdpiCanvas.prototype, \"width\", {\n get: function () {\n return this._width;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HdpiCanvas.prototype, \"height\", {\n get: function () {\n return this._height;\n },\n enumerable: true,\n configurable: true\n });\n HdpiCanvas.prototype.resize = function (width, height) {\n if (!(width > 0 && height > 0)) {\n return;\n }\n var _a = this,\n element = _a.element,\n context = _a.context,\n pixelRatio = _a.pixelRatio;\n element.width = Math.round(width * pixelRatio);\n element.height = Math.round(height * pixelRatio);\n element.style.width = width + 'px';\n element.style.height = height + 'px';\n context.resetTransform();\n this._width = width;\n this._height = height;\n };\n Object.defineProperty(HdpiCanvas, \"textMeasuringContext\", {\n get: function () {\n if (this._textMeasuringContext) {\n return this._textMeasuringContext;\n }\n var canvas = document.createElement('canvas');\n this._textMeasuringContext = canvas.getContext('2d');\n return this._textMeasuringContext;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HdpiCanvas, \"svgText\", {\n get: function () {\n if (this._svgText) {\n return this._svgText;\n }\n var xmlns = 'http://www.w3.org/2000/svg';\n var svg = document.createElementNS(xmlns, 'svg');\n svg.setAttribute('width', '100');\n svg.setAttribute('height', '100');\n // Add a descriptive class name in case someone sees this SVG element\n // in devtools and wonders about its purpose:\n if (svg.classList) {\n svg.classList.add('text-measuring-svg');\n } else {\n svg.setAttribute('class', 'text-measuring-svg');\n }\n svg.style.position = 'absolute';\n svg.style.top = '-1000px';\n svg.style.visibility = 'hidden';\n var svgText = document.createElementNS(xmlns, 'text');\n svgText.setAttribute('x', '0');\n svgText.setAttribute('y', '30');\n svgText.setAttribute('text', 'black');\n svg.appendChild(svgText);\n document.body.appendChild(svg);\n this._svgText = svgText;\n return svgText;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HdpiCanvas, \"has\", {\n get: function () {\n if (this._has) {\n return this._has;\n }\n var isChrome = navigator.userAgent.indexOf('Chrome') > -1;\n var isFirefox = navigator.userAgent.indexOf('Firefox') > -1;\n var isSafari = !isChrome && navigator.userAgent.indexOf('Safari') > -1;\n this._has = Object.freeze({\n textMetrics: this.textMeasuringContext.measureText('test').actualBoundingBoxDescent !== undefined\n // Firefox implemented advanced TextMetrics object in v74:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1102584\n // but it's buggy, so we'll keed using the SVG for text measurement in Firefox for now.\n && !isFirefox && !isSafari,\n getTransform: this.textMeasuringContext.getTransform !== undefined\n });\n return this._has;\n },\n enumerable: true,\n configurable: true\n });\n HdpiCanvas.measureText = function (text, font, textBaseline, textAlign) {\n var ctx = this.textMeasuringContext;\n ctx.font = font;\n ctx.textBaseline = textBaseline;\n ctx.textAlign = textAlign;\n return ctx.measureText(text);\n };\n /**\n * Returns the width and height of the measured text.\n * @param text The single-line text to measure.\n * @param font The font shorthand string.\n */\n HdpiCanvas.getTextSize = function (text, font) {\n if (this.has.textMetrics) {\n var ctx = this.textMeasuringContext;\n ctx.font = font;\n var metrics = ctx.measureText(text);\n return {\n width: metrics.width,\n height: metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent\n };\n } else {\n return this.measureSvgText(text, font);\n }\n };\n HdpiCanvas.measureSvgText = function (text, font) {\n var cache = this.textSizeCache;\n var fontCache = cache[font];\n // Note: consider not caching the size of numeric strings.\n // For example: if (isNaN(+text)) { // skip\n if (fontCache) {\n var size_1 = fontCache[text];\n if (size_1) {\n return size_1;\n }\n } else {\n cache[font] = {};\n }\n var svgText = this.svgText;\n svgText.style.font = font;\n svgText.textContent = text;\n // `getBBox` returns an instance of `SVGRect` with the same `width` and `height`\n // measurements as `DOMRect` instance returned by the `getBoundingClientRect`.\n // But the `SVGRect` instance has half the properties of the `DOMRect`,\n // so we use the `getBBox` method.\n var bbox = svgText.getBBox();\n var size = {\n width: bbox.width,\n height: bbox.height\n };\n cache[font][text] = size;\n return size;\n };\n HdpiCanvas.overrideScale = function (ctx, scale) {\n var depth = 0;\n var overrides = {\n save: function () {\n this.$save();\n depth++;\n },\n restore: function () {\n if (depth > 0) {\n this.$restore();\n depth--;\n }\n },\n setTransform: function (a, b, c, d, e, f) {\n this.$setTransform(a * scale, b * scale, c * scale, d * scale, e * scale, f * scale);\n },\n resetTransform: function () {\n // As of Jan 8, 2019, `resetTransform` is still an \"experimental technology\",\n // and doesn't work in IE11 and Edge 44.\n this.$setTransform(scale, 0, 0, scale, 0, 0);\n this.save();\n depth = 0;\n // The scale above will be impossible to restore,\n // because we override the `ctx.restore` above and\n // check `depth` there.\n }\n };\n for (var name_1 in overrides) {\n if (overrides.hasOwnProperty(name_1)) {\n // Save native methods under prefixed names,\n // if this hasn't been done by the previous overrides already.\n if (!ctx['$' + name_1]) {\n ctx['$' + name_1] = ctx[name_1];\n }\n // Replace native methods with overrides,\n // or previous overrides with the new ones.\n ctx[name_1] = overrides[name_1];\n }\n }\n };\n HdpiCanvas.textSizeCache = {};\n return HdpiCanvas;\n}();\nvar __read$3 = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread = undefined && undefined.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$3(arguments[i]));\n return ar;\n};\nvar Scene = /** @class */function () {\n // As a rule of thumb, constructors with no parameters are preferred.\n // A few exceptions are:\n // - we absolutely need to know something at construction time (document)\n // - knowing something at construction time meaningfully improves performance (width, height)\n function Scene(document, width, height) {\n var _this = this;\n if (document === void 0) {\n document = window.document;\n }\n this.id = createId(this);\n this._dirty = false;\n this.animationFrameId = 0;\n this._root = null;\n this.debug = {\n renderFrameIndex: false,\n renderBoundingBoxes: false\n };\n this._frameIndex = 0;\n this.render = function () {\n var _a;\n var _b = _this,\n canvas = _b.canvas,\n ctx = _b.ctx,\n root = _b.root,\n pendingSize = _b.pendingSize;\n _this.animationFrameId = 0;\n if (pendingSize) {\n (_a = _this.canvas).resize.apply(_a, __spread(pendingSize));\n _this.pendingSize = undefined;\n }\n if (root && !root.visible) {\n _this.dirty = false;\n return;\n }\n // start with a blank canvas, clear previous drawing\n canvas.clear();\n if (root) {\n ctx.save();\n if (root.visible) {\n root.render(ctx);\n }\n ctx.restore();\n }\n _this._frameIndex++;\n if (_this.debug.renderFrameIndex) {\n ctx.fillStyle = 'white';\n ctx.fillRect(0, 0, 40, 15);\n ctx.fillStyle = 'black';\n ctx.fillText(_this.frameIndex.toString(), 2, 10);\n }\n _this.dirty = false;\n };\n this.canvas = new HdpiCanvas(document, width, height);\n this.ctx = this.canvas.context;\n }\n Object.defineProperty(Scene.prototype, \"container\", {\n get: function () {\n return this.canvas.container;\n },\n set: function (value) {\n this.canvas.container = value;\n },\n enumerable: true,\n configurable: true\n });\n Scene.prototype.download = function (fileName) {\n this.canvas.download(fileName);\n };\n Scene.prototype.getDataURL = function (type) {\n return this.canvas.getDataURL(type);\n };\n Object.defineProperty(Scene.prototype, \"width\", {\n get: function () {\n return this.pendingSize ? this.pendingSize[0] : this.canvas.width;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Scene.prototype, \"height\", {\n get: function () {\n return this.pendingSize ? this.pendingSize[1] : this.canvas.height;\n },\n enumerable: true,\n configurable: true\n });\n Scene.prototype.resize = function (width, height) {\n width = Math.round(width);\n height = Math.round(height);\n if (width === this.width && height === this.height) {\n return;\n }\n this.pendingSize = [width, height];\n this.dirty = true;\n };\n Object.defineProperty(Scene.prototype, \"dirty\", {\n get: function () {\n return this._dirty;\n },\n set: function (dirty) {\n if (dirty && !this._dirty) {\n this.animationFrameId = requestAnimationFrame(this.render);\n }\n this._dirty = dirty;\n },\n enumerable: true,\n configurable: true\n });\n Scene.prototype.cancelRender = function () {\n if (this.animationFrameId) {\n cancelAnimationFrame(this.animationFrameId);\n this.animationFrameId = 0;\n this._dirty = false;\n }\n };\n Object.defineProperty(Scene.prototype, \"root\", {\n get: function () {\n return this._root;\n },\n set: function (node) {\n if (node === this._root) {\n return;\n }\n if (this._root) {\n this._root._setScene();\n }\n this._root = node;\n if (node) {\n // If `node` is the root node of another scene ...\n if (node.parent === null && node.scene && node.scene !== this) {\n node.scene.root = null;\n }\n node._setScene(this);\n }\n this.dirty = true;\n },\n enumerable: true,\n configurable: true\n });\n Scene.prototype.appendPath = function (path) {\n var ctx = this.ctx;\n var commands = path.commands;\n var params = path.params;\n var n = commands.length;\n var j = 0;\n ctx.beginPath();\n for (var i = 0; i < n; i++) {\n switch (commands[i]) {\n case 'M':\n ctx.moveTo(params[j++], params[j++]);\n break;\n case 'L':\n ctx.lineTo(params[j++], params[j++]);\n break;\n case 'C':\n ctx.bezierCurveTo(params[j++], params[j++], params[j++], params[j++], params[j++], params[j++]);\n break;\n case 'Z':\n ctx.closePath();\n break;\n }\n }\n };\n Object.defineProperty(Scene.prototype, \"frameIndex\", {\n get: function () {\n return this._frameIndex;\n },\n enumerable: true,\n configurable: true\n });\n Scene.className = 'Scene';\n return Scene;\n}();\nvar __assign$1 = undefined && undefined.__assign || function () {\n __assign$1 = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign$1.apply(this, arguments);\n};\nvar Observable = /** @class */function () {\n function Observable() {\n // Note that these maps can't be specified generically, so they are kept untyped.\n // Some methods in this class only need generics in their signatures, the generics inside the methods\n // are just for clarity. The generics in signatures allow for static type checking of user provided\n // listeners and for type inference, so that the users wouldn't have to specify the type of parameters\n // of their inline lambdas.\n this.allPropertyListeners = new Map(); // property name => property change listener => scopes\n this.allEventListeners = new Map(); // event type => event listener => scopes\n }\n Observable.prototype.addPropertyListener = function (name, listener, scope) {\n if (scope === void 0) {\n scope = this;\n }\n var allPropertyListeners = this.allPropertyListeners;\n var propertyListeners = allPropertyListeners.get(name);\n if (!propertyListeners) {\n propertyListeners = new Map();\n allPropertyListeners.set(name, propertyListeners);\n }\n if (!propertyListeners.has(listener)) {\n var scopes_1 = new Set();\n propertyListeners.set(listener, scopes_1);\n }\n var scopes = propertyListeners.get(listener);\n if (scopes) {\n scopes.add(scope);\n }\n };\n Observable.prototype.removePropertyListener = function (name, listener, scope) {\n if (scope === void 0) {\n scope = this;\n }\n var allPropertyListeners = this.allPropertyListeners;\n var propertyListeners = allPropertyListeners.get(name);\n if (propertyListeners) {\n if (listener) {\n var scopes = propertyListeners.get(listener);\n if (scopes) {\n scopes.delete(scope);\n if (!scopes.size) {\n propertyListeners.delete(listener);\n }\n }\n } else {\n propertyListeners.clear();\n }\n }\n };\n Observable.prototype.notifyPropertyListeners = function (name, oldValue, value) {\n var _this = this;\n var allPropertyListeners = this.allPropertyListeners;\n var propertyListeners = allPropertyListeners.get(name);\n if (propertyListeners) {\n propertyListeners.forEach(function (scopes, listener) {\n scopes.forEach(function (scope) {\n return listener.call(scope, {\n type: name,\n source: _this,\n value: value,\n oldValue: oldValue\n });\n });\n });\n }\n };\n Observable.prototype.addEventListener = function (type, listener, scope) {\n if (scope === void 0) {\n scope = this;\n }\n var allEventListeners = this.allEventListeners;\n var eventListeners = allEventListeners.get(type);\n if (!eventListeners) {\n eventListeners = new Map();\n allEventListeners.set(type, eventListeners);\n }\n if (!eventListeners.has(listener)) {\n var scopes_2 = new Set();\n eventListeners.set(listener, scopes_2);\n }\n var scopes = eventListeners.get(listener);\n if (scopes) {\n scopes.add(scope);\n }\n };\n Observable.prototype.removeEventListener = function (type, listener, scope) {\n if (scope === void 0) {\n scope = this;\n }\n var allEventListeners = this.allEventListeners;\n var eventListeners = allEventListeners.get(type);\n if (eventListeners) {\n if (listener) {\n var scopes = eventListeners.get(listener);\n if (scopes) {\n scopes.delete(scope);\n if (!scopes.size) {\n eventListeners.delete(listener);\n }\n }\n } else {\n eventListeners.clear();\n }\n }\n };\n Observable.prototype.notifyEventListeners = function (types) {\n var _this = this;\n var allEventListeners = this.allEventListeners;\n types.forEach(function (type) {\n var listeners = allEventListeners.get(type);\n if (listeners) {\n listeners.forEach(function (scopes, listener) {\n scopes.forEach(function (scope) {\n return listener.call(scope, {\n type: type,\n source: _this\n });\n });\n });\n }\n });\n };\n // 'source' is added automatically and is always the object this method belongs to.\n Observable.prototype.fireEvent = function (event) {\n var _this = this;\n var listeners = this.allEventListeners.get(event.type);\n if (listeners) {\n listeners.forEach(function (scopes, listener) {\n scopes.forEach(function (scope) {\n return listener.call(scope, __assign$1(__assign$1({}, event), {\n source: _this\n }));\n });\n });\n }\n };\n Observable.privateKeyPrefix = '_';\n return Observable;\n}();\nfunction reactive() {\n var events = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n events[_i] = arguments[_i];\n }\n var debug = events.indexOf('debugger') >= 0;\n return function (target, key) {\n // `target` is either a constructor (static member) or prototype (instance member)\n var privateKey = Observable.privateKeyPrefix + key;\n var privateKeyEvents = privateKey + 'Events';\n if (!target[key]) {\n if (events) {\n target[privateKeyEvents] = events;\n }\n Object.defineProperty(target, key, {\n set: function (value) {\n var oldValue = this[privateKey];\n // This is a way to stop inside the setter by adding the special\n // 'debugger' event to a reactive property, for example:\n // @reactive('layoutChange', 'debugger') title?: Caption;\n if (debug) {\n // DO NOT REMOVE\n debugger;\n }\n if (value !== oldValue || typeof value === 'object' && value !== null) {\n this[privateKey] = value;\n this.notifyPropertyListeners(key, oldValue, value);\n var events_1 = this[privateKeyEvents];\n if (events_1) {\n this.notifyEventListeners(events_1);\n }\n }\n },\n get: function () {\n return this[privateKey];\n },\n enumerable: true,\n configurable: true\n });\n }\n };\n}\nvar Padding = /** @class */function () {\n function Padding(top, right, bottom, left) {\n if (top === void 0) {\n top = 0;\n }\n if (right === void 0) {\n right = top;\n }\n if (bottom === void 0) {\n bottom = top;\n }\n if (left === void 0) {\n left = right;\n }\n this.top = top;\n this.right = right;\n this.bottom = bottom;\n this.left = left;\n }\n Padding.prototype.clear = function () {\n this.top = this.right = this.bottom = this.left = 0;\n };\n return Padding;\n}();\nvar defaultTooltipCss = \"\\n.ag-sparkline-tooltip-wrapper {\\n position: absolute;\\n user-select: none;\\n pointer-events: none;\\n}\\n\\n.ag-sparkline-tooltip {\\n position: relative;\\n font: 12px arial,sans-serif;\\n border-radius: 2px;\\n box-shadow: 0 1px 3px rgb(0 0 0 / 20%), 0 1px 1px rgb(0 0 0 / 14%);\\n line-height: 1.7em;\\n overflow: hidden;\\n white-space: nowrap;\\n z-index: 99999;\\n background-color: rgb(255, 255, 255);\\n color: rgba(0,0,0, 0.67);\\n}\\n\\n.ag-sparkline-tooltip-content {\\n padding: 0 7px;\\n}\\n\\n.ag-sparkline-tooltip-title {\\n padding-left: 7px;\\n}\\n\\n.ag-sparkline-tooltip-wrapper-hidden {\\n top: -10000px !important;\\n}\\n\\n.ag-sparkline-wrapper {\\n box-sizing: border-box;\\n overflow: hidden;\\n}\\n\";\n\n// Simplified version of https://github.com/plotly/fast-isnumeric\n// that doesn't treat number strings with leading/trailing whitespace as numbers.\nfunction isNumber(value) {\n if (typeof value !== 'number') {\n return false;\n }\n return Number.isFinite(value);\n}\nfunction isNumberObject(value) {\n return !!value && value.hasOwnProperty('valueOf') && isNumber(value.valueOf());\n}\nfunction isNumeric(value) {\n return isNumber(value) || isNumberObject(value);\n}\nfunction isDate(value) {\n return value instanceof Date && !isNaN(+value);\n}\nfunction isString(value) {\n return typeof value === 'string';\n}\nfunction isStringObject(value) {\n return !!value && value.hasOwnProperty('toString') && isString(value.toString());\n}\nfunction isContinuous(value) {\n return isNumeric(value) || isDate(value);\n}\nvar constant$1 = function (x) {\n return function () {\n return x;\n };\n};\nfunction interpolateNumber(a, b) {\n a = +a;\n b = +b;\n return function (t) {\n return a * (1 - t) + b * t;\n };\n}\nfunction date(a, b) {\n var date = new Date();\n var msA = +a;\n var msB = +b;\n return function (t) {\n date.setTime(msA * (1 - t) + msB * t);\n return date;\n };\n}\nfunction array(a, b) {\n var nb = b ? b.length : 0;\n var na = a ? Math.min(nb, a.length) : 0;\n var x = new Array(na);\n var c = new Array(nb);\n var i;\n for (i = 0; i < na; ++i) {\n x[i] = interpolateValue(a[i], b[i]);\n }\n for (; i < nb; ++i) {\n c[i] = b[i];\n }\n return function (t) {\n for (i = 0; i < na; ++i) {\n c[i] = x[i](t);\n }\n return c;\n };\n}\nfunction object(a, b) {\n var i = {};\n var c = {};\n var k;\n if (a === null || typeof a !== 'object') {\n a = {};\n }\n if (b === null || typeof b !== 'object') {\n b = {};\n }\n for (k in b) {\n if (k in a) {\n i[k] = interpolateValue(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n return function (t) {\n for (k in i) {\n c[k] = i[k](t);\n }\n return c;\n };\n}\nvar __read$2 = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar Color = /** @class */function () {\n /**\n * Every color component should be in the [0, 1] range.\n * Some easing functions (such as elastic easing) can overshoot the target value by some amount.\n * So, when animating colors, if the source or target color components are already near\n * or at the edge of the allowed [0, 1] range, it is possible for the intermediate color\n * component value to end up outside of that range mid-animation. For this reason the constructor\n * performs range checking/constraining.\n * @param r Red component.\n * @param g Green component.\n * @param b Blue component.\n * @param a Alpha (opacity) component.\n */\n function Color(r, g, b, a) {\n if (a === void 0) {\n a = 1;\n }\n // NaN is treated as 0.\n this.r = Math.min(1, Math.max(0, r || 0));\n this.g = Math.min(1, Math.max(0, g || 0));\n this.b = Math.min(1, Math.max(0, b || 0));\n this.a = Math.min(1, Math.max(0, a || 0));\n }\n /**\n * The given string can be in one of the following formats:\n * - #rgb\n * - #rrggbb\n * - rgb(r, g, b)\n * - rgba(r, g, b, a)\n * - CSS color name such as 'white', 'orange', 'cyan', etc.\n * @param str\n */\n Color.fromString = function (str) {\n // hexadecimal notation\n if (str.indexOf('#') >= 0) {\n // there can be some leading whitespace\n return Color.fromHexString(str);\n }\n // color name\n var hex = Color.nameToHex[str];\n if (hex) {\n return Color.fromHexString(hex);\n }\n // rgb(a) notation\n if (str.indexOf('rgb') >= 0) {\n return Color.fromRgbaString(str);\n }\n throw new Error(\"Invalid color string: '\" + str + \"'\");\n };\n // See https://drafts.csswg.org/css-color/#hex-notation\n Color.parseHex = function (input) {\n input = input.replace(/ /g, '').slice(1);\n var parts;\n switch (input.length) {\n case 6:\n case 8:\n parts = [];\n for (var i = 0; i < input.length; i += 2) {\n parts.push(parseInt(\"\" + input[i] + input[i + 1], 16));\n }\n break;\n case 3:\n case 4:\n parts = input.split('').map(function (p) {\n return parseInt(p, 16);\n }).map(function (p) {\n return p + p * 16;\n });\n break;\n }\n if (parts.length >= 3) {\n if (parts.every(function (p) {\n return p >= 0;\n })) {\n if (parts.length === 3) {\n parts.push(255);\n }\n return parts;\n }\n }\n };\n Color.fromHexString = function (str) {\n var values = Color.parseHex(str);\n if (values) {\n var _a = __read$2(values, 4),\n r = _a[0],\n g = _a[1],\n b = _a[2],\n a = _a[3];\n return new Color(r / 255, g / 255, b / 255, a / 255);\n }\n throw new Error(\"Malformed hexadecimal color string: '\" + str + \"'\");\n };\n Color.stringToRgba = function (str) {\n // Find positions of opening and closing parentheses.\n var _a = __read$2([NaN, NaN], 2),\n po = _a[0],\n pc = _a[1];\n for (var i = 0; i < str.length; i++) {\n var c = str[i];\n if (!po && c === '(') {\n po = i;\n } else if (c === ')') {\n pc = i;\n break;\n }\n }\n var contents = po && pc && str.substring(po + 1, pc);\n if (!contents) {\n return;\n }\n var parts = contents.split(',');\n var rgba = [];\n for (var i = 0; i < parts.length; i++) {\n var part = parts[i];\n var value = parseFloat(part);\n if (isNaN(value)) {\n return;\n }\n if (part.indexOf('%') >= 0) {\n // percentage r, g, or b value\n value = Math.max(0, Math.min(100, value));\n value /= 100;\n } else {\n if (i === 3) {\n // alpha component\n value = Math.max(0, Math.min(1, value));\n } else {\n // absolute r, g, or b value\n value = Math.max(0, Math.min(255, value));\n value /= 255;\n }\n }\n rgba.push(value);\n }\n return rgba;\n };\n Color.fromRgbaString = function (str) {\n var rgba = Color.stringToRgba(str);\n if (rgba) {\n if (rgba.length === 3) {\n return new Color(rgba[0], rgba[1], rgba[2]);\n } else if (rgba.length === 4) {\n return new Color(rgba[0], rgba[1], rgba[2], rgba[3]);\n }\n }\n throw new Error(\"Malformed rgb/rgba color string: '\" + str + \"'\");\n };\n Color.fromArray = function (arr) {\n if (arr.length === 4) {\n return new Color(arr[0], arr[1], arr[2], arr[3]);\n }\n if (arr.length === 3) {\n return new Color(arr[0], arr[1], arr[2]);\n }\n throw new Error('The given array should contain 3 or 4 color components (numbers).');\n };\n Color.fromHSB = function (h, s, b, alpha) {\n if (alpha === void 0) {\n alpha = 1;\n }\n var rgb = Color.HSBtoRGB(h, s, b);\n return new Color(rgb[0], rgb[1], rgb[2], alpha);\n };\n Color.padHex = function (str) {\n // Can't use `padStart(2, '0')` here because of IE.\n return str.length === 1 ? '0' + str : str;\n };\n Color.prototype.toHexString = function () {\n var hex = '#' + Color.padHex(Math.round(this.r * 255).toString(16)) + Color.padHex(Math.round(this.g * 255).toString(16)) + Color.padHex(Math.round(this.b * 255).toString(16));\n if (this.a < 1) {\n hex += Color.padHex(Math.round(this.a * 255).toString(16));\n }\n return hex;\n };\n Color.prototype.toRgbaString = function (fractionDigits) {\n if (fractionDigits === void 0) {\n fractionDigits = 3;\n }\n var components = [Math.round(this.r * 255), Math.round(this.g * 255), Math.round(this.b * 255)];\n var k = Math.pow(10, fractionDigits);\n if (this.a !== 1) {\n components.push(Math.round(this.a * k) / k);\n return \"rgba(\" + components.join(', ') + \")\";\n }\n return \"rgb(\" + components.join(', ') + \")\";\n };\n Color.prototype.toString = function () {\n if (this.a === 1) {\n return this.toHexString();\n }\n return this.toRgbaString();\n };\n Color.prototype.toHSB = function () {\n return Color.RGBtoHSB(this.r, this.g, this.b);\n };\n /**\n * Converts the given RGB triple to an array of HSB (HSV) components.\n * The hue component will be `NaN` for achromatic colors.\n */\n Color.RGBtoHSB = function (r, g, b) {\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var S = max !== 0 ? (max - min) / max : 0;\n var H = NaN;\n // min == max, means all components are the same\n // and the color is a shade of gray with no hue (H is NaN)\n if (min !== max) {\n var delta = max - min;\n var rc = (max - r) / delta;\n var gc = (max - g) / delta;\n var bc = (max - b) / delta;\n if (r === max) {\n H = bc - gc;\n } else if (g === max) {\n H = 2.0 + rc - bc;\n } else {\n H = 4.0 + gc - rc;\n }\n H /= 6.0;\n if (H < 0) {\n H = H + 1.0;\n }\n }\n return [H * 360, S, max];\n };\n /**\n * Converts the given HSB (HSV) triple to an array of RGB components.\n */\n Color.HSBtoRGB = function (H, S, B) {\n if (isNaN(H)) {\n H = 0;\n }\n H = (H % 360 + 360) % 360 / 360; // normalize hue to [0, 360] interval, then scale to [0, 1]\n var r = 0;\n var g = 0;\n var b = 0;\n if (S === 0) {\n r = g = b = B;\n } else {\n var h = (H - Math.floor(H)) * 6;\n var f = h - Math.floor(h);\n var p = B * (1 - S);\n var q = B * (1 - S * f);\n var t = B * (1 - S * (1 - f));\n switch (h >> 0) {\n // discard the floating point part of the number\n case 0:\n r = B;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = B;\n b = p;\n break;\n case 2:\n r = p;\n g = B;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = B;\n break;\n case 4:\n r = t;\n g = p;\n b = B;\n break;\n case 5:\n r = B;\n g = p;\n b = q;\n break;\n }\n }\n return [r, g, b];\n };\n Color.prototype.derive = function (hueShift, saturationFactor, brightnessFactor, opacityFactor) {\n var hsb = Color.RGBtoHSB(this.r, this.g, this.b);\n var b = hsb[2];\n if (b == 0 && brightnessFactor > 1.0) {\n b = 0.05;\n }\n var h = ((hsb[0] + hueShift) % 360 + 360) % 360;\n var s = Math.max(Math.min(hsb[1] * saturationFactor, 1.0), 0.0);\n b = Math.max(Math.min(b * brightnessFactor, 1.0), 0.0);\n var a = Math.max(Math.min(this.a * opacityFactor, 1.0), 0.0);\n var rgba = Color.HSBtoRGB(h, s, b);\n rgba.push(a);\n return Color.fromArray(rgba);\n };\n Color.prototype.brighter = function () {\n return this.derive(0, 1.0, 1.0 / 0.7, 1.0);\n };\n Color.prototype.darker = function () {\n return this.derive(0, 1.0, 0.7, 1.0);\n };\n /**\n * CSS Color Module Level 4:\n * https://drafts.csswg.org/css-color/#named-colors\n */\n Color.nameToHex = Object.freeze({\n aliceblue: '#F0F8FF',\n antiquewhite: '#FAEBD7',\n aqua: '#00FFFF',\n aquamarine: '#7FFFD4',\n azure: '#F0FFFF',\n beige: '#F5F5DC',\n bisque: '#FFE4C4',\n black: '#000000',\n blanchedalmond: '#FFEBCD',\n blue: '#0000FF',\n blueviolet: '#8A2BE2',\n brown: '#A52A2A',\n burlywood: '#DEB887',\n cadetblue: '#5F9EA0',\n chartreuse: '#7FFF00',\n chocolate: '#D2691E',\n coral: '#FF7F50',\n cornflowerblue: '#6495ED',\n cornsilk: '#FFF8DC',\n crimson: '#DC143C',\n cyan: '#00FFFF',\n darkblue: '#00008B',\n darkcyan: '#008B8B',\n darkgoldenrod: '#B8860B',\n darkgray: '#A9A9A9',\n darkgreen: '#006400',\n darkgrey: '#A9A9A9',\n darkkhaki: '#BDB76B',\n darkmagenta: '#8B008B',\n darkolivegreen: '#556B2F',\n darkorange: '#FF8C00',\n darkorchid: '#9932CC',\n darkred: '#8B0000',\n darksalmon: '#E9967A',\n darkseagreen: '#8FBC8F',\n darkslateblue: '#483D8B',\n darkslategray: '#2F4F4F',\n darkslategrey: '#2F4F4F',\n darkturquoise: '#00CED1',\n darkviolet: '#9400D3',\n deeppink: '#FF1493',\n deepskyblue: '#00BFFF',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1E90FF',\n firebrick: '#B22222',\n floralwhite: '#FFFAF0',\n forestgreen: '#228B22',\n fuchsia: '#FF00FF',\n gainsboro: '#DCDCDC',\n ghostwhite: '#F8F8FF',\n gold: '#FFD700',\n goldenrod: '#DAA520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#ADFF2F',\n grey: '#808080',\n honeydew: '#F0FFF0',\n hotpink: '#FF69B4',\n indianred: '#CD5C5C',\n indigo: '#4B0082',\n ivory: '#FFFFF0',\n khaki: '#F0E68C',\n lavender: '#E6E6FA',\n lavenderblush: '#FFF0F5',\n lawngreen: '#7CFC00',\n lemonchiffon: '#FFFACD',\n lightblue: '#ADD8E6',\n lightcoral: '#F08080',\n lightcyan: '#E0FFFF',\n lightgoldenrodyellow: '#FAFAD2',\n lightgray: '#D3D3D3',\n lightgreen: '#90EE90',\n lightgrey: '#D3D3D3',\n lightpink: '#FFB6C1',\n lightsalmon: '#FFA07A',\n lightseagreen: '#20B2AA',\n lightskyblue: '#87CEFA',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#B0C4DE',\n lightyellow: '#FFFFE0',\n lime: '#00FF00',\n limegreen: '#32CD32',\n linen: '#FAF0E6',\n magenta: '#FF00FF',\n maroon: '#800000',\n mediumaquamarine: '#66CDAA',\n mediumblue: '#0000CD',\n mediumorchid: '#BA55D3',\n mediumpurple: '#9370DB',\n mediumseagreen: '#3CB371',\n mediumslateblue: '#7B68EE',\n mediumspringgreen: '#00FA9A',\n mediumturquoise: '#48D1CC',\n mediumvioletred: '#C71585',\n midnightblue: '#191970',\n mintcream: '#F5FFFA',\n mistyrose: '#FFE4E1',\n moccasin: '#FFE4B5',\n navajowhite: '#FFDEAD',\n navy: '#000080',\n oldlace: '#FDF5E6',\n olive: '#808000',\n olivedrab: '#6B8E23',\n orange: '#FFA500',\n orangered: '#FF4500',\n orchid: '#DA70D6',\n palegoldenrod: '#EEE8AA',\n palegreen: '#98FB98',\n paleturquoise: '#AFEEEE',\n palevioletred: '#DB7093',\n papayawhip: '#FFEFD5',\n peachpuff: '#FFDAB9',\n peru: '#CD853F',\n pink: '#FFC0CB',\n plum: '#DDA0DD',\n powderblue: '#B0E0E6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#FF0000',\n rosybrown: '#BC8F8F',\n royalblue: '#4169E1',\n saddlebrown: '#8B4513',\n salmon: '#FA8072',\n sandybrown: '#F4A460',\n seagreen: '#2E8B57',\n seashell: '#FFF5EE',\n sienna: '#A0522D',\n silver: '#C0C0C0',\n skyblue: '#87CEEB',\n slateblue: '#6A5ACD',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#FFFAFA',\n springgreen: '#00FF7F',\n steelblue: '#4682B4',\n tan: '#D2B48C',\n teal: '#008080',\n thistle: '#D8BFD8',\n tomato: '#FF6347',\n turquoise: '#40E0D0',\n violet: '#EE82EE',\n wheat: '#F5DEB3',\n white: '#FFFFFF',\n whitesmoke: '#F5F5F5',\n yellow: '#FFFF00',\n yellowgreen: '#9ACD32'\n });\n return Color;\n}();\nfunction color(a, b) {\n if (typeof a === 'string') {\n try {\n a = Color.fromString(a);\n } catch (e) {\n a = Color.fromArray([0, 0, 0]);\n }\n }\n if (typeof b === 'string') {\n try {\n b = Color.fromString(b);\n } catch (e) {\n b = Color.fromArray([0, 0, 0]);\n }\n }\n var red = interpolateNumber(a.r, b.r);\n var green = interpolateNumber(a.g, b.g);\n var blue = interpolateNumber(a.b, b.b);\n var alpha = interpolateNumber(a.a, b.a);\n return function (t) {\n return Color.fromArray([red(t), green(t), blue(t), alpha(t)]).toRgbaString();\n };\n}\nfunction interpolateValue(a, b) {\n var t = typeof b;\n var c;\n if (b == null || t === 'boolean') {\n return constant$1(b);\n }\n if (t === 'number') {\n return interpolateNumber(a, b);\n }\n if (t === 'string') {\n try {\n c = Color.fromString(b);\n b = c;\n return color(a, b);\n } catch (e) {\n // return string(a, b);\n }\n }\n if (b instanceof Color) {\n return color(a, b);\n }\n if (b instanceof Date) {\n return date(a, b);\n }\n if (Array.isArray(b)) {\n return array(a, b);\n }\n if (typeof b.valueOf !== 'function' && typeof b.toString !== 'function' || isNaN(b)) {\n return object(a, b);\n }\n return interpolateNumber(a, b);\n}\nvar __read$1 = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar constant = function (x) {\n return function () {\n return x;\n };\n};\nvar identity$2 = function (x) {\n return x;\n};\nfunction clamper(domain) {\n var _a;\n var a = domain[0];\n var b = domain[domain.length - 1];\n if (a > b) {\n _a = __read$1([b, a], 2), a = _a[0], b = _a[1];\n }\n return function (x) {\n return Math.max(a, Math.min(b, x));\n };\n}\nvar ContinuousScale = /** @class */function () {\n function ContinuousScale() {\n /**\n * The output value of the scale for `undefined` or `NaN` input values.\n */\n this.unknown = undefined;\n this._clamp = identity$2;\n this._domain = [0, 1];\n this._range = [0, 1];\n this.transform = identity$2; // transforms domain value\n this.untransform = identity$2; // untransforms domain value\n this._interpolate = interpolateValue;\n this.rescale();\n }\n Object.defineProperty(ContinuousScale.prototype, \"clamp\", {\n get: function () {\n return this._clamp !== identity$2;\n },\n set: function (value) {\n this._clamp = value ? clamper(this.domain) : identity$2;\n },\n enumerable: true,\n configurable: true\n });\n ContinuousScale.prototype.setDomain = function (values) {\n this._domain = Array.prototype.map.call(values, function (v) {\n return +v;\n });\n if (this._clamp !== identity$2) {\n this._clamp = clamper(this.domain);\n }\n this.rescale();\n };\n ContinuousScale.prototype.getDomain = function () {\n return this._domain.slice();\n };\n Object.defineProperty(ContinuousScale.prototype, \"domain\", {\n get: function () {\n return this.getDomain();\n },\n set: function (values) {\n this.setDomain(values);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ContinuousScale.prototype, \"range\", {\n get: function () {\n return this._range.slice();\n },\n set: function (values) {\n this._range = Array.prototype.slice.call(values);\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ContinuousScale.prototype, \"interpolate\", {\n get: function () {\n return this._interpolate;\n },\n set: function (value) {\n this._interpolate = value;\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n ContinuousScale.prototype.rescale = function () {\n this.piecewise = this.bimap;\n this.output = undefined;\n this.input = undefined;\n };\n /**\n * Returns a function that converts `x` in `[a, b]` to `t` in `[0, 1]`. Non-clamping.\n * @param a\n * @param b\n */\n ContinuousScale.prototype.normalize = function (a, b) {\n return (b -= a = +a) ? function (x) {\n return (x - a) / b;\n } : constant(isNaN(b) ? NaN : 0.5);\n };\n ContinuousScale.prototype.bimap = function (domain, range, interpolate) {\n var x0 = domain[0];\n var x1 = domain[1];\n var y0 = range[0];\n var y1 = range[1];\n var xt;\n var ty;\n if (x1 < x0) {\n xt = this.normalize(x1, x0);\n ty = interpolate(y1, y0);\n } else {\n xt = this.normalize(x0, x1);\n ty = interpolate(y0, y1);\n }\n return function (x) {\n return ty(xt(x));\n }; // domain value x --> t in [0, 1] --> range value y\n };\n ContinuousScale.prototype.convert = function (x) {\n x = +x;\n if (isNaN(x)) {\n return this.unknown;\n } else {\n if (!this.output) {\n this.output = this.piecewise(this.domain.map(this.transform), this.range, this.interpolate);\n }\n return this.output(this.transform(this._clamp(x)));\n }\n };\n ContinuousScale.prototype.invert = function (y) {\n if (!this.input) {\n this.input = this.piecewise(this.range, this.domain.map(this.transform), interpolateNumber);\n }\n return this._clamp(this.untransform(this.input(y)));\n };\n return ContinuousScale;\n}();\nvar __extends$k = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nfunction ticks(a, b, count) {\n var step = tickStep(a, b, count);\n a = Math.ceil(a / step) * step;\n b = Math.floor(b / step) * step + step / 2;\n // Add half a step here so that the array returned by `range` includes the last tick.\n return range(a, b, step);\n}\nvar e10 = Math.sqrt(50);\nvar e5 = Math.sqrt(10);\nvar e2 = Math.sqrt(2);\nfunction tickStep(a, b, count) {\n var rawStep = Math.abs(b - a) / Math.max(0, count);\n var step = Math.pow(10, Math.floor(Math.log(rawStep) / Math.LN10)); // = Math.log10(rawStep)\n var error = rawStep / step;\n if (error >= e10) {\n step *= 10;\n } else if (error >= e5) {\n step *= 5;\n } else if (error >= e2) {\n step *= 2;\n }\n return b < a ? -step : step;\n}\nfunction tickIncrement(a, b, count) {\n var rawStep = (b - a) / Math.max(0, count);\n var power = Math.floor(Math.log(rawStep) / Math.LN10);\n var error = rawStep / Math.pow(10, power);\n return power >= 0 ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power) : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\nvar NumericTicks = /** @class */function (_super) {\n __extends$k(NumericTicks, _super);\n function NumericTicks(fractionDigits, elements) {\n var _this = _super.call(this) || this;\n if (elements) {\n for (var i = 0, n = elements.length; i < n; i++) {\n _this[i] = elements[i];\n }\n }\n _this.fractionDigits = fractionDigits;\n return _this;\n }\n return NumericTicks;\n}(Array);\nfunction range(a, b, step) {\n if (step === void 0) {\n step = 1;\n }\n var absStep = Math.abs(step);\n var fractionDigits = absStep > 0 && absStep < 1 ? Math.abs(Math.floor(Math.log(absStep) / Math.LN10)) : 0;\n var f = Math.pow(10, fractionDigits);\n var n = Math.max(0, Math.ceil((b - a) / step)) || 0;\n var values = new NumericTicks(fractionDigits);\n for (var i = 0; i < n; i++) {\n var value = a + step * i;\n values[i] = Math.round(value * f) / f;\n }\n return values;\n}\nfunction formatDefault(x, p) {\n var xs = x.toPrecision(p);\n out: for (var n = xs.length, i = 1, i0 = -1, i1 = 0; i < n; ++i) {\n switch (xs[i]) {\n case '.':\n i0 = i1 = i;\n break;\n case '0':\n if (i0 === 0) {\n i0 = i;\n }\n i1 = i;\n break;\n case 'e':\n break out;\n default:\n if (i0 > 0) {\n i0 = 0;\n }\n break;\n }\n }\n return i0 > 0 ? xs.slice(0, i0) + xs.slice(i1 + 1) : xs;\n}\nvar formatTypes = {\n '': formatDefault,\n // Multiply by 100, and then decimal notation with a percent sign.\n '%': function (x, p) {\n return (x * 100).toFixed(p);\n },\n // Binary notation, rounded to integer.\n 'b': function (x) {\n return Math.round(x).toString(2);\n },\n // Converts the integer to the corresponding unicode character before printing.\n 'c': function (x) {\n return String(x);\n },\n // Decimal notation, rounded to integer.\n 'd': formatDecimal,\n // Exponent notation.\n 'e': function (x, p) {\n return x.toExponential(p);\n },\n // Fixed point notation.\n 'f': function (x, p) {\n return x.toFixed(p);\n },\n // Either decimal or exponent notation, rounded to significant digits.\n 'g': function (x, p) {\n return x.toPrecision(p);\n },\n // Octal notation, rounded to integer.\n 'o': function (x) {\n return Math.round(x).toString(8);\n },\n // Multiply by 100, round to significant digits, and then decimal notation with a percent sign.\n 'p': function (x, p) {\n return formatRounded(x * 100, p);\n },\n // Decimal notation, rounded to significant digits.\n 'r': formatRounded,\n // Decimal notation with a SI prefix, rounded to significant digits.\n 's': formatPrefixAuto,\n // Hexadecimal notation, using upper-case letters, rounded to integer.\n 'X': function (x) {\n return Math.round(x).toString(16).toUpperCase();\n },\n // Hexadecimal notation, using lower-case letters, rounded to integer.\n 'x': function (x) {\n return Math.round(x).toString(16);\n }\n};\nvar prefixes = ['y', 'z', 'a', 'f', 'p', 'n', '\\xB5', 'm', '', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y'];\n/**\n * [[fill]align][sign][#][0][width][grouping_option][.precision][type]\n */\nvar FormatSpecifier = /** @class */function () {\n function FormatSpecifier(specifier) {\n if (specifier instanceof FormatSpecifier) {\n this.fill = specifier.fill;\n this.align = specifier.align;\n this.sign = specifier.sign;\n this.symbol = specifier.symbol;\n this.zero = specifier.zero;\n this.width = specifier.width;\n this.comma = specifier.comma;\n this.precision = specifier.precision;\n this.trim = specifier.trim;\n this.type = specifier.type;\n this.string = specifier.string;\n } else {\n this.fill = specifier.fill === undefined ? ' ' : String(specifier.fill);\n this.align = specifier.align === undefined ? '>' : String(specifier.align);\n this.sign = specifier.sign === undefined ? '-' : String(specifier.sign);\n this.symbol = specifier.symbol === undefined ? '' : String(specifier.symbol);\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? '' : String(specifier.type);\n this.string = specifier.string;\n }\n }\n return FormatSpecifier;\n}();\n// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar formatRegEx = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\nvar interpolateRegEx = /(#\\{(.*?)\\})/g;\nfunction makeFormatSpecifier(specifier) {\n if (specifier instanceof FormatSpecifier) {\n return new FormatSpecifier(specifier);\n }\n var found = false;\n var string = specifier.replace(interpolateRegEx, function () {\n if (!found) {\n specifier = arguments[2];\n found = true;\n }\n return '#{}';\n });\n var match = formatRegEx.exec(specifier);\n if (!match) {\n throw new Error(\"Invalid format: \" + specifier);\n }\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10],\n string: found ? string : undefined\n });\n}\nfunction tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count);\n var formatSpecifier = makeFormatSpecifier(specifier == undefined ? ',f' : specifier);\n var precision;\n switch (formatSpecifier.type) {\n case 's':\n {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (formatSpecifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) {\n formatSpecifier.precision = precision;\n }\n return formatPrefix(formatSpecifier, value);\n }\n case '':\n case 'e':\n case 'g':\n case 'p':\n case 'r':\n {\n if (formatSpecifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) {\n formatSpecifier.precision = precision - +(formatSpecifier.type === 'e');\n }\n break;\n }\n case 'f':\n case '%':\n {\n if (formatSpecifier.precision == null && !isNaN(precision = precisionFixed(step))) {\n formatSpecifier.precision = precision - +(formatSpecifier.type === '%') * 2;\n }\n break;\n }\n }\n return format(formatSpecifier);\n}\nvar prefixExponent;\nfunction formatPrefixAuto(x, p) {\n if (p === void 0) {\n p = 0;\n }\n var d = formatDecimalParts(x, p);\n if (!d) {\n return String(x);\n }\n var coefficient = d[0];\n var exponent = d[1];\n prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3;\n var i = exponent - prefixExponent + 1;\n var n = coefficient.length;\n if (i === n) {\n return coefficient;\n } else {\n if (i > n) {\n return coefficient + new Array(i - n + 1).join('0');\n }\n if (i > 0) {\n return coefficient.slice(0, i) + '.' + coefficient.slice(i);\n } else {\n var parts = formatDecimalParts(x, Math.max(0, p + i - 1));\n return '0.' + new Array(1 - i).join('0') + parts[0]; // less than 1y!\n }\n }\n}\nfunction formatDecimal(x) {\n return Math.abs(x = Math.round(x)) >= 1e21 ? x.toLocaleString('en').replace(/,/g, '') : x.toString(10);\n}\nfunction formatGroup(grouping, thousands) {\n return function (value, width) {\n var t = [];\n var i = value.length;\n var j = 0;\n var g = grouping[0];\n var length = 0;\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) {\n g = Math.max(1, width - length);\n }\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) {\n break;\n }\n g = grouping[j = (j + 1) % grouping.length];\n }\n return t.reverse().join(thousands);\n };\n}\nfunction formatNumerals(numerals) {\n return function (value) {\n return value.replace(/[0-9]/g, function (i) {\n return numerals[+i];\n });\n };\n}\n// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nfunction formatTrim(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1 = 0; i < n; ++i) {\n switch (s[i]) {\n case '.':\n i0 = i1 = i;\n break;\n case '0':\n if (i0 === 0) {\n i0 = i;\n }\n i1 = i;\n break;\n default:\n if (!+s[i]) {\n break out;\n }\n if (i0 > 0) {\n i0 = 0;\n }\n break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\nfunction formatRounded(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) {\n return String(x);\n }\n var coefficient = d[0];\n var exponent = d[1];\n if (exponent < 0) {\n return '0.' + new Array(-exponent).join('0') + coefficient;\n } else {\n if (coefficient.length > exponent + 1) {\n return coefficient.slice(0, exponent + 1) + '.' + coefficient.slice(exponent + 1);\n } else {\n return coefficient + new Array(exponent - coefficient.length + 2).join('0');\n }\n }\n}\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns ['123', 0].\nfunction formatDecimalParts(x, p) {\n var sx = p ? x.toExponential(p - 1) : x.toExponential();\n var i = sx.indexOf('e');\n if (i < 0) {\n // NaN, ±Infinity\n return undefined;\n }\n var coefficient = sx.slice(0, i);\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient, +sx.slice(i + 1)];\n}\nfunction identity$1(x) {\n return x;\n}\nvar formatDefaultLocale;\nvar format;\nvar formatPrefix;\ndefaultLocale({\n thousands: ',',\n grouping: [3],\n currency: ['$', '']\n});\nfunction defaultLocale(definition) {\n formatDefaultLocale = formatLocale$1(definition);\n format = formatDefaultLocale.format;\n formatPrefix = formatDefaultLocale.formatPrefix;\n}\nfunction exponent(x) {\n var parts = formatDecimalParts(Math.abs(x));\n if (parts) {\n return parts[1];\n }\n return NaN;\n}\nfunction precisionFixed(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\nfunction precisionPrefix(step, value) {\n var x = Math.floor(exponent(value) / 3);\n x = Math.min(8, x);\n x = Math.max(-8, x);\n return Math.max(0, x * 3 - exponent(Math.abs(step)));\n}\nfunction precisionRound(step, max) {\n step = Math.abs(step);\n max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\nfunction formatLocale$1(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity$1 : formatGroup(Array.prototype.map.call(locale.grouping, Number), String(locale.thousands));\n var currencyPrefix = locale.currency === undefined ? '' : String(locale.currency[0]);\n var currencySuffix = locale.currency === undefined ? '' : String(locale.currency[1]);\n var decimal = locale.decimal === undefined ? '.' : String(locale.decimal);\n var numerals = locale.numerals === undefined ? identity$1 : formatNumerals(Array.prototype.map.call(locale.numerals, String));\n var percent = locale.percent === undefined ? '%' : String(locale.percent);\n var minus = locale.minus === undefined ? '\\u2212' : String(locale.minus);\n var nan = locale.nan === undefined ? 'NaN' : String(locale.nan);\n function newFormat(specifier) {\n var formatSpecifier = makeFormatSpecifier(specifier);\n var fill = formatSpecifier.fill;\n var align = formatSpecifier.align;\n var sign = formatSpecifier.sign;\n var symbol = formatSpecifier.symbol;\n var zero = formatSpecifier.zero;\n var width = formatSpecifier.width;\n var comma = formatSpecifier.comma;\n var precision = formatSpecifier.precision;\n var trim = formatSpecifier.trim;\n var type = formatSpecifier.type;\n // The 'n' type is an alias for ',g'.\n if (type === 'n') {\n comma = true;\n type = 'g';\n } else if (!formatTypes[type]) {\n // The '' type, and any invalid type, is an alias for '.12~g'.\n if (precision === undefined) {\n precision = 12;\n }\n trim = true;\n type = 'g';\n }\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || fill === '0' && align === '=') {\n zero = true;\n fill = '0';\n align = '=';\n }\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === '$' ? currencyPrefix : symbol === '#' && /[boxX]/.test(type) ? '0' + type.toLowerCase() : '';\n var suffix = symbol === '$' ? currencySuffix : /[%p]/.test(type) ? percent : '';\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type];\n var maybeSuffix = /[defgprs%]/.test(type);\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n if (precision === undefined) {\n precision = 6;\n } else if (/[gprs]/.test(type)) {\n precision = Math.max(1, Math.min(21, precision));\n } else {\n precision = Math.max(0, Math.min(20, precision));\n }\n function format(x) {\n var valuePrefix = prefix;\n var valueSuffix = suffix;\n var value;\n if (type === 'c') {\n valueSuffix = formatType(+x) + valueSuffix;\n value = '';\n } else {\n var nx = +x;\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = x < 0 || 1 / nx < 0;\n // Perform the initial formatting.\n value = isNaN(nx) ? nan : formatType(Math.abs(nx), precision);\n // Trim insignificant zeros.\n if (trim) {\n value = formatTrim(value);\n }\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== '+') {\n valueNegative = false;\n }\n // Compute the prefix and suffix.\n var signPrefix = valueNegative ? sign === '(' ? sign : minus : sign === '-' || sign === '(' ? '' : sign;\n var signSuffix = valueNegative && sign === '(' ? ')' : '';\n valuePrefix = signPrefix + valuePrefix;\n valueSuffix = (type === 's' ? prefixes[8 + prefixExponent / 3] : '') + valueSuffix + signSuffix;\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n for (var i = 0, n = value.length; i < n; i++) {\n var c = value.charCodeAt(i);\n if (48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n // If the fill character is not '0', grouping is applied before padding.\n if (comma && !zero) {\n value = group(value, Infinity);\n }\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length;\n var padding = length < width ? new Array(width - length + 1).join(fill) : '';\n // If the fill character is '0', grouping is applied after padding.\n if (comma && zero) {\n value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity);\n padding = '';\n }\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case '<':\n value = valuePrefix + value + valueSuffix + padding;\n break;\n case '=':\n value = valuePrefix + padding + value + valueSuffix;\n break;\n case '^':\n value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length);\n break;\n default:\n value = padding + valuePrefix + value + valueSuffix;\n break;\n }\n var string = formatSpecifier.string;\n if (string) {\n return string.replace(interpolateRegEx, function () {\n return numerals(value);\n });\n }\n return numerals(value);\n }\n return format;\n }\n function formatPrefix(specifier, value) {\n var formatSpecifier = makeFormatSpecifier(specifier);\n formatSpecifier.type = 'f';\n var f = newFormat(formatSpecifier);\n var e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3;\n var k = Math.pow(10, -e);\n var prefix = prefixes[8 + e / 3];\n return function (value) {\n return f(k * +value) + prefix;\n };\n }\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\nvar __extends$j = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n/**\n * Maps continuous domain to a continuous range.\n */\nvar LinearScale = /** @class */function (_super) {\n __extends$j(LinearScale, _super);\n function LinearScale() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'linear';\n return _this;\n }\n LinearScale.prototype.ticks = function (count) {\n if (count === void 0) {\n count = 10;\n }\n var d = this._domain;\n return ticks(d[0], d[d.length - 1], count);\n };\n /**\n * Extends the domain so that it starts and ends on nice round values.\n * @param count Tick count.\n */\n LinearScale.prototype.nice = function (count) {\n if (count === void 0) {\n count = 10;\n }\n var d = this.domain;\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var step;\n if (stop < start) {\n step = start;\n start = stop;\n stop = step;\n step = i0;\n i0 = i1;\n i1 = step;\n }\n step = tickIncrement(start, stop, count);\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n this.domain = d;\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n this.domain = d;\n }\n };\n LinearScale.prototype.tickFormat = function (count, specifier) {\n var d = this.domain;\n return tickFormat(d[0], d[d.length - 1], count == undefined ? 10 : count, specifier);\n };\n return LinearScale;\n}(ContinuousScale);\nvar __extends$i = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar t0 = new Date();\nvar t1 = new Date();\n/**\n * The interval methods don't mutate Date parameters.\n */\nvar TimeInterval = /** @class */function () {\n function TimeInterval(floor, offset) {\n this._floor = floor;\n this._offset = offset;\n }\n /**\n * Returns a new date representing the latest interval boundary date before or equal to date.\n * For example, `day.floor(date)` typically returns 12:00 AM local time on the given date.\n * @param date\n */\n TimeInterval.prototype.floor = function (date) {\n date = new Date(+date);\n this._floor(date);\n return date;\n };\n /**\n * Returns a new date representing the earliest interval boundary date after or equal to date.\n * @param date\n */\n TimeInterval.prototype.ceil = function (date) {\n date = new Date(+date - 1);\n this._floor(date);\n this._offset(date, 1);\n this._floor(date);\n return date;\n };\n /**\n * Returns a new date representing the closest interval boundary date to date.\n * @param date\n */\n TimeInterval.prototype.round = function (date) {\n var d0 = this.floor(date);\n var d1 = this.ceil(date);\n var ms = +date;\n return ms - d0.getTime() < d1.getTime() - ms ? d0 : d1;\n };\n /**\n * Returns a new date equal to date plus step intervals.\n * @param date\n * @param step\n */\n TimeInterval.prototype.offset = function (date, step) {\n if (step === void 0) {\n step = 1;\n }\n date = new Date(+date);\n this._offset(date, Math.floor(step));\n return date;\n };\n /**\n * Returns an array of dates representing every interval boundary after or equal to start (inclusive) and before stop (exclusive).\n * @param start\n * @param stop\n * @param step\n */\n TimeInterval.prototype.range = function (start, stop, step) {\n if (step === void 0) {\n step = 1;\n }\n var range = [];\n start = this.ceil(start);\n step = Math.floor(step);\n if (start > stop || step <= 0) {\n return range;\n }\n var previous;\n do {\n previous = new Date(+start);\n range.push(previous);\n this._offset(start, step);\n this._floor(start);\n } while (previous < start && start < stop);\n return range;\n };\n // Returns an interval that is a subset of this interval.\n // For example, to create an interval that return 1st, 11th, 21st and 31st of each month:\n // day.filter(date => (date.getDate() - 1) % 10 === 0)\n TimeInterval.prototype.filter = function (test) {\n var _this = this;\n var floor = function (date) {\n if (date instanceof Date) {\n _this._floor(date);\n while (!test(date)) {\n date.setTime(date.getTime() - 1);\n _this._floor(date);\n }\n }\n return date;\n };\n var offset = function (date, step) {\n if (date instanceof Date) {\n if (step < 0) {\n while (++step <= 0) {\n do {\n _this._offset(date, -1);\n } while (!test(date));\n }\n } else {\n while (--step >= 0) {\n do {\n _this._offset(date, 1);\n } while (!test(date));\n }\n }\n }\n return date;\n };\n return new TimeInterval(floor, offset);\n };\n return TimeInterval;\n}();\nvar CountableTimeInterval = /** @class */function (_super) {\n __extends$i(CountableTimeInterval, _super);\n function CountableTimeInterval(floor, offset, count, field) {\n var _this = _super.call(this, floor, offset) || this;\n _this._count = count;\n _this._field = field;\n return _this;\n }\n /**\n * Returns the number of interval boundaries after start (exclusive) and before or equal to end (inclusive).\n * @param start\n * @param end\n */\n CountableTimeInterval.prototype.count = function (start, end) {\n t0.setTime(+start);\n t1.setTime(+end);\n this._floor(t0);\n this._floor(t1);\n return Math.floor(this._count(t0, t1));\n };\n /**\n * Returns a filtered view of this interval representing every step'th date.\n * The meaning of step is dependent on this interval’s parent interval as defined by the `field` function.\n * @param step\n */\n CountableTimeInterval.prototype.every = function (step) {\n var _this = this;\n var result;\n step = Math.floor(step);\n if (isFinite(step) && step > 0) {\n if (step > 1) {\n var field_1 = this._field;\n if (field_1) {\n result = this.filter(function (d) {\n return field_1(d) % step === 0;\n });\n } else {\n result = this.filter(function (d) {\n return _this.count(0, d) % step === 0;\n });\n }\n } else {\n result = this;\n }\n }\n return result;\n };\n return CountableTimeInterval;\n}(TimeInterval);\nfunction floor$8(date) {\n return date;\n}\nfunction offset$8(date, milliseconds) {\n date.setTime(date.getTime() + milliseconds);\n}\nfunction count$8(start, end) {\n return end.getTime() - start.getTime();\n}\nvar millisecond = new CountableTimeInterval(floor$8, offset$8, count$8);\n\n// Common time unit sizes in milliseconds.\nvar durationSecond = 1000;\nvar durationMinute = durationSecond * 60;\nvar durationHour = durationMinute * 60;\nvar durationDay = durationHour * 24;\nvar durationWeek = durationDay * 7;\nvar durationMonth = durationDay * 30;\nvar durationYear = durationDay * 365;\nfunction floor$7(date) {\n date.setTime(date.getTime() - date.getMilliseconds());\n}\nfunction offset$7(date, seconds) {\n date.setTime(date.getTime() + seconds * durationSecond);\n}\nfunction count$7(start, end) {\n return (end.getTime() - start.getTime()) / durationSecond;\n}\nvar second = new CountableTimeInterval(floor$7, offset$7, count$7);\nfunction floor$6(date) {\n date.setTime(date.getTime() - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}\nfunction offset$6(date, minutes) {\n date.setTime(date.getTime() + minutes * durationMinute);\n}\nfunction count$6(start, end) {\n return (end.getTime() - start.getTime()) / durationMinute;\n}\nfunction field$6(date) {\n return date.getMinutes();\n}\nvar minute = new CountableTimeInterval(floor$6, offset$6, count$6, field$6);\nfunction floor$5(date) {\n date.setTime(date.getTime() - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}\nfunction offset$5(date, hours) {\n date.setTime(date.getTime() + hours * durationHour);\n}\nfunction count$5(start, end) {\n return (end.getTime() - start.getTime()) / durationHour;\n}\nfunction field$5(date) {\n return date.getHours();\n}\nvar hour = new CountableTimeInterval(floor$5, offset$5, count$5, field$5);\nfunction floor$4(date) {\n date.setHours(0, 0, 0, 0);\n}\nfunction offset$4(date, days) {\n date.setDate(date.getDate() + days);\n}\nfunction count$4(start, end) {\n var tzMinuteDelta = end.getTimezoneOffset() - start.getTimezoneOffset();\n return (end.getTime() - start.getTime() - tzMinuteDelta * durationMinute) / durationDay;\n}\nfunction field$4(date) {\n return date.getDate() - 1;\n}\nvar day = new CountableTimeInterval(floor$4, offset$4, count$4, field$4);\n\n// Set date to n-th day of the week.\nfunction weekday$1(n) {\n // Sets the `date` to the start of the `n`-th day of the current week.\n // n == 0 is Sunday.\n function floor(date) {\n // 1..31 1..7\n date.setDate(date.getDate() - (date.getDay() + 7 - n) % 7);\n date.setHours(0, 0, 0, 0); // h, m, s, ms\n }\n // Offset the date by the given number of weeks.\n function offset(date, weeks) {\n date.setDate(date.getDate() + weeks * 7);\n }\n // Count the number of weeks between the start and end dates.\n function count(start, end) {\n var msDelta = end.getTime() - start.getTime();\n var tzMinuteDelta = end.getTimezoneOffset() - start.getTimezoneOffset();\n return (msDelta - tzMinuteDelta * durationMinute) / durationWeek;\n }\n return new CountableTimeInterval(floor, offset, count);\n}\nvar sunday = weekday$1(0);\nvar monday = weekday$1(1);\nweekday$1(2);\nweekday$1(3);\nvar thursday = weekday$1(4);\nweekday$1(5);\nweekday$1(6);\nfunction floor$3(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}\nfunction offset$3(date, months) {\n date.setMonth(date.getMonth() + months);\n}\nfunction count$3(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}\nfunction field$3(date) {\n return date.getMonth();\n}\nvar month = new CountableTimeInterval(floor$3, offset$3, count$3, field$3);\nfunction floor$2(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}\nfunction offset$2(date, years) {\n date.setFullYear(date.getFullYear() + years);\n}\nfunction count$2(start, end) {\n return end.getFullYear() - start.getFullYear();\n}\nfunction field$2(date) {\n return date.getFullYear();\n}\nvar year = new CountableTimeInterval(floor$2, offset$2, count$2, field$2);\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\nfunction complexBisectRight(list, x, map, lo, hi) {\n if (lo === void 0) {\n lo = 0;\n }\n if (hi === void 0) {\n hi = list.length;\n }\n var comparator = ascendingComparator(map);\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (comparator(list[mid], x) < 0) {\n lo = mid + 1;\n } else {\n hi = mid;\n }\n }\n return lo;\n}\nfunction ascendingComparator(map) {\n return function (item, x) {\n return ascending(map(item), x);\n };\n}\nfunction floor$1(date) {\n date.setUTCHours(0, 0, 0, 0);\n}\nfunction offset$1(date, days) {\n date.setUTCDate(date.getUTCDate() + days);\n}\nfunction count$1(start, end) {\n return (end.getTime() - start.getTime()) / durationDay;\n}\nfunction field$1(date) {\n return date.getUTCDate() - 1;\n}\nvar utcDay = new CountableTimeInterval(floor$1, offset$1, count$1, field$1);\nfunction floor(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}\nfunction offset(date, years) {\n date.setUTCFullYear(date.getUTCFullYear() + years);\n}\nfunction count(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}\nfunction field(date) {\n return date.getUTCFullYear();\n}\nvar utcYear = new CountableTimeInterval(floor, offset, count, field);\n\n// Set date to n-th day of the week.\nfunction weekday(n) {\n // Sets the `date` to the start of the `n`-th day of the current week.\n // n == 0 is Sunday.\n function floor(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - n) % 7);\n date.setHours(0, 0, 0, 0); // h, m, s, ms\n }\n // Offset the date by the given number of weeks.\n function offset(date, weeks) {\n date.setUTCDate(date.getUTCDate() + weeks * 7);\n }\n // Count the number of weeks between the start and end dates.\n function count(start, end) {\n return (end.getTime() - start.getTime()) / durationWeek;\n }\n return new CountableTimeInterval(floor, offset, count);\n}\nvar utcSunday = weekday(0);\nvar utcMonday = weekday(1);\nweekday(2);\nweekday(3);\nvar utcThursday = weekday(4);\nweekday(5);\nweekday(6);\nfunction localDate(d) {\n // For JS Dates the [0, 100) interval is a time warp, a fast forward to the 20th century.\n // For example, -1 is -0001 BC, 0 is already 1900 AD.\n if (d.y >= 0 && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\nfunction utcDate(d) {\n if (d.y >= 0 && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n/**\n * Creates a lookup map for array of names to go from a name to index.\n * @param names\n */\nfunction formatLookup(names) {\n var map = {};\n for (var i = 0, n = names.length; i < n; i++) {\n map[names[i].toLowerCase()] = i;\n }\n return map;\n}\nfunction newYear(y) {\n return {\n y: y,\n m: 0,\n d: 1,\n H: 0,\n M: 0,\n S: 0,\n L: 0\n };\n}\nvar percentCharCode = 37;\nvar numberRe = /^\\s*\\d+/; // ignores next directive\nvar percentRe = /^%/;\nvar requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n/**\n * Prepends any character in the `requoteRe` set with a backslash.\n * @param s\n */\nvar requote = function (s) {\n return s.replace(requoteRe, '\\\\$&');\n}; // $& - matched substring\n/**\n * Returns a RegExp that matches any string that starts with any of the given names (case insensitive).\n * @param names\n */\nvar formatRe = function (names) {\n return new RegExp('^(?:' + names.map(requote).join('|') + ')', 'i');\n};\n// A map of padding modifiers to padding strings. Default is `0`.\nvar pads = {\n '-': '',\n '_': ' ',\n '0': '0'\n};\nfunction pad(value, fill, width) {\n var sign = value < 0 ? '-' : '';\n var string = String(sign ? -value : value);\n var length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n/**\n * Create a new time-locale-based object which exposes time-formatting\n * methods for the specified locale definition.\n *\n * @param timeLocale A time locale definition.\n */\nfunction formatLocale(timeLocale) {\n var lDateTime = timeLocale.dateTime;\n var lDate = timeLocale.date;\n var lTime = timeLocale.time;\n var lPeriods = timeLocale.periods;\n var lWeekdays = timeLocale.days;\n var lShortWeekdays = timeLocale.shortDays;\n var lMonths = timeLocale.months;\n var lShortMonths = timeLocale.shortMonths;\n var periodRe = formatRe(lPeriods);\n var periodLookup = formatLookup(lPeriods);\n var weekdayRe = formatRe(lWeekdays);\n var weekdayLookup = formatLookup(lWeekdays);\n var shortWeekdayRe = formatRe(lShortWeekdays);\n var shortWeekdayLookup = formatLookup(lShortWeekdays);\n var monthRe = formatRe(lMonths);\n var monthLookup = formatLookup(lMonths);\n var shortMonthRe = formatRe(lShortMonths);\n var shortMonthLookup = formatLookup(lShortMonths);\n var formats = {\n 'a': formatShortWeekday,\n 'A': formatWeekday,\n 'b': formatShortMonth,\n 'B': formatMonth,\n 'c': undefined,\n 'd': formatDayOfMonth,\n 'e': formatDayOfMonth,\n 'f': formatMicroseconds,\n 'H': formatHour24,\n 'I': formatHour12,\n 'j': formatDayOfYear,\n 'L': formatMilliseconds,\n 'm': formatMonthNumber,\n 'M': formatMinutes,\n 'p': formatPeriod,\n 'Q': formatUnixTimestamp,\n 's': formatUnixTimestampSeconds,\n 'S': formatSeconds,\n 'u': formatWeekdayNumberMonday,\n 'U': formatWeekNumberSunday,\n 'V': formatWeekNumberISO,\n 'w': formatWeekdayNumberSunday,\n 'W': formatWeekNumberMonday,\n 'x': undefined,\n 'X': undefined,\n 'y': formatYear,\n 'Y': formatFullYear,\n 'Z': formatZone,\n '%': formatLiteralPercent\n };\n var utcFormats = {\n 'a': formatUTCShortWeekday,\n 'A': formatUTCWeekday,\n 'b': formatUTCShortMonth,\n 'B': formatUTCMonth,\n 'c': undefined,\n 'd': formatUTCDayOfMonth,\n 'e': formatUTCDayOfMonth,\n 'f': formatUTCMicroseconds,\n 'H': formatUTCHour24,\n 'I': formatUTCHour12,\n 'j': formatUTCDayOfYear,\n 'L': formatUTCMilliseconds,\n 'm': formatUTCMonthNumber,\n 'M': formatUTCMinutes,\n 'p': formatUTCPeriod,\n 'Q': formatUnixTimestamp,\n 's': formatUnixTimestampSeconds,\n 'S': formatUTCSeconds,\n 'u': formatUTCWeekdayNumberMonday,\n 'U': formatUTCWeekNumberSunday,\n 'V': formatUTCWeekNumberISO,\n 'w': formatUTCWeekdayNumberSunday,\n 'W': formatUTCWeekNumberMonday,\n 'x': undefined,\n 'X': undefined,\n 'y': formatUTCYear,\n 'Y': formatUTCFullYear,\n 'Z': formatUTCZone,\n '%': formatLiteralPercent\n };\n var parses = {\n 'a': parseShortWeekday,\n 'A': parseWeekday,\n 'b': parseShortMonth,\n 'B': parseMonth,\n 'c': parseLocaleDateTime,\n 'd': parseDayOfMonth,\n 'e': parseDayOfMonth,\n 'f': parseMicroseconds,\n 'H': parseHour24,\n 'I': parseHour24,\n 'j': parseDayOfYear,\n 'L': parseMilliseconds,\n 'm': parseMonthNumber,\n 'M': parseMinutes,\n 'p': parsePeriod,\n 'Q': parseUnixTimestamp,\n 's': parseUnixTimestampSeconds,\n 'S': parseSeconds,\n 'u': parseWeekdayNumberMonday,\n 'U': parseWeekNumberSunday,\n 'V': parseWeekNumberISO,\n 'w': parseWeekdayNumberSunday,\n 'W': parseWeekNumberMonday,\n 'x': parseLocaleDate,\n 'X': parseLocaleTime,\n 'y': parseYear,\n 'Y': parseFullYear,\n 'Z': parseZone,\n '%': parseLiteralPercent\n };\n // Recursive definitions.\n formats.x = newFormat(lDate, formats);\n formats.X = newFormat(lTime, formats);\n formats.c = newFormat(lDateTime, formats);\n utcFormats.x = newFormat(lDate, utcFormats);\n utcFormats.X = newFormat(lTime, utcFormats);\n utcFormats.c = newFormat(lDateTime, utcFormats);\n function newParse(specifier, newDate) {\n return function (str) {\n var d = newYear(1900);\n var i = parseSpecifier(d, specifier, str += '', 0);\n if (i != str.length) {\n return undefined;\n }\n // If a UNIX timestamp is specified, return it.\n if ('Q' in d) {\n return new Date(d.Q);\n }\n // The am-pm flag is 0 for AM, and 1 for PM.\n if ('p' in d) {\n d.H = d.H % 12 + d.p * 12;\n }\n // Convert day-of-week and week-of-year to day-of-year.\n if ('V' in d) {\n if (d.V < 1 || d.V > 53) {\n return undefined;\n }\n if (!('w' in d)) {\n d.w = 1;\n }\n if ('Z' in d) {\n var week = utcDate(newYear(d.y));\n var day$1 = week.getUTCDay();\n week = day$1 > 4 || day$1 === 0 ? utcMonday.ceil(week) : utcMonday.floor(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n var week = newDate(newYear(d.y));\n var day$1 = week.getDay();\n week = day$1 > 4 || day$1 === 0 ? monday.ceil(week) : monday.floor(week);\n week = day.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if ('W' in d || 'U' in d) {\n if (!('w' in d)) {\n d.w = 'u' in d ? d.u % 7 : 'W' in d ? 1 : 0;\n }\n var day$1 = 'Z' in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = 'W' in d ? (d.w + 6) % 7 + d.W * 7 - (day$1 + 5) % 7 : d.w + d.U * 7 - (day$1 + 6) % 7;\n }\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if ('Z' in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n /**\n * Creates a new function that formats the given Date or timestamp according to specifier.\n * @param specifier\n * @param formats\n */\n function newFormat(specifier, formats) {\n return function (date) {\n var string = [];\n var n = specifier.length;\n var i = -1;\n var j = 0;\n if (!(date instanceof Date)) {\n date = new Date(+date);\n }\n while (++i < n) {\n if (specifier.charCodeAt(i) === percentCharCode) {\n string.push(specifier.slice(j, i)); // copy the chunks of specifier with no directives as is\n var c = specifier.charAt(++i);\n var pad_1 = pads[c];\n if (pad_1 != undefined) {\n // if format directive has a padding modifier in front of it\n c = specifier.charAt(++i); // fetch the directive itself\n } else {\n pad_1 = c === 'e' ? ' ' : '0'; // use the default padding modifier\n }\n var format = formats[c];\n if (format) {\n // if the directive has a corresponding formatting function\n c = format(date, pad_1); // replace the directive with the formatted date\n }\n string.push(c);\n j = i + 1;\n }\n }\n string.push(specifier.slice(j, i));\n return string.join('');\n };\n }\n // Simultaneously walks over the specifier and the parsed string, populating the `d` map with parsed values.\n // The returned number is expected to equal the length of the parsed `string`, if parsing succeeded.\n function parseSpecifier(d, specifier, string, j) {\n // i - `specifier` string index\n // j - parsed `string` index\n var i = 0;\n var n = specifier.length;\n var m = string.length;\n while (i < n) {\n if (j >= m) {\n return -1;\n }\n var code = specifier.charCodeAt(i++);\n if (code === percentCharCode) {\n var char = specifier.charAt(i++);\n var parse = parses[char in pads ? specifier.charAt(i++) : char];\n if (!parse || (j = parse(d, string, j)) < 0) {\n return -1;\n }\n } else if (code != string.charCodeAt(j++)) {\n return -1;\n }\n }\n return j;\n }\n // ----------------------------- formats ----------------------------------\n function formatMicroseconds(date, fill) {\n return formatMilliseconds(date, fill) + '000';\n }\n function formatMilliseconds(date, fill) {\n return pad(date.getMilliseconds(), fill, 3);\n }\n function formatSeconds(date, fill) {\n return pad(date.getSeconds(), fill, 2);\n }\n function formatMinutes(date, fill) {\n return pad(date.getMinutes(), fill, 2);\n }\n function formatHour12(date, fill) {\n return pad(date.getHours() % 12 || 12, fill, 2);\n }\n function formatHour24(date, fill) {\n return pad(date.getHours(), fill, 2);\n }\n function formatPeriod(date) {\n return lPeriods[date.getHours() >= 12 ? 1 : 0];\n }\n function formatShortWeekday(date) {\n return lShortWeekdays[date.getDay()];\n }\n function formatWeekday(date) {\n return lWeekdays[date.getDay()];\n }\n function formatWeekdayNumberMonday(date) {\n var dayOfWeek = date.getDay();\n return dayOfWeek === 0 ? 7 : dayOfWeek;\n }\n function formatWeekNumberSunday(date, fill) {\n return pad(sunday.count(year.floor(date), date), fill, 2);\n }\n function formatWeekNumberISO(date, fill) {\n var day = date.getDay();\n date = day >= 4 || day === 0 ? thursday.floor(date) : thursday.ceil(date);\n var yearStart = year.floor(date);\n return pad(thursday.count(yearStart, date) + (yearStart.getDay() === 4 ? 1 : 0), fill, 2);\n }\n function formatWeekdayNumberSunday(date) {\n return date.getDay();\n }\n function formatWeekNumberMonday(date, fill) {\n return pad(monday.count(year.floor(date), date), fill, 2);\n }\n function formatDayOfMonth(date, fill) {\n return pad(date.getDate(), fill, 2);\n }\n function formatDayOfYear(date, fill) {\n return pad(1 + day.count(year.floor(date), date), fill, 3);\n }\n function formatShortMonth(date) {\n return lShortMonths[date.getMonth()];\n }\n function formatMonth(date) {\n return lMonths[date.getMonth()];\n }\n function formatMonthNumber(date, fill) {\n return pad(date.getMonth() + 1, fill, 2);\n }\n function formatYear(date, fill) {\n return pad(date.getFullYear() % 100, fill, 2);\n }\n function formatFullYear(date, fill) {\n return pad(date.getFullYear() % 10000, fill, 4);\n }\n function formatZone(date) {\n var z = date.getTimezoneOffset();\n return (z > 0 ? '-' : (z *= -1, '+')) + pad(Math.floor(z / 60), '0', 2) + pad(z % 60, '0', 2);\n }\n // -------------------------- UTC formats -----------------------------------\n function formatUTCMicroseconds(date, fill) {\n return formatUTCMilliseconds(date, fill) + '000';\n }\n function formatUTCMilliseconds(date, fill) {\n return pad(date.getUTCMilliseconds(), fill, 3);\n }\n function formatUTCSeconds(date, fill) {\n return pad(date.getUTCSeconds(), fill, 2);\n }\n function formatUTCMinutes(date, fill) {\n return pad(date.getUTCMinutes(), fill, 2);\n }\n function formatUTCHour12(date, fill) {\n return pad(date.getUTCHours() % 12 || 12, fill, 2);\n }\n function formatUTCHour24(date, fill) {\n return pad(date.getUTCHours(), fill, 2);\n }\n function formatUTCPeriod(date) {\n return lPeriods[date.getUTCHours() >= 12 ? 1 : 0];\n }\n function formatUTCDayOfMonth(date, fill) {\n return pad(date.getUTCDate(), fill, 2);\n }\n function formatUTCDayOfYear(date, fill) {\n return pad(1 + utcDay.count(utcYear.floor(date), date), fill, 3);\n }\n function formatUTCMonthNumber(date, fill) {\n return pad(date.getUTCMonth() + 1, fill, 2);\n }\n function formatUTCShortMonth(date) {\n return lShortMonths[date.getUTCMonth()];\n }\n function formatUTCMonth(date) {\n return lMonths[date.getUTCMonth()];\n }\n function formatUTCShortWeekday(date) {\n return lShortWeekdays[date.getUTCDay()];\n }\n function formatUTCWeekday(date) {\n return lWeekdays[date.getUTCDay()];\n }\n function formatUTCWeekdayNumberMonday(date) {\n var dayOfWeek = date.getUTCDay();\n return dayOfWeek === 0 ? 7 : dayOfWeek;\n }\n function formatUTCWeekNumberSunday(date, fill) {\n return pad(utcSunday.count(utcYear.floor(date), date), fill, 2);\n }\n function formatUTCWeekNumberISO(date, fill) {\n var day = date.getUTCDay();\n date = day >= 4 || day === 0 ? utcThursday.floor(date) : utcThursday.ceil(date);\n var yearStart = utcYear.floor(date);\n return pad(utcThursday.count(yearStart, date) + (yearStart.getUTCDay() === 4 ? 1 : 0), fill, 4);\n }\n function formatUTCWeekdayNumberSunday(date) {\n return date.getUTCDay();\n }\n function formatUTCWeekNumberMonday(date, fill) {\n return pad(utcMonday.count(utcYear.floor(date), date), fill, 2);\n }\n function formatUTCYear(date, fill) {\n return pad(date.getUTCFullYear() % 100, fill, 2);\n }\n function formatUTCFullYear(date, fill) {\n return pad(date.getUTCFullYear() % 10000, fill, 4);\n }\n function formatUTCZone() {\n return '+0000';\n }\n function formatLiteralPercent(date) {\n return '%';\n }\n function formatUnixTimestamp(date) {\n return date.getTime();\n }\n function formatUnixTimestampSeconds(date) {\n return Math.floor(date.getTime() / 1000);\n }\n // ------------------------------- parsers ------------------------------------\n function parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(parseFloat(n[0]) / 1000), i + n[0].length) : -1;\n }\n function parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n }\n function parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n }\n function parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n }\n function parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n }\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n function parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n }\n function parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n }\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n function parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n }\n function parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n }\n function parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n }\n function parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n }\n function parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n }\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n function parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = parseFloat(n[0]) - 1, i + n[0].length) : -1;\n }\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, lDateTime, string, i);\n }\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, lDate, string, i);\n }\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, lTime, string, i);\n }\n function parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n }\n function parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0] * 1000, i + n[0].length) : -1;\n }\n function parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n }\n function parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n }\n function parseZone(d, string, i) {\n var n = /^(Z)|^([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || '00')), i + n[0].length) : -1;\n }\n function parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n }\n return {\n format: function (specifier) {\n var f = newFormat(specifier, formats);\n f.toString = function () {\n return specifier;\n };\n return f;\n },\n parse: function (specifier) {\n var p = newParse(specifier, localDate);\n p.toString = function () {\n return specifier;\n };\n return p;\n },\n utcFormat: function (specifier) {\n var f = newFormat(specifier, utcFormats);\n f.toString = function () {\n return specifier;\n };\n return f;\n },\n utcParse: function (specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function () {\n return specifier;\n };\n return p;\n }\n };\n}\nvar locale;\nsetDefaultLocale({\n dateTime: '%x, %X',\n date: '%-m/%-d/%Y',\n time: '%-I:%M:%S %p',\n periods: ['AM', 'PM'],\n days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n shortDays: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n shortMonths: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']\n});\nfunction setDefaultLocale(definition) {\n return locale = formatLocale(definition);\n}\nvar __extends$h = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __read = undefined && undefined.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar TimeScale = /** @class */function (_super) {\n __extends$h(TimeScale, _super);\n function TimeScale() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'time';\n _this.year = year;\n _this.month = month;\n _this.week = sunday;\n _this.day = day;\n _this.hour = hour;\n _this.minute = minute;\n _this.second = second;\n _this.millisecond = millisecond;\n _this.format = locale.format;\n /**\n * Array of default tick intervals in the following format:\n *\n * [\n * interval (unit of time),\n * number of units (step),\n * the length of that number of units in milliseconds\n * ]\n */\n _this.tickIntervals = [[_this.second, 1, durationSecond], [_this.second, 5, 5 * durationSecond], [_this.second, 15, 15 * durationSecond], [_this.second, 30, 30 * durationSecond], [_this.minute, 1, durationMinute], [_this.minute, 5, 5 * durationMinute], [_this.minute, 15, 15 * durationMinute], [_this.minute, 30, 30 * durationMinute], [_this.hour, 1, durationHour], [_this.hour, 3, 3 * durationHour], [_this.hour, 6, 6 * durationHour], [_this.hour, 12, 12 * durationHour], [_this.day, 1, durationDay], [_this.day, 2, 2 * durationDay], [_this.week, 1, durationWeek], [_this.month, 1, durationMonth], [_this.month, 3, 3 * durationMonth], [_this.year, 1, durationYear]];\n _this.formatMillisecond = _this.format('.%L');\n _this.formatSecond = _this.format(':%S');\n _this.formatMinute = _this.format('%I:%M');\n _this.formatHour = _this.format('%I %p');\n _this.formatDay = _this.format('%a %d');\n _this.formatWeek = _this.format('%b %d');\n _this.formatMonth = _this.format('%B');\n _this.formatYear = _this.format('%Y');\n _this._domain = [new Date(2000, 0, 1), new Date(2000, 0, 2)];\n return _this;\n }\n TimeScale.prototype.defaultTickFormat = function (date) {\n return (this.second.floor(date) < date ? this.formatMillisecond : this.minute.floor(date) < date ? this.formatSecond : this.hour.floor(date) < date ? this.formatMinute : this.day.floor(date) < date ? this.formatHour : this.month.floor(date) < date ? this.week.floor(date) < date ? this.formatDay : this.formatWeek : this.year.floor(date) < date ? this.formatMonth : this.formatYear)(date);\n };\n /**\n *\n * @param interval If the `interval` is a number, it's interpreted as the desired tick count\n * and the method tries to pick an appropriate interval automatically, based on the extent of the domain.\n * If the `interval` is `undefined`, it defaults to `10`.\n * If the `interval` is a time interval, simply use it.\n * @param start The start time (timestamp).\n * @param stop The end time (timestamp).\n * @param step Number of intervals between ticks.\n */\n TimeScale.prototype.tickInterval = function (interval, start, stop, step) {\n var _a;\n if (typeof interval === 'number') {\n var tickCount = interval;\n var tickIntervals = this.tickIntervals;\n var target = Math.abs(stop - start) / tickCount;\n var i = complexBisectRight(tickIntervals, target, function (interval) {\n return interval[2];\n });\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, tickCount);\n interval = this.year;\n } else if (i) {\n _a = __read(tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i], 2), interval = _a[0], step = _a[1];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = this.millisecond;\n }\n }\n return step == undefined ? interval : interval.every(step);\n };\n Object.defineProperty(TimeScale.prototype, \"domain\", {\n get: function () {\n return _super.prototype.getDomain.call(this).map(function (t) {\n return new Date(t);\n });\n },\n set: function (values) {\n _super.prototype.setDomain.call(this, Array.prototype.map.call(values, function (t) {\n return t instanceof Date ? +t : +new Date(+t);\n }));\n },\n enumerable: true,\n configurable: true\n });\n TimeScale.prototype.invert = function (y) {\n return new Date(_super.prototype.invert.call(this, y));\n };\n /**\n * Returns uniformly-spaced dates that represent the scale's domain.\n * @param interval The desired tick count or a time interval object.\n */\n TimeScale.prototype.ticks = function (interval) {\n if (interval === void 0) {\n interval = 10;\n }\n var d = _super.prototype.getDomain.call(this);\n var t0 = d[0];\n var t1 = d[d.length - 1];\n var reverse = t1 < t0;\n if (reverse) {\n var _ = t0;\n t0 = t1;\n t1 = _;\n }\n var t = this.tickInterval(interval, t0, t1);\n var i = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return reverse ? i.reverse() : i;\n };\n /**\n * Returns a time format function suitable for displaying tick values.\n * @param count Ignored. Used only to satisfy the {@link Scale} interface.\n * @param specifier If the specifier string is provided, this method is equivalent to\n * the {@link TimeLocaleObject.format} method.\n * If no specifier is provided, this method returns the default time format function.\n */\n TimeScale.prototype.tickFormat = function (_count, specifier) {\n return specifier == undefined ? this.defaultTickFormat.bind(this) : this.format(specifier);\n };\n /**\n * Extends the domain so that it starts and ends on nice round values.\n * This method typically modifies the scale’s domain, and may only extend the bounds to the nearest round value.\n * @param interval\n */\n TimeScale.prototype.nice = function (interval) {\n if (interval === void 0) {\n interval = 10;\n }\n var d = _super.prototype.getDomain.call(this);\n var i = this.tickInterval(interval, d[0], d[d.length - 1]);\n if (i) {\n this.domain = this._nice(d, i);\n }\n };\n TimeScale.prototype._nice = function (domain, interval) {\n var _a, _b;\n domain = domain.slice();\n var i0 = 0;\n var i1 = domain.length - 1;\n var x0 = domain[i0];\n var x1 = domain[i1];\n if (x1 < x0) {\n _a = __read([i1, i0], 2), i0 = _a[0], i1 = _a[1];\n _b = __read([x1, x0], 2), x0 = _b[0], x1 = _b[1];\n }\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n };\n return TimeScale;\n}(ContinuousScale);\nundefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nfunction identity(value) {\n return value;\n}\nfunction extent(values, predicate, map) {\n var transform = map || identity;\n var n = values.length;\n var i = -1;\n var value;\n var min;\n var max;\n while (++i < n) {\n // Find the first value.\n value = values[i];\n if (predicate(value)) {\n min = max = value;\n while (++i < n) {\n // Compare the remaining values.\n value = values[i];\n if (predicate(value)) {\n if (min > value) {\n min = value;\n }\n if (max < value) {\n max = value;\n }\n }\n }\n }\n }\n return min === undefined || max === undefined ? undefined : [transform(min), transform(max)];\n}\nvar __extends$g = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __values = undefined && undefined.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar SparklineAxis = /** @class */function (_super) {\n __extends$g(SparklineAxis, _super);\n function SparklineAxis() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'category';\n _this.stroke = 'rgb(204, 214, 235)';\n _this.strokeWidth = 1;\n return _this;\n }\n return SparklineAxis;\n}(Observable);\nvar Sparkline = /** @class */function (_super) {\n __extends$g(Sparkline, _super);\n function Sparkline() {\n var _this = _super.call(this) || this;\n _this.id = createId(_this);\n _this.seriesRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n _this._context = undefined;\n _this._container = undefined;\n _this._data = undefined;\n _this.padding = new Padding(3);\n _this.xKey = 'x';\n _this.yKey = 'y';\n _this.dataType = undefined;\n _this.xData = [];\n _this.yData = [];\n // Minimum y value in provided data.\n _this.min = undefined;\n // Maximum y value in provided data.\n _this.max = undefined;\n _this.yScale = new LinearScale();\n _this.axis = new SparklineAxis();\n _this.highlightStyle = {\n size: 6,\n fill: 'yellow',\n stroke: 'silver',\n strokeWidth: 1\n };\n _this._width = 100;\n _this._height = 100;\n _this.smallestInterval = undefined;\n _this.layoutId = 0;\n _this.defaultDateFormatter = locale.format('%m/%d/%y, %H:%M:%S');\n _this._onMouseMove = _this.onMouseMove.bind(_this);\n _this._onMouseOut = _this.onMouseOut.bind(_this);\n var root = new Group();\n _this.rootGroup = root;\n var element = document.createElement('div');\n element.setAttribute('class', 'ag-sparkline-wrapper');\n var scene = new Scene(document);\n _this.scene = scene;\n _this.canvasElement = scene.canvas.element;\n scene.root = root;\n scene.container = element;\n scene.resize(_this.width, _this.height);\n _this.seriesRect.width = _this.width;\n _this.seriesRect.height = _this.height;\n // one style element for tooltip styles per document\n if (Sparkline.tooltipDocuments.indexOf(document) === -1) {\n var styleElement = document.createElement('style');\n styleElement.innerHTML = defaultTooltipCss;\n document.head.insertBefore(styleElement, document.head.querySelector('style'));\n Sparkline.tooltipDocuments.push(document);\n }\n _this.setupDomEventListeners(_this.scene.canvas.element);\n return _this;\n }\n Object.defineProperty(Sparkline.prototype, \"context\", {\n get: function () {\n return this._context;\n },\n set: function (value) {\n if (this._context !== value) {\n this._context = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sparkline.prototype, \"container\", {\n get: function () {\n return this._container;\n },\n set: function (value) {\n if (this._container !== value) {\n var parentNode = this.canvasElement.parentNode;\n if (parentNode != null) {\n parentNode.removeChild(this.canvasElement);\n }\n if (value) {\n value.appendChild(this.canvasElement);\n }\n this._container = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sparkline.prototype, \"data\", {\n get: function () {\n return this._data;\n },\n set: function (value) {\n if (this._data !== value) {\n this._data = value;\n this.processData();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sparkline.prototype, \"width\", {\n get: function () {\n return this._width;\n },\n set: function (value) {\n if (this._width !== value) {\n this._width = value;\n this.scene.resize(value, this.height);\n this.scheduleLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sparkline.prototype, \"height\", {\n get: function () {\n return this._height;\n },\n set: function (value) {\n if (this._height !== value) {\n this._height = value;\n this.scene.resize(this.width, value);\n this.scheduleLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Generate node data from processed data.\n * Produce data joins.\n * Update selection's nodes using node data.\n */\n Sparkline.prototype.update = function () {};\n // Update y scale based on processed data.\n Sparkline.prototype.updateYScale = function () {\n this.updateYScaleRange();\n this.updateYScaleDomain();\n };\n // Update y scale domain based on processed data.\n Sparkline.prototype.updateYScaleDomain = function () {};\n // Update y scale range based on height and padding (seriesRect).\n Sparkline.prototype.updateYScaleRange = function () {\n var _a = this,\n yScale = _a.yScale,\n seriesRect = _a.seriesRect;\n yScale.range = [seriesRect.height, 0];\n };\n // Update x scale based on processed data.\n Sparkline.prototype.updateXScale = function () {\n var type = this.axis.type;\n this.xScale = this.getXScale(type);\n this.updateXScaleRange();\n this.updateXScaleDomain();\n };\n // Update x scale range based on width and padding (seriesRect).\n Sparkline.prototype.updateXScaleRange = function () {\n this.xScale.range = [0, this.seriesRect.width];\n };\n // Update x scale domain based on processed data and type of scale.\n Sparkline.prototype.updateXScaleDomain = function () {\n var _a = this,\n xData = _a.xData,\n xScale = _a.xScale;\n var xMinMax;\n if (xScale instanceof LinearScale) {\n xMinMax = extent(xData, isNumber);\n } else if (xScale instanceof TimeScale) {\n xMinMax = extent(xData, isContinuous);\n }\n this.xScale.domain = xMinMax ? xMinMax.slice() : xData;\n };\n /**\n * Return xScale instance based on the provided type or return a `BandScale` by default.\n * The default type is `category`.\n * @param type\n */\n Sparkline.prototype.getXScale = function (type) {\n if (type === void 0) {\n type = 'category';\n }\n switch (type) {\n case 'number':\n return new LinearScale();\n case 'time':\n return new TimeScale();\n case 'category':\n default:\n return new BandScale();\n }\n };\n // Update axis line.\n Sparkline.prototype.updateAxisLine = function () {};\n // Update X and Y scales and the axis line.\n Sparkline.prototype.updateAxes = function () {\n this.updateYScale();\n this.updateXScale();\n this.updateAxisLine();\n };\n // Update horizontal and vertical crosshair lines.\n Sparkline.prototype.updateCrosshairs = function () {\n this.updateXCrosshairLine();\n this.updateYCrosshairLine();\n };\n // Using processed data, generate data that backs visible nodes.\n Sparkline.prototype.generateNodeData = function () {\n return [];\n };\n // Returns persisted node data associated with the sparkline's data.\n Sparkline.prototype.getNodeData = function () {\n return [];\n };\n // Update the selection's nodes.\n Sparkline.prototype.updateNodes = function () {};\n // Update the vertical crosshair line.\n Sparkline.prototype.updateXCrosshairLine = function () {};\n // Update the horizontal crosshair line.\n Sparkline.prototype.updateYCrosshairLine = function () {};\n Sparkline.prototype.highlightDatum = function (closestDatum) {\n this.updateNodes();\n };\n Sparkline.prototype.dehighlightDatum = function () {\n this.highlightedDatum = undefined;\n this.updateNodes();\n this.updateCrosshairs();\n };\n /**\n * Highlight closest datum and display tooltip if enabled.\n * Only update if necessary, i.e. only update if the highlighted datum is different from previously highlighted datum,\n * or if there is no previously highlighted datum.\n * @param event\n */\n Sparkline.prototype.onMouseMove = function (event) {\n var closestDatum = this.pickClosestSeriesNodeDatum(event.offsetX, event.offsetY);\n if (!closestDatum) {\n return;\n }\n var oldHighlightedDatum = this.highlightedDatum;\n this.highlightedDatum = closestDatum;\n if (this.highlightedDatum && !oldHighlightedDatum || this.highlightedDatum && oldHighlightedDatum && this.highlightedDatum !== oldHighlightedDatum) {\n this.highlightDatum(closestDatum);\n this.updateCrosshairs();\n }\n if (this.tooltip.enabled) {\n this.handleTooltip(event, closestDatum);\n }\n };\n /**\n * Dehighlight all nodes and remove tooltip.\n * @param event\n */\n Sparkline.prototype.onMouseOut = function (event) {\n this.dehighlightDatum();\n this.tooltip.toggle(false);\n };\n // Fetch required values from the data object and process them.\n Sparkline.prototype.processData = function () {\n var _this = this;\n var _a = this,\n data = _a.data,\n yData = _a.yData,\n xData = _a.xData;\n if (!data || this.invalidData(this.data)) {\n return;\n }\n yData.length = 0;\n xData.length = 0;\n var n = data.length;\n var dataType = this.getDataType(data);\n this.dataType = dataType;\n var xValueType = this.axis.type;\n var xType = xValueType !== 'number' && xValueType !== 'time' ? 'category' : xValueType;\n var isContinuousX = xType === 'number' || xType === 'time';\n var setSmallestXInterval = function (curr, prev) {\n if (_this.smallestInterval == undefined) {\n _this.smallestInterval = {\n x: Infinity,\n y: Infinity\n };\n }\n var x = _this.smallestInterval.x;\n var interval = Math.abs(curr - prev);\n if (interval > 0 && interval < x) {\n _this.smallestInterval.x = interval;\n }\n };\n var prevX;\n if (dataType === 'number') {\n for (var i = 0; i < n; i++) {\n var xDatum = i;\n var yDatum = data[i];\n var x = this.getDatum(xDatum, xType);\n var y = this.getDatum(yDatum, 'number');\n if (isContinuousX) {\n setSmallestXInterval(x, prevX);\n }\n xData.push(x);\n yData.push(y);\n prevX = x;\n }\n } else if (dataType === 'array') {\n for (var i = 0; i < n; i++) {\n var datum = data[i];\n if (Array.isArray(datum)) {\n var xDatum = datum[0];\n var yDatum = datum[1];\n var x = this.getDatum(xDatum, xType);\n var y = this.getDatum(yDatum, 'number');\n if (x == undefined) {\n continue;\n }\n if (isContinuousX) {\n setSmallestXInterval(x, prevX);\n }\n xData.push(x);\n yData.push(y);\n prevX = x;\n }\n }\n } else if (dataType === 'object') {\n var _b = this,\n yKey = _b.yKey,\n xKey = _b.xKey;\n for (var i = 0; i < n; i++) {\n var datum = data[i];\n if (typeof datum === 'object' && !Array.isArray(datum)) {\n var xDatum = datum[xKey];\n var yDatum = datum[yKey];\n var x = this.getDatum(xDatum, xType);\n var y = this.getDatum(yDatum, 'number');\n if (x == undefined) {\n continue;\n }\n if (isContinuousX) {\n setSmallestXInterval(x, prevX);\n }\n xData.push(x);\n yData.push(y);\n prevX = x;\n }\n }\n }\n // update axes\n this.updateAxes();\n // produce data joins and update selection's nodes\n this.update();\n };\n /**\n * Return the type of data provided to the sparkline based on the first truthy value in the data array.\n * If the value is not a number, array or object, return `undefined`.\n * @param data\n */\n Sparkline.prototype.getDataType = function (data) {\n var e_1, _a;\n try {\n for (var data_1 = __values(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) {\n var datum = data_1_1.value;\n if (datum != undefined) {\n if (isNumber(datum)) {\n return 'number';\n } else if (Array.isArray(datum)) {\n return 'array';\n } else if (typeof datum === 'object') {\n return 'object';\n }\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (data_1_1 && !data_1_1.done && (_a = data_1.return)) _a.call(data_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n };\n /**\n * Return the given value depending on the type of axis.\n * Return `undefined` if the value is invalid for the given axis type.\n * @param value\n */\n Sparkline.prototype.getDatum = function (value, type) {\n if (type === 'number' && isNumber(value) || type === 'time' && (isNumber(value) || isDate(value))) {\n return value;\n } else if (type === 'category') {\n if (isString(value) || isDate(value) || isNumber(value)) {\n return {\n toString: function () {\n return String(value);\n }\n };\n } else if (isStringObject(value)) {\n return value;\n }\n }\n };\n Object.defineProperty(Sparkline.prototype, \"layoutScheduled\", {\n /**\n * Only `true` while we are waiting for the layout to start.\n * This will be `false` if the layout has already started and is ongoing.\n */\n get: function () {\n return !!this.layoutId;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Execute update method on the next available screen repaint to make changes to the canvas.\n * If we are waiting for a layout to start and a new layout is requested,\n * cancel the previous layout using the non 0 integer (this.layoutId) returned from requestAnimationFrame.\n */\n Sparkline.prototype.scheduleLayout = function () {\n var _this = this;\n if (this.layoutId) {\n cancelAnimationFrame(this.layoutId);\n }\n this.layoutId = requestAnimationFrame(function () {\n _this.setSparklineDimensions();\n if (_this.invalidData(_this.data)) {\n return;\n }\n // update axes ranges\n _this.updateXScaleRange();\n _this.updateYScaleRange();\n // update axis line\n _this.updateAxisLine();\n // produce data joins and update selection's nodes\n _this.update();\n _this.layoutId = 0;\n });\n };\n Sparkline.prototype.setSparklineDimensions = function () {\n var _a = this,\n width = _a.width,\n height = _a.height,\n padding = _a.padding,\n seriesRect = _a.seriesRect,\n rootGroup = _a.rootGroup;\n var shrunkWidth = width - padding.left - padding.right;\n var shrunkHeight = height - padding.top - padding.bottom;\n seriesRect.width = shrunkWidth;\n seriesRect.height = shrunkHeight;\n seriesRect.x = padding.left;\n seriesRect.y = padding.top;\n rootGroup.translationX = seriesRect.x;\n rootGroup.translationY = seriesRect.y;\n };\n /**\n * Return the closest data point to x/y canvas coordinates.\n * @param x\n * @param y\n */\n Sparkline.prototype.pickClosestSeriesNodeDatum = function (x, y) {\n var minDistance = Infinity;\n var closestDatum;\n var hitPoint = this.rootGroup.transformPoint(x, y);\n var nodeData = this.getNodeData();\n for (var i = 0; i < nodeData.length; i++) {\n var datum = nodeData[i];\n if (!datum.point) {\n return;\n }\n var distance = this.getDistance(hitPoint, datum.point);\n if (distance <= minDistance) {\n minDistance = distance;\n closestDatum = datum;\n }\n }\n return closestDatum;\n };\n /**\n * Return the relevant distance between two points.\n * The distance will be calculated based on the x value of the points for all sparklines except bar sparkline, where the distance is based on the y values.\n * @param x\n * @param y\n */\n Sparkline.prototype.getDistance = function (p1, p2) {\n return Math.abs(p1.x - p2.x);\n };\n /**\n * calculate x/y coordinates for tooltip based on coordinates of highlighted datum, position of canvas and page offset.\n * @param datum\n */\n Sparkline.prototype.handleTooltip = function (event, datum) {\n var seriesDatum = datum.seriesDatum;\n var canvasElement = this.canvasElement;\n var clientX = event.clientX,\n clientY = event.clientY;\n // confine tooltip to sparkline width if tooltip container not provided.\n if (this.tooltip.container == undefined) {\n this.tooltip.container = canvasElement;\n }\n var meta = {\n pageX: clientX,\n pageY: clientY\n };\n var yValue = seriesDatum.y;\n var xValue = seriesDatum.x;\n // check if tooltip is enabled for this specific data point\n var enabled = this.tooltip.enabled;\n if (this.tooltip.renderer) {\n var tooltipRendererResult = this.tooltip.renderer({\n context: this.context,\n datum: seriesDatum,\n yValue: yValue,\n xValue: xValue\n });\n enabled = typeof tooltipRendererResult !== 'string' && tooltipRendererResult.enabled !== undefined ? tooltipRendererResult.enabled : enabled;\n }\n var html = enabled && seriesDatum.y !== undefined && this.getTooltipHtml(datum);\n if (html) {\n this.tooltip.show(meta, html);\n }\n };\n Sparkline.prototype.formatNumericDatum = function (datum) {\n return String(Math.round(datum * 10) / 10);\n };\n Sparkline.prototype.formatDatum = function (datum) {\n var type = this.axis.type || 'category';\n if (type === 'number' && typeof datum === 'number') {\n return this.formatNumericDatum(datum);\n } else if (type === 'time' && (datum instanceof Date || isNumber(datum))) {\n return this.defaultDateFormatter(datum);\n } else {\n return String(datum);\n }\n };\n Sparkline.prototype.setupDomEventListeners = function (chartElement) {\n chartElement.addEventListener('mousemove', this._onMouseMove);\n chartElement.addEventListener('mouseout', this._onMouseOut);\n };\n Sparkline.prototype.cleanupDomEventListeners = function (chartElement) {\n chartElement.removeEventListener('mousemove', this._onMouseMove);\n chartElement.removeEventListener('mouseout', this._onMouseOut);\n };\n Sparkline.prototype.invalidData = function (data) {\n return !data || !Array.isArray(data) || data.length === 0;\n };\n /**\n * Cleanup and remove canvas element from the DOM.\n */\n Sparkline.prototype.destroy = function () {\n this.scene.container = undefined;\n // remove canvas element from the DOM\n this.container = undefined;\n this.cleanupDomEventListeners(this.scene.canvas.element);\n };\n Sparkline.tooltipDocuments = [];\n return Sparkline;\n}(Observable);\nvar __extends$f = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nfunction toTooltipHtml(input, defaults) {\n if (typeof input === 'string') {\n return input;\n }\n defaults = defaults || {};\n var _a = input.content,\n content = _a === void 0 ? defaults.content || '' : _a,\n _b = input.title,\n title = _b === void 0 ? defaults.title || undefined : _b,\n _c = input.color,\n color = _c === void 0 ? defaults.color : _c,\n _d = input.backgroundColor,\n backgroundColor = _d === void 0 ? defaults.backgroundColor : _d,\n _e = input.opacity,\n opacity = _e === void 0 ? defaults.opacity || 1 : _e;\n var titleHtml;\n var contentHtml;\n if (color) {\n titleHtml = title ? \"\" + title + \"\" : '';\n contentHtml = \"\" + content + \"\";\n } else {\n titleHtml = title ? \"\" + title + \"\" : '';\n contentHtml = \"\" + content + \"\";\n }\n if (backgroundColor) {\n var bgColor = Color.fromString(backgroundColor.toLowerCase());\n var r = bgColor.r,\n g = bgColor.g,\n b = bgColor.b;\n bgColor.a;\n // TODO: combine a and opacity for alpha?\n var alpha = opacity;\n var bgColorWithAlpha = Color.fromArray([r, g, b, alpha]);\n var bgColorRgbaString = bgColorWithAlpha.toRgbaString();\n return \"
\\n \" + titleHtml + \"\\n \" + contentHtml + \"\\n
\";\n } else {\n return \"
\\n \" + titleHtml + \"\\n \" + contentHtml + \"\\n
\";\n }\n}\nvar SparklineTooltip = /** @class */function (_super) {\n __extends$f(SparklineTooltip, _super);\n function SparklineTooltip() {\n var _this = _super.call(this) || this;\n _this.element = document.createElement('div');\n _this.enabled = true;\n _this.container = undefined;\n _this.xOffset = 10;\n _this.yOffset = 0;\n _this.renderer = undefined;\n var tooltipRoot = document.body;\n tooltipRoot.appendChild(_this.element);\n return _this;\n }\n SparklineTooltip.prototype.isVisible = function () {\n var element = this.element;\n if (element.classList) {\n return !element.classList.contains(SparklineTooltip.class + \"-wrapper-hidden\");\n }\n // IE11\n var classes = element.getAttribute('class');\n if (classes) {\n return classes.split(' ').indexOf(SparklineTooltip.class + \"-wrapper-hidden\") < 0;\n }\n return false;\n };\n SparklineTooltip.prototype.updateClass = function (visible) {\n var classList = [SparklineTooltip.class + \"-wrapper\"];\n if (visible !== true) {\n classList.push(SparklineTooltip.class + \"-wrapper-hidden\");\n }\n this.element.setAttribute('class', classList.join(' '));\n };\n SparklineTooltip.prototype.show = function (meta, html) {\n this.toggle(false);\n var element = this.element;\n if (html !== undefined) {\n element.innerHTML = html;\n } else if (!element.innerHTML) {\n return;\n }\n var left = meta.pageX + this.xOffset;\n var top = meta.pageY + this.yOffset;\n var tooltipRect = element.getBoundingClientRect();\n var maxLeft = window.innerWidth - tooltipRect.width;\n if (this.container) {\n var containerRect = this.container.getBoundingClientRect();\n maxLeft = containerRect.left + (containerRect.width - tooltipRect.width);\n }\n if (left > maxLeft) {\n left = meta.pageX - element.clientWidth - this.xOffset;\n }\n element.style.left = Math.round(left) + \"px\";\n element.style.top = Math.round(top) + \"px\";\n this.toggle(true);\n };\n SparklineTooltip.prototype.toggle = function (visible) {\n this.updateClass(visible);\n };\n SparklineTooltip.prototype.destroy = function () {\n var parentNode = this.element.parentNode;\n if (parentNode) {\n parentNode.removeChild(this.element);\n }\n };\n SparklineTooltip.class = 'ag-sparkline-tooltip';\n return SparklineTooltip;\n}(Observable);\nvar __extends$e = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar Marker = /** @class */function (_super) {\n __extends$e(Marker, _super);\n function Marker() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._x = 0;\n _this._y = 0;\n _this._size = 3;\n return _this;\n }\n Object.defineProperty(Marker.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (value) {\n if (this._x !== value) {\n this._x = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Marker.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (value) {\n if (this._y !== value) {\n this._y = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Marker.prototype, \"size\", {\n get: function () {\n return this._size;\n },\n set: function (value) {\n if (this._size !== value) {\n this._size = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n return Marker;\n}(Shape);\nvar __extends$d = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar Circle = /** @class */function (_super) {\n __extends$d(Circle, _super);\n function Circle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Circle.prototype.isPointInPath = function (x, y) {\n return false;\n };\n Circle.prototype.isPointInStroke = function (x, y) {\n return false;\n };\n Circle.prototype.render = function (ctx) {\n if (this.dirtyTransform) {\n this.computeTransformMatrix();\n }\n this.matrix.toContext(ctx);\n var _a = this,\n x = _a.x,\n y = _a.y,\n size = _a.size;\n var radius = size / 2;\n ctx.beginPath();\n ctx.arc(x, y, radius, 0, 2 * Math.PI, false);\n this.fillStroke(ctx);\n this.dirty = false;\n };\n Circle.className = 'Circle';\n return Circle;\n}(Marker);\nvar __extends$c = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar Diamond = /** @class */function (_super) {\n __extends$c(Diamond, _super);\n function Diamond() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Diamond.prototype.isPointInStroke = function (x, y) {\n return false;\n };\n Diamond.prototype.isPointInPath = function (x, y) {\n return false;\n };\n Diamond.prototype.render = function (ctx) {\n if (this.dirtyTransform) {\n this.computeTransformMatrix();\n }\n this.matrix.toContext(ctx);\n var _a = this,\n x = _a.x,\n y = _a.y,\n size = _a.size;\n var hs = size / 2;\n ctx.beginPath();\n ctx.moveTo(x, y -= hs);\n ctx.lineTo(x += hs, y += hs);\n ctx.lineTo(x -= hs, y += hs);\n ctx.lineTo(x -= hs, y -= hs);\n ctx.lineTo(x + hs, y - hs);\n ctx.closePath();\n this.fillStroke(ctx);\n this.dirty = false;\n };\n Diamond.className = 'Diamond';\n return Diamond;\n}(Marker);\nvar __extends$b = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar Square = /** @class */function (_super) {\n __extends$b(Square, _super);\n function Square() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Square.prototype.isPointInStroke = function (x, y) {\n return false;\n };\n Square.prototype.isPointInPath = function (x, y) {\n return false;\n };\n Square.prototype.render = function (ctx) {\n if (this.dirtyTransform) {\n this.computeTransformMatrix();\n }\n this.matrix.toContext(ctx);\n var _a = this,\n x = _a.x,\n y = _a.y,\n size = _a.size;\n var hs = size / 2;\n ctx.beginPath();\n ctx.moveTo(x -= hs, y -= hs);\n ctx.lineTo(x += size, y);\n ctx.lineTo(x, y += size);\n ctx.lineTo(x -= size, y);\n ctx.lineTo(x, y -= size);\n ctx.closePath();\n this.fillStroke(ctx);\n this.dirty = false;\n };\n Square.className = 'Square';\n return Square;\n}(Marker);\nfunction getMarker(shape) {\n switch (shape) {\n case 'circle':\n return Circle;\n case 'square':\n return Square;\n case 'diamond':\n return Diamond;\n default:\n return Circle;\n }\n}\nfunction getLineDash(lineCap, lineDash) {\n if (lineDash === void 0) {\n lineDash = 'solid';\n }\n var buttOrNull = {\n solid: [],\n dash: [4, 3],\n dot: [1, 3],\n dashDot: [4, 3, 1, 3],\n dashDotDot: [4, 3, 1, 3, 1, 3],\n shortDot: [1, 1],\n shortDash: [3, 1],\n shortDashDot: [3, 1, 1, 1],\n shortDashDotDot: [3, 1, 1, 1, 1, 1],\n longDash: [8, 3],\n longDashDot: [8, 3, 1, 3],\n longDashDotDot: [8, 3, 1, 3, 1, 3]\n };\n var roundOrSquare = {\n solid: [],\n dash: [3, 3],\n dot: [0, 3],\n dashDot: [3, 3, 0, 3],\n dashDotDot: [3, 3, 0, 3, 0, 3],\n shortDot: [0, 2],\n shortDash: [2, 2],\n shortDashDot: [2, 2, 0, 2],\n shortDashDotDot: [2, 2, 0, 2, 0, 2],\n longDash: [7, 3],\n longDashDot: [7, 3, 0, 3],\n longDashDotDot: [7, 3, 0, 3, 0, 3]\n };\n if (lineCap === 'round' || lineCap === 'square') {\n if (roundOrSquare[lineDash] == undefined) {\n console.warn(\"'\" + lineDash + \"' is not a valid 'lineDash' option.\");\n return roundOrSquare.solid;\n }\n return roundOrSquare[lineDash];\n }\n if (buttOrNull[lineDash] == undefined) {\n console.warn(\"'\" + lineDash + \"' is not a valid 'lineDash' option.\");\n return buttOrNull.solid;\n }\n return buttOrNull[lineDash];\n}\nvar __extends$a = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar SparklineMarker$1 = /** @class */function () {\n function SparklineMarker() {\n this.enabled = true;\n this.shape = 'circle';\n this.size = 0;\n this.fill = 'rgb(124, 181, 236)';\n this.stroke = 'rgb(124, 181, 236)';\n this.strokeWidth = 1;\n this.formatter = undefined;\n }\n return SparklineMarker;\n}();\nvar SparklineLine$1 = /** @class */function () {\n function SparklineLine() {\n this.stroke = 'rgb(124, 181, 236)';\n this.strokeWidth = 1;\n }\n return SparklineLine;\n}();\nvar SparklineCrosshairs$1 = /** @class */function () {\n function SparklineCrosshairs() {\n this.xLine = {\n enabled: true,\n stroke: 'rgba(0,0,0, 0.54)',\n strokeWidth: 1,\n lineDash: 'solid',\n lineCap: undefined\n };\n this.yLine = {\n enabled: false,\n stroke: 'rgba(0,0,0, 0.54)',\n strokeWidth: 1,\n lineDash: 'solid',\n lineCap: undefined\n };\n }\n return SparklineCrosshairs;\n}();\nvar AreaSparkline = /** @class */function (_super) {\n __extends$a(AreaSparkline, _super);\n function AreaSparkline() {\n var _this = _super.call(this) || this;\n _this.fill = 'rgba(124, 181, 236, 0.25)';\n _this.strokePath = new Path();\n _this.fillPath = new Path();\n _this.xCrosshairLine = new Line();\n _this.yCrosshairLine = new Line();\n _this.areaSparklineGroup = new Group();\n _this.fillPathData = [];\n _this.strokePathData = [];\n _this.xAxisLine = new Line();\n _this.markers = new Group();\n _this.markerSelection = Selection.select(_this.markers).selectAll();\n _this.markerSelectionData = [];\n _this.marker = new SparklineMarker$1();\n _this.line = new SparklineLine$1();\n _this.crosshairs = new SparklineCrosshairs$1();\n _this.rootGroup.append(_this.areaSparklineGroup);\n _this.areaSparklineGroup.append([_this.fillPath, _this.xAxisLine, _this.strokePath, _this.xCrosshairLine, _this.yCrosshairLine, _this.markers]);\n return _this;\n }\n AreaSparkline.prototype.getNodeData = function () {\n return this.markerSelectionData;\n };\n /**\n * If marker shape is changed, this method should be called to remove the previous marker nodes selection.\n */\n AreaSparkline.prototype.onMarkerShapeChange = function () {\n this.markerSelection = this.markerSelection.setData([]);\n this.markerSelection.exit.remove();\n this.scheduleLayout();\n };\n AreaSparkline.prototype.update = function () {\n var data = this.generateNodeData();\n if (!data) {\n return;\n }\n var nodeData = data.nodeData,\n fillData = data.fillData,\n strokeData = data.strokeData;\n this.markerSelectionData = nodeData;\n this.fillPathData = fillData;\n this.strokePathData = strokeData;\n this.updateSelection(nodeData);\n this.updateNodes();\n this.updateStroke(strokeData);\n this.updateFill(fillData);\n };\n AreaSparkline.prototype.updateYScaleDomain = function () {\n var _a = this,\n yData = _a.yData,\n yScale = _a.yScale;\n var yMinMax = extent(yData, isNumber);\n var yMin = 0;\n var yMax = 1;\n if (yMinMax !== undefined) {\n yMin = this.min = yMinMax[0];\n yMax = this.max = yMinMax[1];\n }\n // if yMin is positive, set yMin to 0\n yMin = yMin < 0 ? yMin : 0;\n // if yMax is negative, set yMax to 0\n yMax = yMax < 0 ? 0 : yMax;\n yScale.domain = [yMin, yMax];\n };\n AreaSparkline.prototype.generateNodeData = function () {\n var _a = this,\n data = _a.data,\n yData = _a.yData,\n xData = _a.xData,\n xScale = _a.xScale,\n yScale = _a.yScale;\n if (!data) {\n return;\n }\n var offsetX = xScale instanceof BandScale ? xScale.bandwidth / 2 : 0;\n var n = yData.length;\n var nodeData = [];\n var fillData = [];\n var strokeData = [];\n var firstValidX;\n var lastValidX;\n var previousX;\n var nextX;\n var yZero = yScale.convert(0);\n for (var i = 0; i < n; i++) {\n var yDatum = yData[i];\n var xDatum = xData[i];\n var x = xScale.convert(xDatum) + offsetX;\n var y = yScale.convert(yDatum);\n // if this iteration is not the last, set nextX using the next value in the data array\n if (i + 1 < n) {\n nextX = xScale.convert(xData[i + 1]) + offsetX;\n }\n // set stroke data regardless of missing/ undefined values. Undefined values will be handled in the updateStroke() method\n strokeData.push({\n seriesDatum: {\n x: xDatum,\n y: yDatum\n },\n point: {\n x: x,\n y: y\n }\n });\n if (yDatum === undefined && previousX !== undefined) {\n // if yDatum is undefined and there is a valid previous data point, add a phantom point at yZero\n // if a next data point exists, add a phantom point at yZero at the next X\n fillData.push({\n seriesDatum: undefined,\n point: {\n x: previousX,\n y: yZero\n }\n });\n if (nextX !== undefined) {\n fillData.push({\n seriesDatum: undefined,\n point: {\n x: nextX,\n y: yZero\n }\n });\n }\n } else if (yDatum !== undefined) {\n fillData.push({\n seriesDatum: {\n x: xDatum,\n y: yDatum\n },\n point: {\n x: x,\n y: y\n }\n });\n // set node data only if yDatum is not undefined. These values are used in the updateSelection() method to update markers\n nodeData.push({\n seriesDatum: {\n x: xDatum,\n y: yDatum\n },\n point: {\n x: x,\n y: y\n }\n });\n firstValidX = firstValidX !== undefined ? firstValidX : x;\n lastValidX = x;\n }\n previousX = x;\n }\n // phantom points for creating closed area\n fillData.push({\n seriesDatum: undefined,\n point: {\n x: lastValidX,\n y: yZero\n }\n }, {\n seriesDatum: undefined,\n point: {\n x: firstValidX,\n y: yZero\n }\n });\n return {\n nodeData: nodeData,\n fillData: fillData,\n strokeData: strokeData\n };\n };\n AreaSparkline.prototype.updateAxisLine = function () {\n var _a = this,\n xScale = _a.xScale,\n yScale = _a.yScale,\n axis = _a.axis,\n xAxisLine = _a.xAxisLine;\n xAxisLine.x1 = xScale.range[0];\n xAxisLine.x2 = xScale.range[1];\n xAxisLine.y1 = xAxisLine.y2 = 0;\n xAxisLine.stroke = axis.stroke;\n xAxisLine.strokeWidth = axis.strokeWidth;\n var yZero = yScale.convert(0);\n xAxisLine.translationY = yZero;\n };\n AreaSparkline.prototype.updateSelection = function (selectionData) {\n var marker = this.marker;\n var shape = getMarker(marker.shape);\n var updateMarkerSelection = this.markerSelection.setData(selectionData);\n var enterMarkerSelection = updateMarkerSelection.enter.append(shape);\n updateMarkerSelection.exit.remove();\n this.markerSelection = updateMarkerSelection.merge(enterMarkerSelection);\n };\n AreaSparkline.prototype.updateNodes = function () {\n var _this = this;\n var _a = this,\n highlightedDatum = _a.highlightedDatum,\n highlightStyle = _a.highlightStyle,\n marker = _a.marker;\n var highlightSize = highlightStyle.size,\n highlightFill = highlightStyle.fill,\n highlightStroke = highlightStyle.stroke,\n highlightStrokeWidth = highlightStyle.strokeWidth;\n var markerFormatter = marker.formatter;\n this.markerSelection.each(function (node, datum, index) {\n var point = datum.point,\n seriesDatum = datum.seriesDatum;\n if (!point) {\n return;\n }\n var highlighted = datum === highlightedDatum;\n var markerFill = highlighted && highlightFill !== undefined ? highlightFill : marker.fill;\n var markerStroke = highlighted && highlightStroke !== undefined ? highlightStroke : marker.stroke;\n var markerStrokeWidth = highlighted && highlightStrokeWidth !== undefined ? highlightStrokeWidth : marker.strokeWidth;\n var markerSize = highlighted && highlightSize !== undefined ? highlightSize : marker.size;\n var markerFormat;\n if (markerFormatter) {\n var first = index === 0;\n var last = index === _this.markerSelectionData.length - 1;\n var min = seriesDatum.y === _this.min;\n var max = seriesDatum.y === _this.max;\n markerFormat = markerFormatter({\n datum: datum,\n xValue: seriesDatum.x,\n yValue: seriesDatum.y,\n min: min,\n max: max,\n first: first,\n last: last,\n fill: markerFill,\n stroke: markerStroke,\n strokeWidth: markerStrokeWidth,\n size: markerSize,\n highlighted: highlighted\n });\n }\n node.size = markerFormat && markerFormat.size != undefined ? markerFormat.size : markerSize;\n node.fill = markerFormat && markerFormat.fill != undefined ? markerFormat.fill : markerFill;\n node.stroke = markerFormat && markerFormat.stroke != undefined ? markerFormat.stroke : markerStroke;\n node.strokeWidth = markerFormat && markerFormat.strokeWidth != undefined ? markerFormat.strokeWidth : markerStrokeWidth;\n node.translationX = point.x;\n node.translationY = point.y;\n node.visible = markerFormat && markerFormat.enabled != undefined ? markerFormat.enabled : marker.enabled && node.size > 0;\n });\n };\n AreaSparkline.prototype.updateStroke = function (strokeData) {\n var _a = this,\n strokePath = _a.strokePath,\n yData = _a.yData,\n line = _a.line;\n if (yData.length < 2) {\n return;\n }\n var path = strokePath.path;\n var n = strokeData.length;\n var moveTo = true;\n path.clear();\n for (var i = 0; i < n; i++) {\n var _b = strokeData[i],\n point = _b.point,\n seriesDatum = _b.seriesDatum;\n var x = point.x;\n var y = point.y;\n if (seriesDatum.y == undefined) {\n moveTo = true;\n } else {\n if (moveTo) {\n path.moveTo(x, y);\n moveTo = false;\n } else {\n path.lineTo(x, y);\n }\n }\n }\n strokePath.lineJoin = strokePath.lineCap = 'round';\n strokePath.fill = undefined;\n strokePath.stroke = line.stroke;\n strokePath.strokeWidth = line.strokeWidth;\n };\n AreaSparkline.prototype.updateFill = function (areaData) {\n var _a = this,\n fillPath = _a.fillPath,\n yData = _a.yData,\n fill = _a.fill;\n var path = fillPath.path;\n var n = areaData.length;\n path.clear();\n if (yData.length < 2) {\n return;\n }\n for (var i = 0; i < n; i++) {\n var point = areaData[i].point;\n var x = point.x;\n var y = point.y;\n if (i > 0) {\n path.lineTo(x, y);\n } else {\n path.moveTo(x, y);\n }\n }\n path.closePath();\n fillPath.lineJoin = 'round';\n fillPath.stroke = undefined;\n fillPath.fill = fill;\n };\n AreaSparkline.prototype.updateXCrosshairLine = function () {\n var _a = this,\n yScale = _a.yScale,\n xCrosshairLine = _a.xCrosshairLine,\n highlightedDatum = _a.highlightedDatum,\n xLine = _a.crosshairs.xLine;\n if (!xLine.enabled || highlightedDatum == undefined) {\n xCrosshairLine.strokeWidth = 0;\n return;\n }\n xCrosshairLine.y1 = yScale.range[0];\n xCrosshairLine.y2 = yScale.range[1];\n xCrosshairLine.x1 = xCrosshairLine.x2 = 0;\n xCrosshairLine.stroke = xLine.stroke;\n xCrosshairLine.strokeWidth = xLine.strokeWidth || 1;\n xCrosshairLine.lineCap = xLine.lineCap === 'round' || xLine.lineCap === 'square' ? xLine.lineCap : undefined;\n var lineDash = xLine.lineDash;\n xCrosshairLine.lineDash = Array.isArray(lineDash) ? lineDash : getLineDash(xCrosshairLine.lineCap, xLine.lineDash);\n xCrosshairLine.translationX = highlightedDatum.point.x;\n };\n AreaSparkline.prototype.updateYCrosshairLine = function () {\n var _a = this,\n xScale = _a.xScale,\n yCrosshairLine = _a.yCrosshairLine,\n highlightedDatum = _a.highlightedDatum,\n yLine = _a.crosshairs.yLine;\n if (!yLine.enabled || highlightedDatum == undefined) {\n yCrosshairLine.strokeWidth = 0;\n return;\n }\n yCrosshairLine.x1 = xScale.range[0];\n yCrosshairLine.x2 = xScale.range[1];\n yCrosshairLine.y1 = yCrosshairLine.y2 = 0;\n yCrosshairLine.stroke = yLine.stroke;\n yCrosshairLine.strokeWidth = yLine.strokeWidth || 1;\n yCrosshairLine.lineCap = yLine.lineCap === 'round' || yLine.lineCap === 'square' ? yLine.lineCap : undefined;\n var lineDash = yLine.lineDash;\n yCrosshairLine.lineDash = Array.isArray(lineDash) ? lineDash : getLineDash(yCrosshairLine.lineCap, yLine.lineDash);\n yCrosshairLine.translationY = highlightedDatum.point.y;\n };\n AreaSparkline.prototype.getTooltipHtml = function (datum) {\n var dataType = this.dataType;\n var seriesDatum = datum.seriesDatum;\n var yValue = seriesDatum.y;\n var xValue = seriesDatum.x;\n var content = this.formatNumericDatum(yValue);\n var title = dataType === 'array' || dataType === 'object' ? this.formatDatum(xValue) : undefined;\n var defaults = {\n content: content,\n title: title\n };\n if (this.tooltip.renderer) {\n return toTooltipHtml(this.tooltip.renderer({\n context: this.context,\n datum: seriesDatum,\n yValue: yValue,\n xValue: xValue\n }), defaults);\n }\n return toTooltipHtml(defaults);\n };\n AreaSparkline.className = 'AreaSparkline';\n return AreaSparkline;\n}(Sparkline);\nvar __extends$9 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar SparklineMarker = /** @class */function () {\n function SparklineMarker() {\n this.enabled = true;\n this.shape = 'circle';\n this.size = 0;\n this.fill = 'rgb(124, 181, 236)';\n this.stroke = 'rgb(124, 181, 236)';\n this.strokeWidth = 1;\n this.formatter = undefined;\n }\n return SparklineMarker;\n}();\nvar SparklineLine = /** @class */function () {\n function SparklineLine() {\n this.stroke = 'rgb(124, 181, 236)';\n this.strokeWidth = 1;\n }\n return SparklineLine;\n}();\nvar SparklineCrosshairs = /** @class */function () {\n function SparklineCrosshairs() {\n this.xLine = {\n enabled: true,\n stroke: 'rgba(0,0,0, 0.54)',\n strokeWidth: 1,\n lineDash: 'solid',\n lineCap: undefined\n };\n this.yLine = {\n enabled: false,\n stroke: 'rgba(0,0,0, 0.54)',\n strokeWidth: 1,\n lineDash: 'solid',\n lineCap: undefined\n };\n }\n return SparklineCrosshairs;\n}();\nvar LineSparkline = /** @class */function (_super) {\n __extends$9(LineSparkline, _super);\n function LineSparkline() {\n var _this = _super.call(this) || this;\n _this.linePath = new Path();\n _this.xCrosshairLine = new Line();\n _this.yCrosshairLine = new Line();\n _this.lineSparklineGroup = new Group();\n _this.markers = new Group();\n _this.markerSelection = Selection.select(_this.markers).selectAll();\n _this.markerSelectionData = [];\n _this.marker = new SparklineMarker();\n _this.line = new SparklineLine();\n _this.crosshairs = new SparklineCrosshairs();\n _this.rootGroup.append(_this.lineSparklineGroup);\n _this.lineSparklineGroup.append([_this.linePath, _this.xCrosshairLine, _this.yCrosshairLine, _this.markers]);\n return _this;\n }\n LineSparkline.prototype.getNodeData = function () {\n return this.markerSelectionData;\n };\n /**\n * If marker shape is changed, this method should be called to remove the previous marker nodes selection.\n */\n LineSparkline.prototype.onMarkerShapeChange = function () {\n this.markerSelection = this.markerSelection.setData([]);\n this.markerSelection.exit.remove();\n this.scheduleLayout();\n };\n LineSparkline.prototype.update = function () {\n var nodeData = this.generateNodeData();\n if (!nodeData) {\n return;\n }\n this.markerSelectionData = nodeData;\n this.updateSelection(nodeData);\n this.updateNodes();\n this.updateLine();\n };\n LineSparkline.prototype.updateYScaleDomain = function () {\n var _a = this,\n yData = _a.yData,\n yScale = _a.yScale;\n var yMinMax = extent(yData, isNumber);\n var yMin = 0;\n var yMax = 1;\n if (yMinMax !== undefined) {\n yMin = this.min = yMinMax[0];\n yMax = this.max = yMinMax[1];\n }\n if (yMin === yMax) {\n // if all values in the data are the same, yMin and yMax will be equal, need to adjust the domain with some padding\n var padding = Math.abs(yMin * 0.01);\n yMin -= padding;\n yMax += padding;\n }\n yScale.domain = [yMin, yMax];\n };\n LineSparkline.prototype.generateNodeData = function () {\n var _a = this,\n data = _a.data,\n yData = _a.yData,\n xData = _a.xData,\n xScale = _a.xScale,\n yScale = _a.yScale;\n if (!data) {\n return;\n }\n var offsetX = xScale instanceof BandScale ? xScale.bandwidth / 2 : 0;\n var nodeData = [];\n for (var i = 0; i < yData.length; i++) {\n var yDatum = yData[i];\n var xDatum = xData[i];\n if (yDatum == undefined) {\n continue;\n }\n var x = xScale.convert(xDatum) + offsetX;\n var y = yScale.convert(yDatum);\n nodeData.push({\n seriesDatum: {\n x: xDatum,\n y: yDatum\n },\n point: {\n x: x,\n y: y\n }\n });\n }\n return nodeData;\n };\n LineSparkline.prototype.updateSelection = function (selectionData) {\n var marker = this.marker;\n var shape = getMarker(marker.shape);\n var updateMarkerSelection = this.markerSelection.setData(selectionData);\n var enterMarkerSelection = updateMarkerSelection.enter.append(shape);\n updateMarkerSelection.exit.remove();\n this.markerSelection = updateMarkerSelection.merge(enterMarkerSelection);\n };\n LineSparkline.prototype.updateNodes = function () {\n var _this = this;\n var _a = this,\n highlightedDatum = _a.highlightedDatum,\n highlightStyle = _a.highlightStyle,\n marker = _a.marker;\n var highlightSize = highlightStyle.size,\n highlightFill = highlightStyle.fill,\n highlightStroke = highlightStyle.stroke,\n highlightStrokeWidth = highlightStyle.strokeWidth;\n var markerFormatter = marker.formatter;\n this.markerSelection.each(function (node, datum, index) {\n var highlighted = datum === highlightedDatum;\n var markerFill = highlighted && highlightFill !== undefined ? highlightFill : marker.fill;\n var markerStroke = highlighted && highlightStroke !== undefined ? highlightStroke : marker.stroke;\n var markerStrokeWidth = highlighted && highlightStrokeWidth !== undefined ? highlightStrokeWidth : marker.strokeWidth;\n var markerSize = highlighted && highlightSize !== undefined ? highlightSize : marker.size;\n var markerFormat;\n var seriesDatum = datum.seriesDatum,\n point = datum.point;\n if (markerFormatter) {\n var first = index === 0;\n var last = index === _this.markerSelectionData.length - 1;\n var min = seriesDatum.y === _this.min;\n var max = seriesDatum.y === _this.max;\n markerFormat = markerFormatter({\n datum: datum,\n xValue: seriesDatum.x,\n yValue: seriesDatum.y,\n min: min,\n max: max,\n first: first,\n last: last,\n fill: markerFill,\n stroke: markerStroke,\n strokeWidth: markerStrokeWidth,\n size: markerSize,\n highlighted: highlighted\n });\n }\n node.size = markerFormat && markerFormat.size != undefined ? markerFormat.size : markerSize;\n node.fill = markerFormat && markerFormat.fill != undefined ? markerFormat.fill : markerFill;\n node.stroke = markerFormat && markerFormat.stroke != undefined ? markerFormat.stroke : markerStroke;\n node.strokeWidth = markerFormat && markerFormat.strokeWidth != undefined ? markerFormat.strokeWidth : markerStrokeWidth;\n node.translationX = point.x;\n node.translationY = point.y;\n node.visible = markerFormat && markerFormat.enabled != undefined ? markerFormat.enabled : marker.enabled && node.size > 0;\n });\n };\n LineSparkline.prototype.updateLine = function () {\n var _a = this,\n linePath = _a.linePath,\n yData = _a.yData,\n xData = _a.xData,\n xScale = _a.xScale,\n yScale = _a.yScale,\n line = _a.line;\n if (yData.length < 2) {\n return;\n }\n var path = linePath.path;\n var n = yData.length;\n var offsetX = xScale instanceof BandScale ? xScale.bandwidth / 2 : 0;\n var moveTo = true;\n path.clear();\n for (var i = 0; i < n; i++) {\n var xDatum = xData[i];\n var yDatum = yData[i];\n var x = xScale.convert(xDatum) + offsetX;\n var y = yScale.convert(yDatum);\n if (yDatum == undefined) {\n moveTo = true;\n } else {\n if (moveTo) {\n path.moveTo(x, y);\n moveTo = false;\n } else {\n path.lineTo(x, y);\n }\n }\n }\n linePath.fill = undefined;\n linePath.stroke = line.stroke;\n linePath.strokeWidth = line.strokeWidth;\n };\n LineSparkline.prototype.updateXCrosshairLine = function () {\n var _a = this,\n yScale = _a.yScale,\n xCrosshairLine = _a.xCrosshairLine,\n highlightedDatum = _a.highlightedDatum,\n xLine = _a.crosshairs.xLine;\n if (!xLine.enabled || highlightedDatum == undefined) {\n xCrosshairLine.strokeWidth = 0;\n return;\n }\n xCrosshairLine.y1 = yScale.range[0];\n xCrosshairLine.y2 = yScale.range[1];\n xCrosshairLine.x1 = xCrosshairLine.x2 = 0;\n xCrosshairLine.stroke = xLine.stroke;\n xCrosshairLine.strokeWidth = xLine.strokeWidth || 1;\n xCrosshairLine.lineCap = xLine.lineCap === 'round' || xLine.lineCap === 'square' ? xLine.lineCap : undefined;\n var lineDash = xLine.lineDash;\n xCrosshairLine.lineDash = Array.isArray(lineDash) ? lineDash : getLineDash(xCrosshairLine.lineCap, xLine.lineDash);\n xCrosshairLine.translationX = highlightedDatum.point.x;\n };\n LineSparkline.prototype.updateYCrosshairLine = function () {\n var _a = this,\n xScale = _a.xScale,\n yCrosshairLine = _a.yCrosshairLine,\n highlightedDatum = _a.highlightedDatum,\n yLine = _a.crosshairs.yLine;\n if (!yLine.enabled || highlightedDatum == undefined) {\n yCrosshairLine.strokeWidth = 0;\n return;\n }\n yCrosshairLine.x1 = xScale.range[0];\n yCrosshairLine.x2 = xScale.range[1];\n yCrosshairLine.y1 = yCrosshairLine.y2 = 0;\n yCrosshairLine.stroke = yLine.stroke;\n yCrosshairLine.strokeWidth = yLine.strokeWidth || 1;\n yCrosshairLine.lineCap = yLine.lineCap === 'round' || yLine.lineCap === 'square' ? yLine.lineCap : undefined;\n var lineDash = yLine.lineDash;\n yCrosshairLine.lineDash = Array.isArray(lineDash) ? lineDash : getLineDash(yCrosshairLine.lineCap, yLine.lineDash);\n yCrosshairLine.translationY = highlightedDatum.point.y;\n };\n LineSparkline.prototype.getTooltipHtml = function (datum) {\n var dataType = this.dataType;\n var seriesDatum = datum.seriesDatum;\n var yValue = seriesDatum.y;\n var xValue = seriesDatum.x;\n var content = this.formatNumericDatum(yValue);\n var title = dataType === 'array' || dataType === 'object' ? this.formatDatum(xValue) : undefined;\n var defaults = {\n content: content,\n title: title\n };\n if (this.tooltip.renderer) {\n return toTooltipHtml(this.tooltip.renderer({\n context: this.context,\n datum: seriesDatum,\n yValue: yValue,\n xValue: xValue\n }), defaults);\n }\n return toTooltipHtml(defaults);\n };\n LineSparkline.className = 'LineSparkline';\n return LineSparkline;\n}(Sparkline);\nvar __extends$8 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar Rectangle = /** @class */function (_super) {\n __extends$8(Rectangle, _super);\n function Rectangle() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._x = 0;\n _this._y = 0;\n _this._width = 0;\n _this._height = 0;\n /**\n * If `true`, the rect is aligned to the pixel grid for crisp looking lines.\n */\n _this._crisp = false;\n return _this;\n }\n Object.defineProperty(Rectangle.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (value) {\n if (this._x !== value) {\n this._x = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (value) {\n if (this._y !== value) {\n this._y = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"width\", {\n get: function () {\n return this._width;\n },\n set: function (value) {\n if (this._width !== value) {\n this._width = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"height\", {\n get: function () {\n return this._height;\n },\n set: function (value) {\n if (this._height !== value) {\n this._height = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"crisp\", {\n get: function () {\n return this._crisp;\n },\n set: function (value) {\n if (this._crisp !== value) {\n this._crisp = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Rectangle.prototype.isPointInStroke = function (x, y) {\n return false;\n };\n Rectangle.prototype.isPointInPath = function (x, y) {\n return false;\n };\n Rectangle.prototype.render = function (ctx) {\n if (this.dirtyTransform) {\n this.computeTransformMatrix();\n }\n this.matrix.toContext(ctx);\n var _a = this,\n x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height,\n crisp = _a.crisp;\n ctx.beginPath();\n if (crisp) {\n // ensure stroke aligns to the pixel grid\n var _b = this,\n a = _b.alignment,\n al = _b.align;\n ctx.rect(al(a, x), al(a, y), al(a, x, width), al(a, y, height));\n } else {\n ctx.rect(x, y, width, height);\n }\n this.fillStroke(ctx);\n this.dirty = false;\n };\n Rectangle.className = 'Column';\n return Rectangle;\n}(Shape);\nvar __extends$7 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n/** @class */\n(function (_super) {\n __extends$7(Text, _super);\n function Text() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._x = 0;\n _this._y = 0;\n _this.lineBreakRegex = /\\r?\\n/g;\n _this.lines = [];\n _this._text = '';\n _this._dirtyFont = true;\n _this._fontSize = 10;\n _this._fontFamily = 'sans-serif';\n _this._textAlign = Text.defaultStyles.textAlign;\n _this._textBaseline = Text.defaultStyles.textBaseline;\n _this._lineHeight = 14;\n return _this;\n }\n Object.defineProperty(Text.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (value) {\n if (this._x !== value) {\n this._x = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (value) {\n if (this._y !== value) {\n this._y = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Text.prototype.splitText = function () {\n this.lines = this._text.split(this.lineBreakRegex);\n };\n Object.defineProperty(Text.prototype, \"text\", {\n get: function () {\n return this._text;\n },\n set: function (value) {\n var str = String(value); // `value` can be an object here\n if (this._text !== str) {\n this._text = str;\n this.splitText();\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"font\", {\n get: function () {\n if (this.dirtyFont) {\n this.dirtyFont = false;\n this._font = getFont$1(this.fontSize, this.fontFamily, this.fontStyle, this.fontWeight);\n }\n return this._font;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"dirtyFont\", {\n get: function () {\n return this._dirtyFont;\n },\n set: function (value) {\n if (this._dirtyFont !== value) {\n this._dirtyFont = value;\n if (value) {\n this.dirty = true;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"fontStyle\", {\n get: function () {\n return this._fontStyle;\n },\n set: function (value) {\n if (this._fontStyle !== value) {\n this._fontStyle = value;\n this.dirtyFont = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"fontWeight\", {\n get: function () {\n return this._fontWeight;\n },\n set: function (value) {\n if (this._fontWeight !== value) {\n this._fontWeight = value;\n this.dirtyFont = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"fontSize\", {\n get: function () {\n return this._fontSize;\n },\n set: function (value) {\n if (!isFinite(value)) {\n value = 10;\n }\n if (this._fontSize !== value) {\n this._fontSize = value;\n this.dirtyFont = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"fontFamily\", {\n get: function () {\n return this._fontFamily;\n },\n set: function (value) {\n if (this._fontFamily !== value) {\n this._fontFamily = value;\n this.dirtyFont = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"textAlign\", {\n get: function () {\n return this._textAlign;\n },\n set: function (value) {\n if (this._textAlign !== value) {\n this._textAlign = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"textBaseline\", {\n get: function () {\n return this._textBaseline;\n },\n set: function (value) {\n if (this._textBaseline !== value) {\n this._textBaseline = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"lineHeight\", {\n get: function () {\n return this._lineHeight;\n },\n set: function (value) {\n // Multi-line text is complicated because:\n // - Canvas does not support it natively, so we have to implement it manually\n // - need to know the height of each line -> need to parse the font shorthand ->\n // generally impossible to do because font size may not be in pixels\n // - so, need to measure the text instead, each line individually -> expensive\n // - or make the user provide the line height manually for multi-line text\n // - computeBBox should use the lineHeight for multi-line text but ignore it otherwise\n // - textBaseline kind of loses its meaning for multi-line text\n if (this._lineHeight !== value) {\n this._lineHeight = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Text.prototype.computeBBox = function () {\n return HdpiCanvas.has.textMetrics ? this.getPreciseBBox() : this.getApproximateBBox();\n };\n Text.prototype.getPreciseBBox = function () {\n var metrics = HdpiCanvas.measureText(this.text, this.font, this.textBaseline, this.textAlign);\n return new BBox(this.x - metrics.actualBoundingBoxLeft, this.y - metrics.actualBoundingBoxAscent, metrics.width, metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent);\n };\n Text.prototype.getApproximateBBox = function () {\n var size = HdpiCanvas.getTextSize(this.text, this.font);\n var _a = this,\n x = _a.x,\n y = _a.y;\n switch (this.textAlign) {\n case 'end':\n case 'right':\n x -= size.width;\n break;\n case 'center':\n x -= size.width / 2;\n }\n switch (this.textBaseline) {\n case 'alphabetic':\n y -= size.height * 0.7;\n break;\n case 'middle':\n y -= size.height * 0.45;\n break;\n case 'ideographic':\n y -= size.height;\n break;\n case 'hanging':\n y -= size.height * 0.2;\n break;\n case 'bottom':\n y -= size.height;\n break;\n }\n return new BBox(x, y, size.width, size.height);\n };\n Text.prototype.isPointInPath = function (x, y) {\n var point = this.transformPoint(x, y);\n var bbox = this.computeBBox();\n return bbox ? bbox.containsPoint(point.x, point.y) : false;\n };\n Text.prototype.isPointInStroke = function (x, y) {\n return false;\n };\n Text.prototype.render = function (ctx) {\n if (!this.lines.length || !this.scene) {\n return;\n }\n if (this.dirtyTransform) {\n this.computeTransformMatrix();\n }\n // this.matrix.transformBBox(this.computeBBox!()).render(ctx); // debug\n this.matrix.toContext(ctx);\n var _a = this,\n fill = _a.fill,\n stroke = _a.stroke,\n strokeWidth = _a.strokeWidth;\n ctx.font = this.font;\n ctx.textAlign = this.textAlign;\n ctx.textBaseline = this.textBaseline;\n var pixelRatio = this.scene.canvas.pixelRatio || 1;\n var globalAlpha = ctx.globalAlpha;\n if (fill) {\n ctx.fillStyle = fill;\n ctx.globalAlpha = globalAlpha * this.opacity * this.fillOpacity;\n var _b = this,\n fillShadow = _b.fillShadow,\n text = _b.text,\n x = _b.x,\n y = _b.y;\n if (fillShadow && fillShadow.enabled) {\n ctx.shadowColor = fillShadow.color;\n ctx.shadowOffsetX = fillShadow.xOffset * pixelRatio;\n ctx.shadowOffsetY = fillShadow.yOffset * pixelRatio;\n ctx.shadowBlur = fillShadow.blur * pixelRatio;\n }\n ctx.fillText(text, x, y);\n }\n if (stroke && strokeWidth) {\n ctx.strokeStyle = stroke;\n ctx.lineWidth = strokeWidth;\n ctx.globalAlpha = globalAlpha * this.opacity * this.strokeOpacity;\n var _c = this,\n lineDash = _c.lineDash,\n lineDashOffset = _c.lineDashOffset,\n lineCap = _c.lineCap,\n lineJoin = _c.lineJoin,\n strokeShadow = _c.strokeShadow,\n text = _c.text,\n x = _c.x,\n y = _c.y;\n if (lineDash) {\n ctx.setLineDash(lineDash);\n }\n if (lineDashOffset) {\n ctx.lineDashOffset = lineDashOffset;\n }\n if (lineCap) {\n ctx.lineCap = lineCap;\n }\n if (lineJoin) {\n ctx.lineJoin = lineJoin;\n }\n if (strokeShadow && strokeShadow.enabled) {\n ctx.shadowColor = strokeShadow.color;\n ctx.shadowOffsetX = strokeShadow.xOffset * pixelRatio;\n ctx.shadowOffsetY = strokeShadow.yOffset * pixelRatio;\n ctx.shadowBlur = strokeShadow.blur * pixelRatio;\n }\n ctx.strokeText(text, x, y);\n }\n this.dirty = false;\n };\n Text.className = 'Text';\n Text.defaultStyles = chainObjects(Shape.defaultStyles, {\n textAlign: 'start',\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 10,\n fontFamily: 'sans-serif',\n textBaseline: 'alphabetic'\n });\n return Text;\n})(Shape);\nfunction getFont$1(fontSize, fontFamily, fontStyle, fontWeight) {\n return [fontStyle || '', fontWeight || '', fontSize + 'px', fontFamily].join(' ').trim();\n}\nvar __extends$6 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate$2 = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar Label = /** @class */function (_super) {\n __extends$6(Label, _super);\n function Label() {\n var _this = _super.call(this) || this;\n _this.enabled = true;\n _this.fontSize = 8;\n _this.fontFamily = 'Verdana, sans-serif';\n _this.color = 'rgba(70, 70, 70, 1)';\n return _this;\n }\n Label.prototype.getFont = function () {\n return getFont$1(this.fontSize, this.fontFamily, this.fontStyle, this.fontWeight);\n };\n __decorate$2([reactive('change', 'dataChange')], Label.prototype, \"enabled\", void 0);\n __decorate$2([reactive('change')], Label.prototype, \"fontSize\", void 0);\n __decorate$2([reactive('change')], Label.prototype, \"fontFamily\", void 0);\n __decorate$2([reactive('change')], Label.prototype, \"fontStyle\", void 0);\n __decorate$2([reactive('change')], Label.prototype, \"fontWeight\", void 0);\n __decorate$2([reactive('change')], Label.prototype, \"color\", void 0);\n return Label;\n}(Observable);\nvar __extends$5 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar Text = /** @class */function (_super) {\n __extends$5(Text, _super);\n function Text() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._x = 0;\n _this._y = 0;\n _this.lineBreakRegex = /\\r?\\n/g;\n _this.lines = [];\n _this._text = '';\n _this._dirtyFont = true;\n _this._fontSize = 10;\n _this._fontFamily = 'sans-serif';\n _this._textAlign = Text.defaultStyles.textAlign;\n _this._textBaseline = Text.defaultStyles.textBaseline;\n _this._lineHeight = 14;\n return _this;\n }\n Object.defineProperty(Text.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (value) {\n if (this._x !== value) {\n this._x = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (value) {\n if (this._y !== value) {\n this._y = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Text.prototype.splitText = function () {\n this.lines = this._text.split(this.lineBreakRegex);\n };\n Object.defineProperty(Text.prototype, \"text\", {\n get: function () {\n return this._text;\n },\n set: function (value) {\n var str = String(value); // `value` can be an object here\n if (this._text !== str) {\n this._text = str;\n this.splitText();\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"font\", {\n get: function () {\n if (this.dirtyFont) {\n this.dirtyFont = false;\n this._font = getFont(this.fontSize, this.fontFamily, this.fontStyle, this.fontWeight);\n }\n return this._font;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"dirtyFont\", {\n get: function () {\n return this._dirtyFont;\n },\n set: function (value) {\n if (this._dirtyFont !== value) {\n this._dirtyFont = value;\n if (value) {\n this.dirty = true;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"fontStyle\", {\n get: function () {\n return this._fontStyle;\n },\n set: function (value) {\n if (this._fontStyle !== value) {\n this._fontStyle = value;\n this.dirtyFont = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"fontWeight\", {\n get: function () {\n return this._fontWeight;\n },\n set: function (value) {\n if (this._fontWeight !== value) {\n this._fontWeight = value;\n this.dirtyFont = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"fontSize\", {\n get: function () {\n return this._fontSize;\n },\n set: function (value) {\n if (!isFinite(value)) {\n value = 10;\n }\n if (this._fontSize !== value) {\n this._fontSize = value;\n this.dirtyFont = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"fontFamily\", {\n get: function () {\n return this._fontFamily;\n },\n set: function (value) {\n if (this._fontFamily !== value) {\n this._fontFamily = value;\n this.dirtyFont = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"textAlign\", {\n get: function () {\n return this._textAlign;\n },\n set: function (value) {\n if (this._textAlign !== value) {\n this._textAlign = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"textBaseline\", {\n get: function () {\n return this._textBaseline;\n },\n set: function (value) {\n if (this._textBaseline !== value) {\n this._textBaseline = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"lineHeight\", {\n get: function () {\n return this._lineHeight;\n },\n set: function (value) {\n // Multi-line text is complicated because:\n // - Canvas does not support it natively, so we have to implement it manually\n // - need to know the height of each line -> need to parse the font shorthand ->\n // generally impossible to do because font size may not be in pixels\n // - so, need to measure the text instead, each line individually -> expensive\n // - or make the user provide the line height manually for multi-line text\n // - computeBBox should use the lineHeight for multi-line text but ignore it otherwise\n // - textBaseline kind of loses its meaning for multi-line text\n if (this._lineHeight !== value) {\n this._lineHeight = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Text.prototype.computeBBox = function () {\n return HdpiCanvas.has.textMetrics ? this.getPreciseBBox() : this.getApproximateBBox();\n };\n Text.prototype.getPreciseBBox = function () {\n var metrics = HdpiCanvas.measureText(this.text, this.font, this.textBaseline, this.textAlign);\n return new BBox(this.x - metrics.actualBoundingBoxLeft, this.y - metrics.actualBoundingBoxAscent, metrics.width, metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent);\n };\n Text.prototype.getApproximateBBox = function () {\n var size = HdpiCanvas.getTextSize(this.text, this.font);\n var _a = this,\n x = _a.x,\n y = _a.y;\n switch (this.textAlign) {\n case 'end':\n case 'right':\n x -= size.width;\n break;\n case 'center':\n x -= size.width / 2;\n }\n switch (this.textBaseline) {\n case 'alphabetic':\n y -= size.height * 0.7;\n break;\n case 'middle':\n y -= size.height * 0.45;\n break;\n case 'ideographic':\n y -= size.height;\n break;\n case 'hanging':\n y -= size.height * 0.2;\n break;\n case 'bottom':\n y -= size.height;\n break;\n }\n return new BBox(x, y, size.width, size.height);\n };\n Text.prototype.isPointInPath = function (x, y) {\n var point = this.transformPoint(x, y);\n var bbox = this.computeBBox();\n return bbox ? bbox.containsPoint(point.x, point.y) : false;\n };\n Text.prototype.isPointInStroke = function (x, y) {\n return false;\n };\n Text.prototype.render = function (ctx) {\n if (!this.lines.length || !this.scene) {\n return;\n }\n if (this.dirtyTransform) {\n this.computeTransformMatrix();\n }\n // this.matrix.transformBBox(this.computeBBox!()).render(ctx); // debug\n this.matrix.toContext(ctx);\n var _a = this,\n fill = _a.fill,\n stroke = _a.stroke,\n strokeWidth = _a.strokeWidth;\n ctx.font = this.font;\n ctx.textAlign = this.textAlign;\n ctx.textBaseline = this.textBaseline;\n var pixelRatio = this.scene.canvas.pixelRatio || 1;\n var globalAlpha = ctx.globalAlpha;\n if (fill) {\n ctx.fillStyle = fill;\n ctx.globalAlpha = globalAlpha * this.opacity * this.fillOpacity;\n var _b = this,\n fillShadow = _b.fillShadow,\n text = _b.text,\n x = _b.x,\n y = _b.y;\n if (fillShadow && fillShadow.enabled) {\n ctx.shadowColor = fillShadow.color;\n ctx.shadowOffsetX = fillShadow.xOffset * pixelRatio;\n ctx.shadowOffsetY = fillShadow.yOffset * pixelRatio;\n ctx.shadowBlur = fillShadow.blur * pixelRatio;\n }\n ctx.fillText(text, x, y);\n }\n if (stroke && strokeWidth) {\n ctx.strokeStyle = stroke;\n ctx.lineWidth = strokeWidth;\n ctx.globalAlpha = globalAlpha * this.opacity * this.strokeOpacity;\n var _c = this,\n lineDash = _c.lineDash,\n lineDashOffset = _c.lineDashOffset,\n lineCap = _c.lineCap,\n lineJoin = _c.lineJoin,\n strokeShadow = _c.strokeShadow,\n text = _c.text,\n x = _c.x,\n y = _c.y;\n if (lineDash) {\n ctx.setLineDash(lineDash);\n }\n if (lineDashOffset) {\n ctx.lineDashOffset = lineDashOffset;\n }\n if (lineCap) {\n ctx.lineCap = lineCap;\n }\n if (lineJoin) {\n ctx.lineJoin = lineJoin;\n }\n if (strokeShadow && strokeShadow.enabled) {\n ctx.shadowColor = strokeShadow.color;\n ctx.shadowOffsetX = strokeShadow.xOffset * pixelRatio;\n ctx.shadowOffsetY = strokeShadow.yOffset * pixelRatio;\n ctx.shadowBlur = strokeShadow.blur * pixelRatio;\n }\n ctx.strokeText(text, x, y);\n }\n this.dirty = false;\n };\n Text.className = 'Text';\n Text.defaultStyles = chainObjects(Shape.defaultStyles, {\n textAlign: 'start',\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 10,\n fontFamily: 'sans-serif',\n textBaseline: 'alphabetic'\n });\n return Text;\n}(Shape);\nfunction getFont(fontSize, fontFamily, fontStyle, fontWeight) {\n return [fontStyle || '', fontWeight || '', fontSize + 'px', fontFamily].join(' ').trim();\n}\nvar __extends$4 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar BarColumnNodeTag = /*#__PURE__*/function (BarColumnNodeTag) {\n BarColumnNodeTag[BarColumnNodeTag[\"Rect\"] = 0] = \"Rect\";\n BarColumnNodeTag[BarColumnNodeTag[\"Label\"] = 1] = \"Label\";\n return BarColumnNodeTag;\n}(BarColumnNodeTag || {});\nvar BarColumnLabelPlacement = /*#__PURE__*/function (BarColumnLabelPlacement) {\n BarColumnLabelPlacement[\"InsideBase\"] = \"insideBase\";\n BarColumnLabelPlacement[\"InsideEnd\"] = \"insideEnd\";\n BarColumnLabelPlacement[\"Center\"] = \"center\";\n BarColumnLabelPlacement[\"OutsideEnd\"] = \"outsideEnd\";\n return BarColumnLabelPlacement;\n}(BarColumnLabelPlacement || {});\nvar BarColumnLabel = /** @class */function (_super) {\n __extends$4(BarColumnLabel, _super);\n function BarColumnLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.formatter = undefined;\n _this.placement = BarColumnLabelPlacement.InsideEnd;\n return _this;\n }\n return BarColumnLabel;\n}(Label);\nvar BarColumnSparkline = /** @class */function (_super) {\n __extends$4(BarColumnSparkline, _super);\n function BarColumnSparkline() {\n var _this = _super.call(this) || this;\n _this.fill = 'rgb(124, 181, 236)';\n _this.stroke = 'silver';\n _this.strokeWidth = 0;\n _this.paddingInner = 0.1;\n _this.paddingOuter = 0.2;\n _this.valueAxisDomain = undefined;\n _this.formatter = undefined;\n _this.axisLine = new Line();\n _this.bandWidth = 0;\n _this.sparklineGroup = new Group();\n _this.rectGroup = new Group();\n _this.labelGroup = new Group();\n _this.rectSelection = Selection.select(_this.rectGroup).selectAll();\n _this.labelSelection = Selection.select(_this.labelGroup).selectAll();\n _this.nodeSelectionData = [];\n _this.label = new BarColumnLabel();\n _this.rootGroup.append(_this.sparklineGroup);\n _this.sparklineGroup.append([_this.rectGroup, _this.axisLine, _this.labelGroup]);\n _this.axisLine.lineCap = 'round';\n _this.label.enabled = false;\n return _this;\n }\n BarColumnSparkline.prototype.getNodeData = function () {\n return this.nodeSelectionData;\n };\n BarColumnSparkline.prototype.update = function () {\n this.updateSelections();\n this.updateNodes();\n };\n BarColumnSparkline.prototype.updateSelections = function () {\n var nodeData = this.generateNodeData();\n if (!nodeData) {\n return;\n }\n this.nodeSelectionData = nodeData;\n this.updateRectSelection(nodeData);\n this.updateLabelSelection(nodeData);\n };\n BarColumnSparkline.prototype.updateNodes = function () {\n this.updateRectNodes();\n this.updateLabelNodes();\n };\n BarColumnSparkline.prototype.calculateStep = function (range) {\n var _a, _b;\n var _c = this,\n xScale = _c.xScale,\n paddingInner = _c.paddingInner,\n paddingOuter = _c.paddingOuter,\n smallestInterval = _c.smallestInterval;\n // calculate step\n var domainLength = xScale.domain[1] - xScale.domain[0];\n var intervals = domainLength / (_b = (_a = smallestInterval) === null || _a === void 0 ? void 0 : _a.x, _b !== null && _b !== void 0 ? _b : 1) + 1;\n // The number of intervals/bands is used to determine the width of individual bands by dividing the available range.\n // Allow a maximum of 50 bands to ensure the step (width of individual bands + padding) does not fall below a certain number of pixels.\n // If the number of intervals exceeds 50, calculate the step for 50 bands within the given range.\n // This means there could be some overlap of the bands in the sparkline.\n var maxBands = 50;\n var bands = Math.min(intervals, maxBands);\n var gaps = bands - 1; // number of gaps (padding between bands)\n var step = range / Math.max(1, 2 * paddingOuter + gaps * paddingInner + bands); // step width is a combination of band width and gap width\n return step;\n };\n BarColumnSparkline.prototype.updateYScaleDomain = function () {\n var _a = this,\n yScale = _a.yScale,\n yData = _a.yData,\n valueAxisDomain = _a.valueAxisDomain;\n var yMinMax = extent(yData, isNumber);\n var yMin = 0;\n var yMax = 1;\n if (yMinMax !== undefined) {\n yMin = this.min = yMinMax[0];\n yMax = this.max = yMinMax[1];\n }\n // if yMin is positive, set yMin to 0\n yMin = yMin < 0 ? yMin : 0;\n // if yMax is negative, set yMax to 0\n yMax = yMax < 0 ? 0 : yMax;\n if (valueAxisDomain) {\n if (valueAxisDomain[1] < yMax) {\n valueAxisDomain[1] = yMax;\n }\n if (valueAxisDomain[0] > yMin) {\n valueAxisDomain[0] = yMin;\n }\n }\n yScale.domain = valueAxisDomain ? valueAxisDomain : [yMin, yMax];\n };\n BarColumnSparkline.prototype.updateRectSelection = function (selectionData) {\n var updateRectSelection = this.rectSelection.setData(selectionData);\n var enterRectSelection = updateRectSelection.enter.append(Rectangle);\n updateRectSelection.exit.remove();\n this.rectSelection = updateRectSelection.merge(enterRectSelection);\n };\n BarColumnSparkline.prototype.updateRectNodes = function () {\n var _this = this;\n var _a = this,\n highlightedDatum = _a.highlightedDatum,\n nodeFormatter = _a.formatter,\n fill = _a.fill,\n stroke = _a.stroke,\n strokeWidth = _a.strokeWidth;\n var _b = this.highlightStyle,\n highlightFill = _b.fill,\n highlightStroke = _b.stroke,\n highlightStrokeWidth = _b.strokeWidth;\n this.rectSelection.each(function (node, datum, index) {\n var highlighted = datum === highlightedDatum;\n var nodeFill = highlighted && highlightFill !== undefined ? highlightFill : fill;\n var nodeStroke = highlighted && highlightStroke !== undefined ? highlightStroke : stroke;\n var nodeStrokeWidth = highlighted && highlightStrokeWidth !== undefined ? highlightStrokeWidth : strokeWidth;\n var nodeFormat;\n var x = datum.x,\n y = datum.y,\n width = datum.width,\n height = datum.height,\n seriesDatum = datum.seriesDatum;\n if (nodeFormatter) {\n var first = index === 0;\n var last = index === _this.nodeSelectionData.length - 1;\n var min = seriesDatum.y === _this.min;\n var max = seriesDatum.y === _this.max;\n nodeFormat = nodeFormatter({\n datum: datum,\n xValue: seriesDatum.x,\n yValue: seriesDatum.y,\n width: width,\n height: height,\n min: min,\n max: max,\n first: first,\n last: last,\n fill: nodeFill,\n stroke: nodeStroke,\n strokeWidth: nodeStrokeWidth,\n highlighted: highlighted\n });\n }\n node.fill = nodeFormat && nodeFormat.fill || nodeFill;\n node.stroke = nodeFormat && nodeFormat.stroke || nodeStroke;\n node.strokeWidth = nodeFormat && nodeFormat.strokeWidth || nodeStrokeWidth;\n node.x = node.y = 0;\n node.width = width;\n node.height = height;\n node.visible = node.height > 0;\n node.translationX = x;\n node.translationY = y;\n // shifts bars upwards?\n // node.crisp = true;\n });\n };\n BarColumnSparkline.prototype.updateLabelSelection = function (selectionData) {\n var updateLabels = this.labelSelection.setData(selectionData);\n var enterLabels = updateLabels.enter.append(Text).each(function (text) {\n text.tag = BarColumnNodeTag.Label, text.pointerEvents = PointerEvents.None;\n });\n updateLabels.exit.remove();\n this.labelSelection = updateLabels.merge(enterLabels);\n };\n BarColumnSparkline.prototype.updateLabelNodes = function () {\n var _a = this.label,\n labelEnabled = _a.enabled,\n fontStyle = _a.fontStyle,\n fontWeight = _a.fontWeight,\n fontSize = _a.fontSize,\n fontFamily = _a.fontFamily,\n color = _a.color;\n this.labelSelection.each(function (text, datum) {\n var label = datum.label;\n if (label && labelEnabled) {\n text.fontStyle = fontStyle;\n text.fontWeight = fontWeight;\n text.fontSize = fontSize;\n text.fontFamily = fontFamily;\n text.textAlign = label.textAlign;\n text.textBaseline = label.textBaseline;\n text.text = label.text;\n text.x = label.x;\n text.y = label.y;\n text.fill = color;\n text.visible = true;\n } else {\n text.visible = false;\n }\n });\n };\n BarColumnSparkline.prototype.getTooltipHtml = function (datum) {\n var dataType = this.dataType;\n var seriesDatum = datum.seriesDatum;\n var yValue = seriesDatum.y;\n var xValue = seriesDatum.x;\n var content = this.formatNumericDatum(yValue);\n var title = dataType === 'array' || dataType === 'object' ? this.formatDatum(xValue) : undefined;\n var defaults = {\n content: content,\n title: title\n };\n if (this.tooltip.renderer) {\n return toTooltipHtml(this.tooltip.renderer({\n context: this.context,\n datum: seriesDatum,\n yValue: yValue,\n xValue: xValue\n }), defaults);\n }\n return toTooltipHtml(defaults);\n };\n BarColumnSparkline.prototype.formatLabelValue = function (value) {\n return value % 1 !== 0 ? value.toFixed(1) : value.toFixed(0);\n };\n return BarColumnSparkline;\n}(Sparkline);\nvar __extends$3 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar BarSparkline = /** @class */function (_super) {\n __extends$3(BarSparkline, _super);\n function BarSparkline() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n BarSparkline.prototype.updateYScaleRange = function () {\n var _a = this,\n seriesRect = _a.seriesRect,\n yScale = _a.yScale;\n yScale.range = [0, seriesRect.width];\n };\n BarSparkline.prototype.updateXScaleRange = function () {\n var _a = this,\n xScale = _a.xScale,\n seriesRect = _a.seriesRect,\n paddingOuter = _a.paddingOuter,\n paddingInner = _a.paddingInner;\n if (xScale instanceof BandScale) {\n xScale.range = [0, seriesRect.height];\n xScale.paddingInner = paddingInner;\n xScale.paddingOuter = paddingOuter;\n } else {\n // last node will be clipped if the scale is not a band scale\n // subtract last band width from the range so that the last band is not clipped\n var step = this.calculateStep(seriesRect.height);\n // PaddingOuter and paddingInner are fractions of the step with values between 0 and 1\n var padding = step * paddingOuter; // left and right outer padding\n this.bandWidth = step * (1 - paddingInner);\n xScale.range = [padding, seriesRect.height - padding - this.bandWidth];\n }\n };\n BarSparkline.prototype.updateAxisLine = function () {\n var _a = this,\n yScale = _a.yScale,\n axis = _a.axis,\n axisLine = _a.axisLine,\n seriesRect = _a.seriesRect;\n var strokeWidth = axis.strokeWidth;\n axisLine.x1 = 0;\n axisLine.x2 = 0;\n axisLine.y1 = 0;\n axisLine.y2 = seriesRect.height;\n axisLine.stroke = axis.stroke;\n axisLine.strokeWidth = strokeWidth + (strokeWidth % 2 === 1 ? 1 : 0);\n var yZero = yScale.convert(0);\n axisLine.translationX = yZero;\n };\n BarSparkline.prototype.generateNodeData = function () {\n var _a = this,\n data = _a.data,\n yData = _a.yData,\n xData = _a.xData,\n xScale = _a.xScale,\n yScale = _a.yScale,\n fill = _a.fill,\n stroke = _a.stroke,\n strokeWidth = _a.strokeWidth,\n label = _a.label;\n if (!data) {\n return;\n }\n var labelFontStyle = label.fontStyle,\n labelFontWeight = label.fontWeight,\n labelFontSize = label.fontSize,\n labelFontFamily = label.fontFamily,\n labelColor = label.color,\n labelFormatter = label.formatter,\n labelPlacement = label.placement;\n var nodeData = [];\n var yZero = yScale.convert(0);\n for (var i = 0, n = yData.length; i < n; i++) {\n var yDatum = yData[i];\n var xDatum = xData[i];\n var invalidDatum = yDatum === undefined;\n if (invalidDatum) {\n yDatum = 0;\n }\n var y = xScale.convert(xDatum);\n var x = Math.min(yScale.convert(yDatum), yZero);\n var bottom = Math.max(yScale.convert(yDatum), yZero);\n // if the scale is a band scale, the width of the rects will be the bandwidth, otherwise the width of the rects will be the range / number of items in the data\n var height = xScale instanceof BandScale ? xScale.bandwidth : this.bandWidth;\n var width = bottom - x;\n var midPoint = {\n x: yZero,\n y: y\n };\n var labelText = void 0;\n if (labelFormatter) {\n labelText = labelFormatter({\n value: yDatum\n });\n } else {\n labelText = yDatum !== undefined && isNumber(yDatum) ? this.formatLabelValue(yDatum) : '';\n }\n var labelY = y + height / 2;\n var labelX = void 0;\n var labelTextBaseline = 'middle';\n var labelTextAlign = void 0;\n var isPositiveY = yDatum !== undefined && yDatum >= 0;\n var labelPadding = 4;\n if (labelPlacement === BarColumnLabelPlacement.Center) {\n labelX = x + width / 2;\n labelTextAlign = 'center';\n } else if (labelPlacement === BarColumnLabelPlacement.OutsideEnd) {\n labelX = x + (isPositiveY ? width + labelPadding : -labelPadding);\n labelTextAlign = isPositiveY ? 'start' : 'end';\n } else if (labelPlacement === BarColumnLabelPlacement.InsideEnd) {\n labelX = x + (isPositiveY ? width - labelPadding : labelPadding);\n labelTextAlign = isPositiveY ? 'end' : 'start';\n var textSize = HdpiCanvas.getTextSize(labelText, labelFontFamily);\n var textWidth = textSize.width || 20;\n var positiveBoundary = yZero + textWidth;\n var negativeBoundary = yZero - textWidth;\n var exceedsBoundaries = isPositiveY && labelX < positiveBoundary || !isPositiveY && labelX > negativeBoundary;\n if (exceedsBoundaries) {\n // if labelX exceeds the boundary, labels should be positioned at `insideBase`.\n labelX = yZero + labelPadding * (isPositiveY ? 1 : -1);\n labelTextAlign = isPositiveY ? 'start' : 'end';\n }\n } else {\n // if labelPlacement === BarColumnLabelPlacement.InsideBase\n labelX = yZero + labelPadding * (isPositiveY ? 1 : -1);\n labelTextAlign = isPositiveY ? 'start' : 'end';\n }\n nodeData.push({\n x: x,\n y: y,\n width: width,\n height: height,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n seriesDatum: {\n x: xDatum,\n y: invalidDatum ? undefined : yDatum\n },\n point: midPoint,\n label: {\n x: labelX,\n y: labelY,\n text: labelText,\n fontStyle: labelFontStyle,\n fontWeight: labelFontWeight,\n fontSize: labelFontSize,\n fontFamily: labelFontFamily,\n textAlign: labelTextAlign,\n textBaseline: labelTextBaseline,\n fill: labelColor\n }\n });\n }\n return nodeData;\n };\n BarSparkline.prototype.getDistance = function (p1, p2) {\n return Math.abs(p1.y - p2.y);\n };\n BarSparkline.className = 'BarSparkline';\n return BarSparkline;\n}(BarColumnSparkline);\nvar __extends$2 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar ColumnSparkline = /** @class */function (_super) {\n __extends$2(ColumnSparkline, _super);\n function ColumnSparkline() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnSparkline.prototype.updateYScaleRange = function () {\n var _a = this,\n seriesRect = _a.seriesRect,\n yScale = _a.yScale;\n yScale.range = [seriesRect.height, 0];\n };\n ColumnSparkline.prototype.updateXScaleRange = function () {\n var _a = this,\n xScale = _a.xScale,\n seriesRect = _a.seriesRect,\n paddingOuter = _a.paddingOuter,\n paddingInner = _a.paddingInner;\n if (xScale instanceof BandScale) {\n xScale.range = [0, seriesRect.width];\n xScale.paddingInner = paddingInner;\n xScale.paddingOuter = paddingOuter;\n } else {\n // last node will be clipped if the scale is not a band scale\n // subtract last band width from the range so that the last band is not clipped\n var step = this.calculateStep(seriesRect.width);\n // PaddingOuter and paddingInner are fractions of the step with values between 0 and 1\n var padding = step * paddingOuter; // left and right outer padding\n this.bandWidth = step * (1 - paddingInner);\n xScale.range = [padding, seriesRect.width - padding - this.bandWidth];\n }\n };\n ColumnSparkline.prototype.updateAxisLine = function () {\n var _a = this,\n yScale = _a.yScale,\n axis = _a.axis,\n axisLine = _a.axisLine,\n seriesRect = _a.seriesRect;\n var strokeWidth = axis.strokeWidth;\n axisLine.x1 = 0;\n axisLine.x2 = seriesRect.width;\n axisLine.y1 = 0;\n axisLine.y2 = 0;\n axisLine.stroke = axis.stroke;\n axisLine.strokeWidth = strokeWidth + (strokeWidth % 2 === 1 ? 1 : 0);\n var yZero = yScale.convert(0);\n axisLine.translationY = yZero;\n };\n ColumnSparkline.prototype.generateNodeData = function () {\n var _a = this,\n data = _a.data,\n yData = _a.yData,\n xData = _a.xData,\n xScale = _a.xScale,\n yScale = _a.yScale,\n fill = _a.fill,\n stroke = _a.stroke,\n strokeWidth = _a.strokeWidth,\n label = _a.label;\n if (!data) {\n return;\n }\n var labelFontStyle = label.fontStyle,\n labelFontWeight = label.fontWeight,\n labelFontSize = label.fontSize,\n labelFontFamily = label.fontFamily,\n labelColor = label.color,\n labelFormatter = label.formatter,\n labelPlacement = label.placement;\n var nodeData = [];\n var yZero = yScale.convert(0);\n for (var i = 0, n = yData.length; i < n; i++) {\n var yDatum = yData[i];\n var xDatum = xData[i];\n var invalidDatum = yDatum === undefined;\n if (invalidDatum) {\n yDatum = 0;\n }\n var y = Math.min(yScale.convert(yDatum), yZero);\n var x = xScale.convert(xDatum);\n var bottom = Math.max(yScale.convert(yDatum), yZero);\n // if the scale is a band scale, the width of the rects will be the bandwidth, otherwise the width of the rects will be the range / number of items in the data\n var width = xScale instanceof BandScale ? xScale.bandwidth : this.bandWidth;\n var height = bottom - y;\n var midPoint = {\n x: x + width / 2,\n y: yZero\n };\n var labelText = void 0;\n if (labelFormatter) {\n labelText = labelFormatter({\n value: yDatum\n });\n } else {\n labelText = yDatum !== undefined && isNumber(yDatum) ? this.formatLabelValue(yDatum) : '';\n }\n var labelX = x + width / 2;\n var labelY = void 0;\n var labelTextAlign = 'center';\n var labelTextBaseline = void 0;\n var isPositiveY = yDatum !== undefined && yDatum >= 0;\n var labelPadding = 2;\n if (labelPlacement === BarColumnLabelPlacement.Center) {\n labelY = y + height / 2;\n labelTextBaseline = 'middle';\n } else if (labelPlacement === BarColumnLabelPlacement.OutsideEnd) {\n labelY = y + (isPositiveY ? -labelPadding : height + labelPadding);\n labelTextBaseline = isPositiveY ? 'bottom' : 'top';\n } else if (labelPlacement === BarColumnLabelPlacement.InsideEnd) {\n labelY = y + (isPositiveY ? labelPadding : height - labelPadding);\n labelTextBaseline = isPositiveY ? 'top' : 'bottom';\n var textSize = HdpiCanvas.getTextSize(labelText, labelFontFamily);\n var textHeight = textSize.height || 10;\n var positiveBoundary = yZero - textHeight;\n var negativeBoundary = yZero + textHeight;\n var exceedsBoundaries = isPositiveY && labelY > positiveBoundary || !isPositiveY && labelY < negativeBoundary;\n if (exceedsBoundaries) {\n // if labelY exceeds the y boundary, labels should be positioned at the insideBase\n labelY = yZero + labelPadding * (isPositiveY ? -1 : 1);\n labelTextBaseline = isPositiveY ? 'bottom' : 'top';\n }\n } else {\n // if labelPlacement === BarColumnLabelPlacement.InsideBase\n labelY = yZero + labelPadding * (isPositiveY ? -1 : 1);\n labelTextBaseline = isPositiveY ? 'bottom' : 'top';\n }\n nodeData.push({\n x: x,\n y: y,\n width: width,\n height: height,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n seriesDatum: {\n x: xDatum,\n y: invalidDatum ? undefined : yDatum\n },\n point: midPoint,\n label: {\n x: labelX,\n y: labelY,\n text: labelText,\n fontStyle: labelFontStyle,\n fontWeight: labelFontWeight,\n fontSize: labelFontSize,\n fontFamily: labelFontFamily,\n textAlign: labelTextAlign,\n textBaseline: labelTextBaseline,\n fill: labelColor\n }\n });\n }\n return nodeData;\n };\n ColumnSparkline.className = 'ColumnSparkline';\n return ColumnSparkline;\n}(BarColumnSparkline);\nvar AgSparkline = /** @class */function () {\n function AgSparkline() {}\n AgSparkline.create = function (options, tooltip) {\n // avoid mutating user provided options\n options = Object.create(options);\n var sparkline = getSparklineInstance(options.type);\n if (tooltip) {\n sparkline.tooltip = tooltip;\n }\n initSparkline(sparkline, options);\n initSparklineByType(sparkline, options);\n if (options.data) {\n sparkline.data = options.data;\n }\n return sparkline;\n };\n return AgSparkline;\n}();\nfunction getSparklineInstance(type) {\n if (type === void 0) {\n type = 'line';\n }\n switch (type) {\n case 'column':\n return new ColumnSparkline();\n case 'bar':\n return new BarSparkline();\n case 'area':\n return new AreaSparkline();\n case 'line':\n default:\n return new LineSparkline();\n }\n}\nfunction initSparklineByType(sparkline, options) {\n switch (options.type) {\n case 'bar':\n initBarColumnSparkline(sparkline, options);\n break;\n case 'column':\n initBarColumnSparkline(sparkline, options);\n break;\n case 'area':\n initAreaSparkline(sparkline, options);\n break;\n case 'line':\n default:\n initLineSparkline(sparkline, options);\n break;\n }\n}\nfunction initSparkline(sparkline, options) {\n setValueIfPropertyExists(sparkline, 'context', options.context, options);\n setValueIfPropertyExists(sparkline, 'width', options.width, options);\n setValueIfPropertyExists(sparkline, 'height', options.height, options);\n setValueIfPropertyExists(sparkline, 'container', options.container, options);\n setValueIfPropertyExists(sparkline, 'xKey', options.xKey, options);\n setValueIfPropertyExists(sparkline, 'yKey', options.yKey, options);\n if (options.padding) {\n initPaddingOptions(sparkline.padding, options.padding);\n }\n if (options.axis) {\n initAxisOptions(sparkline.axis, options.axis);\n }\n if (options.highlightStyle) {\n initHighlightStyleOptions(sparkline.highlightStyle, options.highlightStyle);\n }\n if (options.tooltip && sparkline.tooltip) {\n initTooltipOptions(sparkline.tooltip, options.tooltip);\n }\n}\nfunction initLineSparkline(sparkline, options) {\n if (options.marker) {\n initMarkerOptions(sparkline.marker, options.marker);\n }\n if (options.line) {\n initLineOptions(sparkline.line, options.line);\n }\n if (options.crosshairs) {\n initCrosshairsOptions(sparkline.crosshairs, options.crosshairs);\n }\n}\nfunction initAreaSparkline(sparkline, options) {\n setValueIfPropertyExists(sparkline, 'fill', options.fill, options);\n if (options.marker) {\n initMarkerOptions(sparkline.marker, options.marker);\n }\n if (options.line) {\n initLineOptions(sparkline.line, options.line);\n }\n if (options.crosshairs) {\n initCrosshairsOptions(sparkline.crosshairs, options.crosshairs);\n }\n}\nfunction initBarColumnSparkline(sparkline, options) {\n setValueIfPropertyExists(sparkline, 'valueAxisDomain', options.valueAxisDomain, options);\n setValueIfPropertyExists(sparkline, 'fill', options.fill, options);\n setValueIfPropertyExists(sparkline, 'stroke', options.stroke, options);\n setValueIfPropertyExists(sparkline, 'strokeWidth', options.strokeWidth, options);\n setValueIfPropertyExists(sparkline, 'paddingInner', options.paddingInner, options);\n setValueIfPropertyExists(sparkline, 'paddingOuter', options.paddingOuter, options);\n setValueIfPropertyExists(sparkline, 'formatter', options.formatter, options);\n if (options.label) {\n initLabelOptions(sparkline.label, options.label);\n }\n}\nfunction initPaddingOptions(target, options) {\n setValueIfPropertyExists(target, 'top', options.top, options);\n setValueIfPropertyExists(target, 'right', options.right, options);\n setValueIfPropertyExists(target, 'bottom', options.bottom, options);\n setValueIfPropertyExists(target, 'left', options.left, options);\n}\nfunction initMarkerOptions(target, options) {\n setValueIfPropertyExists(target, 'enabled', options.enabled, options);\n setValueIfPropertyExists(target, 'size', options.size, options);\n setValueIfPropertyExists(target, 'shape', options.shape, options);\n setValueIfPropertyExists(target, 'fill', options.fill, options);\n setValueIfPropertyExists(target, 'stroke', options.stroke, options);\n setValueIfPropertyExists(target, 'strokeWidth', options.strokeWidth, options);\n setValueIfPropertyExists(target, 'formatter', options.formatter, options);\n}\nfunction initLabelOptions(target, options) {\n setValueIfPropertyExists(target, 'enabled', options.enabled, options);\n setValueIfPropertyExists(target, 'fontStyle', options.fontStyle, options);\n setValueIfPropertyExists(target, 'fontWeight', options.fontWeight, options);\n setValueIfPropertyExists(target, 'fontSize', options.fontSize, options);\n setValueIfPropertyExists(target, 'fontFamily', options.fontFamily, options);\n setValueIfPropertyExists(target, 'textAlign', options.textAlign, options);\n setValueIfPropertyExists(target, 'textBaseline', options.textBaseline, options);\n setValueIfPropertyExists(target, 'color', options.color, options);\n setValueIfPropertyExists(target, 'formatter', options.formatter, options);\n setValueIfPropertyExists(target, 'placement', options.placement, options);\n}\nfunction initLineOptions(target, options) {\n setValueIfPropertyExists(target, 'stroke', options.stroke, options);\n setValueIfPropertyExists(target, 'strokeWidth', options.strokeWidth, options);\n}\nfunction initAxisOptions(target, options) {\n setValueIfPropertyExists(target, 'type', options.type, options);\n setValueIfPropertyExists(target, 'stroke', options.stroke, options);\n setValueIfPropertyExists(target, 'strokeWidth', options.strokeWidth, options);\n}\nfunction initHighlightStyleOptions(target, options) {\n setValueIfPropertyExists(target, 'fill', options.fill, options);\n setValueIfPropertyExists(target, 'size', options.size, options);\n setValueIfPropertyExists(target, 'stroke', options.stroke, options);\n setValueIfPropertyExists(target, 'strokeWidth', options.strokeWidth, options);\n}\nfunction initTooltipOptions(target, options) {\n setValueIfPropertyExists(target, 'enabled', options.enabled, options);\n setValueIfPropertyExists(target, 'container', options.container, options);\n setValueIfPropertyExists(target, 'xOffset', options.xOffset, options);\n setValueIfPropertyExists(target, 'yOffset', options.yOffset, options);\n setValueIfPropertyExists(target, 'renderer', options.renderer, options);\n}\nfunction initCrosshairsOptions(target, options) {\n if (target.xLine && options.xLine) {\n initCrosshairLineOptions(target.xLine, options.xLine);\n }\n if (target.yLine && options.yLine) {\n initCrosshairLineOptions(target.yLine, options.yLine);\n }\n}\nfunction initCrosshairLineOptions(target, options) {\n setValueIfPropertyExists(target, 'enabled', options.enabled, options);\n setValueIfPropertyExists(target, 'stroke', options.stroke, options);\n setValueIfPropertyExists(target, 'strokeWidth', options.strokeWidth, options);\n setValueIfPropertyExists(target, 'lineDash', options.lineDash, options);\n setValueIfPropertyExists(target, 'lineCap', options.lineCap, options);\n}\nvar doOnceFlags = {};\n/**\n * If the key was passed before, then doesn't execute the func\n * @param {Function} func\n * @param {string} key\n */\nfunction doOnce(func, key) {\n if (doOnceFlags[key]) {\n return;\n }\n func();\n doOnceFlags[key] = true;\n}\nvar offsetValidator = function (property, value, defaultOffset) {\n if (isNumber(value)) {\n return true;\n }\n var message = \"AG Charts: \" + property + \" must be a number, the value you provided is not a valid number. Using the default of \" + defaultOffset + \"px.\";\n doOnce(function () {\n return console.warn(message);\n }, property + \" not a number\");\n return false;\n};\nvar validators = {\n xOffset: offsetValidator,\n yOffset: offsetValidator\n};\nfunction setValueIfPropertyExists(target, property, value, options) {\n if (property in options) {\n if (property in target) {\n var validator = validators[property];\n var isValid = validator ? validator(property, value, target[property]) : true;\n if (isValid && target[property] !== value) {\n // only set property if the value is different to new value\n target[property] = value;\n }\n } else {\n console.warn(\"Property \" + property + \" does not exist on the target object.\");\n }\n }\n}\nvar __extends$1 = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __decorate$1 = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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};\nvar SparklineCellRenderer = /** @class */function (_super) {\n __extends$1(SparklineCellRenderer, _super);\n function SparklineCellRenderer() {\n return _super.call(this, SparklineCellRenderer.TEMPLATE) || this;\n }\n SparklineCellRenderer.prototype.init = function (params) {\n var _this = this;\n var firstTimeIn = true;\n var updateSparkline = function () {\n var _a = _this.getGui(),\n clientWidth = _a.clientWidth,\n clientHeight = _a.clientHeight;\n if (clientWidth === 0 || clientHeight === 0) {\n return;\n }\n if (firstTimeIn) {\n var options = __assign({\n data: params.value,\n width: clientWidth,\n height: clientHeight,\n context: {\n data: params.data\n }\n }, params.sparklineOptions);\n // create new instance of sparkline\n _this.sparkline = AgSparkline.create(options, _this.sparklineTooltipSingleton.getSparklineTooltip());\n // append sparkline canvas to cell renderer element\n _this.eSparkline.appendChild(_this.sparkline.canvasElement);\n firstTimeIn = false;\n } else {\n _this.sparkline.width = clientWidth;\n _this.sparkline.height = clientHeight;\n }\n };\n var unsubscribeFromResize = this.resizeObserverService.observeResize(this.getGui(), updateSparkline);\n this.addDestroyFunc(function () {\n return unsubscribeFromResize();\n });\n };\n SparklineCellRenderer.prototype.refresh = function (params) {\n if (this.sparkline) {\n this.sparkline.data = params.value;\n return true;\n }\n return false;\n };\n SparklineCellRenderer.prototype.destroy = function () {\n if (this.sparkline) {\n this.sparkline.destroy();\n }\n _super.prototype.destroy.call(this);\n };\n SparklineCellRenderer.TEMPLATE /* html */ = \"
\\n \\n
\";\n __decorate$1([RefSelector('eSparkline')], SparklineCellRenderer.prototype, \"eSparkline\", void 0);\n __decorate$1([Autowired('resizeObserverService')], SparklineCellRenderer.prototype, \"resizeObserverService\", void 0);\n __decorate$1([Autowired('sparklineTooltipSingleton')], SparklineCellRenderer.prototype, \"sparklineTooltipSingleton\", void 0);\n return SparklineCellRenderer;\n}(Component);\nvar __extends = undefined && undefined.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate = undefined && undefined.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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 * This 'bean' creates a single sparkline tooltip that is bound to the grid lifecycle.\n */\nvar SparklineTooltipSingleton = /** @class */function (_super) {\n __extends(SparklineTooltipSingleton, _super);\n function SparklineTooltipSingleton() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SparklineTooltipSingleton.prototype.postConstruct = function () {\n this.tooltip = new SparklineTooltip();\n };\n SparklineTooltipSingleton.prototype.getSparklineTooltip = function () {\n return this.tooltip;\n };\n SparklineTooltipSingleton.prototype.destroyTooltip = function () {\n if (this.tooltip) {\n this.tooltip.destroy();\n }\n };\n __decorate([PostConstruct], SparklineTooltipSingleton.prototype, \"postConstruct\", null);\n __decorate([PreDestroy], SparklineTooltipSingleton.prototype, \"destroyTooltip\", null);\n SparklineTooltipSingleton = __decorate([Bean('sparklineTooltipSingleton')], SparklineTooltipSingleton);\n return SparklineTooltipSingleton;\n}(BeanStub);\nvar SparklinesModule = {\n moduleName: ModuleNames.SparklinesModule,\n beans: [SparklineTooltipSingleton],\n userComponents: [{\n componentName: 'agSparklineCellRenderer',\n componentClass: SparklineCellRenderer\n }],\n dependantModules: [EnterpriseCoreModule]\n};\nvar AllEnterpriseModules = [ClipboardModule, ColumnsToolPanelModule, ExcelExportModule, FiltersToolPanelModule, GridChartsModule, MasterDetailModule, MenuModule, MultiFilterModule, RangeSelectionModule, RichSelectModule, RowGroupingModule, ServerSideRowModelModule, SetFilterModule, SideBarModule, StatusBarModule, ViewportRowModelModule, SparklinesModule];\nvar AllModules = AllCommunityModules.concat(AllEnterpriseModules);\nModuleRegistry.registerModules(AllEnterpriseModules);\nexport { AllEnterpriseModules, AllModules, ClipboardModule, ColumnsToolPanelModule, EnterpriseCoreModule, ExcelExportModule, FiltersToolPanelModule, GridChartsModule, LicenseManager, MasterDetailModule, MenuModule, MultiFilter, MultiFilterModule, PivotDropZonePanel, PrimaryColsPanel, RangeSelectionModule, RichSelectModule, RowGroupDropZonePanel, RowGroupingModule, ServerSideRowModelModule, SetFilter, SetFilterModule, SideBarModule, SparklinesModule, StatusBarModule, ToolPanelColDefService, ValuesDropZonePanel, ViewportRowModelModule, agCharts, exportMultipleSheetsAsExcel, getMultipleSheetsAsExcel };"],"names":["__extends$3t","extendStatics","d","b","p","__","__decorate$2l","decorators","target","key","desc","c","r","i","__read$Y","n","m","ar","e","error","LicenseManager","_super","_this","LicenseManager_1","_","_a","md5","license","version","isTrial","restrictionHashed","licenseKey","cleanedLicenseKey","hashStart","valid","expiry","date","monthNames","day","monthIndex","year","input","keystr","t","s","o","u","a","f","matches","v","value","match","gridReleaseDate","current","formattedExpiryDate","formattedReleaseDate","now","Autowired","PreConstruct","Bean","BeanStub","__extends$3s","__decorate$2k","MD5","x","k","q","state","tail","md5blks","hex_chr","j","y","lsw","msw","PostConstruct","__extends$3r","__decorate$2j","WatermarkComp","show","eDocument","win","loc","hostname","pathname","isDisplayWatermark","isWhiteListURL","isForceWatermark","RefSelector","Component","EnterpriseCoreModule","ModuleNames","__extends$3q","__decorate$2i","ClipboardService","Constants","allowNavigator","defaultPrevented","handlePasteEvent","currentPastOperationTime","textArea","element","data","focusedCell","parsedData","userFunc","pasteOperation","cellsToFlash","updatedRowNodes","changedPath","rangeActive","pasteIntoRange","pasteOperationFunc","api","columnApi","source","Events","onlyChangedColumns","ChangedPath","event","clipboardData","abortRepeatingPasteIntoRows","indexOffset","dataRowIndex","rowCallback","currentRow","rowNode","columns","index","atEndOfClipboardData","currentRowData","processCellFromClipboardFunc","column","idx","newValue","cellId","columnsToPasteInto","firstRowValues","processCellForClipboardFunc","firstRowValue","lastLine","lastLineIsBlank","rowNodes","clipboardGridData","type","rowPointer","skipGroupRows","getNextGoodRowNode","res","skipRow","clipboardRowData","processedValue","params","includeHeaders","includeGroupHeaders","copyParams","shouldCopyRows","onlyFirst","columnCallback","cellRanges","range","isLastRange","lastRow","rangeIndex","isLastRow","allRangesMerge","columnsSet","ranges","rowPositionsMap","allRowPositions","allCellsToFlash","col","rowPositions","rowPosition","rowPositionAsString","allColumns","exportedColumns","posA","posB","startRow","node","columnKeys","_b","exportParams","func","userProvidedFunc","focusedElementBefore","result","callbackNow","callbackAfter","eDoc","eTempInput","guiRoot","startRangeIndex","endRangeIndex","Optional","ClipboardModule","CsvExportModule","__extends$3p","__decorate$2h","ExpandState","PrimaryColsHeaderPanel","KeyCode","translate","showFilter","showSelect","showExpand","groupsPresent","filterText","ColumnModelItem","displayName","columnOrGroup","dept","group","expanded","EventService","passesFilter","eventType","listener","__extends$3o","__decorate$2g","__read$X","__spread$y","__values$x","ToolPanelContextMenu","mouseEvent","parentEl","Column","ProvidedColumnGroup","localeTextFunc","groupedColumns","valueColumns","pivotColumns","columnList","eGui","menuList","AgMenuList","menuItemsMapped","hideFunc","AgMenuItemComponent","addPopupRes","e_1","ret","_loop_1","val","isInactive","this_1","isActive","_c","e_1_1","__extends$3n","__decorate$2f","ToolPanelColumnGroupComp","modelItem","allowDragging","focusWrapper","checkboxGui","checkboxInput","AgCheckbox","classes","CssClassApplier","colGroupDef","refresh","newTooltipText","columnGroup","gridOptionsWrapper","contextMenu","hideColumnOnExit","dragSource","DragSourceType","DragAndDropService","visibleState","touchListener","TouchListener","nextState","childColumns","extractCols","children","child","columnLabel","visibilityLabel","selectedValue","readOnlyValue","pivotMode","visibleLeafColumns","checkedCount","uncheckedCount","colsThatCanAction","pivoted","grouped","aggregated","oldState","folderOpen","cbValue","readOnly","selected","__extends$3m","__decorate$2e","PRIMARY_COLS_LIST_ITEM_HOVERED","PrimaryColsListPanelItemDragFeature","comp","virtualList","currentColumns","hasNotMovable","colDef","dropTarget","virtualListGui","AutoScrollService","position","hoveredColumnItem","el","paddingTop","rowHeight","scrollTop","rowIndex","maxLen","normalizedRowIndex","targetIndex","columnsToMove","end","currentColumn","span","currentIndex","columnItemComponent","isBefore","targetColumn","targetColumnIndex","adjustedTarget","diff","cls","__extends$3l","__decorate$2d","ToolPanelColumnComp","columnDept","groupsExist","displayNameSanitised","indent","isPivotMode","anyFunctionActive","canBeToggled","canBeDragged","functionsReadOnly","noFunctionsAllowed","enableRowGroup","enableValue","lockPosition","suppressMovable","lockVisible","forceDraggable","disableDraggable","checkboxPassive","__extends$3k","__decorate$2c","UIColumnModel","items","PRIMARY_COLS_LIST_PANEL_CLASS","PrimaryColsListPanel","eventsImpactingCheckedState","columnListName","VirtualList","item","listItemElement","renderedGroup","columnComp","expandedStates","pivotModeActive","shouldSyncColumnLayoutWithGrid","colGroup","states","groupExistedLastTime","colDefs","columnTree","columnExpandedListener","addListeners","removeFunc","recursivelyBuild","tree","parentList","createGroupItem","createColumnItem","columnGroupDef","skipThisGroup","skipThisColumn","recursiveFunc","focusedRow","callback","expand","groupIds","expandedGroupIds","groupId","unrecognisedGroupIds","expandedCount","notExpandedCount","selectAllChecked","checked","noPivotModeOptionsAllowed","recursivelyCheckFilter","parentPasses","atLeastOneChildPassed","groupPasses_1","childPasses","filterPasses","expandState","selectionState","PreDestroy","__extends$3j","__decorate$2b","PivotModePanel","__extends$3i","__decorate$2a","AggregationStage","noValueColumns","noUserAgg","changedPathActive","aggDetails","pivotActive","measureColumns","hasNoChildren","isRootNode","notPivoting","suppressAggAtRootLevel","measureColumnsMissing","pivotColumnsMissing","aggResult","pivotColumnDefs","valueColDef","keys","values","valueColumn","colId","totalColDef","aggResults","pivotValueColumn","pivotTotalColumnIds","currentColId","changedValueColumns","notChangedValueColumns","values2d","oldValues","mappedSet","mapPointer","valueColumnCount","nodeList","rowCount","childNode","aggFuncOrString","aggFunc","aggFuncAny","BatchRemover","parent","set","nodeDetails","__extends$3h","__decorate$29","__read$W","__spread$x","GroupStage","NumberSequence","details","afterColsChanged","leafNodes_1","groupNodes_1","row","rowNodeTransactions","rowNodeOrder","groupedCols","tran","batchRemover","parentsWithChildrenRemoved","didSort","rootNode","comparator","recursiveSort","doSort","nodeA","nodeB","pointer","childNodes","infoToKeyMapper","oldPath","newPath","nodeInCorrectPath","newParent","leafRowNodes","nodeParents","nodesToRemove","provided","batchRemoverIsLocal","batchRemoverToUse","nodeToRemove","parentNode","replaceWithGroup","newGroupNode_1","possibleEmptyGroups","checkAgain","groupShouldBeRemoved","mapKey","parentRowNode","groupAlreadyRemoved","possibleEmptyGroup","d1","d2","recurse","isLeafNode","groupInfo","afterColumnsChanged","sibling","noFurtherProcessingNeeded","groupDisplayColumns","newGroupDisplayColIds","newRowNodes","isMove","path","parentGroup","nextNode","level","fillerGroup","userGroup","groupNode","RowNode","groupDisplayCols","displayGroupForCol","rowGroupColumn","userCallback","expandByDefault","groupInfoMapper","groupCol","keyExists","__extends$3g","__assign$H","__decorate$28","__read$V","__spread$w","PivotColDefService","PivotColDefService_1","uniqueValues","levelsDeep","pivotColumnGroupDefs","extractColDefs","arr","def","pivotColumnDefsClone","uniqueValue","pivotKeys","maxDepth","primaryPivotColumns","primaryPivotColumnDefs","leafCols_1","newPivotKeys","groups","measureCol","columnName","recursivelyAddSubTotals","groupDef","currentPivotColumnDefs","acc","childAcc_1","grp","firstGroup_1","pivotValueColId","insertAfter","valueCols","aggFuncs","valueCol","colIds","childColIds","headerName","withGroup","parentChildren","addGroup","valueGroup","totalColumn","colDefToCopy","userComparator","m1","m2","map","existingList","updatedList","pivotCols","measureColumnId","__extends$3f","__decorate$27","PivotStage","uniqueValuesChanged","aggregationColumns","aggregationColumnsHash","aggregationFuncsHash","aggregationColumnsChanged","aggregationFuncsChanged","groupColumnsHash","groupColumnsChanged","newValues","json1","json2","recursivelySearchForLeafNodes","pivotIndex","mappedChildren","pivotColumn","result_1","__extends$3e","__decorate$26","AGBigInt","AggFuncService","AggFuncService_1","aggSum","aggFirst","aggLast","aggMin","aggMax","aggCount","aggAvg","allKeys","allowed","funcExists","defaultAgg","name","userAllowedFuncs","sum","count","currentValue","valueToAdd","existingAggData","__extends$3d","__decorate$25","DropZoneColumnComp","dragSourceDropTarget","ghost","dropZonePurpose","horizontal","isFunctionsReadOnly","aggFuncName","aggSeparator","sortDirection","columnSort","isSortSuppressed","ariaInstructions","part","aggregationMenuAria","sortProgressAria","deleteAria","canSort","isGroupingZone","performSort_1","sortUsingCtrl","multiSort","isEnter","agEvent","isDelete","aggFuncString","displayValue","displayValueSanitised","rows","ePopup","popupHiddenFunc","rowToFocus","hidePopup","itemSelected","event_1","aggFuncStringTranslated","AggItemComp","suffix","direction","__extends$3c","__decorate$24","__read$U","__spread$v","BaseDropZonePanel","resizable","beans","ManagedFocusFeature","PositionableFeature","isVertical","isNext","isPrevious","isRtl","draggingEvent","newIndex","changed","mouseLocation","boundsList","hoveredIndex","rect","enableRtl","isLast","isFirst","dragColumns","goodDragColumns","dragItem","visible","allowedCols","showColumnOnExit","success","columnsToRemove","newColumnList","columnsToAdd","colsToAddNoDuplicates","resizeEnabled","focusedIndex","alternateElement","activeElement","indexToFocus","existingColumns","nonGhostColumns","itemsToAddToGui","dndColumns","columnComponent","eGroupIcon","eTitleBar","eTitle","eMessage","eParent","icon","__extends$3b","__decorate$23","RowGroupDropZonePanel","emptyMessage","title","label","__extends$3a","__decorate$22","PivotDropZonePanel","__extends$39","__decorate$21","GridHeaderDropZones","topPanelGui","dropPanelVisibleListener","bothDisplayed","rowGroupPanelShow","grouping","__extends$38","__decorate$20","FilterAggregatesStage","isAggFilterActive","defaultPrimaryColumnPredicate","defaultSecondaryColumnPredicate","applyFilterToNode","preserveChildren","recursive","filterChildren","shouldFilterRow","doesNodePassFilter","hasChildPassed","allChildrenCount","RowGroupingModule","__extends$37","__decorate$1$","ValuesDropZonePanel","__extends$36","__decorate$1_","PrimaryColsPanel","hideFilter","hideSelect","hideExpand","TabGuardComp","__extends$35","__assign$G","__decorate$1Z","ColumnToolPanel","defaultParams","pivotModeListener_1","panel","columnDrops","columnDrop","columnDropEls","lastVisible","ModuleRegistry","__extends$34","__decorate$1Y","HorizontalResizeComp","elementToResize","finishedWithResizeFunc","start","width","delta","isEnd","newWidth","inverted","__extends$33","__decorate$1X","SideBarButtonComp","toolPanelDef","template","__extends$32","__decorate$1W","SideBarButtonsComp","lastColumn","toolPanelDefs","id","buttonComp","__extends$31","__decorate$1V","ToolPanelWrapper","resizeBar","minWidth","maxWidth","compDetails","componentPromise","compInstance","side","isLeft","__extends$30","__decorate$1U","SideBarComp","focusService","sideBarButtonsComp","sideBarGui","openPanel","firstFocusableEl","eDocument_1","selectedButton","buttons","currentButton","currentPos","button","nextPos","innerButton","openedItem","sideBar","sideBarExists","shouldDisplaySideBar","resizerSide","wrapper","defs","moduleMissing","currentlyOpenedKey","newlyOpenedKey","openToolPanelChanged","toolPanelWrapper","toolPanel","activeToolPanel","__extends$2$","__decorate$1T","ToolPanelColDefService","invalidColIds","createDummyColGroup","abstractColDef","depth","children_1","mappedResults","syncLayoutCallback","leafPathTrees","mergedColumnTrees","getLeafPathTree","childDef","leafPathTree","allGridColumns","allPrimaryGridColumns","matchingRootGroupIds","pathA","pathB","bothPathsAreGroups","mergeTrees","treeA","treeB","mergeResult","groupToMerge","added","mergeColDefs","first","second","subGroupIsSplit","currentSubGroup","currentSubGroupToAdd","existingChildIds","childGroupAlreadyExists","lastChild","lastChildIsDifferent","currentGroup","groupToAdd","colDefAlreadyPresent","subGroup","SideBarModule","__decorate$1S","ModelItemUtils","colTree","cols","allItems","colStateItems","copyOfPivotColumns","copyOfValueColumns","copyOfRowGroupColumns","pivotChanged","valueChanged","rowGroupChanged","turnOnAction","turnOffAction","action","event_2","event_3","ColumnsToolPanelModule","workbook","excelWorkbook","cell","mergeAcross","styleId","properties","cells","it","worksheet","ws","table","documentProperties","alignment","styleProperties","vertical","readingOrder","rotate","shrinkToFit","verticalText","wrapText","borders","borderBottom","borderLeft","borderRight","borderTop","font","bold","fontName","italic","color","outline","shadow","size","strikeThrough","underline","verticalAlign","charSet","family","interior","pattern","patternColor","protection","numberFormat","format","style","ExcelXmlFactory","styles","currentWorksheet","header","docProps","eWorkbook","wb","XmlFactory","boolean","docProperties","property","options","ExcelFactoryMode","INCH_TO_EMU","numberFormatMap","pixelsToPoint","pixels","pointsToPixel","points","pixelsToEMU","getFontFamilyId","families","pos","getHeightFromProperty","height","finalHeight","heightFunc","setExcelImageTotalWidth","image","columnsToExport","colSpan","columnsInSpan","totalWidth","colWidth","setExcelImageTotalHeight","rowSpan","totalHeight","counter","nextRowHeight","createXmlPart","body","xmlBody","getExcelColumnName","colIdx","startCode","tableWidth","fromCharCode","tableIdx","__extends$2_","__assign$F","__read$T","__spread$u","BaseExcelSerializingSession","config","customContent","rowLen","rowObj","currentCells","collapsibleRanges","styleIds","RowType","longestRow","columnWidth","smallestUsefulWidth","nameForCol","onNewColumnAccumulator","skipCols","valueForCell","excelStyleId","addedImage","excelId","resultantStyle","excelStyle","BaseGridSerializingSession","__extends$2Z","ExcelXmlSerializingSession","actualStyle","typeTransformed","cdataStart","cdataEnd","cdataEndRegex","convertBoolean","numOfCells","coreFactory","author","dt","jsonDate","contentTypeFactory","ContentType","Extension","PartName","__read$S","__spread$t","contentTypesFactory","sheetLen","worksheets","sheetsWithImages","ExcelXlsxFactory","imageTypesObject","imageDocs","imageTypes","ext","contentType","getAnchor","imageAnchor","getExt","recolor","getNvPicPr","getColorDetails","getDuoTone","primaryColor","secondaryColor","getBlipFill","blipChildren","transparency","getSpPr","imageBoxSize","xfrm","rotation","prstGeom","getImageBoxSize","fitCell","_d","offsetX","_e","offsetY","_f","_g","_h","_j","getPicture","worksheetImageIndex","drawingFactory","sheetIndex","sheetImages","sheetImageIds","boxSize","__read$R","getColorChildren","props","innerType","lastClr","colorScheme","__read$Q","getFont$3","typeface","script","panose","fontScheme","utf8_encode","__read$P","getPropertyVal","getGs","schemeColor","satMod","lumMod","tint","shade","getSolidFill","getGradFill","rotWithShape","gs1","gs2","gs3","lin","ang","scaled","getLine","w","cap","cmpd","algn","getEffectStyle","blurRad","dist","dir","getFillStyleList","getLineStyleList","getEffectStyleList","getBgFillStyleList","formatScheme","themeElements","officeTheme","buildSharedString","strMap","textNode","preserveSpaces","sharedStrings","strings","numberFormatFactory","formatCode","numFmtId","numberFormatsFactory","numberFormats","fontFactory","colorTheme","scheme","fontsFactory","fonts","fillFactory","fill","patternType","fgTheme","fgTint","fgRgb","bgRgb","bgIndexed","pf","fillsFactory","fills","getWeightName","mappedBorderNames","mediumBorders","colorMap","horizontalAlignmentMap","verticalAlignmentMap","convertLegacyPattern","convertLegacyColor","convertLegacyBorder","weight","namedWeight","mappedName","convertLegacyHorizontalAlignment","convertLegacyVerticalAlignment","getBorderColor","borderFactory$1","border","left","right","top","bottom","diagonal","leftChildren","rightChildren","topChildren","bottomChildren","diagonalChildren","bordersFactory","getReadingOrderId","order","alignmentFactory","protectionFactory","locked","hidden","xfFactory","xf","borderId","fillId","fontId","xfId","cellStylesXfsFactory","xfs","cellXfsFactory","borderFactory","cellStyle","builtinId","cellStylesFactory","cellStyles","__assign$E","stylesMap","registeredNumberFmts","registeredFonts","registeredFills","registeredBorders","registeredCellStyleXfs","registeredCellXfs","registeredCellStyles","currentSheet","getStyleName","resetStylesheetValues","registerFill","convertedPattern","convertedFillColor","convertedPatternColor","currentFill","registerNumberFmt","currentFormat","registerBorders","bottomStyle","topStyle","leftStyle","rightStyle","bottomColor","topColor","leftColor","rightColor","currentBorder","clS","clC","crS","crC","ctS","ctC","cbS","cbC","registerFont","utf8Name","convertedColor","familyId","convertedUnderline","convertedVerticalAlign","currentFont","registerStyle","currentNumberFmt","stylesheetFactory","defaultFontSize","cellStylesXfs","cellXfs","getStyleId","registerStyles","_currentSheet","sheetFactory","sheetId","sheetsFactory","names","sheet","workbookFactory","getExcelCellWidth","columnFactory","min","max","outlineLevel","bestFit","excelWidth","customWidth","convertLegacyType","cellFactory","ref","convertedType","obj","__read$O","__spread$s","addEmptyCells","rowIdx","mergeMap","posCounter","mergedCells","shouldDisplayCell","rowFactory","collapsed","mergeCellFactory","getMergedCellsAndAddColumnGroups","cellsWithCollapsibleGroups","merges","lastCol","currentCell","cellIdx","outputRow","rangeMap","currentRange","rangeString","inMap","refCol","currentOutlineLevel","getPageOrientation","orientation","getPageSize","pageSize","positions","addColumns","addSheetData","sheetNumber","addMergeCells","mergeCells","mergedCell","addPageMargins","margins","footer","addPageSetup","pageSetup","replaceHeaderFooterTokens","getHeaderPosition","applyHeaderFontStyle","headerString","processHeaderFooterContent","content","prev","curr","output","buildHeaderFooter","headerFooterConfig","rules","headersAndFooters","rule","headerFooter","namePrefix","nameSuffix","addHeaderFooter","differentFirst","differentOddEven","addDrawingRel","addSheetPr","addSheetFormatPr","maxOutline","worksheetFactory","createWorksheetChildren","relationshipFactory","Id","Type","Target","relationshipsFactory","relationship","__read$N","__spread$r","currentSheetIndex","registeredImage","calculatedImage","currentSheetImages","currentImage","worksheetImageIdMap","append","str","rs","worksheetImageIds","XMLArr","currentRelationIndex","__extends$2Y","ExcelXlsxSerializingSession","excelStyles","valueToUse","__extends$2X","__assign$D","__decorate$1R","getMultipleSheetsAsExcel","fontSize","hasImages","ZipContainer","imgCounter_1","firstImage","imageRelationCounter","createImageRelationsForSheet","mimeType","exportMultipleSheetsAsExcel","fileName","contents","Downloader","drawingFolder","drawingFileName","relFileName","worksheetRelFile","ExcelCreator","baseParams","userParams","mergedParams","packageFile","factoryMode","exportMode","factory","columnModel","valueService","isXlsx","sheetName","rowType","isHeader","isGroupHeader","headerClasses","applicableStyles","className","BaseCreator","ExcelExportModule","GridSerializer","CsvCreator","__extends$2W","__decorate$1Q","EXPAND_STATE","FiltersToolPanelHeaderPanel","showFilterSearch","isFilterGroupPresent","filterGroupsPresent","__extends$2V","__decorate$1P","ToolPanelFilterComp","hideHeader","cssClass","iconName","eIcon","container","filterPromise","filter","__extends$2U","__decorate$1O","ToolPanelFilterGroupComp","childFilterComps","expandedCallback","showingColumn","groupParams","filterComp","hide","expandListener","collapseListener","AgGroupComponent","anyChildFiltersActive","__extends$2T","__decorate$1N","FiltersToolPanelListPanel","len","hideFilterCompHeader","filterGroupComp","newDepth","suppressFiltersToolPanel","updatedGroupIds","updateGroupExpandState","filterGroup","shouldExpandOrCollapse","updatedColIds","anyChildrenChanged_1","childUpdated","updateFilterExpandState","unrecognisedColIds","updateExpandCounts","searchText","searchFilter","groupName","recursivelySearch","filterItem","groupNamePasses","alreadyPassed","anyChildPasses","firstVisible","firstIdx","lastIdx","__extends$2S","__assign$C","__decorate$1M","FiltersToolPanel","hideSearch","FiltersToolPanelModule","__extends$2R","__decorate$1L","ChartDatasource","isServerSide","extractedRowData","columnNames","groupNodeIndexes","groupsToRemove","filteredNodes","allRowNodes","numRows","modelLastRow","rangeLastRow","valueObject","valueString","labels","l","groupKey","ChartDataModel","columnNamesArr","filteredOutColId","actualValue","groupIndexesToRemove_1","filterFunc","dataFromGrid","dimensionCols","lastColId","dataAggregated","currentMap","groupItem_1","dimCol","dimColId","groupItem","dataToAgg","dataToAggFiltered","aggResultFiltered","secondaryColumns","pivotKeySeparator","extractSeparator","childId","firstSecondaryCol","initialLabel","sortOptions","noSort","__extends$2Q","__decorate$1K","__read$M","__spread$q","seriesChartTypesExist","customCombo","updatedColState","allColsFromRanges","seriesChartType","primaryOnly","seriesChartTypesSupplied","getSeriesChartType","providedSeriesChartType","updatedSeriesChartTypes","primaryChartType","secondaryChartType","selectedCols","cs","lineIndex","seriesType","endRow","chartData","usingTreeData","isGroupActive","displayedGroupCols","groupDimensionSelected","_i","CellRangeType","rangeService","endRowPosition","displayedCols","chartDataType","cellValue","childRow","allCols","isInitialising","hasSelectedDimension","aggFuncDimension","isAutoGroupCol","defaultCategory","valueColumnsFromReferenceRange","updatedCol","idsMatch","dimensionColState","valueColState","orderedColIds","ascColStateOrder","colsInRange","selectedDimensionColState","aggFuncDimension_1","selectedValueCols","orderedColIds_1","selectedDimension","BBox$1","BBox","other","ctx","__read$L","Matrix$1","Matrix","elements","A","B","C","rD","bbox","radius","xx","xy","yx","yy","h_w","h_h","cx","cy","h","sx","sy","matrix","scalingX","scalingY","translationX","translationY","opts","bbcx","bbcy","scx","scy","cos","sin","rcx","rcy","tx","ty","tx4","ty4","ID_MAP","createId$1","instance","constructor","nextId","windowValue","WINDOW","RedrawType","evalAvailable","EVAL_USEABLE","SceneChangeDetection","oldValue","ChangeDetectable","_source","_opts","__extends$2P","__decorate$1J","__values$w","PointerEvents$1","PointerEvents","zIndexChangedCallback","Node$1","Node","nodes","e_2","nodes_1","nodes_1_1","e_2_1","_x","_y","hit","scalingCenterX","scalingCenterY","rotationCenterX","rotationCenterY","renderCtx","stats","topLeft","bottomRight","parentType","e_3","force","e_3_1","e_4","dirtyCount","visibleCount","childCount","childVisibleCount","childDirtyCount","e_4_1","chainObjects$1","prop","getValue","object","defaultValue","parts","emptyTarget$1","cloneUnlessOtherwiseSpecified$1","deepMerge$1","defaultArrayMerge$1","getMergeFunction$1","customMerge","getEnumerableOwnPropertySymbols$1","symbol","getKeys$1","propertyIsOnObject$1","propertyIsUnsafe$1","mergeObject$1","destination","defaultIsMergeableObject$1","isNonNullObject$1","isSpecial$1","stringValue","sourceIsArray","targetIsArray","sourceAndTargetTypesMatch","isObject","__extends$2O","__decorate$1I","Shape$1","Shape","shape","protoStyles","length","pixelRatio","alignedStart","globalAlpha","fillShadow","HdpiCanvas$1","HdpiCanvas","document","domLayer","zIndex","overrideDevicePixelRatio","img","fileFormat","dataUrl","ratio","context","canvas","xmlns","svg","svgText","isChrome","isFirefox","isSafari","text","textBaseline","textAlign","metrics","cache","fontCache","size_1","scale","overrides","name_1","__extends$2N","__decorate$1H","SceneFontChangeDetection","redraw","changeCb","Text$1","Text","getFont$2","point","forceRender","stroke","strokeWidth","lineDash","lineDashOffset","lineCap","lineJoin","fontFamily","fontStyle","fontWeight","Observable$1","Observable","scope","allPropertyListeners","propertyListeners","scopes_1","scopes","allEventListeners","eventListeners","scopes_2","types","listeners","eventWithSource_1","__read$K","Color$1","Color","g","hex","po","pc","rgba","alpha","rgb","fractionDigits","components","S","H","rc","gc","bc","hueShift","saturationFactor","brightnessFactor","opacityFactor","hsb","Validate","predicate","privateKey","prevSet","descriptor","setter","cleanKey","targetClass","getter","predicateWithMessage","message","OPTIONAL","ARRAY","OPT_ARRAY","AND","predicates","OR","isComparable","LESS_THAN","otherField","GREATER_THAN","FUNCTION","OPT_FUNCTION","BOOLEAN","OPT_BOOLEAN","STRING","OPT_STRING","DATE","OPT_DATE","DATETIME_MS","NUMBER","OPT_DATETIME_MS","OPT_DATE_OR_DATETIME_MS","colorMessage","COLOR_STRING","OPT_COLOR_STRING","COLOR_STRING_ARRAY","OPT_NUMBER","NUMBER_ARRAY","OPT_NUMBER_ARRAY","STRING_ARRAY","BOOLEAN_ARRAY","FONT_WEIGHTS","FONT_STYLE","OPT_FONT_STYLE","FONT_WEIGHT","OPT_FONT_WEIGHT","LINE_DASH","OPT_LINE_DASH","LINE_CAPS","LINE_CAP","LINE_JOINS","LINE_JOIN","POSITIONS","POSITION","ValidateAndChangeDetection","sceneChangeDetectionOpts","validatePredicate","sceneChangeDetectionFn","validateFn","__extends$2M","__decorate$1G","Caption","constant$3","interpolateNumber$1","date$1","msA","msB","array$1","nb","na","interpolateValue$1","object$1","color$1","red","green","blue","ascending$1","ascendingStringNumberUndefined","compoundAscending","bisectRight","list","lo","hi","mid","complexBisectRight$1","ascendingComparator$1","__read$J","constant$2","identity$6","clamper$1","domain","ContinuousScale$1","ContinuousScale","interpolate","x0","x1","y0","y1","xt","tr","clamper","clamp","__extends$2L","ticks$1","step","tickStep$1","range$1","e10$1","e5$1","e2$1","rawStep","tickIncrement$1","power","NumericTicks$1","NumericTicks","absStep","formatDefault$1","xs","i0","i1","exit","formatTypes$1","formatDecimal$1","formatRounded$1","formatPrefixAuto$1","prefixes$1","FormatSpecifier$1","FormatSpecifier","specifier","formatRegEx$1","interpolateRegEx$1","makeFormatSpecifier$1","found","string","tickFormat$1","stop","formatSpecifier","precision","precisionPrefix$1","formatPrefix$1","precisionRound$1","precisionFixed$1","format$1","prefixExponent$1","formatDecimalParts$1","coefficient","exponent","formatGroup$1","thousands","formatNumerals$1","numerals","formatTrim$1","identity$5","formatDefaultLocale$1","defaultLocale$1","definition","formatLocale$3","exponent$1","locale","currencyPrefix","currencySuffix","decimal","percent","minus","nan","newFormat","align","sign","zero","comma","trim","prefix","formatType","maybeSuffix","valuePrefix","valueSuffix","nx","valueNegative","signPrefix","signSuffix","padding","formatPrefix","__extends$2K","LinearScale$1","LinearScale","offset","__values$v","find","identity$4","extent$1","transform","findMinMax","values_1","values_1_1","isNumber$1","isNumberObject$1","isNumeric$1","isDate$1","isString$1","isStringObject$1","isDiscrete","isContinuous$1","checkDatum","isContinuousScale","sign$1","linearRoot$1","quadraticRoots$1","D","roots","t1","t2","cubicRoots$1","Q","R","third","T","Im","t_1","theta","thirdA","twoSqrtQ","t3","__values$u","segmentIntersection$1","ax1","ay1","ax2","ay2","bx1","by1","bx2","by2","ua","ub","cubicSegmentIntersections$1","px1","py1","px2","py2","px3","py3","px4","py4","x2","y2","intersections","bx","bezierCoefficients$1","by","roots_1","roots_1_1","tt","ttt","P1","P2","P3","P4","__values$t","Path2D$1","Path2D","commands","commands_1","commands_1_1","command","rx","ry","fA","fS","hdx","hdy","sinPhi","cosPhi","xp","yp","ratX","ratY","lambda","cpx","cpy","theta1","deltaTheta","phi","theta2","anticlockwise","temp","f90","sinTheta1","cosTheta1","rightAngle","lastX","sinPhi2","cosPhi2","C2x","C2y","newPoints","last","xy_1","cx1","cy1","cx2","cy2","trackChanges","cn","ox","oy","px","py","intersectionCount","ci","pi","paths","__extends$2J","__assign$B","__decorate$1F","__values$s","__read$I","__spread$p","Group$1","Group","zIndexSubOrder","scene","dirtyChildren","consoleLog","dirty","dirtyZIndex","clipPath","layer","clipBBox","resized","isDirty","isChildDirty","currentBBox","counts","groupVisible","renderContextChanged","childRenderContext","skipped","children_1_1","e_5","visibleChildren","_k","_l","e_5_1","e_6","e_6_1","__values$r","EnterNode$1","EnterNode","datum","Selection$1","Selection","parents","Class","selector","numGroups","subgroups","groupSize","subgroup","subnode","tag","selectorAll","groupCount","groupLength","cb","group_1","group_1_1","parent_1","groups0","groups1","m0","group0","group1","merge","group_2","group_2_1","group_3","group_3_1","data_1","updateGroups","enterGroups","exitGroups","parent_2","dataSize","enterGroup","updateGroup","exitGroup","previous","next","enter","update","keyValues","nodeByKeyValue","keyValue","__extends$2I","__decorate$1E","Line$1","Line","__extends$2H","__decorate$1D","ScenePathChangeDetection","convertor","Path$1","Path","renderOverride","twoPi","normalizeAngle360","radians","normalizeAngle360Inclusive","normalizeAngle180","toRadians","degrees","isEqual","epsilon","toFixed","fractionOrSignificantDigits","mod","remain","__extends$2G","__decorate$1C","ArcType","Arc","doOnceFlags$1","doOnce$1","__extends$2F","t0$1","t1$1","TimeInterval$1","TimeInterval","floor","d0","ms","test","CountableTimeInterval$1","CountableTimeInterval","field","field_1","Layers","circleRectOverlap","edgeX","edgeY","dx","dy","rectRectOverlap","r1","w2","h2","xOverlap","yOverlap","rectContainsRect","r2x","r2y","r2w","r2h","isPointLabelDatum","placeLabels","bounds","ln","withinBounds","overlapPoints","overlapLabels","axisLabelsOverlap","_loop_2","overlap","state_1","__decorate$1B","__read$H","__spread$o","__values$q","TICK_COUNT","OPT_TICK_COUNT","GRID_STYLE_KEYS","GRID_STYLE","Tags","AxisLine","AxisTick","AxisLabel","Axis","crossLine","rr","vr","shift","tolerance","ticks","oldTitle","primaryTickCount","gridLength","tick","requestedRange","requestedRangeMin","requestedRangeMax","parallelLabels","anySeriesActive","sideFlag","parallelFlipRotation","regularFlipRotation","halfBandwidth","labelOverlap","defaultTickCount","tickCount","nice","continuous","secondaryAxis","calculatePrimaryDomain","unchanged","prevTicks","filteredTicks","secondaryAxisTicks","labelData","rotated","labelPadding","anyTickVisible","visibleFn","gridlineGroupSelection","tickGroupSelection","ChartAxisDirection","line","axisGroup","gridlineGroup","crossLineGroup","translation","gridPadding","_primaryTickCount","updateAxis","enterAxis","updateGridlines","tagFn","enterGridline","gridStyle","styleCount_1","gridLines","angularGridLength_1","arc","gridLine","tickLineGroupSelection","labelAutoRotation","labelRotation","parallelFlipFlag","regularFlipFlag","labelBboxes","labelCount","halfFirstLabelLength","halfLastLabelLength","availableRange","labelSelection","userHidden","labelX","rotateLabels","bboxes","divideBy","length_1","lengthWithPadding","autoRotation","labelTextBaseline","alignFlag","labelTextAlign","combinedRotation","labelRotationMatrix","translatedBBox","lineNode","tickGroup","lineGroup","titleVisible","titleNode","titleRotationFlag","lineBBox","bboxYDimension","tickBBox","tickWidth","labelFormatter","meta","__extends$2E","__decorate$1A","__read$G","__spread$n","flipChartAxisDirection","ChartAxisPosition","ChartAxis","boundSeries","includeInvisibleDomains","domains_1","series","calculateNiceSecondaryAxis","calculateNiceStart","getTickStep","segments","getTicks","magnitude","stepPower","calculateNextNiceStep","__extends$2D","__decorate$1z","__read$F","NUMBER_OR_NAN","NumberAxis","__read$E","BandScale$1","BandScale","reversed","__extends$2C","__decorate$1y","__read$D","__spread$m","CategoryAxis","valuesSet","TreeNode","number","ticksToTree","pad","root","insertTick","pathParts","lastPartIndex","pathPart","partIndex","existingNode","isNotLeaf","moveSubtree","wm","wp","subtrees","ancestor","vim","defaultAncestor","executeShifts","change","apportion","distance","vop","vip","vom","sip","sop","sim","som","firstWalk","defaultAncestor_1","midpoint","leftSibling","Dimensions","secondWalk","layout","thirdWalk","leafCount","treeLayout","TreeLayout","shiftX","shiftY","flipX","xSteps","ySteps","dimensions","existingSpacingX","desiredSpacingX","existingSpacingY","desiredSpacingY","screenDimensions","__extends$2B","__decorate$1x","__read$C","__spread$l","GroupedCategoryAxisLabel","GroupedCategoryAxis","tickScale","lineHeight","domains","isNumericX","domain_1","tickTree","tickScaleDomain","rangeStart","rangeEnd","rangeLength","bandwidth","isHorizontal","tickTreeLayout","treeLabels","isLabelTree","updateGridLines","enterGridLines","gridLineSelection","updateLabels","enterLabels","labelBBoxes","maxLeafLabelWidth","labelGrid","separatorData","minX","updateSeparators","enterSeparators","separatorSelection","lineCount","lines","updateAxisLines","enterAxisLines","axisLineSelection","styles_1","floor$k","offset$k","milliseconds","count$k","millisecond$1","epochYear","durationSecond$1","durationMinute$1","durationHour$1","durationDay$1","durationWeek$1","durationMonth$1","durationYear$1","floor$j","offset$j","seconds","count$j","second$1","floor$i","offset$i","minutes","count$i","field$g","minute$1","floor$h","offset$h","hours","count$h","field$f","hour$1","floor$g","offset$g","days","count$g","tzMinuteDelta","field$e","day$1","weekday$3","weeks","msDelta","sunday$1","monday$1","tuesday","wednesday","thursday$1","friday","saturday","floor$f","offset$f","months","count$f","field$d","yearsSinceEpoch","monthsSinceEpoch","month$1","floor$e","offset$e","years","count$e","field$c","year$1","floor$d","offset$d","count$d","field$b","utcDay$1","floor$c","offset$c","count$c","field$a","utcYear$1","weekday$2","utcSunday$1","utcMonday$1","utcThursday$1","localDate$1","utcDate$1","formatLookup$1","newYear$1","percentCharCode$1","numberRe$1","percentRe$1","requoteRe$1","requote$1","formatRe$1","pads$1","pad$1","formatLocale$2","timeLocale","lDateTime","lDate","lTime","lPeriods","lWeekdays","lShortWeekdays","lMonths","lShortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatShortWeekday","formatWeekday","formatShortMonth","formatMonth","formatDayOfMonth","formatMicroseconds","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatPeriod","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYear","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCShortWeekday","formatUTCWeekday","formatUTCShortMonth","formatUTCMonth","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCPeriod","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseShortWeekday","parseWeekday","parseShortMonth","parseMonth","parseLocaleDateTime","parseDayOfMonth","parseMicroseconds","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parsePeriod","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseLocaleDate","parseLocaleTime","parseYear","parseFullYear","parseZone","parseLiteralPercent","newParse","newDate","parseSpecifier","week","pad_1","code","char","parse","dayOfWeek","yearStart","z","locale$1","setDefaultLocale$1","__extends$2A","__values$p","__read$B","__spread$k","DefaultTimeFormats","formatStrings","TimeScale$1","TimeScale","defaultTimeFormat","updateFormat","extent","formatStringArray","timeEndIndex","formatString","interval","tickIntervals","t0","reverse","__extends$2z","__decorate$1w","TimeAxis","HdpiOffscreenCanvas","__assign$A","__awaiter$e","thisArg","_arguments","P","generator","adopt","resolve","reject","fulfilled","rejected","__generator$e","verb","op","__read$A","__spread$j","__values$o","Scene$1","Scene","mode","lessThanZero","layeredModes","advLayer","newLayer","domCanvases","newLayerIndex","lastLayer","newZIndex","newZIndexSubOrder","layers","layers_1","layers_1_1","debugSplitTimes","extraDebugStats","pendingSize","canvasCleared","dirtyTree","imageSource","enabled","opacity","renderCtxStats","pct","rendered","total","time_1","layersRendered","layersSkipped","nodesRendered","nodesSkipped","splits","extras","stats_1","stats_1_1","stat","childTree","treeNodeName","childrenDirtyTree","createDeprecationWarning","logged","msg","Deprecated","warn","DeprecatedAndRenamedTo","newPropName","warnDeprecated","warnRenamed","__extends$2y","__decorate$1v","__read$z","__spread$i","__values$n","SeriesNodePickMode","warnSeriesDeprecated","SeriesNodeClickEvent","nativeEvent","SeriesItemHighlightStyle","SeriesHighlightStyle","HighlightStyle","SeriesTooltip","Series","useSeriesGroupLayer","useLabelLayer","pickModes","_fills","_strokes","directionKeys","dimOpacity","defaultOpacity","defaultStrokeWidth","itemId","highlightedDatum","highlighting","limitPickModes","pickModes_1","pickModes_1_1","pickMode","_point","_requireCategoryAxis","_event","_datum","eventObject","_itemId","axis","__extends$2x","__decorate$1u","Padding$1","Padding","Gradient","__extends$2w","LinearGradient","stops","gradient_1","__extends$2v","__decorate$1t","RectSizing","Rect","gradient","borderPath","crisp","pixelSize","microPixelEffectOpacity","lx","ly","halfStrokeWidth","effectiveStrokeWidth","borderClipPath","borderActive","gradientFill","fillOpacity","gradientInstance","strokeOpacity","__extends$2u","__decorate$1s","Background","__extends$2t","__decorate$1r","__values$m","Marker$1","Marker","half","moves","moves_1","moves_1_1","mx","my","__extends$2s","Square$1","Square","hs","__extends$2r","MarkerLabel","marker","markerSize","__extends$2q","Circle$1","Circle","__extends$2p","Cross","__extends$2o","Diamond$1","Diamond","__extends$2n","Heart","degree","rad","__extends$2m","Plus","__extends$2l","Triangle","getMarker$1","__decorate$1q","__read$y","__spread$h","__values$l","LegendOrientation","LegendPosition","LegendLabel","LegendMarker","LegendItem","NO_OP_LISTENER","LegendListeners","Legend","characterWidths","cw","paddingX","paddingY","markerPadding","markerShape","maxLength","updateSelection","enterSelection","itemSelection","itemCount","ellipsis","itemMaxWidthPercentage","maxItemWidth","markerLabel","textChars","addEllipsis","labelWidth","truncatedText","cumCharSize","textChars_1","textChars_1_1","itemHeight","paddedItemsWidth","paddedItemsHeight","columnCount","itemsWidth","itemsHeight","columnCount_1","startX","startY","oldSize","__values$k","SizeMonitor","NativeResizeObserver","entries","entries_1","entries_1_1","entry","__awaiter$d","__generator$d","debouncedAnimationFrame","buildScheduler","debouncedCallback","scheduleFn","scheduleCount","promiseRunning","awaitingPromise","awaitingDone","busy","done","scheduleCb","maybePromise","__extends$2k","__decorate$1p","MARKER_SHAPES","MARKER_SHAPE","SeriesMarker","__assign$z","__read$x","__spread$g","__values$j","jsonDiff","sourceType","classify","targetType","targetElement","lhs","rhs","allProps","propsChangedCount","take","lhsType","rhsType","allProps_1","allProps_1_1","DELETE","NOT_SPECIFIED","jsonMerge","json","avoidDeepClone","jsonTypes","finalValue","nextProp","lastValue","props_1","props_1_1","jsonApply","matcherPath","skip","constructors","allowedTypes","_loop_3","propertyMatcherPath","propertyPath","targetAny","ctr","currentValueType","newValueType","allowableTypes","newValueArray","jsonWalk","visit","jsons","jsonType","_loop_4","otherValues","valueType","__extends$2j","__decorate$1o","__awaiter$c","__generator$c","__read$w","__spread$f","__values$i","CartesianSeriesNodeClickEvent","xKey","yKey","CartesianSeries","pickGroupIncludes","pathsPerSeries","features","pathsZIndexSubOrderOffset","renderLayerPerSubSeries","isContinuousX","isContinuousY","isValidDatum","xAxis","yAxis","seriesRect","seriesItemEnabled","seriesHighlighted","anySeriesItemEnabled","newNodeDataDependencies","seriesIdx","datumSelection","markerSelection","contextData","nodeData","contextNodeData","seriesGroup","subGroups","totalGroups","subGroupId","subGroupZOffset","markerGroup","labelGroup","pickGroup","pathParentGroup","datumParentGroup","paths_1","paths_1_1","highlightSelection","highlightLabelSelection","markersEnabled","subGroupVisible","subGroupOpacity","paths_2","paths_2_1","labelItem","itemId_1","contextNodeData_1","contextNodeData_1_1","ld","markerGroupIncluded","hitPoint","minDistance","closestDatum","contextNodeData_2","contextNodeData_2_1","_m","datumX","_o","datumY","isInRange","requireCategoryAxis","e_7","e_8","directions","primaryDirection","hitPointCoords","contextNodeData_3","contextNodeData_3_1","_p","_q","point_1","newMinDistance","e_8_1","e_7_1","e_9","e_9_1","CartesianSeriesMarker","sleep","sleepTimeoutMs","__decorate$1n","__values$h","DEFAULT_TOOLTIP_CLASS","defaultTooltipCss$1","toTooltipHtml$1","defaults","backgroundColor","titleHtml","Tooltip","canvasElement","tooltipRoot","observer","styleElement","constrained","newClass","lastClass","wasVisible","toggleClass","include","html","instantly","tooltipWidth","minLeft","maxLeft","__extends$2i","__assign$y","__decorate$1m","__awaiter$b","__generator$b","__values$g","__read$v","__spread$e","ChartUpdateType","Chart","error_1","background","caption","callbacks","forceNodeDataRefresh","seriesToUpdate","seriesToUpdate_1","seriesToUpdate_1_1","performUpdateType","count_1","seriesRect_1","seriesUpdates","before","allSeries","seriesRoot","canAdd","beforeIndex","after","afterIndex","seriesAxis","directionToAxesMap","directionAxes","currentAxis","seriesKeys","newAxis","directionAxes_1","directionAxes_1_1","axisKeys","directionKeys_1","directionKeys_1_1","directionKey","visibleSeries","legendData","formatter","subtitle","spacing","titleBBox","subtitleBBox","captionAutoPadding","legend","legendAutoPadding","legendGroup","legendSpacing","legendBBox","chartElement","tracking","reverseSeries","reverseSeries_1","reverseSeries_1_1","updateProcessing","lastPick","disablePointer","pick","seriesNodeClickEvent","legendItemClick","pointerInsideLegend","pointerOverLegendDatum","oldHighlightedDatum","id_1","tooltipEnabled","canvasRect","newPick","newSeries","lastSeries","updateAll","timeoutMs","__extends$2h","__assign$x","__decorate$1l","__values$f","ClipRect","_dirtyPath","__extends$2g","__decorate$1k","RangeHandle$1","RangeHandle","centerX","centerY","ax","ay","axw","ayh","__extends$2f","__decorate$1j","RangeMask","maxX","__extends$2e","__assign$w","RangeSelector","mask","minHandle","maxHandle","NavigatorMask","rangeMask","NavigatorHandle","rangeHandle","__decorate$1i","Navigator","chart","visibleRange","panHandleOffset","getRatio","__extends$2d","__assign$v","__awaiter$a","__generator$a","__values$e","__read$u","CartesianChart","navigator","shrinkRect","legendPadding","navigatorTotalHeight","touch","inputShrinkRect","axisWidths","liveAxisWidths","stableWidths","otherW","ceilValues","records","out","lastPass","clipSeries","lastPassSeriesRect","axes","visited","newAxisWidths","primaryTickCounts","crossLinePadding","axisBound","newClipSeries","axisThickness","axisOffset","dimension","clampBounds","fn","compareTo","addInterAxisPadding","axisLeftRightRange","axisPadding","__extends$2c","__awaiter$9","__generator$9","HierarchyChart","__extends$2b","GroupedCategoryChart","__extends$2a","PolarSeries","__extends$29","__awaiter$8","__generator$8","PolarChart","equal","__read$t","interpolatePattern","valueName","formatName","locales","__decorate$1h","Label$1","Label","sanitizeHtml","__extends$28","__decorate$1g","__awaiter$7","__generator$7","__values$d","__read$s","__spread$d","AreaSeriesLabel","AreaSeriesTooltip","AreaSeriesTag","AreaSeries","visibles","strokes","absValue","yKeys","normalizedTo","normalized","yData","xData","xValues","missingYKeys","data_1_1","missingYKeysString_1","yMin","yMax","yData_1","yData_1_1","seriesYs","normalizedTotal","yData_2","yData_2_1","normalizedY","domainWhitespaceAdjustment","xDatum","yDatum","contexts","seriesId","xScale","yScale","continuousY","xOffset","cumulativePathValues","cumulativeMarkerValues","createPathCoordinates","createMarkerCoordinate","prevY","currY","prevYCoordinate","currYCoordinate","rawYDatum","normalizedAndValid","labelSelectionData","markerSelectionData","strokeSelectionData","fillSelectionData","fillPoints","fillPhantomPoints","strokePoints","yValues","datumIdx","seriesDatum","nextXDatum","rawNextYDatum","nextYDatum","labelText","windowX","windowY","currCoordinates","nextCoordinates","points_1","points_1_1","moveTo_1","points_2","points_2_1","MarkerShape","updateMarkerSelection","enterMarkers","isDatumHighlighted","seriesFillOpacity","markerFillOpacity","deprecatedFill","deprecatedStroke","deprecatedStrokeWidth","highlightedFill","highlightFillOpacity","highlightedStroke","highlightedDatumStrokeWidth","markerStrokeWidth","yKeyIndex","labelEnabled","nodeDatum","xValue","yValue","xName","yNames","tooltip","markerFormatter","markerFill","markerStroke","xString","yString","processedYValue","yName","tooltipRenderer","tooltipFormat","__extends$27","__decorate$1f","__awaiter$6","__generator$6","__read$r","__spread$c","__values$c","BAR_LABEL_PLACEMENTS","OPT_BAR_LABEL_PLACEMENT","BarSeriesNodeTag","BarLabelPlacement","BarSeriesLabel","BarSeriesTooltip","flat","is2dArray$1","array","BarSeries","flatYKeys","prevYKeyCount_1","visibleStacks_1","stack","groupScale","flattenFn","visiblesIdx","map_1","setSmallestXInterval","keysFound","prevX","yMinMax","yAbsTotal","tallestStackMin","tallestStackMax","groups_1","groups_1_1","flipXY","xDomain","smallestInterval","domainLength","intervals","maxBands","bands","cumYKeyCount","labelFontStyle","labelFontWeight","labelFontSize","labelFontFamily","labelColor","labelPlacement","xBandWidth","barWidth","groupIndex","groupYs","stackIndex","stackYs","prevMinY","prevMaxY","levelIndex","barX","bottomY","labelY","colorIndex","updateRects","enterRects","visibleMin","visibleMax","isZoomed","yGroup","fillIndex","hideInLegend","startLevel","visibleStacks","__extends$26","__decorate$1e","__awaiter$5","__generator$5","__values$b","__read$q","LineSeriesLabel","LineSeriesTooltip","LineSeries","pointsData","markerEnabled","yOffset","moveTo","prevXInRange","nextPoint","actualLength","xInRange","nextXInRange","linePath","nodeData_1","nodeData_1_1","enterDatumSelection","lineStroke","updateTextSelection","enterTextSelection","__extends$25","__assign$u","__decorate$1d","__awaiter$4","__generator$4","ScatterSeriesNodeClickEvent","sizeKey","ScatterSeriesTooltip","ScatterSeries","labelKey","validData","sizeData","sizeScale","updateMarkers","seriesStrokeOpacity","seriesFill","seriesStroke","markerStrokeOpacity","placedLabels","placedNodeDatum","sizeName","labelName","__extends$24","__decorate$1c","__awaiter$3","__generator$3","__read$p","__spread$b","HISTOGRAM_AGGREGATIONS","HISTOGRAM_AGGREGATION","HistogramSeriesNodeTag","HistogramSeriesLabel","defaultBinCount","aggregationFunctions","bin","HistogramBin","domainMin","domainMax","aggregationName","aggregationFunction","areaPlot","HistogramSeriesTooltip","HistogramSeries","bins","binStarts","binSize_1","firstBinEnd","expandStartToBin","binCount","binSize","derivedBins","sortedData","currentBin","firstBin","lastBin","xMin","xMax","defaultLabelFormatter","binOfData","frequency","xDomainMin","xDomainMax","relativeHeight","xMinPx","xMaxPx","yZeroPx","yMaxPx","selectionDatumLabel","updateTexts","enterTexts","aggregation","aggregatedValue","rangeMin","rangeMax","__extends$23","HierarchySeries","__extends$22","__decorate$1b","DropShadow","slice","dice","roundNode","squarifyRatio","nodeValue","sumValue","minValue","maxValue","newRatio","minRatio","beta","oldy0","newy1","oldx0","newx1","squarify","custom","Treemap","__values$a","__read$o","__spread$a","HierarchyNode","compare","leastCommonAncestor","leaves","links","hierarchy","mapChildren","objectChildren","datumChildren","newNodes","dc","computeHeight","aNodes","bNodes","__extends$21","__decorate$1a","__awaiter$2","__generator$2","__values$9","TreemapSeriesTooltip","TreemapSeriesNodeClickEvent","colorKey","TreemapSeriesLabel","TextNodeTag","TreemapSeries","nodePadding","textSize","innerNodeWidth","hasTitle","traverse","colorValue","colorParents","colorScale","colorDomain","colorRange","dataRoot","descendants","groupSelection","selection","highlightedFillOpacity","labelMeta","updateRectFn","updateNodeFn","updateValueFn","pLeft","pRight","pTop","pBottom","highlighted","valueText","isLeaf","innerNodeHeight","nodeBBox","hasNode","valueBBox","hasValue","nodeBaseline","_direction","colorName","rootName","__extends$20","__decorate$19","Sector","angleOffset","startAngle","endAngle","midAngle","innerRadius","outerRadius","centerOffset","fullPie","__extends$1$","__assign$t","__decorate$18","__awaiter$1","__generator$1","__read$n","__spread$9","PieSeriesNodeClickEvent","angleKey","calloutLabelKey","sectorLabelKey","radiusKey","PieHighlightStyle","PieNodeTag","PieSeriesCalloutLabel","PieSeriesSectorLabel","PieSeriesCalloutLine","PieSeriesTooltip","PieTitle","DoughnutInnerLabel","DoughnutInnerCircle","isPointInArc","sector","angle","PieSeries","pieLabels","pieSectorLabels","innerLabels","oldCircleCfg","oldNode","circle","angleScale","groupSelectionData","sectorFormatData","calloutLabel","sectorLabel","angleData","angleDataTotal","angleDataRatios","sectorLabelData","radiusData","getLabelFormatterParams","showValueDeprecationWarning_1","sectorLabelFormatter","radiusMin","radiusMax","radii","min_1","delta_1","halfPi","datumIndex","quadrantTextOpts","deprecatedValue","formatterParams","midCos","midSin","labelMinAngle","labelVisible","midAngle180","quadrantStart","quadrantOffset","quadrant","quadrantIndex","highlight","highlightedStyle","innerRadiusRatio","innerRadiusOffset","outerRadiusRatio","outerRadiusOffset","outerRadius_1","titleOffset","calloutSelection","sectorLabelSelection","innerLabelsSelection","updateSectorLabels","enterSectorLabels","updateInnerLabels","enterInnerLabels","isVisible","radiusScale","calloutLine","centerOffsets","updateSectorFn","calloutColors","calloutLength","calloutStrokeWidth","offset_1","fontStyle_1","fontWeight_1","fontSize_1","fontFamily_1","color_1","sectorParent","sectorGrandParent","labelRadius","positionOffset","positionRatio","isDoughnut","singleVisibleSector","isTextVisible","shouldPutTextInCenter","corners","sectorBounds_1","circleRadius","antiAliasingPadding","textBBoxes","getMarginTop","getMarginBottom","labelsVisible","textBottoms","angleName","radiusName","calloutLabelName","sectorLabelName","angleValue","formattedAngleValue","legendData_1","titleText_1","labelParts","floor$b","offset$b","count$b","field$9","utcMinute","floor$a","offset$a","count$a","field$8","utcHour","floor$9","offset$9","count$9","field$7","utcMonth","__assign$s","__read$m","palette$8","arrayMerge","_target","_options","isMergeableObject","mergeOptions","BOLD","INSIDE","RIGHT","ChartTheme","palette","common","cartesian","polar","applyOverrides","seriesTypes","overrideOpts","seriesOverridesMap_1","chartConfig","seriesDefaults","typeToAliases","aliases","alias","parentDefaults","__extends$1_","__assign$r","DarkTheme","fontColor","mutedFontColor","axisDefaults","seriesLabelDefaults","chartAxesDefaults","chartDefaults","__extends$1Z","palette$7","MaterialLight","__extends$1Y","palette$6","MaterialDark","__extends$1X","palette$5","PastelLight","__extends$1W","palette$4","PastelDark","__extends$1V","palette$3","SolarLight","__extends$1U","palette$2","SolarDark","__extends$1T","palette$1","VividLight","__extends$1S","VividDark","__assign$q","lightTheme","darkTheme","lightThemes","darkThemes","themes","getChartTheme","stockTheme","baseTheme","getIntegratedChartTheme","theme","themeConfig","chartType","__extends$1R","__decorate$17","__read$l","identity$3","LogScale","df","dl","base","baseLog","basePow","logBase","isReversed","p0","p1","__extends$1Q","LogAxis","DEFAULT_CARTESIAN_CHART_OVERRIDES","DEFAULT_BAR_CHART_OVERRIDES","DEFAULT_SCATTER_HISTOGRAM_CHART_OVERRIDES","__assign$p","transforms","is2dArray","yNamesMapping","src","yKeysMapping","labelMapping","placement","barSeriesTransform","identityTransform","SERIES_TRANSFORMS","applySeriesTransform","__assign$o","__values$8","__read$k","__spread$8","groupSeriesByType","seriesOptions","indexMap","seriesOptions_1","seriesOptions_1_1","groupingKey","indexKey","FAIL","SKIP","ARRAY_REDUCER","BOOLEAN_OR_REDUCER","DEFAULTING_ARRAY_REDUCER","sparse","nextValue","YKEYS_REDUCER","activationValue","REDUCE_CONFIG","reduceSeries","reducerConfig","defaultReduce","outputProp","reducer","processSeriesOptions","preprocessed","__assign$n","__values$7","__read$j","__spread$7","optionsType","isAgCartesianChartOptions","specifiedType","isAgHierarchyChartOptions","isAgPolarChartOptions","isSeriesOptionType","countArrayElements","input_1","input_1_1","takeColours","colours","maxCount","noDataCloneMergeOptions","prepareOptions","newOptions","fallbackOptions","sanityCheckOptions","userSuppliedOptionsType","defaultSeriesType","defaultOverrides","prepareMainOptions","mergedOptions","axesThemes","seriesThemes","mergedSeries","preparePieOptions","prepareSeries","axesTheme","prepareAxis","prepareEnabledOptions","prepareTheme","cleanedTheme","paletteOptions","calculateSeriesPalette","removeOptions","mergedResult","inputAny","colourCount","axisTheme","crossLinesTheme_1","cleanTheme","userOpts","mergedOpts","pieSeriesTheme","horizontalCrosslineTranslationDirections","verticalCrossLineTranslationDirections","calculateLabelTranslation","yDirection","crossLineTranslationDirections","xTranslationDirection","yTranslationDirection","xTranslation","yTranslation","POSITION_TOP_COORDINATES","xEnd","yStart","yEnd","POSITION_LEFT_COORDINATES","xStart","POSITION_RIGHT_COORDINATES","POSITION_BOTTOM_COORDINATES","POSITION_INSIDE_COORDINATES","POSITION_TOP_LEFT_COORDINATES","POSITION_BOTTOM_LEFT_COORDINATES","POSITION_TOP_RIGHT_COORDINATES","POSITION_BOTTOM_RIGHT_COORDINATES","labeldDirectionHandling","__extends$1P","__assign$m","__decorate$16","Range","isRange","fillActive","startLine","endLine","strokeActive","__decorate$15","__read$i","CROSSLINE_LABEL_POSITIONS","OPT_CROSSLINE_LABEL_POSITION","OPT_CROSSLINE_TYPE","CrossLineLabel","CrossLine","crossLineRange","crossLineLabel","dataCreated","clippedRange","isContinuous","clippedRangeClamper","clampedYStart","clampedYEnd","validRange","parallel","crossLineLabelBBox","labelHeight","paddingRight","paddingLeft","paddingbottom","__assign$l","__awaiter","__generator","__read$h","__spread$6","__values$6","AgChart","optionsWithType","createSeries","_container","_data","AgChartV2","userOptions","debug","mixinOpts","deltaOptions","currentWidth","currentHeight","clonedChart","applyChartOptions","optionalParams","applyOptionValues","applySeries","axesPresent","applyAxes","seriesOpts","seriesDataUpdate","otherRefreshUpdate","registerListeners","updateType","optSeries","matchingTypes","previousOpts","seriesDiff","applySeriesValues","optAxes","oldOpts_1","axisDiff","createAxis","axisOptions","JSON_APPLY_OPTIONS","applyOpts","ctrs","seriesTypeOverrides","time","getSeriesType","__extends$1O","__decorate$14","ChartController","model","fields","modelType","seriesChartTypes","chartThemeName","themeNames","themeName","silent","chartProxy","updateChartType","prevSeriesChartType","selectedColIds","supportedComboSeriesTypes","firstCellRange","chartId","__extends$1N","__decorate$13","__read$g","__spread$5","__values$5","ChartDataPanel","chartController","chartOptionsService","currentChartType","groupExpandedState","getSeriesLabel_1","component","eDiv","columnState","AgAbstractField","inputName","AgRadioButton","pairedModeToggle","AgToggleButton","getSeriesLabel","seriesItemGroup","secondaryAxisComp","defaultText","availableChartTypes","chartTypeComp","AgSelect","eDragHandle","isBubble","isInPairedMode","selectedValuesCount","indexToAxisLabel","escapedLabel","axisLabel","itemHovered","lastHoveredComp","lastHoveredPosition","isOverComp","draggedColumnState","__extends$1M","__decorate$12","FontPanel","initialValue","lowerCaseValues","valueIndex","capitalisedFontValue","sizes","weightStyles","selectedOption","selectedWeightStyle","newColor","__extends$1L","__decorate$11","LegendPanel","isExpandedOnInit","getMaxValue","initSlider","expression","defaultMaxValue","initialFont","setFont","proxy","fontPanelComp","__extends$1K","__decorate$10","AxisTicksPanel","initInput","__extends$1J","__decorate$$","AxisPanel","updateAxisLabelRotations","axisTicksComp","labelPanelComp","xRotationComp","yRotationComp","autoRotateCb","getLabelRotation","axisType","setLabelRotation","updateAutoRotate","autoRotate","getAutoRotateValue","xRotation","yRotation","autoRotateCheckbox","degreesSymbol","createRotationComp","angleSelect","AgAngleSelect","labelPaddingSlider","AgSlider","__extends$1I","__decorate$_","NavigatorPanel","chartTranslationService","__extends$1H","__decorate$Z","PaddingPanel","__extends$1G","__decorate$Y","BackgroundPanel","__extends$1F","__decorate$X","TitlePanel","fontPanelParams","currentTitleText","__extends$1E","__decorate$W","ChartPanel","titlePanelComp","paddingPanelComp","backgroundPanelComp","__extends$1D","__decorate$V","ShadowPanel","getSelectedSeries","initFontPanelParams","getFontOptionExpression","fontOption","labelProperty","getFontOption","setFontOption","__extends$1C","__decorate$U","MarkersPanel","seriesMarkerShapeOptions","shouldHideEnabledCheckbox","__extends$1B","__decorate$T","CalloutPanel","__extends$1A","__decorate$S","SeriesPanel","seriesSelect","seriesTooltipsToggle","seriesStrokeWidthSlider","seriesLineWidthSlider","seriesLineDashSlider","seriesLineOpacitySlider","seriesFillOpacitySlider","calloutPanelComp","shadowPanelComp","markersPanelComp","seriesBinCountSlider","widget","ct","seriesSelectOptions","activeChartTypes","invalidSeriesType","__extends$1z","__decorate$R","DefaultFormatPanelDef","FormatPanel","commonGroupPanels","cartesianOnlyGroupPanels","cartesianSeries","isGrouping","userProvidedFormatPanelDef","__extends$1y","__decorate$Q","MiniChart","tooltipName","__extends$1x","__decorate$P","MiniChartWithAxes","leftAxis","bottomAxis","createColumnRects","stacked","xScalePadding","xScaleDomain","yScaleDomain","createBars","createLinePaths","clipRect","__extends$1w","MiniColumn","columnData","__extends$1v","MiniStackedColumn","__extends$1u","MiniNormalizedColumn","__extends$1t","MiniBar","bar","__extends$1s","MiniStackedBar","__extends$1r","MiniNormalizedBar","__extends$1q","__read$f","MiniDoughnut","centerRadiusScaler","center","angles","__extends$1p","MiniPie","__extends$1o","MiniLine","__extends$1n","__read$e","MiniScatter","__extends$1m","__read$d","MiniBubble","__extends$1l","MiniArea","xCount","pathData","area","__extends$1k","MiniStackedArea","__extends$1j","MiniNormalizedArea","__extends$1i","__read$c","MiniHistogram","__extends$1h","MiniColumnLineCombo","lineData","__extends$1g","MiniAreaColumnCombo","areaData","yZero","firstX","__extends$1f","MiniCustomCombo","axisStroke","axisOvershoot","penIcon","__extends$1e","__assign$k","__decorate$O","miniChartMapping","MiniChartsContainer","chartGroups","DEFAULT_CHART_GROUPS","chartGroupValues","groupComponent","MiniClass","miniWrapper","miniClassChartType","selectedChartType","miniChartType","miniChart","__extends$1d","__decorate$N","ChartSettingsPanel","currentPallet","pallet","currentChart","forceReset","palettes","isActivePalette","miniChartsContainer","link","animationDirection","currentPalette","currentGui","futurePalette","nextGui","multiplier","final","animatingClass","__extends$1c","__decorate$M","TabbedChartMenu","controller","panels","panelType","tab","TabbedLayout","TabPanelClass","eWrapperDiv","titleEl","translatedTitle","AgPromise","scrollableContainer","tabItem","__extends$1b","__decorate$L","__read$b","__spread$4","ChartMenu","eChartContainer","eMenuPanelContainer","showDefaultToolPanel","useChartToolPanelCustomisation","defaultChartToolbarOptions","toolbarItemsFunc","chartToolbarOptions","option","CHART_TOOLBAR_ALLOW_LIST","CHART_TOOL_PANEL_ALLOW_LIST","panelsOverride","menuOption","CHART_TOOL_PANEL_MENU_OPTIONS","defaultToolPanel","tabOptions","ignoreOptions_1","active","tooltipKey","tooltipTitle","menuEl","buttonConfig","buttonEl","defaultTab","menuPanel","AgPanel","animate","__extends$1a","__assign$j","__decorate$K","TitleEdit","chartMenu","destroyDbleClickListener","wasInTitle","destroyMouseMoveListener","inTitle","minimumTargetInputWidth","maximumInputWidth","inputWidth","inputElement","inputStyle","isTitlePlaceholder","inputRect","emptyTarget","cloneUnlessOtherwiseSpecified","deepMerge","defaultArrayMerge","getMergeFunction","getEnumerableOwnPropertySymbols","getKeys","propertyIsOnObject","propertyIsUnsafe","mergeObject","defaultIsMergeableObject","isNonNullObject","isSpecial","__assign$i","ChartProxy","chartProxyParams","themeOverrides","resetFilters_1","gridOptionsThemeOverrides","apiThemeOverrides","themeOverrides_1","getCustomTheme","availableThemes","customChartThemes","customChartTheme","imageFileName","categoryKey","categoryAxis","getChartOption","propertyKey","isComboChart","overrideObjs","overrideObj","chartOverrides","__extends$19","__assign$h","CartesianChartProxy","isCategoryAxis","seriesOverrides","chartSeriesType","newXAxisType","testDatum","getYKey","lastSelectedChartId","multiSelection","category","pointSelected","hexToRGBA","changeOpacity","__extends$18","__assign$g","BarChartProxy","isBar","numberAxis","groupedCharts","isGrouped","updatePrimarySeries","updateFilteredOutSeries","primarySeries","normalisedCharts","__extends$17","__assign$f","AreaChartProxy","__extends$16","__assign$e","LineChartProxy","__extends$15","__assign$d","PieChartProxy","numFields","primaryOptions","filteredOutOptions","primaryOpts","totalValue","__extends$14","__assign$c","__values$4","__read$a","__spread$3","ScatterChartProxy","paired","seriesDefinitions","labelFieldDefinition","seriesDefinition","filteredOutKey","calcMarkerDomain","markerDomain","filterableEvent","updatedSeries","isBubbleChart","currentXField","xField","yField","__extends$13","__assign$b","HistogramChartProxy","firstField","__extends$12","__decorate$J","ChartOptionsService","chartSeriesTypes","chartAxis","chartUpdateParams","chartModel","__extends$11","__assign$a","ComboChartProxy","fieldsMap","primaryYKeys","secondaryYKeys","bottomOptions","leftOptions","rightOptions","secondaryYKey","secondaryAxisIsVisible","secondaryAxisOptions","primaryYAxis","primaryYKey","lastSecondaryAxis","__extends$10","__decorate$I","GridChartComp","availableChartThemes","modelParams","suppliedThemes","customThemeName","crossFilterCallback","reset","toTranslate","AgDialog","popupParent","maxHeight","chartEmpty","pivotModeDisabled","minFieldsRequired","isEmptyChart","isEmpty","focusEvent","ALL_AXIS_TYPES","getLegacyAxisType","__assign$9","__rest","__read$9","__values$3","CURRENT_VERSION","upgradeChartModel","heuristicVersionDetection","migrateIfBefore","migrateV23","migrateV24","migrateV25_1","migrateV26","migrateV26_1","migrateV26_2","migrateV28","migrateV28_2","cleanup","jsonRename","jsonDelete","chartPalette","chartOptions","axesTypes","LEGACY_PALETTES","highlightOptUpdate","jsonMutate","jsonDeleteDefault","jsonMove","otherChartOptions","otherModelProps","chartTypeMixin","minimalAxis_1","updatedAxes_1","axisProps","updatedChartOptions","jsonBackfill","modelAny","hasKey","hints","defaultVersion","matchingHints","heuristicVersion","maxVersion","migration","versionNumber","versionParts","split","major","minor","patch","jsonMutateProperty","from","to","valueToMove","valueFound","renameTo","skipMissing","mutator","pathElements","parentPathElements","targetName","hasProperty","pathOptions","pathOptions_1","pathOptions_1_1","pathOption","arrayName","jsonProp","__extends$$","__assign$8","__decorate$H","ChartService","models","versionedModel","chartRef","cr","url","chartComp","selectedRange","chartContainer","getCellRange","cellRangeParams","chartAllRangeParams","cellRange_1","cellRange","crossFiltering","suppressChartRangesSupplied","suppressChartRanges","pivotChart","chartThemeOverrides","unlinkChart","chartOptionsToRestore","chartPaletteToRestore","createChartContainerFunc","__extends$_","__decorate$G","ChartTranslationService","ChartTranslationService_1","defaultTranslation","__extends$Z","__decorate$F","ChartCrossFilterService","ChartCrossFilterService_1","filterModel","filtersExist","dataKey","rawValue","existingGridValues","valueAlreadyExists","updatedValues","columnFilterType","filteredValues","filterType","gridColumn","__extends$Y","__assign$7","__decorate$E","__read$8","__spread$2","__values$2","RangeService","gridBodyCtrl","beforeCols","colsInRangeChanged","countBefore","lastRange","rangeColumns","allPositions","rowPinned","pinnedBottomRowCount","pinnedBottom","appendRange","suppressMultiRangeSelections","rowForCell","cellPosition","endColumn","colsToAdd","startColumn","moveColInCellRange","colToMove","moveToFront","otherCols","shouldMoveLeftCol","shouldMoveRightCol","allIndices","ctrlKey","startCell","firstCol","endCellIndex","endCellFloating","endCellColumn","endCell","newEndCell","newRange","startsOnTheRight","columnStart","columnEnd","rowToColumnMap","rowName","currentRangeColIds","filteredColumns","columnsString","currentValString","topRow","bottomRow","columnInRange","rowInRange","rangeFirstIndexColumn","rangeLastIndexColumn","lastRangeColumn","isLastColumn","isRightColumn","floating","firstRow","thisRow","equalsFirstRow","equalsLastRow","afterFirstRow","beforeLastRow","metaKey","shiftKey","multiKeyPressed","allowMulti","multiSelectKeyPressed","extendRange","mouseRowPosition","fromMouseClick","intersectionStartRow","intersectionEndRow","newRanges","intersectCols","rangeCountBefore","top_1","middle","isMouseAndStartInPinned","skipVerticalScroll","started","finished","columnFrom","columnTo","isSameColumn","fromIndex","toIndex","firstIndex","lastIndex","__extends$X","__decorate$D","AbstractSelectionHandle","cellComp","SelectionHandleType","cellCtrl","oldCellComp","eParentOfValue","__extends$W","__assign$6","__decorate$C","__read$7","__spread$1","FillHandle","newX","newY","diffX","diffY","allowedDirection","lastCellHovered","isX","initialRange","colLen","rangeStartRow","rangeEndRow","finalRange","fillStartEvent","fillEndEvent","initialRangeEndRow","initialRangeStartRow","finalRangeEndRow","finalRangeStartRow","withinInitialRange","initialValues","resetValues","iterateAcrossCells","fillValues","currentValues","updateInitialSet","skipValue","fromUserFunction","userFillOperation","userResult","processedValues","allNumbers","asFloat","initialPosition","currentPosition","initialColumn","displayedColumns","initialIndex","endPosition","isMovingUp","navigationService","rowPos","cellPos","cellInRange","isInitialRow","celPos","isMovingLeft","startCol","endCol","colsToMark","isColumnRange","__extends$V","__assign$5","rowChanged","__extends$U","__decorate$B","SelectionHandleFactory","RangeSelectionModule","GridChartsModule","agCharts","__extends$T","__assign$4","__decorate$A","DetailCellRendererCtrl","doNothingBecauseInsidePinnedSection","eventRow","isSameRow","autoHeight","parentClass","detailClass","providedStrategy","validSelection","gridOptions","rowId","masterGridApi","gridInfo","versionThisCall","successCallback","rowData","mostRecentCall","funcParams","GET_GRID_TO_REFRESH","GET_GRID_TO_DO_NOTHING","doNotRefresh","__extends$S","__decorate$z","DetailCellRenderer","compProxy","cssClassName","on","setDefaultTemplate","templateFunc","agGridReact","agGridReactCloned","frameworkComponentWrapper","frameworkOverrides","Grid","MasterDetailModule","__extends$R","__decorate$y","EnterpriseMenuFactory","menu","eventSource","containerType","restrictToTabs","alignSide","positionCallback","EnterpriseMenu","eMenuGui","currentHeaderPosition","currentColumnIndex","anchorToElement","closedFuncs","isKeyboardEvent","focusableEl","columnToFocus","stopAnchoringPromise","stopAnchoringFunc","initialSelection","restrictTo","tabs","tabName","menuTabName","isValid","itemsToConsider","toShow","ev","defaultMenuOptions","allowPinning","rowGroupCount","doingGrouping","groupedByThisColumn","allowValue","allowRowGroup","isPrimary","pivotModeOn","isInMemoryRowModel","allowValueAgg","allowExpandAndContract","menuItems","keyboardEvent","filterWrapper","afterFilterAttachedCallback","columnsMenuParams","columnSelectPanelGui","__extends$Q","__decorate$x","CSS_MENU","CSS_CONTEXT_MENU_OPEN","ContextMenuFactory","csvModuleMissing","excelModuleMissing","suppressExcel","suppressCsv","onIPad","anyExport","touchEvent","eventOrTouch","which","eGridBodyGui","ContextMenu","positionParams","currentFocusedCell","doc","__extends$P","__decorate$w","MenuItemMapper","originalList","resultList","menuItemOrString","resultDef","subMenu","skipHeaderOnAutoSize","exportSubMenuItems","csvModuleLoaded","excelModuleLoaded","chartMenuItem","pivotChartMenuItem","localeKey","rangeChartMenuItem","columnToUse","columnIsAlreadyAggValue_1","funcNames","funcName","MenuModule","__extends$O","__assign$3","__decorate$v","MultiFilter","filters","filterChangedCallback","filterPromises","filterDef","filterTitle","filterGui","menuItem","filterWithoutType","params_1","filterToSkip","rowPasses","providedFilter","setFilterModel","promise","promises","ProvidedFilter","suppressFocus","activeEl","filterModifiedCallback","doesRowPassOtherFilter","filterInstance","filterParams","additionalEventAttributes","changedFilter","__extends$N","__assign$2","__decorate$u","MultiFloatingFilterComp","floatingFilterPromises","floatingFilterParams","floatingFilterPromise","floatingFilters","floatingFilter","gui","lastActiveFloatingFilterIndex_1","shouldShow","defaultComponentName","MultiFilterModule","__extends$M","__decorate$t","RichSelectRow","valueFormatted","rendererSuccessful","valueFormattedExits","valueToRender","cellRendererPromise","childComponent","__extends$L","__decorate$s","RichSelectCellEditor","debounceDelay","oldIndex","valueToSelect","keyString","searchStrings","keyParams","topSuggestion","topSuggestionIndex","topValue","eValue","renderer","cmp","mouseY","selectedIndex","indexToSelect","PopupComponent","RichSelectModule","__extends$K","__decorate$r","ServerSideRowModel","datasource","resetListener","message_1","message_2","rowGroupColumnVos","valueColumnVos","pivotColumnVos","sortModelDifferent","rowGroupDifferent","pivotDifferent","valuesDifferent","resetRequired","newSortModel","rootStore","rowDataChangedEvent","dynamicRowHeight","modelUpdatedEvent","newFilterModel","topLevelIndex","pixel","route","storeToExecuteOn","store","firstInRange","lastInRange","foundRowNode","__extends$J","__decorate$q","StoreUtils","storeParams","parentBlock","groupKeys","request","getRowsParams","currentCache","findNodeFunc","nextKey","keyListForNextLevel","nextStore","rowGroupCols","leafNodes","colIdThisGroup","actionOnThisGroup","affectedGroupCols","__extends$I","__decorate$p","BlockUtils","preserveStore","isGroupFunc","getKeyFunc","isMasterFunc","defaultId","cachedRowHeight","getChildCount","groupValue","hasChildStore","childStore","hasDetailNode","displayIndexSeq","nextRowTop","hasDetailRow","displayRowIndex","bottomPointer","topPointer","midPointer","currentRowNode","expandedMasterRow","detailNode","extractRowBounds","userFuncRes","__decorate$o","NodeManager","__extends$H","__decorate$n","TransactionManager","transaction","waitMillis","resultFuncs","resultsForEvent","transactionsToRetry","atLeastOneTransactionApplied","txWrapper","ServerSideTransactionResultStatus","retryTransaction","__extends$G","__decorate$m","ExpandListener","storeUpdatedEvent","masterNode","defaultDetailRowHeight","__extends$F","__decorate$l","SortListener","sortModel","multiColumnPrefix","autoGroupSortModel","sm","autoGroupIndex","isNotInSortModel","mapColumnToSortModel","newModels","oldSortModel","changedColumns","valueColChanged","secondaryColChanged","allColsInBothSorts","ids","differentSorts","oldSortItem","newSortItem","oldSort","newSort","differentIndexes","__extends$E","__decorate$k","FilterListener","newModel","oldModel","allColKeysMap","oldJson","newJson","filterChanged","__extends$D","__decorate$j","__param$1","paramIndex","decorator","__values$1","InfiniteStoreBlock","blockNumber","ssrmParams","parentStore","groupColVo","displayIndex","openNodeCount","sequence","includeChildren","filterAndSort","RowNodeBlock","failedLoad","storeRowCount","rowsToCreate","showingAutoHeightCols","cachedBlockHeight","dataLoadedForThisRow","getNodeWithData","getRowIdFunc","parentKeys","cachedRow","stubRowNode","isStoreCachingNode","loggerFactory","Qualifier","__extends$C","__decorate$i","__param","FindResult","InfiniteStore","isRootStore","initialRowCount","block","info","finalRowCount","blockToExclude","blocksForPurging","lastAccessedComparator","maxBlocksProvided","blocksToKeep","emptyBlocksToKeep","purgeBecauseBlockEmpty","purgeBecauseCacheFull","blockIndexStart","blockIndexEnd","hasFocus","startIndex","endIndex","lastRowIndex","lastRowIndexPlusOverflow","blockComparator","blocks","blocksToDestroy","purge","noBlocksToRefresh","rowCache","lastBlockId","inActiveRange","foundGapInSelection","hitFirstOrLast","invalidRange","matchBlockFunc","blockFoundFunc","blockNotFoundFunc","blockFound","breakSearch","lastBlock","comparatorResult","foundBlock","previousBlock","nextRowIndex","rowsBetween","blockSize","defaultBlockHeight","nextBlockId","getBlockDetails","blockHeight","pixelInBlock","blockDetails","pixelsBetween","lastAllowedIndex","currentBlock","blockId","blocksSkippedCount","rowsSkippedCount","blockToAddId","lastVisitedRow","rowsNotAccountedFor","dontCreateBlock","displayIndexStart","localIndex","newBlock","lastRowTopLevelIndex","lastRowNode","lastDisplayedNodeIndexInBlockBefore","serverSideCache","indexDiff","findNodeCallback","serverFiltersAllLevels","serverSortsAllLevels","innerCallback","nextCache","__extends$B","__decorate$h","FullStore","userInitialRowCount","loadingRowsCount","loadingRowNode","nodesToRecycle","lookupNodeToRecycle","foundNode","recycleNode","dataItem","nodeToRecycle","serverIsSorting","noSortApplied","serverIsFiltering","groupLevel","visibleNodeIds","childCache","pixelBeforeThisStore","firstNode","pixelAfterThisStore","lastRowNodeBottomPx","res2","pixelIsPastLastRow","storeIsImpacted","serverIsFilteringAllLevels","serverIsSortingAllLevels","applyCallback","apply","nodesToUnselect","selectionChanged","rowDataTran","rowNodeTransaction","add","addIndex","useIndex","newRowNode","remove","rowIdsRemoved","loadingRowsToShow","__decorate$g","StoreFactory","CacheClass","userStoreParams","infiniteScroll","cacheBlockSize","maxBlocksInCache","maxBlocksActive","__decorate$f","ListenerUtils","changedColumnsInSort","valueColIds","secondaryColIds","ServerSideRowModelModule","NULL_SUBSTITUTE$1","ClientSideValuesExtractor","rowModel","caseFormat","keyCreator","addValue","valueKey","formatted","SetFilterModelValuesType","NULL_SUBSTITUTE","SetValueModel","setIsLoading","valueFormatterService","textFormatter","suppressSorting","TextFilter","async","currentModel","valuesToUse","sortedValues","callback_1","allValues","availableValues","removeUnavailableValues","formattedFilterText","matchesFilter","valueToCheck","textFormatterValue","valueFormatterValue","clearExistingSelection","allValues_1","allValue","stringifiedResults","__extends$A","__decorate$e","SetFilterListItem","isSelected","parsedValue","formattedValue","tooltipValue","DEFAULT_LOCALE_TEXT","__extends$z","__decorate$d","SetFilter","currentItem","excelMode","loading","isLoading","filterListName","eSetFilterList","cellHeight","ModelWrapper","ModelWrapperWithSelectAll","listItem","eMiniFilter","resizableObject","appliedModel","valueGetter","valuesType","applyMiniFilterWhileTyping","hideResults","applyImmediately","newMiniFilter","valueToFormat","isSelectAllSelected","__extends$y","__decorate$c","SetFloatingFilterComp","parentModel","setFilter","setValueModel","valueModel","formattedValues","arrayToDisplay","valuesString","SetFilterModule","__extends$x","__decorate$b","StatusBarService","__extends$w","__decorate$a","StatusBar","leftStatusPanelComponents","componentConfig","centerStatusPanelComponents","rightStatusPanelComponents","statusBarComponents","ePanelComponent","componentDetails","componentDetail","destroyFunc","__extends$v","__decorate$9","NameValueComp","__extends$u","__decorate$8","TotalAndFilteredRowsComp","thousandSeparator","decimalSeparator","totalRowCount","localeTextFunc_1","filteredRowCount","__extends$t","__decorate$7","FilteredRowsComp","totalRowCountValue","filteredRowCountValue","__extends$s","__decorate$6","TotalRowsComp","__extends$r","__decorate$5","SelectedRowsComp","selectedRowCount","eventListener","rowModelType","__extends$q","__decorate$4","AggregationComp","statusBarValueComponent","refComponentName","aggregationPanelConfig","numberCount","cellsSoFar","finishedAllRows","gotResult","gotNumberResult","StatusBarModule","__extends$p","__decorate$3","ViewportRowModel","startPixel","endPixel","startLimitIndex","endLimitIndex","firstRenderedRow","bufferSize","afterBuffer","lastRenderedRow","newFirst","newLast","indexStr","viewportDatasource","firstNodeOutOfRange","lastNodeOutOfRange","callbackCount","keepRenderedRows","ViewportRowModelModule","__read$6","m11","m12","m21","m22","m31","m32","o11","o12","o21","o22","o31","o32","createId","__read$5","__extends$o","chainObjects","__extends$n","identical","strokeShadow","linearRoot","quadraticRoots","cubicRoots","segmentIntersection","cubicSegmentIntersections","bezierCoefficients","strParams","lastCommand","checkQuadraticCP","checkCubicCP","__extends$m","__extends$l","__read$4","creator","__read$3","__spread","__assign$1","reactive","events","privateKeyEvents","events_1","defaultTooltipCss","isNumber","isNumberObject","isNumeric","isDate","isString","isStringObject","constant$1","interpolateNumber","interpolateValue","__read$2","__read$1","constant","identity$2","__extends$k","tickStep","e10","e5","e2","tickIncrement","formatDefault","formatTypes","formatDecimal","formatRounded","formatPrefixAuto","prefixes","formatRegEx","interpolateRegEx","makeFormatSpecifier","tickFormat","precisionPrefix","precisionRound","precisionFixed","prefixExponent","formatDecimalParts","formatGroup","formatNumerals","formatTrim","identity$1","formatDefaultLocale","defaultLocale","formatLocale$1","__extends$j","__extends$i","floor$8","offset$8","count$8","millisecond","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","floor$7","offset$7","count$7","floor$6","offset$6","count$6","field$6","minute","floor$5","offset$5","count$5","field$5","hour","floor$4","offset$4","count$4","field$4","weekday$1","sunday","monday","thursday","floor$3","offset$3","count$3","field$3","month","floor$2","offset$2","count$2","field$2","ascending","complexBisectRight","ascendingComparator","floor$1","offset$1","count$1","field$1","utcDay","utcYear","weekday","utcSunday","utcMonday","utcThursday","localDate","utcDate","formatLookup","newYear","percentCharCode","numberRe","percentRe","requoteRe","requote","formatRe","pads","formatLocale","setDefaultLocale","__extends$h","__read","_count","identity","__extends$g","__values","SparklineAxis","Sparkline","xMinMax","dataType","xValueType","xType","rootGroup","shrunkWidth","shrunkHeight","p2","clientX","clientY","tooltipRendererResult","__extends$f","toTooltipHtml","contentHtml","SparklineTooltip","bgColor","bgColorWithAlpha","bgColorRgbaString","classList","tooltipRect","containerRect","__extends$e","__extends$d","__extends$c","__extends$b","getMarker","getLineDash","buttOrNull","roundOrSquare","__extends$a","SparklineMarker$1","SparklineMarker","SparklineLine$1","SparklineLine","SparklineCrosshairs$1","SparklineCrosshairs","AreaSparkline","fillData","strokeData","firstValidX","lastValidX","previousX","nextX","xAxisLine","selectionData","enterMarkerSelection","highlightStyle","highlightSize","highlightFill","highlightStroke","highlightStrokeWidth","markerFormat","strokePath","fillPath","xCrosshairLine","xLine","yCrosshairLine","yLine","__extends$9","LineSparkline","__extends$8","Rectangle","al","__extends$7","getFont$1","__extends$6","__decorate$2","__extends$5","getFont","__extends$4","BarColumnNodeTag","BarColumnLabelPlacement","BarColumnLabel","BarColumnSparkline","paddingInner","paddingOuter","gaps","valueAxisDomain","updateRectSelection","enterRectSelection","nodeFormatter","nodeFill","nodeStroke","nodeStrokeWidth","nodeFormat","__extends$3","BarSparkline","axisLine","invalidDatum","midPoint","isPositiveY","textWidth","positiveBoundary","negativeBoundary","exceedsBoundaries","__extends$2","ColumnSparkline","textHeight","AgSparkline","sparkline","getSparklineInstance","initSparkline","initSparklineByType","initBarColumnSparkline","initAreaSparkline","initLineSparkline","setValueIfPropertyExists","initPaddingOptions","initAxisOptions","initHighlightStyleOptions","initTooltipOptions","initMarkerOptions","initLineOptions","initCrosshairsOptions","initLabelOptions","initCrosshairLineOptions","doOnceFlags","doOnce","offsetValidator","defaultOffset","validators","validator","__extends$1","__assign","__decorate$1","SparklineCellRenderer","firstTimeIn","updateSparkline","clientWidth","clientHeight","unsubscribeFromResize","__extends","__decorate","SparklineTooltipSingleton","SparklinesModule","AllEnterpriseModules","AllModules","AllCommunityModules"],"mappings":"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","debug_id":"f203ec7c-7789-5555-acaa-8823e81da82c"}